🟢Seppuku

Write-up de la máquina Seppuku de Proving Grounds #writeup #walkthrough

Enumeración

Servicios abiertos

Comenzamos la resolución de este CTF enumerando de forma rápida los servicios disponibles.

nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.96.90

8 puertos disponibles en la máquina víctima. Vamos a realizar la enumeración profunda de estos servicios.

nmap -p21,22,80,139,445,7080,7601,8088 -Pn -n -sVC -vvv 192.168.96.90

Puertos abiertos:

  • Puerto 21 -> FTP -> vsftpd 3.0.3

  • Puerto 22 -> SSH -> OpenSSH 7.9

  • Puerto 80 -> HTTP -> nginx 1.14.2

  • Puerto 139 -> SMB

  • Puerto 445 -> SMB

  • Puerto 7080 -> HTTP -> LiteSpeed httpd

  • Puerto 7601 -> HTTP -> Apache httpd 2.4.38

  • Puerto 8088 -> HTTP -> LiteSpeed httpd

Enumeración Web

Hay varios servicios Web, disponibles. Vamos a comenzar enumerando estos servicios. Dado que el puerto 7601 está abierto, nos vamos al navegador y exploramos la IP de destino 192.168.96.90.

Seguimos con la enumeración de directorios.

dirsearch -u http://192.168.96.90:7601/ -i200,301 -e txt,html,php -w '/home/elhackeretico/Documentos/directory-list-2.3-small.txt'

Dos directorios interesantes, /keys y /secret. Vamos a ver que contienen.

El archivo que podemos encontrar en http://192.168.96.90:7601/keys/private es una clave privada para algún usuario que de momentos no tenemos.

En el directorio /secret, encontramos dos archivos que pueden ser interesantes.

Descargamos esta lista de contraseñas, nos puede ser útil en el siguiente paso.

Explotación

Tenemos el nombre de usuario "seppuku". Ahora, nuestro siguiente objetivo es determinar la contraseña para este usuario mediante la herramienta Hydra, la cual nos permitirá realizar ataques de fuerza bruta en el inicio de sesión SSH. En este caso, la forma más efectiva de adivinar la contraseña es utilizando el archivo de contraseñas que descubrimos en el directorio secreto durante el escaneo con dirsearch.

hydra -l seppuku -P password.lst 192.168.96.90 ssh

La contraseña para el usuario seppuku es eeyoree.

Tenemos un nombre de usuario y una contraseña, así que intentamos conectarnos al sistema de destino a través de SSH. Logramos iniciar sesión con éxito.

Una vez que hayamos iniciado sesión, profundicemos en la búsqueda de archivos ocultos. Así, descubrimos un archivo escondido denominado .passwd, el cual nos proporciona una contraseña, aunque aún desconocemos su propósito.

Posteriormente, intentamos acceder al directorio principal, pero nos encontramos con la limitación del shell rbash, lo que nos impide continuar.

Dado que tenemos las credenciales SSH del usuario que está utilizando el shell rbash, podemos emplear el siguiente comando en conjunto con SSH para eludir el rbash y acceder al shell bash completo, evitando así las restricciones de la cárcel de shell.

ssh [email protected] -t "bash --noprofile"

Ahora intentaremos acceder de nuevo al directorio principal, y esta vez hemos logrado hacerlo con éxito. Al revisar nuevamente los archivos ocultos, descubrimos dos nuevos usuarios llamados "samurai" y "tanto".

Procedamos a iniciar sesión como "samurai" utilizando la contraseña que encontramos en el archivo oculto llamado ".passwd".

Utilicemos el comando sudo -l para listar si este usuario tiene permiso para ejecutar alguna aplicación con privilegios de root.

sudo -l

Descubrimos que el usuario 'seppuku' tiene permiso para ejecutar el comando '.cgi_bin/bin' como el usuario 'samurai', quien se presume tiene acceso root.

Escalada de privilegios

Si se recuerda, enumeramos la clave privada cuando realizamos el ataque de fuerza bruta en el directorio. En este caso, copiamos el contenido del archivo de clave privada encontrado durante el escaneo de dirsearch y lo guardé en un archivo vacío llamado sshkey, al cual le asigné permisos chmod 600.

Dado que el puerto 22 está abierto en la máquina objetivo, intentaremos establecer una conexión con la máquina objetivo utilizando esta clave para el usuario "tanto" y ejecutaremos el siguiente comando.

ssh -i sshkey [email protected] -t "bash –noprofile"

Tras iniciar sesión como tal usuario, intentamos buscar el directorio .cgi_bin para ejecutarlo con privilegios de sudo. Sin embargo, no pudimos encontrar dicho directorio. Por lo tanto, procedemos a crear un directorio llamado .cgi_bin y guardamos el script de bash en un archivo llamado "bin" con el objetivo de obtener acceso a la shell de bash a través de él.

Ahora era el momento de explotar el programa .cgi_bin. Así que, una vez más, iniciamos sesión como Samurai y ejecutamos el siguiente comando. Esto nos permitirá obtener el shell de root, y completamos el desafío capturando la flag de proof.txt y la flag local.txt

Last updated