Reverse

Máquina Reverse de DockerLabs

Autor: Yo

Dificultad: Medio

Reverse

Reconocimiento

Comenzamos con un escaneo de nmap:

Solo vemos un puerto abierto, que es el 80 y en el funciona Apache httpd 2.4.62 en un debian.

Pagina web

Web

Si revisamos el código fuente de la página, veremos que hay un archivo javascript al cual la página apunta, este se encuentra en:

luego de revisar el script, veo que si hacemos 20 veces click en la web, nos aparecerá un mensaje que dice "secret_dir", por lo que luego de probar vemos lo siguiente:

Alerta

viendo el mensaje, podemos intuir que existe una carpeta llamada "secret_dir" en el servidor.

Al entrar en ella veremos un archivo que se llama "secret" y tendremos que descargarlo.

Si ejecutamos file secret veremos que es un binario ejecutable y compilado de manera estática.

Ahora veremos que hace dando permisos de ejecución sobre el y ejecutándolo con ./secret:

Secret

vemos que el binario nos pide una contraseña, ademas, este no es vulnerable a un buffer overflow, por lo que podría tratar de ingeniería inversa.

Ingeniería inversa

Para hacerlo, vamos a descargar ghidra:

Una vez instalado, ejecutamos el comando ghidra desde el terminal y se nos abrirá la interfaz gráfica. Ahora debemos crear un nuevo proyecto e importar el binario. ¿Como Hacerlo? <-- Solo seguir hasta donde exporta el binario, lo demás no hace falta.

Una vez ghidra termine de hacer su trabajo analizando el binario (probablemente demore ya que el binario fue compilado de manera estática, lo cual lo hace mas pesado), nos llevará a la función main, en la cual veremos un poco el flujo de la aplicación que es este:

si le damos doble click a la función "containsRequiredChars", nos llevará a lo siguiente:

Strings

Esta función lo que hace, es fijarse que lo que introduce el usuario cumpla con las siguientes características:

Sabiendo esto, podríamos poner cualquier contraseña que contenga esos caracteres y sería correcta siempre y cuando tenga solo 13, por ejemplo:

Pass

Como vemos ambas son correctas, al igual que toda contraseña que cumpla con las características solicitadas. Por lo que luego de poner cualquier contraseña correcta, vemos un mensaje en base64 que dice lo siguiente:

Al parecer tenemos un dominio con un subdominio, por lo que lo agregaremos al /etc/hosts con el siguiente formato:

Web del subdominio

Subdominio

Vemos que es una página hecha por chatgpt y revisando el código fuente vemos que hay una redirección a un archivo que contiene un posible LFI:

por lo que yendo ahí, cambiamos el "./modules/default.php" por "/etc/passwd" y veremos lo siguiente:

Passwd

Viendo eso, podemos intentar un log poisoning, ya que poner los wrappers de php no nos da nada:

Logs

Intrusión

Log Poisoning

Ahora para entrar, simplemente deberemos ejecutar lo siguiente:

una vez se queda "pillado", metemos lo siguiente:

Creamos un archivo llamado shell el cual contenga esto:

Montamos un servidor con python:

y escuchamos en el puerto 443:

finalmente recargamos la página del lfi con el log, y nos llegará una solicitud al servidor de python, luego de que llegue deberíamos estar dentro.

Escalada de Privilegios

www-data

Primero realizamos un tratamiento de la tty para estar cómodos.

Si ejecutamos sudo -l veremos lo siguiente:

esto significa que podemos ejecutar como el usuario nova el script o binario /opt/password_nova, el cual si lo probamos nos pide otra vez una contraseña, pero nos da la pista de que se encuentra en el rockyou. Sabiendo esto, pasaremos el rockyou a la maquina victima usando nueva mente un servidor de python, y luego crearemos un script en /tmp con el siguiente contenido:

una vez creado, le damos permisos con chmod +x force.sh y le pasamos el rockyou. Luego de esperar un rato, nos encontrará la contraseña del script y nos dará también la contraseña de nova, por lo que escalaremos ejecutando su nova y poniendo su contraseña.

Nova

Nuevamente sudo -l y veremos lo siguiente:

Por lo que para escalar solo debemos ejecutar sudo -u maci /lib64/ld-linux-x86-64.so.2 /bin/bash (se encuentra en gtfobins como ld.so).

Maci

Ahora sudo -l nos dice que podemos ejecutar clush como root:

Tenemos dos maneras de escalar (para saber ambas hay que leer el manual), pero la mas simple es la siguiente:

Root

Gracias por leer ;)

Última actualización