Katana - Proving Grounds (OffSec)
En este walkthrough analizamos la máquina Katana de Proving Grounds (OffSec). Exploraremos cada fase del pentesting, desde el reconocimineto con Nmap y Dirb, hasta la explotación de una vulnerabilidad en OpenLiteSpeed para obtener acceso inicial. Finalmente, escalaremos privilegios aprovechando capabilities en Python para obtener root. ¡Acompáñame en este proceso y descubre cómo hackear Katana de principio a fin!
WALKTHROUGHSOFFSEC
2/27/20254 min read
🗡️Walkthrough de la Máquina Katana🏮- Proving Grounds (OffSec)
📌 Detalles de la Máquina


🔍 Reconocimiento
Lanzamos un escaneo inicial para descubrir puertos abiertos en la máquina:
Puertos abiertos:
21/tcp (FTP) - vsftpd
22/tcp (SSH) - OpenSSH
80/tcp (HTTP) - Apache httpd
7080/tcp (HTTPS) - LiteSpeed
8088/tcp (HTTP) - httpd
8715/tcp (HTTP) - nginx
Y comprobamos la versión de los servicios:
Identificación de versiones:
21/tcp (FTP) - vsftpd 3.0.3
22/tcp (SSH) - OpenSSH 7.9p1
80/tcp (HTTP) - Apache 2.4.38
7080/tcp (HTTPS) - LiteSpeed
8088/tcp (HTTP) - LiteSpeed httpd
8715/tcp (HTTP) - nginx 1.14.2
🌐 Enumeración Web - Puerto 80
Accedemos a http://192.168.183.83 y encontramos una página con una imagen de una katana.


Fuzzing con Dirb
Rutas encontradas:
/ebook/
/ebook/admin.php
/ebook/info.php
/ebook/controllers/
/ebook/database/
/ebook/functions/
/ebook/models/
/ebook/template/
Vemos un portal de libros con un panel de administración (/ebook/admin.php) desde el que se pueden añadir y editar libros.




Probamos con una inyección XSS pero no funciona.


🌐 Enumeración Web - Puerto 8088
Accedemos a http://192.168.183.83:8088 y encontramos el mismo HTML con la imagen de la katana.


Fuzzing con Dirsearch
Rutas interesantes descubiertas:
/phpinfo.php
/docs
/upload.html
/upload.php
/protected/
Accedemos a http://192.168.183.83:8088/upload.html y encontramos un formulario para subir archivos.


Al acceder a http://192.168.183.83:8088/docs encontramos la versión de OpenLiteSpeed, y en http://192.168.183.83:8088/protected vemos un login.




🎯 Explotación
Aprovechamos upload.html para subir una reverse shell en PHP.
Generamos una reverse shell
Utilizamos RevShells y seleccionamos PHP PentestMonkey.


Subimos el fichero con nuestra reverse shell desde "Choose File" > "Submit" y se nos muestra el siguiente mensaje:


Observamos la ruta /opt/manager/html/katana_nuestro_archivo, por lo tanto sabemos que el archivo se ha subido a un servidor web. Para ejecutar la shell debemos acceder a ella, por ejemplo desde el navegador. Probamos en el puerto en el que estamos (8088), pero no hay resultado. Como sabemos que tenemos 3 puertos html más (80,7080 y 8715), por lo tanto revisamos también estos.




Finalmente, la encontramos en http://192.168.183.83:8715/katana_nuestro_archivo. Nos ponemos a escuchar y refrescamos la página.


Estabilizamos la shell
Obtenemos acceso como usuario www-data y capturamos la primera flag 🏴.


🔼 Escalada de Privilegios
Tras revisar diferentes aspectos, como permisos en los binarios o capabilities, encontramos que python2.7 tiene cap_setuid habilitado, lo que permite escalar a root. Pare ello nos apoyamos el recurso gtfobins.






Ejecutamos:
Conseguimos root y capturamos la segunda flag🏴.




🏆 Conclusión
✅ Puntos Clave:
Enumeración web reveló un formulario de subida en 8088/upload.html, pero los archivos se almacenan en 8715/uploaded/.
Subimos una reverse shell en PHP para obtener acceso inicial.
Escalamos privilegios explotando capacidades en python2.7.
📌 Lecciones aprendidas:
La importancia de revisar configuraciones malseguras en servidores web.
Cómo abusar de capacidades en binarios (getcap).
Cómo estabilizar shells limitadas en entornos restringidos.
🔗 ¡Espero que este walkthrough te haya sido útil! 🚀
