4 minutes
[ES] CTF InfosecInstitute - Parte 3
Ultimo post sobre el CTF de InfosecInstitute, esta vez con retos mas complicados…
Level 11:
Al entrar en el reto nos encontramos con una imagen que nos indica que hay otro sonido de nuevo, pero mas abajo podemos ver que no hay ningun sonido sino una imagen del logo de php.
Debido a que en el reto anterior estaba esa imagen lol.gif, descargo php-logo-virus.jpg ya que me parece sospechosa y ejecutando:
strings php-logo-virus.jpg
Me encuentro con:
infosec_flagis_aHR0cDovL3d3dy5yb2xsZXJza2kuY28udWsvaW1hZ2VzYi9wb3dlcnNsaWRlX2xvZ29fbGFyZ2UuZ2lm
Parece ser el flag, pero en realidad la ultima parte esta codificada en base 64, el no tener el ”=” o ”==” no significa que no sea base 64 ya que el mismo se utiliza como padding y no siempre es necesario.
http://www.rollerski.co.uk/imagesb/powerslide_logo_large.gif
Si vemos la imagen podemos encontrar la palabra powerslide que es la ultima parte de nuestro flag!
Flag: infosec_flagis_powerslide
Level 12:
Misma imagen que el reto 1 por lo que no encontraremos nada ahi, asi que hay que buscar en el codigo fuente de la web. Luego de un poco de busqueda nos encontramos con:
<link rel="stylesheet" href="css/custom.css">
Eso no es un color me parece, pero si es hexadecimal!
Flag: infosec_flagis_heyimnotacolor
Level 13:
Parece que el admin perdio el reto :p, nuestro objetivo es buscarlo asi que luego de probar algunas combinaciones comunes de nombres, la buena es:
http://ctf.infosecinstitute.com/levelthirteen.php.old
Si miramos el codigo fuente de esta nueva pagina veremos:
<p>Do you want to download this mysterious file?</p>
<a href="misc/imadecoy">
<button class="btn">Yes</button>
</a>
Por lo que descargamos ese archivo imadecoy y mirandolo con un editor hexadecimal podemos ver que sus primeros tres bytes son d4 c3 b2, los cuales son los bytes iniciales de un Pcap (Otra captura de red si).
Utilizando Wireshark para abrirlo se puede ver que hay varias conexiones HTTP, por lo que directamente vamos a “Export Objects -> HTTP” y vemos todo lo que Wireshark pudo identificar en la captura.
Al parecer utilizaron “Simple Vulnerable App” desarrollado por “Jay Turla, @shipcod3” para realizar este reto, entre todos los objetos vemos uno llamado HoneyPY.PNG que contiene nuestro flag!
Flag: infosec_flagis_morepackets
Level 14:
Tenemos otro archivo para descargar y en la primera linea ya nos damos cuenta de que va este reto, tenemos una base de datos SQL que fue dumpeada.
Al parecer esa base de datos contenia una instalacion de Wordpress por lo que en principio uno piensa que el flag puede llegar a estar en algun hash de alguna contraseña, pero eso requeriria de bastante tiempo para crackearlo.
Descartado los hashes nos ponemos a buscar informacion que resulte sospechosa y buscando un poco nos encontramos con:
--
-- Dumping data for table `friends`
--
INSERT INTO `friends` (`id`, `name`, `address`, `status`) VALUES
(102, 'Sasha Grey', 'Vatican City', 'Active'),
(101, 'Andres Bonifacio', 'Tondo, Manila', 'Active'),
(103, 'lol', 'what the???', 'Inactive'),
(104, '\\u0069\\u006e\\u0066\\u006f\\u0073\\u0065\\u0063\\u005f\\u0066\\u006c\\u0061\\u0067\\u0069\\u0073\\u005f\\u0077\\u0068\\u0061\\u0074\\u0073\\u006f\\u0072\\u0063\\u0065\\u0072\\u0079\\u0069\\u0073\\u0074\\u0068\\u0069\\u0073', 'annoying', '0x0a');
En el registro con id 104 podemos ver que su “nombre” es un string en unicode ( \u te permite identificar unicode claramente), decodificandolo nos encontramos con el flag!
Flag: infosec_flagis_whatsorceryisthis
Level 15:
Ultimo y mas complicado reto.
Como podemos ver lo que tenemos es un campo que nos permite ingresar texto sin restricciones y que luego es procesado por el servidor usando PHP para ejecutar en el sistema el comando dig mas lo que nosotros hayamos ingresado en ese campo, claro ejemplo de Command Injection.
Para explotar este fallo simplemente en el campo escribimos
google.com;ls -lah
Con esto la salida que nos va a devolver va a ser la de “dig google.com” y ademas la salida del comando “ls -lah” ya que el ”;” en sistemas GNU/Linux funciona como indicador de que viene otro comando que debera ser ejecutado.
Como se puede ver en la imagen en el mismo directorio hay un archivo .hey el cual contiene
Miux+mT6Kkcx+IhyMjTFnxT6KjAa+i6ZLibC
Al parecer tenemos un texto codificado, intentando con varios cifrados encontramos el correcto: ATOM-128
Flag: infosec_flagis_rceatomized
Bonus:
En el reto 15 como vemos hay un Command Injection que permite ejecutar comandos en el sistema operativo directamente, en competencias CTFs como esta normalmente estos retos estan muy controlados y limitados los comandos que uno puede ejecutar pero esto no es asi en este CTF.
He reportado este fallo con 2 emails a los organizadores pero hasta este momento no he tenido respuesta, asi que decidi publicarlo aca.
El fallo consiste en que no se limitan los comandos posibles a ejecutar por lo que uno puede hacer…
google.com;uname -a
Y obtener…
Linux ip-1XX-3X-3X-XX 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16 XX:XX:XX UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Y asi con otros comandos como cat /etc/passwd, id y cualquiera que pueda ser ejecutado con los privilegios de “www-data”.
Espero que los organizadores arreglen esto lo mas rapido posible.
Editado: He recibido respuesta por parte del organizador Ryan Fahey, indicando que aprecia mi nota sobre el nivel 15. Aun asi el fallo sigue sin ser arreglado hasta el dia de la fecha 16/03/2015.
Este es el fin de mi Write-Up del CTF de InfosecInstitute.