Creo que voy a empezar usa serie de CTF aportando sus soluciones desde el punto de vista de un auditor de seguridad. Estamos acostumbrados a ver diferentes puntos de vista, pero pocas veces se afrontan los temas de seguridad como lo haría realmente un auditor, y la verdad, no entiendo por qué.
Bueno, empezamos con la máquina DonkeyDocker: 1. He abierto la web de vulnhub, he abierto una página al azar y esa misma... así que, comenzamos como siempre con la fase de reconocimiento. Como no podía ser de otra forma (en realidad se puede hacer de varias formas xD), lo hacemos usando nmap en busca de la máquina.

Bien, parece que tenemos un puerto 80 con un apache (obsoleto) y con posibles vulnerabilidades tras ver con una búsqueda rápida en Google. *

No obstante, veamos que aparece en el frontal web (y no olvidemos el puerto 22...).

Lo que encontramos es lo que ves en la imagen anterior. Pantalla de bienvenida, firma GPG... Vamos a ver que más hay en el servidor haciendo uso de dirbuster para la parte de descubrimiento. A la vez le lanzo dirsearch para comparar resultados.


Las diferencias son claras, pero hay que tener en cuenta que diccionario usa cada programa, ojo con eso.
En el robots.txt no hay nada interesante, así que, veamos que hay en las otras URL.
En el contact y en el home, no veo nada que me llame la atención, pero si en el código del about.

Algo se me está escapando en la enumeración y no sé que es, así que, por si acaso, voy a lanzar de nuevo dirsearch con otro diccionario...

Esto ya es otra cosa. Parece que tiene un PHPMailer, ya que al acceder a http://192.168.1.125/mailer/examples/ podemos ver lo siguiente.

Vale, recordando el uso de VERSION en Drupal, me da por probarlo, y...

Parece ser que esa versión tiene un RCE (Remote Code Execution), veamos que aparece por Google.

Además, lo confirmo con searchsploit.

Se puede apreciar que hay scripts en python, PHP, Bash... incluso un módulo para metasploit que funcionaría en versiones 5.2.19 o anteriores.
Vamos a utilizar el de python por ejemplo. Hay que cambiar el target, en el payload poner la IP de la máquina atacante y levantar un NC en el puerto 4444 (esto viene en las instrucciones del script).

Por último solo nos queda lanzar el python.

Esto nos genera un fichero backdoor.php, y si miramos el NC, vemos que tenemos una shell.

Aunque lo que tenemos es una shell "restringida", siempre podemos tirar del conocido:
python -c 'import pty; pty.spawn("/bin/bash")'

Ahora si, esto ya es otra cosa xD. Veamos que hay dentro de la máquina.

Pues parece que hay al menos dos ficheros interesantes. El primero es un script del que debemos ver su contenido. El segundo parece indicar que estamos en un contenedor de Docker, esto va a ser divertido.

Parece que no aclara demasiado, así que, vamos a seguir investigando.

Pues muy bien, mirando la última línea, hay un usuario que se llama smith, veamos que tiene en su home.

O no xD. Vamos a probar la tontada del día...

Nunca dejéis de lado lo obvio, porque mira tú por dónde... Echemos un vistazo a su home, que ahora si tenemos permiso.

Tenemos el flag, pero nos dice que no nos hagamos líos, que no hemos terminado aun (o algo así).
Si nos fijamos bien, hay una carpeta SSH y recordemos que teníamos un puerto 22 (SSH) que dijimos que no había que despreciar. Vamos a ver que oculta.

Vale, pues parece que tenemos la clave privada de orwell@donkeydocker. Vamos a copiarla a la Kali y veamos si se puede utilizar.

Y de esta forma obtenemos el segundo flag, parece que ya hemos terminado... o no, y si...
Revisando los permisos del tal Orwell, me doy cuenta que está en el grupo docker, y si mal no recuerdo, había algo para hacerse root.
Tras un rato investigando, encuentro lo que estaba buscando (escalada de privilegios en Docker). Vemos los contenedores que hay creador con docker container ls
. Tras ver el nombre del contenedor que está corriendo (donkeydocker) lo que hago es clonarlo en otro con mi nombre particular xD.
Por último, ejecuto el comando docker exec -i -t fervent_mclean /bin/bash
para que me devuelva una shell de root dentro de ese contenedor y así conseguir el último flag.

He de reconocer que esta última parte me ha costado bastante. Entre encontrar la información, leerla, entender lo que ocurre y probarlo, se me han pasado casi 2 horas, más las 2 y pico que ya llevaba, suman casi 5 horas para conseguir los flags.
* Finalmente, las vulnerabilidades de apache no daban el resultado esperado, por eso decidí seguir buscando.
Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario