🟢Seppuku
Write-up de la máquina Seppuku de Proving Grounds #writeup #walkthrough
Last updated
Write-up de la máquina Seppuku de Proving Grounds #writeup #walkthrough
Last updated
Comenzamos la resolución de este CTF enumerando de forma rápida los servicios disponibles.
8 puertos disponibles en la máquina víctima. Vamos a realizar la enumeración profunda de estos servicios.
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
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.
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.
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.
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.
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.
Descubrimos que el usuario 'seppuku' tiene permiso para ejecutar el comando '.cgi_bin/bin' como el usuario 'samurai', quien se presume tiene acceso root.
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.
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