+ All Categories
Home > Documents > Security Web Challenge Sec-Track por @nonroot

Security Web Challenge Sec-Track por @nonroot

Date post: 09-Mar-2016
Category:
Upload: el-hacklab
View: 222 times
Download: 3 times
Share this document with a friend
Description:
Security Web Challenge Sec-Track por @nonroot
Popular Tags:
15
SECURITY WEB CHALLENGE 22/01/13 SECTRACK http://www.sec-track.com/ Solucionario por: @nonroot Introducción: Security Web Hacking Challenge es un corto pero entretenido reto de seguridad en aplicaciones Web, que nos desafía a vulnerar un sistema hecho a la medida para el almacenamiento de imágenes. El objetivo del reto es analizar en detalle el sistema de hosting de imágenes, enumerar características y funcionalidades del mismo y por supuesto identificar vulnerabilidades que nos permitan leer archivos ocultos en el sistema. No quiere decir esto, que la vulnerabilidad se trate de un LFI o Source Disclosure (aunque pueden existir) sino que una vez logremos identificar la vulnerabilidad (que pueden ser varias) y explotarla debemos escalar privilegios (o simplemente interactuar con los existentes) para leer información confidencial almacenada en el servidor objetivo. La información precisa a identificar es un mensaje oculto entre dos personas. Precisamente la información sobre una cita entre ambas. http://www.sec-track.com/ Solución: La solución se va escribiendo en el mismo orden en que se van encontrando las cosas, puede parecer que la ruta era obvia y me desvío en otros asuntos, pero así funcionaba la mente en ese momento. La solución del reto me tomó 3 horas aproximadamente porque estuve pensando en posibles rutas que no me llevaron a ningún lado. A. Lo primero como siempre es descargar la maquina del juego, chequear su integridad y buscar pistas en la descripción del reto que se publicó en el sitio web. Link: http://www.sec-track.com/security-challenge-ctf-web-premio-libro-ethical-hacking-2-0 SecTracker>md5sum Web_Sec_Challenge_Img.rar 328ddbf34e00d662ea4c89672dac29d3 Web_Sec_Challenge_Img.rar (OK) SecTracker> Pistas: -Una maquina linux (boot) -Servicio web corriendo en el puerto 8880 posiblemente (imagen del post introductorio) -Uso de MySQL (boot de la maquina) -Nombre de la maquina drunkadm (boot)
Transcript
Page 1: Security Web Challenge Sec-Track por @nonroot

SECURITY WEB CHALLENGE 22/01/13SECTRACK http://www.sec-track.com/Solucionario por: @nonroot

Introducción:

Security Web Hacking Challenge es un corto pero entretenido reto de seguridad en aplicaciones Web, que nos desafía a vulnerar un sistema hecho a la medida para el almacenamiento de imágenes.

El objetivo del reto es analizar en detalle el sistema de hosting de imágenes, enumerar características y funcionalidades del mismo y por supuesto identificar vulnerabilidades que nos permitan leer archivos ocultos en el sistema. No quiere decir esto, que la vulnerabilidad se trate de un LFI o Source Disclosure (aunque pueden existir) sino que una vez logremos identificar la vulnerabilidad (que pueden ser varias) y explotarla debemos escalar privilegios (o simplemente interactuar con los existentes) para leer información confidencial almacenada en el servidor objetivo. La información precisa a identificar es un mensaje oculto entre dos personas. Precisamente la información sobre una cita entre ambas.

http://www.sec-track.com/

Solución:La solución se va escribiendo en el mismo orden en que se van encontrando las cosas, puede parecer que la ruta era obvia y me desvío en otros asuntos, pero así funcionaba la mente en ese momento. La solución del reto me tomó 3 horas aproximadamente porque estuve pensando en posibles rutas que no me llevaron a ningún lado.

A. Lo primero como siempre es descargar la maquina del juego, chequear su integridad y buscar pistas en la descripción del reto que se publicó en el sitio web.

Link: http://www.sec-track.com/security-challenge-ctf-web-premio-libro-ethical-hacking-2-0

SecTracker>md5sum Web_Sec_Challenge_Img.rar 328ddbf34e00d662ea4c89672dac29d3 Web_Sec_Challenge_Img.rar (OK)SecTracker>

Pistas:-Una maquina linux (boot)-Servicio web corriendo en el puerto 8880 posiblemente (imagen del post introductorio)-Uso de MySQL (boot de la maquina)-Nombre de la maquina drunkadm (boot)

Page 2: Security Web Challenge Sec-Track por @nonroot

B. Hay que encontrar la maquina corriendo en la red local, un barrido de ping NO muestra maquinas activas en la red, es posible que la VM este filtrando.

SecTracker>fping -g 192.168.0.0/24 192.168.0.25 is aliveICMP Port Unreachable from 192.168.0.152 for ICMP Echo sent to 192.168.0.152192.168.0.159 is alive192.168.0.160 is aliveICMP Port Unreachable from 192.168.0.152 for ICMP Echo sent to 192.168.0.152192.168.0.1 is unreachable192.168.0.2 is unreachable…

Si se observan los 3 tipos de respuesta con la utilidad fping, se pueden tener las maquinas que posibles.

“Is alive” la maquina esta activa y acepta los pings.“is unreachable” la maquina no esta disponible“ICMP port Unreachable” la maquina esta en otro estado (filtrada?), esta es nuestra candidata.

En mi caso la maquina mas sospechosa es 192.168.0.152. Veamos si tiene el puerto web (8880) abierto:

SecTracker>nmap -sS 192.168.0.152 -p 8880Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2013-01-22 13:15 ESTNmap scan report for 192.168.0.152Host is up (0.00067s latency).PORT STATE SERVICE8880/tcp open cddbp-altMAC Address: 00:0C:29:26:4B:A8 (VMware)Nmap done: 1 IP address (1 host up) scanned in 11.36 secondsSecTracker>

C. Entramos al sitio web y leemos el código fuente en busca de scripts php.

Page 3: Security Web Challenge Sec-Track por @nonroot

Observamos varios scripts php desde el source: info.php, index.php, upload.php, myphp.php

Empezamos a evaluarlos de forma básica:

• index.php carga el sitio normal

El sitio permite subir imágenes que son desplegadas inmediatamente, las imágenes son almacenadas en el directorio /images/ sobre la raíz del sistema, mas adelante volvemos a esto.

• upload.php requiere el envío de parámetros por POST

• myphp.php requiere envío de datos

http://192.168.0.152:8880/myphp.php?id=101

Obtenemos información del sistema, al correrle SQLMap contra este script nos dice que id no es

Page 4: Security Web Challenge Sec-Track por @nonroot

una variable inyectable.

21:25:18] [WARNING] GET parameter 'id' is not injectable

Al cambiar valores del id, obtenemos diferentes respuestas, busquemos algunas mas:

SecTracker>for i in {1..10000}; do wget http://192.168.0.152:8880/myphp.php?id=$i ; done

Page 5: Security Web Challenge Sec-Track por @nonroot

Obtenemos un resultado así:

SecTracker>ls -l...-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1671-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1672-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1673-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1674-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1675-rw-r--r-- 1 root staff 70 Jan 21 21:51 myphp.php?id=1676…SecTracker>

Las respuestas con 70 bytes son las del mensaje de error, busquemos respuestas diferentes:

SecTracker>ls -la | grep -v "70 Jan" total 10976drwxr-xr-x 1346 root staff 45764 Jan 21 21:47 .-rw-r--r-- 1 root staff 4598 Jan 21 21:47 myphp.php?id=101-rw-r--r-- 1 root staff 1326 Jan 21 21:47 myphp.php?id=102-rw-r--r-- 1 root staff 11012 Jan 21 21:47 myphp.php?id=104-rw-r--r-- 1 root staff 49949 Jan 21 21:47 myphp.php?id=108-rw-r--r-- 1 root staff 2031 Jan 21 21:47 myphp.php?id=116-rw-r--r-- 1 root staff 3475 Jan 21 21:47 myphp.php?id=132-rw-r--r-- 1 root staff 1867 Jan 21 21:47 myphp.php?id=164-rw-r--r-- 1 root staff 57314 Jan 21 21:47 myphp.php?id=99SecTracker>

Según esto, los id 101, 102, 104, 108, 116, 132, 164 y 99 darán mensajes diferentes.

Page 6: Security Web Challenge Sec-Track por @nonroot

Con el id=132 logro identificar que la aplicación esta configurando cookies que pueden ser usadas para validar durante el proceso de upload de las imágenes … Despues de las pruebas me di cuenta que no funcionaba en ninguna validación, FAIL :)

D. Algo que intento en este punto es tratar de configurar una cookie “trypios” con diferentes valores. Ninguno de los valores configurados funcionó. FAIL :)

E. Lo que intento a continuación es validar la integridad de las imágenes que subo al sistema, para eso subo una imagen y luego la descargo para verificarla.

SecTracker>md5sum webchall*.png 9937c44d2c0f6a2f11240d8e2b1069a0 webchall.png (Imagen que subo al sistema)9937c44d2c0f6a2f11240d8e2b1069a0 webchall2.png (Imagen que descargo del sistema)SecTracker>

Con esto compruebo que el sistema conserva la integridad de las imágenes que se suben, pero lo que me llama la atención es el nombre de la imagen cuando sube al sistema, tiene cara de MD5 :P

Lo primero que intento es generar el hash MD5 de las imágenes que subo al sistema para compararlas con sus respectivos nombres cuando se almacenan, pero los valores no corresponden,

Page 7: Security Web Challenge Sec-Track por @nonroot

entonces empiezo un proceso manual para intentar identificar un patrón.

a.jpg 394659692a460258b45a99f1424ea357 .jpg a.png 32d3ca5e23f4ccf1e4c8660c40e75f33.png a.gif a7200b4bac77e8804f9e48304a92b6d9.gif a.jpeg 14a53cac5a312f3d1ad4980fec051d42.jpeg b.jpg efaf98db2eac3a61946ca0282ae6ddd4.jpg

Los nombres que aparecen en el sistema corresponden a los valores MD5 de los nombres de las imágenes que se suben:

SecTracker>echo -n "a.jpg" | md5sum394659692a460258b45a99f1424ea357 -SecTracker>echo -n "a.png" | md5sum32d3ca5e23f4ccf1e4c8660c40e75f33 -SecTracker>echo -n "a.gif" | md5suma7200b4bac77e8804f9e48304a92b6d9 -SecTracker>

F. Descargo un shell en php con la intención de hacerlo pasar por una imagen.

El shell lo pueden descargar desde aquí:http://xploitaday.komodin.org/tools/php-encoder/

Page 8: Security Web Challenge Sec-Track por @nonroot

G. Como paso siguiente intento subir un shell en php al sistema, pero obtengo un error relacionado con la extensión que uso en el nombre del archivo.

H. Intento camuflar la extensión del shell usando una doble extensión y genero el MD5 en caso de que suba al sistema.

SecTracker>cp shell.php shell.jpg.phpSecTracker>echo -n "shell.jpg.php" | md5sum809d9ef057f63c676e1d78dbb7a43826 -SecTracker>

I. Subo el archivo shell.jpg.php al sistema y no se visualiza ninguna imagen, pero tampoco se genera un error, entonces intento cargar el archivo .php en el directorio /images/.

Con esto tenemos el shell web dentro del sistema.

Page 9: Security Web Challenge Sec-Track por @nonroot

J. Una vez dentro del sistema empiezo a buscar información como por ejemplo identificar la versión del kernel, verificar si el sistema tiene netcat, gcc, etc.

También busco los usuarios en /home y me encuentro con un usuario bob, como es el único usuario pareciera que tiene algo que ver con el reto.

Page 10: Security Web Challenge Sec-Track por @nonroot

Los scripts que están en el home del usuario bob requieren de una palabra secreta, cualquier palabra se puede usar pero no producen resultados coherentes (texto plano legible).

K. Sigo explorando buscando las posibilidades de comunicación del usuario bob, por eso intento encontrar archivos que tengan la palabra bob y termino entrar al inbox de correo del usuario en /var/mail/, sin embargo no tengo los permisos para poder leer los archivos, pero sospecho que el usuario puede tener mensajes que ayudan a resolver el tema. FAIL :).

Page 11: Security Web Challenge Sec-Track por @nonroot

L. Al no encontrar mucha información por este lado intento abrir puertos en la maquina para conectarme desde la consola (netcat).

Page 12: Security Web Challenge Sec-Track por @nonroot

Los puertos siguen apareciendo filtrados, lo intento con varios puertos pero obtengo el mismo resultado, por lo que pienso que el sistema debe tener el iptables habilitado. Buscamos las reglas que deben cargar al inicio del sistema. En /etc/init.d/ encontramos que el archivo firewall.sh tiene permisos modificados y no puedo leerlos, pero eso me da indicios que seguramente si hay un firewall filtrando la salida y entrada de paquetes en puertos diferentes al 22/TCP y al 8880/TCP.FAIL :)

M. Ya un poco perdido con el asunto empiezo a probar exploits locales (exploits*.c) contra el kernel, exploits contra phpinfo(), contra apache, contra todo lo que se aparezca y nada, no logro escalar privilegios en el sistema, entonces pienso que quizá no sea necesario ya que el reto se trata de una aplicación web. FAIL :)

Page 13: Security Web Challenge Sec-Track por @nonroot

N. Vuelvo a la raíz del servidor web a leer detalladamente los archivos que se encuentran allí y veo un archivo que no había visto antes, el archivo /var/www/.proof.

En este archivo se menciona un código secreto, así que supongo que es el código del usuario bob.

O. Pruebo el código en el sistema y NO obtengo resultados correctos.

Page 14: Security Web Challenge Sec-Track por @nonroot

¿Será que el código está en base64?

SecTracker>echo -n "TGglMUxecjJDSDclN1Ej" | base64 -dLh%1L^r2CH7%7Q#SecTracker>

WIN :)

P. El lugar donde se van a encontrar Alice y Bob es Akti Tompazi 4 , como se puede ver en la siguiente imagen de googlemaps donde se usaron las coordenadas encontradas.

Con esto se termina el reto, pero aún quedan cosas pendientes por investigar:

Page 15: Security Web Challenge Sec-Track por @nonroot

TODO: COSAS POR HACER

1. Escalar privilegios en el sistema (#).2. Encontrar las claves de los usuarios root y bob.3. Examinar si el servicio MySQL (127.0.0.1) tiene información.4. Examinar si el servicio EXIM (127.0.0.1) tiene información o es vulnerable.5. Buscar otra forma de explotar el sistema web (vulnerabilidad diferente).6. Verificar si las librerías de AES usadas para cifrar el mensaje de bob tienen algún bug

introducido que permita romper el cifrado de forma diferente.7. Identificar el motivo por el cual el archivo .php que se sube en el directorio /images/ del

sistema se elimina cada cierto tiempo.

Si tienen alguna duda sobre el solucionario pueden escribir a: [email protected] o contactarme por twitter en: @nonroot

Gracias por el reto!


Recommended