Debugme DockerLabs (Hard)
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip debugme.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_deploy.sh debugme.tarInfo:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
___ ____ ____ _ _ ____ ____ _ ____ ___ ____
| \ | | | |_/ |___ |__/ | |__| |__] [__
|__/ |__| |___ | \_ |___ | \ |___ | | |__] ___]
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.0.2
Presiona Ctrl+C cuando termines con la máquina para eliminarlaPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Si nos metemos en la pagina tanto en el 80 como en el 443 vamos a ver la misma pagina, por lo que nos meteremos en el normal (80):
Veremos un apartado en el que podremos subir una imagen con un tamaño personalizado, por lo que descargaremos una imagen y la subiremos, viendo algo asi:

Aparentemente no vemos nada, por lo que intentaremos fuzzear un poco por la web.
Gobuster
Info:
Por lo que vemos, podremos ver el info.php, si nos metemos dentro podremos ver varias extensiones instaladas, entre ellas una que llama mucho la atencion llamada imagick:

Buscamos si hubiera alguna vulnerabilidad respecto a esta herramienta, ya que esta herramienta es la que gestiona el tema de las imagenes en la pagina web.
Local File Inclusion Imagick
Vemos que hay un repositorio de github aprovechando un LFI de esta herramienta en versiones anteriores a la 7.1.0 y la version de esta herramienta es 3.4.3 por lo que podremos aprovechar esta vulnerabilidad.
URL = GitHub Imagick LFI
Por lo que nos clonaremos el repositorio a nuestro kali de la siguiente forma:
Instalaremos lo necesario:
Probaremos primero a ver el archivo passwd, lo haremos de la siguiente forma:
Info:
Ahora lo que haremos con esta imagen generada como passwd.png sera subirlo a la pagina, una vez subido veremos algo asi:

Ahora nos descargaremos la imagen de la pagina y veremos el contenido de la imagen con la siguiente herramienta:
Info:
Y lo que nos interesa de toda esta informacion es el resultado del passwd que estara en hexadecimal:
Por lo que lo decodificaremos con el siguiente mini script que he creado:
decoderHexa.py
Ahora ese codigo entero hezadecimal lo guardaremos en un archivo .txt y se lo pasaremos como parametro al la herramienta:
Info:
Por lo que vemos ha funcionado todo correctamente, y podemos observar 2 usuarios con bash, por lo que intentaremos sacarle las credenciales alguno de los 2 usuarios con un ataque de fuerza bruta:
Escalate user lenam
Hydra
Antes del ataque de fuerza bruta crearemos un archivo con los 2 usuarios:
users.txt
Y ahora si, realizaremos el ataque:
Info:
Vemos que sacamos las credenciales del usuario lenam, por lo que nos conectaremos por ssh con dichas credenciales:
Metemos como contraseña loverboy y veremos que estamos dentro.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar como root el binario kill, por lo que haremos lo siguiente.
Si enumeramos los puertos que hay activos en el momento, veremos lo siguiente:
Info:
Vemos que hay 2 puertos corriendo en local bastante interesantes:
Si hacemos un curl al puerto 8000 para ver que contiene, veremos lo siguiente:
Info:
Y si probamos en el otro puerto da un error, por lo que vemos esta corriendo una aplicacion node.js en el puerto 8000.
Lo que podemos hacer es matar el proceso con kill en el puerto 8000 para que asi se reinicie y nos muestre el puerto de depuracion del propio node.js cuando se reinicie, que ha esto se le llama hacer una señal SIGUSR1, por lo que cuando intentemos detener el proceso, tendra como consecuencia el reinicio del mismo exponiendo el puerto de depuracion que viene por defecto en el puerto 9229 el cual podremos aprovechar para injectar codigo malicioso ya que este depurador interactua con el node.js en tiempo real a nivel de ejecuccion.
Primero identificaremos el proceso padre de node de la siguiente forma:
Info:
Vemos que tiene como PID el numero 54 en mi caso, por lo que haremos lo siguiente:
Una vez realizado este paso, si volvemos a enumerar los puertos, veremos lo siguiente:
Info:
Vemos que el puerto 9229 esta abierto ahora, por lo que ahora podremos hacer lo siguiente.
Info:
Esto nos metera en una consola interactiva en el puerto de depuracion de node.
Por lo que nos crearemos una reverse shell como root de la siguiente forma, dentro del entorno de node, pondremos lo siguiente:
Antes de enviarlo nos pondremos a la escucha de la siguiente forma:
Una vez enviado, si nos vamos a donde teniamos la escucha veremos que hemos obtenido la shell como root:
Por lo que ya seremos root y habremos terminado la maquina.
Last updated