Oracle E-Business Suite(版本 12.2.3 - 12.2.14)中存在一个严重的预认证远程代码执行(RCE)漏洞,攻击者可通过恶意 HTTP 请求完全控制易受攻击的服务器——该漏洞现已在野外被积极利用。
CVE-2025-61882 是 Oracle E-Business Suite(EBS) 中的一个严重预认证 RCE 漏洞,已被勒索/数据窃取活动积极利用。受影响版本:12.2.3 → 12.2.14。Oracle 发布了紧急公告,包含 IOC(IP 地址、shell 暂存器命令、SHA-256 哈希)。请立即修补或隔离暴露的系统,使用提供的检测规则进行狩猎,并使用下方安全的 Python 脚本扫描日志。切勿在生产环境运行公开 PoC——仅在获得授权的隔离实验室中进行测试。🛑🗿
Oracle EBS 运行着关键业务功能(ERP、薪资、财务、人力资源)。面向 Web 的 EBS 实例中的预认证 RCE 允许攻击者在应用服务器上执行任意命令,可能访问敏感数据、植入 WebShell 并窃取文件。该漏洞已在野外被武器化,并与勒索活动相关联——这是一个真实的业务安全事件,而非理论上的 CVE。🔥
/OA_HTML/ 流程及相关端点UiServlet 和 /OA_HTML/ 发送构造的 POST/请求以触发 RCE。/bin/bash -i >& /dev/tcp/...)。Oracle 指出这些 IOC 是跨事件观察到的活动(不限于 CVE-2025-61882)。任何正向匹配都应视为高优先级。
IP 地址
200.107.207.26 — 潜在的 GET/POST 活动185.181.60.11 — 潜在的 GET/POST 活动Shell 暂存器模式
sh -c /bin/bash -i >& /dev/tcp// 0>&1 — 观察到的出站 TCP 反向 Shell 风格命令SHA-256 哈希(利用/PoC 工件)
76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d
(oracle_ebs_nday_exploit_poc_scattered_lapsus_retard_cl0p_hunters.zip)aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121
(.../exp.py)6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b
(.../server.py)受影响版本(重复强调)
摘要 该 GitHub 仓库包含针对 CVE-2025-61882(Oracle E-Business Suite 预认证 RCE)的被动检测工件。请使用这些规则进行狩猎、分类和遏制——而非利用。🛑🗿
detections/ 文件夹中已添加了一份简短的 Description.md(迷你 README)——请查看该文件获取完整说明和摘要。此顶层 README 仅概述检测包及其用法,以便您快速获取并运行。
detections/splunk/
oracle_cve61882_ioc_traffic.spl — 检测与 Oracle 提供的 IOC IP 地址之间的流量。oracle_cve61882_uiservlet_post.spl — 检测来自外部 IP 对 UiServlet / /OA_HTML/ 的可疑 POST 请求。oracle_cve61882_reverse_shell.spl — 检测端点日志中反向 Shell 风格的进程创建。detections/elastic/
oracle_cve61882_uiservlet_post.kql — 用于 UiServlet/OA_HTML POST 请求的 KQL。oracle_cve61882_filehash_detection.kql — 用于匹配 Oracle 提供的恶意 SHA-256 哈希的 KQL。detections/scripts/
ebs_safe_hunt.py — 安全的离线 Python 日志解析器(无网络调用,不执行利用代码)。可针对访问日志副本运行。detections/Description.md
查看 detections/Description.md 获取上下文和 IOC。✅
将 Splunk .spl 查询放入您的 Splunk 环境(或导入为已保存的搜索/告警)。
将 KQL 查询粘贴到 Kibana / Elastic 检测规则中。
将 ebs_safe_hunt.py 复制到仅对归档或脱敏日志具有读取权限的主机,然后运行:
python3 ebs_safe_hunt.py /path/to/access.log
查看标记的 malicious_ips、servlet_posts、shell_stager 和 malicious_hash 输出,并根据需要升级处理。🕵️♂️
原则:将版本信息泄露或界面命中与高置信度指标(恶意 IP、对 UiServlet/OA_HTML 的 POST、反向 Shell 进程字符串、文件哈希匹配、大量出站上传)相结合。
Splunk 示例 检测与 Oracle IOC 的流量:
index=web_logs OR index=proxy_logs
| where clientip IN ("200.107.207.26","185.181.60.11") OR dest_ip IN ("200.107.207.26","185.181.60.11")
| stats count by clientip, dest_ip, uri, method, useragent, _time
| sort - count
检测来自外部 IP 的 UiServlet/OA_HTML POST 请求:
index=web_logs sourcetype=access_combined
| where (uri LIKE "%UiServlet%" OR uri LIKE "%/OA_HTML/%") AND method="POST"
| where NOT cidrmatch("10.0.0.0/8", clientip) // 根据您的内网范围调整
| stats count by clientip, uri, useragent, _time
| sort - count
检测反向 Shell 进程创建(EDR):
index=endpoint_events sourcetype=os_process
| where process_cmdline LIKE "%/bin/bash -i%/dev/tcp/%" OR process_cmdline LIKE "%/dev/tcp//%"
| table _time host user process_name process_cmdline parent_process
Elastic / KQL 示例 UiServlet 可疑 POST:
http.request.method : "POST" and (http.request.uri : "*UiServlet*" or http.request.uri : "/OA_HTML/*") and not client.ip : ("10.0.0.0/8")
文件哈希检测:
event.type: "file" and file.hash.sha256 : ("76b6d36e04e3...", "aa0d3859d66...", "6fd538e4a8e3...")
Sigma(可移植规则思路)
UiServlet//OA_HTML/ 的 POST → 高优先级/bin/bash -i >& /dev/tcp/ 的进程 → 严重该脚本解析 combined 格式的 Web 访问日志,并标记可疑的 UiServlet/OA_HTML POST 请求、来自 Oracle 所列恶意 IP 的请求、shell 暂存器模式以及提供的 SHA-256 哈希的出现。它不执行任何网络活动或运行利用代码。
#!/usr/bin/env python3
"""
ebs_safe_hunt.py — CVE-2025-61882 指标的安全日志解析器。
用法:
python3 ebs_safe_hunt.py /path/to/access.log
说明:
- 解析 Apache/Nginx combined 日志行。
- 标记 UiServlet/OA_HTML POST 请求、Oracle 公告中的恶意 IP、
shell 暂存器模式以及观察到的 SHA256 哈希。
- 安全:无网络 / 不执行利用代码。
"""
import sys
import re
from collections import Counter, defaultdict
# 常见 combined 日志格式的正则表达式
LOG_PATTERN = re.compile(
r'(?P<ip>\S+) \S+ \S+ \[(?P<time>.*?)\] "(?P<method>\S+) (?P<uri>\S+) \S+" (?P<status>\d{3}) (?P<size>\S+) "(?P<ref>[^"]*)" "(?P<ua>[^"]*)"'
)
# Oracle 提供的 IOC
MALICIOUS_IPS = {"200.107.207.26", "185.181.60.11"}
MALICIOUS_HASHES = {
"76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d",
"aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121",
"6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b",
}
SHELL_PATTERN = "/bin/bash -i" # 我们搜索此子字符串(反向 Shell 风格)
SUSPICIOUS_PATHS = ["UiServlet", "/OA_HTML/"]
# 可选:扫描器常用的可疑用户代理列表
SUSPICIOUS_UAS = ["curl", "wget", "python-requests", "nikto", "sqlmap", "masscan", "Nmap"]
def analyze_log(path):
ip_counts = Counter()
uri_counts = Counter()
ua_counts = Counter()
suspicious = defaultdict(list)
with open(path, "r", errors="replace") as fh:
for line_no, line in enumerate(fh, 1):
m = LOG_PATTERN.search(line)
if not m:
# 可选:仍检查非结构化行中的哈希或 shell 模式
if any(h in line for h in MALICIOUS_HASHES):
suspicious["malicious_hash_lines"].append((line_no, line.strip()))
if SHELL_PATTERN in line or "/dev/tcp/" in line:
suspicious["shell_pattern_lines"].append((line_no, line.strip()))
continue
ip = m.group("ip")
method = m.group("method")
uri = m.group("uri")
ua = m.group("ua")
size = m.group("size")
ip_counts[ip] += 1
uri_counts[uri] += 1
ua_counts[ua] += 1
# 1) 恶意 IP(Oracle)
if ip in MALICIOUS_IPS:
suspicious["malicious_ips"].append((line_no, ip, method, uri, ua))
# 2) 对可疑 EBS 路径的 POST 请求
if method.upper() == "POST" and any(p in uri for p in SUSPICIOUS_PATHS):
suspicious["servlet_posts"].append((line_no, ip, uri, ua))
# 3) 可疑用户代理(扫描器)
if any(k.lower() in ua.lower() for k in SUSPICIOUS_UAS):
suspicious["suspicious_ua"].append((line_no, ip, uri, ua))
# 4) 超大响应(可能的窃取)— 根据您的环境调整阈值
try:
if size != "-" and int(size) > 5_000_000: # >5MB
suspicious["large_responses"].append((line_no, ip, uri, size))
except ValueError:
pass
# 5) 行中的 shell 暂存器模式或 /dev/tcp 模式
if SHELL_PATTERN in line or "/dev/tcp/" in line:
suspicious["shell_stager"].append((line_no, ip, uri, line.strip()))
# 6) 日志中存在的已知恶意文件哈希(如果可用)
for h in MALICIOUS_HASHES:
if h in line:
suspicious["malicious_hash"].append((line_no, ip, uri, h))
return {
"ip_counts": ip_counts,
"uri_counts": uri_counts,
"ua_counts": ua_counts,
"suspicious": suspicious
}
def pretty_report(r, top=10):
print("\n=== EBS 狩猎报告 ===\n")
print("Top 源 IP:")
for ip, c in r["ip_counts"].most_common(top):
print(f" {ip}: {c}")
print("\nTop URI:")
for uri, c in r["uri_counts"].most_common(top):
print(f" {uri}: {c}")
print("\nTop 用户代理:")
for ua, c in r["ua_counts"].most_common(top):
print(f" {ua}: {c}")
print("\n可疑发现:")
if not r["suspicious"]:
print(" 未发现。")
return
for k, items in r["suspicious"].items():
print(f"\n-- {k} ({len(items)} 个匹配) --")
for item in items[:100]:
print(" " + " | ".join(map(str, item)))
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法:python3 ebs_safe_hunt.py /path/to/access.log")
sys.exit(1)
path = sys.argv[1]
result = analyze_log(path)
pretty_report(result)
使用方法:将 ebs_safe_hunt.py 复制到对归档或复制的日志具有读取权限的主机。运行:
python3 ebs_safe_hunt.py /path/to/access.log
查看标记的 malicious_ips、servlet_posts、shell_stager 和 malicious_hash 结果,并适当升级处理。🕵️♂️
200.107.207.26 和 185.181.60.11 以及任何其他供应商提供的 IOC IP/域名。主题: 严重:CVE-2025-61882 — Oracle E-Business Suite — 需立即采取行动
内容: Oracle EBS(12.2.3–12.2.14)中的严重预认证 RCE(CVE-2025-61882)。已被数据窃取/勒索活动利用。
立即要求(未来 24 小时):
风险: 高——可能导致完整应用服务器入侵、数据窃取、监管风险。底线:立即修补或隔离。—— 🗿
您已获得所需的一切:概述、来自 Oracle 的 IOC、实用狩猎规则以及用于启动分类的安全脚本。修补或隔离您的 EBS 服务器,通过 SOC 运行 IOC 狩猎,并隔离任何可疑内容。保持警惕、快速修补、展现您的应急响应能力。🗿🔥