┌──(pylon㉿kali)-[~/…/pylon/THL/THLPWN/nmap]└─$nmap-p---open-n--min-rate=5000-vvv-Pn192.168.116.130Hostdiscoverydisabled (-Pn). All addresses will be marked 'up' and scan times may be slower.StartingNmap7.95 ( https://nmap.org ) at 2025-10-29 22:34 CETInitiatingARPPingScanat22:34Scanning192.168.116.130 [1 port]CompletedARPPingScanat22:34,0.05selapsed (1 totalhosts)InitiatingSYNStealthScanat22:34Scanning192.168.116.130 [65535 ports]Discoveredopenport22/tcpon192.168.116.130Discoveredopenport80/tcpon192.168.116.130CompletedSYNStealthScanat22:34,0.87selapsed (65535 totalports)Nmapscanreportfor192.168.116.130Hostisup,receivedarp-response (0.00039s latency).Scannedat2025-10-2922:34:14CETfor1sNotshown:65533closedtcpports (reset)PORTSTATESERVICEREASON22/tcpopensshsyn-ackttl6480/tcpopenhttpsyn-ackttl64MACAddress:00:0C:29:89:24:0B (VMware)Readdatafilesfrom:/usr/share/nmapNmapdone:1IPaddress (1 hostup) scanned in 1.02 secondsRawpacketssent:65536 (2.884MB) |Rcvd:65536 (2.621MB)
Vemos el puerto 22,80 , vamos a realizar un segundo escaneo para obtener más información detallada de ambos puertos:
Obtuvimos la siguiente información:
Puerto
Descripción
22/TCP
80/TCP
Vamos a ver la página web:
Vemos que nos dice lo siguiente:
Vemos que nos comenta que el servidor esta empleando Virtual Hosting (permite a un único servidor alojar distintas aplicaciones webs) así que intuyendo el posible dominio de la web sea el nombre de la máquina entonces podría ser:
Vamos a añadirlo a nuestro /etc/hosts :
Vamos a probar acceder a el:
Vemos un formulario, voy a dejar BurpSuite en segundo plano para que vaya capturando todos los movimientos que vamos a ir realizando. Vamos a probar a rellenar el formulario y enviarlo:
Al darle a Submit vemos lo siguiente:
Vemos que está teniendo un fallo con conectarse a la base de datos, así que no es funcional este formulario.
Vamos a realizar fuzzing para ver si encontramos algo más antes de seguir investigando por la aplicación web:
Vemos cosas interesantes como:
/api/
/backup/
/robots.txt
/api/
Vamos a ver el directorio /api/ :
Vemos 2 endpoints:
/api/users :
Vemos que carga el mismo formulario que probamos anteriormente.
/api/search :
Vemos nuevamente que carga el formulario. Así que por aquí no tiene que ir la cosa.
/backup/
Vamos a intentar acceder a él:
Vemos que no podemos acceder.
/robots.txt
Aquí vemos varias cosas interesantes. Vamos a probar acceder a /.git :
Nada... Vamos a probar a descargar el archivo db_schema.sql :
Vamos a ver su contenido:
Vemos que repetidamente podemos ver mucho la pista de que intentemos un SQL Injection. Actualmente con lo que tenemos enumerado no vemos ningún posible campo vulnerable. Vamos a seguir enumerando vamos a probar a ir /downloads :
Vemos que tenemos un binario donde lo podemos descargar. Luego nos da herramientas para poder analizar este binario. Vamos a ello.
Shell as thluser
Vamos a descargarnos el binario dándole click a Download Binary :
Vamos a analizarlo:
Vamos a empezar con el comando file , con este comando podremos determinar el tipo de archivo y formato gracias a los magic bytes:
Vemos que es un simple ejecutable. Vamos con el comando strings que nos ayudará a extraer cadenas de texto legibles del archivo:
Podemos ver la siguientes credenciales:
User
Password
thluser
Obtuvimos las credenciales de un usuario, vamos a intentar acceder por SSH:
Shell as root
Vamos a enumerar los permisos SUDOERS :
Vemos que podemos usar /bin/bash sin necesidad de contraseña como cualquier usuario. Vamos a ejecutarla con sudo para iniciar como root :
User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /.git/
# Interesting directories:
# /downloads/ - Binary files available here
# /backup/db_schema.sql - Database structure
# /admin/secure/panel.php - Admin panel
# Hint: Check /downloads/ for useful files
# Hint: SQL Injection in search.php (6 columns)
# Hint: Binary location also in database via SQLi
-- Database Schema Backup
-- Hint: Use SQL injection to access these tables
-- Look for: secrets, binary_fragments, system_config
CREATE TABLE IF NOT EXISTS secrets (
id INT PRIMARY KEY,
key_name VARCHAR(100),
key_value TEXT,
hint TEXT
);
┌──(pylon㉿kali)-[~/…/pylon/THL/THLPWN/content]
└─$ file auth_checker
auth_checker: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, too large section header offset 241239588864
┌──(pylon㉿kali)-[~/…/pylon/THL/THLPWN/content]
└─$ ssh thluser@thlpwn.thl
thluser@thlpwn.thl's password:
Linux thlpwn 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct 29 23:29:44 2025 from 192.168.116.128
thluser@thlpwn:~$
thluser@thlpwn:~$ sudo -l
Matching Defaults entries for thluser on thlpwn:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User thluser may run the following commands on thlpwn:
(ALL) NOPASSWD: /bin/bash