🟢PyExp

Write-up de la máquina PyExp de Proving Grounds #writeup #walkthrough

Enumeración

NMAP

Comenzamos la máquina PyExp realizando un escaneo de los servicios que tiene abietos esta máquina.

nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.93.118

Dos puertos abiertos, 1337 y 3306. A continuación, seguimos con un escaneo en profundidad de estos dos puertos.

nmap -p1337,3306 -sVC -Pn -n -vvv 192.168.93.118

Existen 2 puertos abiertos en el equipo target.

  • Puerto 1337 -> SSH -> OpenSSH 7.9

  • Puerto 3306 -> MySQL -> MySQL 5.5.5-10.3.23-MariaDB

Además también vemos información sobre la base de datos que puede ser interesante.

Puerto 3306 (MySQL)

Comenzamos la enumeración del puerto 3306, que es el puerto de MySQL. Vamos a iniciar realizando una fuerza bruta para averiguar la password con dos herramientas: "hydra" y "medusa" y haremos uso de la wordlist "rockyou.txt".

hydra -l root -P /home/kali/rockyou.txt 192.168.93.118 mysql
medusa -h 192.168.93.118 -M mysql -u root -P /home/kali/rockyou.txt -t 40 -f

Ya tenemos las credenciales para acceder a la base de datos MySQL. "root:prettywoman".

Vamos a iniciar sesión en MySQL con las credenciales que encontramos anteriormente.

mysql -u root -h 192.168.93.118 -p

Continuamos enumerando las bases de datos disponibles.

 show databases;

Seleccionamos la base de datos "data".

USE data;

Dentro de la basede datos "data", encontramos una tabla llamada "fernet". Vamos a realizar un volcado de los datos de esta tabla.

select * from fernet;

Parecen las credenciales para algún tipo de cuenta en el equipo. Vamos a intentar descifrarlos con algunos de los algoritmos más comunes. Utilizaremos CyberChef. Pero no logramos descifrar ningún hash.

El nombre de la tabla parece extraño, ¿qués es fernet?. Vamos a consultarlo.

Fernet es una implementación de criptografía simétrica, en la que que un mensaje cifrado con ella no puede ser leido sin una clave.

Vamos a intentar descifrar el contenido con esta herramienta.

Explotación

Anteriormente obtuvimos unas credenciales. Recordamos que en el escaneo de puertos inicial existía un puerto SSH. ¿Pueden las credenciales para este servicio? Vamos a comprobarlo.

ssh [email protected] -p 1337

Podemos iniciar sesión en el servicio SSH con las credenciales anteriormente encontradas.

Buscamos la flag local.txt

Elevación de privilegios

Comenzamos enumerando los programos que podemos ejecutar como root sin contraseña.

sudo -l 

Vamos a ver el contenido del archivo "opt/exp.py".

Este script os hace una pregunta al solicitar una entrada. Si podemos escapar de la shell mientras este script está en funcionamiento, deberiamos obtener privilegios elevados.

Ejecutamos el siguiente comando para lanzar el ejecutable:

sudo /usr/bin/python2 /opt/exp.py

Y este otro para escapar de la shell y obtener privilegios elevados.

import os; os.system("/bin/sh")

Vamos a por la flag proof.txt para acabar este CTF.

Last updated