The First Avenger
Maquina "TheFirstAvenger" de TheHackersLabs
Autor: TTyler
Dificultad: Principiante

RECONOCIMIENTO
En mi caso, la ip de la máquina victima es "192.168.161.32".
Comenzaremos haciendo un escaneo de nmap:
Como vemos, los puertos abiertos son 2:
22: OpenSSH 9.6p1
80: Apache httpd 2.4.58
ninguna de estas versiones es vulnerable a algo que nos ayude, por lo que nos iremos directos a la web del puerto 80.
Esta web, parece ser bastante simple sin nada útil, y puedo decir esto por dos razones:
Es un archivo html
En el código fuente no hay nada interesante
Por lo que teniendo en cuenta esas dos razones, podemos ignorar completamente ese archivo.
Ahora haremos fuzzing con gobuster para ver si encontramos algo útil:
Al parecer tenemos un directorio llamado "wp1", el cual si accedemos desde la web veremos que es un wordpress. Sabiendo esto podemos ir a "wp-admin" para que nos muestre el panel de login.(Al hacerlo nos saldrá un host, "thefirstavenger.thl" el cual deberemos agregar a "/etc/hosts" en nuestra máquina)
Al probar las credenciales "admin:admin", me dice que la contraseña es incorrecta para ese usuario, esto significa que ese usuario existe por lo tanto es el que nos interesa. Ahora haremos fuerza bruta usando hydra a ese panel de login para ver si obtenemos credenciales válidas (para este ataque se puede usar wpscan pero no me funciona correctamente por lo que lo haré con hydra):

Como vemos, tenemos unas credenciales: admin:spongebob
INTRUSIÓN
Para realizar la intrusion, haremos el proceso habitual con un wordpress (hay muchas maneras), que es instalar la extension "file manager" y luego crear un archivo php que podamos usar para ejecutar comandos.
Para instalar el plugin, debemos ir a la seccion "Añadir nuevo plugin" y en el buscador poner "file manager" e instalar el siguiente:

Una vez instalado y activado, nos aparecerá una nueva sección correspondiente al plugin, a la cual iremos. Estando ahí, veremos un administrador de archivos en el cual podremos crear nuestro php, para esto vamos en ese mismo plugin a "wp-content>uploads>2024", y ahí creamos un archivo con el nombre que queramos y con el siguiente contenido:
ahora solo nos queda escuchar con netcat en el puerto que elegimos (nc -nlvp <puerto>) y entrar al archivo desde el navegador, una vez hecho todo esto habremos ganado acceso a la máquina como "www-data".
ESCALADA DE PRIVILEGIOS
www-data
Una vez dentro, haremos el tratamiento de la tty. ¿Como hacerlo?
Luego de buscar un rato, se me ocurre entrar al mysql usando las credenciales de wordpress, para obtenerlas solo leemos el archivo que está en su carpeta y se llama "wp-config.php". Las credenciales que obtenemos son las siguientes:
mysql: wordpress:9pXYwXSnap`4pqpg~7TcM9bPVXY&~RM9i3nnex%r
teniendo estas credenciales nos conectaremos en la misma máquina de la siguiente manera:
y cuando se nos pida la contraseña ingresamos la obtenida.
Ya estando ahí, podemos listar las bases de datos con show databases;, una vez ejecutado veremos que hay una llamada "top_secret", por lo que nos cambiamos a esta usando el comando use top_secret;.
Ahora listaremos las tablas: show tables;
veremos una llamada "avengers", la cual si la leemos con select*from avengers; nos dirá lo siguiente:
Teniendo en cuenta que hay un user llamado "steve" en esa base de datos y en el propio sistema, podemos intentar usarla para pivotar de usuario, pero al parecer es un hash por lo que antes lo sacaremos con crackstation:

Tenemos la contraseña "thecaptain" para el usuario steve. (escalamos con su steve y su contraseña)
Steve
Siendo el usuario steve, no encontraremos nada interesante ni nada que nos ayude a escalar a root, pero si nos fijamos los puertos abiertos con ss -tulun, veremos que hay una web corriendo de manera local en el puerto 7092. Sabiendo esto y dado que tenemos un ssh, nos conectaremos de la siguiente manera redirigiendo el puerto 7092 de la máquina victima a nuestro puerto 7092 local:
Ahora si vamos desde el navegador a "127.0.0.1:9090", veremos la web que estaba corriendo en ese puerto local de la máquina víctima:

Luego de estár probando algunas cosas, veo que estamos frente a un SSTI(server side template injection), ya que al poner en donde nos pide una dirección "{{7*77}}", nos cambia por "49", esto significa que podremos ejecutar comandos de manera remota usando lo siguiente:
El cual si ejecutamos, nos devolverá esto:
esto significa que la web y los comandos son ejecutados como root, por lo que en vez de id ejecutaremos lo siguiente:
Mas info sobre SSTI:
Una vez ejecutado, nos quedaría ir a la máquina victima y ejecutar bash -p, y ya seremos el usuario root y podremos leer las flags.

Gracias por leer....
Última actualización