Nineveh

Publicado: 03 de Junio de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Medium

๐Ÿ“ Descripciรณn

Nineveh es una mรกquina Linux de dificultad media que presenta mรบltiples vectores de ataque interconectados. El camino hacia la compromisiรณn total incluye:

  • ๐Ÿ” Enumeraciรณn web exhaustiva en puertos 80 y 443 con virtual hosting

  • ๐Ÿ” Ataques de fuerza bruta contra paneles de autenticaciรณn

  • ๐Ÿ“ Explotaciรณn de Local File Inclusion (LFI) para lectura de archivos del sistema

  • ๐Ÿ’‰ Inyecciรณn de cรณdigo PHP a travรฉs de phpLiteAdmin vulnerable

  • ๐Ÿ”— Combinaciรณn de vulnerabilidades (LFI + RCE) para obtener shell inicial

  • ๐Ÿ—๏ธ Uso de claves SSH privadas extraรญdas mediante esteganografรญa

  • โšก Escalada de privilegios aprovechando vulnerabilidad en chkrootkit

Esta mรกquina es excelente para practicar la cadena de exploits, donde cada vulnerabilidad individual no es suficiente por sรญ sola, pero su combinaciรณn permite la compromisiรณn completa del sistema.

๐Ÿ”ญ Reconocimiento

Ping para verificaciรณn en base a TTL

๐Ÿ’ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.

Escaneo de puertos

Enumeraciรณn de servicios


โš ๏ธ Importante: Detectamos durante la fase de enumeraciรณn con nmap que se estรก realizando virtual hosting. Debemos aรฑadir el siguiente vhost a nuestro fichero /etc/hosts

๐ŸŒ Enumeraciรณn Web

80 HTTP (http://nineveh.htb/)

Al acceder al puerto 80 encontramos lo que parece ser un servidor apache en desarrollo, con un mensaje que indica que el contenido no ha sido aรฑadido aรบn:

๐Ÿ•ท๏ธFuzzing de directorios

Al realizar fuzzing de directorios usando herramientas como feroxbuster, gobuster y dirsearch encontramos algunos recursos interesantes.

๐Ÿ” Panel de Login Departamental

Al acceder a http://nineveh.htb/department/files/ somos redirigidos a un panel de login. Rรกpidamente nos percatamos de que al probar algunas credenciales genรฉricas el panel nos indica que el usuario admin existe porque cuando introducimos otro distinto nos indica lo contrario:

Tambiรฉn encontramos un comentario del administrador en el cรณdigo fuente de la pรกgina:

๐Ÿ’ฅ Ataque de Fuerza Bruta

Tras descartar que una posible vulnerabilidad de tipo SQLi en el panel de login, optamos por la vรญa de intentar un ataque de fuerza bruta usando el usuario admin y el diccionario rockyou mediante http-post-form y la herramienta hydra:

Transcurridos unos minutos obtenemos la contraseรฑa del usuario admin:

Al acceder con las credenciales obtenidas encontramos el siguiente mensaje:

Revisamos el otro servicio expuesto en el puerto 443 por si estas referencias se refiriesen a dicho servicio.

๐Ÿ—‚๏ธ Vulnerabilidad LFI (Local File Inclusion)

Merece la pena analizar si el parรกmetro notes es vulnerable a LFI. Aquรญ estรก la lista de payloads que probรฉ:

parรกmetro de notas
Mensaje de error

ninevehNotes.txt

Sin error, muestra nota

/etc/passwd

No se ha seleccionado ninguna nota.

../../../../../../../../../../etc/passwd

No se ha seleccionado ninguna nota.

ninevehNotes

Advertencia: include(files/ninevehNotes): no se pudo abrir el flujo: No existe el archivo o directorio en /var/www/html/department/manage.php en la lรญnea 31

ninevehNote

No se ha seleccionado ninguna nota.

files/ninevehNotes/../../../../../../../../../etc/passwd

El nombre del archivo es demasiado largo.

files/ninevehNotes/../../../../../../../etc/passwd

El contenido de/etc/passwd

/ninevehNotes/../etc/passwd

El contenido de/etc/passwd

Parece estar comprobando que la frase ninevehNotes estรฉ en el parรกmetro, o de lo contrario simplemente muestra โ€œNo Note is selected.โ€. Pero hay formas de evitar eso, ya sea simplemente eliminando la extensiรณn y subiendo directorios, o comenzando en / y luego entrar en una carpeta inexistente ninevehNotes e inmediatamente retrocede con ../.

Cofirmamos el LFI con el siguiente payload:

443 HTTP (https://nineveh.htb/)

A primera vista no hay gran cosa salvo esta imagen, realizamos fuzzing para ver si encontramos algo de utilidad.

๐Ÿ•ท๏ธFuzzing de directorios

Realizamos fuzzing de directorios con gobuster especificando la flag -k para omitir la comprobaciรณn del certificado:

Encontramos un directorio /db y otro /secure-notes que merece la pena analizar:

https://10.10.10.43/secure_notes/

๐Ÿ–ผ๏ธ Esteganografรญa en /secure-notes

รšnicamente vemos una imagen, no hay tampoco nada en el cรณdigo fuente, por lo que probablemente se estรฉ usando esteganografรญa para ocultar algo en ella.

Descargamos la imagen. En este caso no podemos usar steghide porque no es compatible con el formato .png. Pero podemos usar binwalk o incluso strings para ver si vemos algo:

Aunque podemos usar binwalk -e nineveh.png en este caso con el comando strings ya conseguimos ver una clave privada RSA que pertenece al usuario amrois:

El problema es que no tenemos ningรบn servicio SSH expuesto, por lo que esto ahora mismo todavรญa no nos sirve.

๐Ÿ’‰ Explotaciรณn de phpLiteAdmin v1.9

Al acceder a https://nineveh.htb/db/ encontramos un panel de un servicio phpLiteAdmin del que ademรกs podemos enumerar la versiรณn.

๐Ÿ”จ Ataque de Fuerza Bruta

Esta versiรณn del servicio presenta varias vulnerabilidades, pero requieren de estar autenticado. La รบnica vรญa que nos queda es usar nuevamente hydra con este panel para ver si logramos encontrar la contraseรฑa:

con -l fake simplemente indicamos un usuario aunque en este caso es irrelevante, ya que no hay campo en el formulario para el usuario, pero la herramienta lo exige.

๐ŸŽฏ Explotaciรณn de RCE

Buscamos exploits pรบblicos para esta versiรณn vulnerable de phplite. Uno de los mรกs interesantes e el de Remote PHP Code Injection para obtener una RCE

Ingresamos al panel de phpLiteAdmin y vemos que existe una รบnica base de datos llamada test y no existen tablas:

Los pasos que indica el exploit son los siguientes:

1 Crear una nueva base de datos cuyo nombre termine en .php:

2 A continuaciรณn, cambiamos a la nueva base de datos para crear una tabla con un campo de texto con un valor predeterminado de un webshell PHP bรกsico:

NOTA: Importante a la hora de usar la php shell usar " en el PHP, ya que ' estรก siendo utilizado por la base de datos para definir toda la cadena:

๐Ÿš€ Explotaciรณn Final - LFI + RCE

En este punto ya tenemos nueva web shell subida en la mรกquina, pero ahora no tenemos forma de desencadenar el ataque. ยฟO sรญ? Recordemos el LFI descubierto en pasos anteriores:

Ahora simplemente nos quedarรญa usar una bash shell one liner para ganar la RCE.

Lo codificamos a URL:

Iniciamos un listener con netcat

Lanzamos el payload

Ganamos la RCE

๐Ÿ‘ค Movimiento Lateral - Usuario amrois

Existe un directorio para el usuario amrois donde se ubica la flag pero no tenemos permisos:

๐Ÿ—๏ธ Uso de la Clave SSH Privada

Tras unos minutos enumerando la mรกquina, descubrimos que hay un servicio ssh corriendo localmente en la mรกquina:

Esto es interesante como una vรญa potencial de escalada, ya que recordemos que tenemos una clave rsa privada del usuario amrois, por lo que nos valdrรญa con guardar dicha clave en un archivo en el directorio /tmp de la mรกquina, darle permisos y autenticarnos vรญa ssh como amrois y ya podemos obtener la primera flag:

๐Ÿš€ Escalada de Privilegios a Root

Tras un buen rato enumerando la mรกquina, descubrimos algo interesante. Hay un directorio en la raรญz que no es usual llamado report:

๐Ÿ•ต๏ธ Monitoreo de Procesos

En los archivos identificamos lo que podrรญa ser un servicio para identificar rootkits porque hay referencias a /usr/bin/chkrootkit. Como sospecho que puede haber haber algรบn poceso en ejecuciรณn que lo estรฉ lanzando cada periodo de tiempo, decido usar pspy o como alternativa usar el siguiente script para monitorizar procesos que se puedan estar ejecutando como root:

Y efectivamente confirmamos que root estรก ejecutando periรณdicamente el comando

๐ŸŽฏ Exploit de chkrootkit

Este servicio tiene una versiรณn vulnerable para la cual existe un exploit para escalar privilegios

El txt indica que cualquier archivo en $SLAPPER_FILES se ejecutarรก debido a un error tipogrรกfico debido a este bucle:

Los pasos para llevar a cabo la explotaciรณn es crear un archivo llamado update en el directorio /tmp de la mรกquina introduciendo en รฉl un comando malicioso, para que cuando sea ejecutando por la herramienta podamos escalar privilegios

Iniciamos listener

Creamos el archivo malicioso en la ruta donde lo ejecutarรก chkrootkit y ganamos acceso como root.

Last updated