Validation

Sobre esta maquina: HTB

Sistema Operativo: Linux

Skills Usados:

  • SQLI (Error Based)

  • SQLI -> RCE (INTO OUTFILE)

  • Information Leakage

Metodologia:

realizamos el primer Escaneo Nmap del target:

// 
❯ nmap -p- -T4 -sS --open -Pn -n 10.10.11.116

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-28 15:03 EDT
Stats: 0:00:11 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 16.40% done; ETC: 15:04 (0:00:56 remaining)
Nmap scan report for 10.10.11.116
Host is up (0.14s latency).
Not shown: 64969 closed tcp ports (reset), 562 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
4566/tcp open kwtc
8080/tcp open http-proxy

Hacemos escaneo con scripts y versiones de los puertos abiertos:

Revisamos lo que esta corriendo en el puerto 80:

Un sitio en donde se pueden registrar nombres, probamos inyecion SQL.

Intentamos capturar con Burpsuite peticiones para ver si es vulnerable a sql, donde observaremos que si es vulnerable, obteneos el nombre de la base de datos "Registration".

Captura de la petición POST con BURPSUITE para ejecutar inyecciones SQL.
Identificacion de version.
Conseguimos la version del servidor.
Identificamos el nombre de la base (Registration).
Intentamos conseguir el nombre de la TABLA.
Posee el mismo nombre de tabla REGISTRATION.
Ahora enumeramos las columnas existentes dentro de las tablas para ver su contenido, donde descubrimos, usuarios, hash etc..
Resultado del interior de las Columnas.
Intentaremos listar el contenido de usernames y hashes, pero descubrimos que lista los usuarios que nosotros mismos inscribimos.
Ya que no obtuvimos nada tan valioso intentaremos ver si se puede subir archivos al sistema abusando de codigo PHP mediante una SQLI, pero primero hacemos una prueba en txt.
La prueba es exitosa asi que ahora si intentaremos con codigo PHP.
Utilizaremos la SQLI y el codigo PHP para poder realizar comandos CMD.
Al renderizar la peticion, causa un error asi que posiblemente tenga exito.
Tiene exito la peticion, asi que ejecutamos comando whoami desde la web y nos responde www-data , hemos obtenido acceso al sistema.

Podemos observar que ya podemos ejecutar comandos utilizando cmd?=

Ahora desde la terminal utilizando CURL podremos mandar una shell inyectando codigo php a la maquina victima y poniendonos en escucha al mismo tiempo por el puerto que nos parezca, en este caso el 4444.

DISCLAIMER

Al realizar el Curl, un script de Python, e incluso una revershell URL encodeada directa en el subdominio /prueba.php no podía recibir la petición a través de NC estando en escucha por ningún puerto lo unico que me funciono fue url encodear en código base 64. (esto debido a una incompatibilidad en mi ZSH).

Logro funcionar por que evita problemas de comillas, Algunos filtros web o configuraciones del servidor rompen comandos con comillas dobles, simples o caracteres especiales.

Así que toco codificar la peticion en base64 , pero OJO no se si funcionara para otras personas que no usen la zsh.

FIN DEL DISCLAIMER :3

Una vez Rooteada la maquina la damos por terminada.

Last updated