
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은 IOCs(IP, 셸 스테이저 명령, SHA-256 해시)가 포함된 긴급 권고를 발표했습니다. 노출된 시스템에 즉시 패치 또는 차단 조치를 적용하고, 제공된 탐지 규칙으로 헌팅을 수행하며, 아래의 안전한 Python 스크립트로 로그를 스캔하세요. 프로덕션 환경에서 공개 PoC를 실행하지 마세요 — 승인된 격리된 랩에서만 테스트하세요. 🛑🗿
Oracle EBS는 핵심 비즈니스 기능(ERP, 급여, 재무, HR)을 실행합니다. 웹에 노출된 EBS 인스턴스의 사전 인증 RCE는 공격자가 애플리케이션 서버에서 임의의 명령을 실행하고, 민감한 데이터에 접근하고, 웹셸을 설치하고, 파일을 외부로 유출할 수 있게 합니다. 이 취약점은 실제 환경에서 무기화되어 갈취 캠페인과 연계되었습니다 — 이론적인 CVE가 아닌 실제 비즈니스 사고입니다. 🔥
/OA_HTML/ 흐름 및 관련 엔드포인트UiServlet 및 /OA_HTML/에 조작된 POST/요청 전송./bin/bash -i >& /dev/tcp/...).Oracle은 이러한 IOCs가 여러 사고에 걸쳐 관찰된 활동임을 명시합니다(CVE-2025-61882에 국한되지 않음). 양성 매치가 발견되면 우선순위가 높은 것으로 취급하세요.
IP 주소
200.107.207.26 — 잠재적 GET/POST 활동185.181.60.11 — 잠재적 GET/POST 활동셸 스테이저 패턴
sh -c /bin/bash -i >& /dev/tcp// 0>&1 — 관찰된 아웃바운드 TCP 리버스 셸 스타일 명령SHA-256 해시(익스플로잇 / PoC 아티팩트)
76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d
(oracle_ebs_nday_exploit_poc_scattered_lapsus_retard_cl0p_hunters.zip)aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121
(.../exp.py)6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b
(.../server.py)영향을 받는 버전(강조를 위해 반복)
TL;DR GitHub 저장소에는 CVE-2025-61882(Oracle E-Business Suite 사전 인증 RCE)에 대한 수동적 탐지 아티팩트가 포함되어 있습니다. 이를 악용이 아닌 헌팅, 트리아지, 격리에 사용하세요. 🛑🗿
간략한 Description.md(미니 README)가 이미 detections/ 폴더 안에 추가되었습니다 — 전체 문서와 TL;DR은 해당 파일을 확인하세요. 이 최상위 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 — 엔드포인트 로그에서 리버스 셸 스타일 프로세스 생성 탐지.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
컨텍스트와 IOCs를 위해 detections/Description.md를 검토하세요. ✅
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 출력을 검토하고 필요에 따라 에스컬레이션하세요. 🕵️♂️
원칙: 버전 노출 또는 UI 히트를 높은 신뢰도의 지표(악성 IP, UiServlet/OA_HTML에 대한 POST, 리버스 셸 프로세스 문자열, 파일 해시 매칭, 대용량 아웃바운드 업로드)와 결합하세요.
Splunk 예시 Oracle IOCs로의 트래픽 탐지:
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) // adjust for your internal ranges
| stats count by clientip, uri, useragent, _time
| sort - count
리버스 셸 프로세스 생성 탐지(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/가 포함된 프로세스 생성 → 치명적이 스크립트는 결합 형식의 웹 액세스 로그를 파싱하여 의심스러운 UiServlet/OA_HTML POST, Oracle 목록의 악성 IP에서의 요청, 셸 스테이저 패턴 및 제공된 SHA-256 해시의 발생을 플래그합니다. 네트워크 활동을 수행하거나 익스플로잇 코드를 실행하지 않습니다.
#!/usr/bin/env python3
"""
ebs_safe_hunt.py — Safe log parser for CVE-2025-61882 indicators.
Usage:
python3 ebs_safe_hunt.py /path/to/access.log
Notes:
- Parses Apache/Nginx combined log lines.
- Flags UiServlet/OA_HTML POSTs, malicious IPs from Oracle advisory,
shell stager patterns, and observed SHA256 hashes.
- Safe: no network / no exploit execution.
"""
import sys
import re
from collections import Counter, defaultdict
# Regex for common combined log format
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-provided IOCs
MALICIOUS_IPS = {"200.107.207.26", "185.181.60.11"}
MALICIOUS_HASHES = {
"76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d",
"aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121",
"6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b",
}
SHELL_PATTERN = "/bin/bash -i" # we search for this substring (reverse shell style)
SUSPICIOUS_PATHS = ["UiServlet", "/OA_HTML/"]
# Optional: list of suspicious user-agents often used by scanners
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:
# Optionally, still check for hashes or shell pattern in unstructured lines
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) Malicious IPs (Oracle)
if ip in MALICIOUS_IPS:
suspicious["malicious_ips"].append((line_no, ip, method, uri, ua))
# 2) POSTs to suspicious EBS paths
if method.upper() == "POST" and any(p in uri for p in SUSPICIOUS_PATHS):
suspicious["servlet_posts"].append((line_no, ip, uri, ua))
# 3) Suspicious user agents (scanners)
if any(k.lower() in ua.lower() for k in SUSPICIOUS_UAS):
suspicious["suspicious_ua"].append((line_no, ip, uri, ua))
# 4) Very large responses (possible exfil) — tune threshold for your environment
try:
if size != "-" and int(size) > 5_000_000: # >5MB
suspicious["large_responses"].append((line_no, ip, uri, size))
except ValueError:
pass
# 5) Shell stager pattern or /dev/tcp patterns in the line
if SHELL_PATTERN in line or "/dev/tcp/" in line:
suspicious["shell_stager"].append((line_no, ip, uri, line.strip()))
# 6) Known malicious file hashes present in logs (if available)
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 HUNT REPORT ===\n")
print("Top source IPs:")
for ip, c in r["ip_counts"].most_common(top):
print(f" {ip}: {c}")
print("\nTop URIs:")
for uri, c in r["uri_counts"].most_common(top):
print(f" {uri}: {c}")
print("\nTop User-Agents:")
for ua, c in r["ua_counts"].most_common(top):
print(f" {ua}: {c}")
print("\nSuspicious findings:")
if not r["suspicious"]:
print(" None found.")
return
for k, items in r["suspicious"].items():
print(f"\n-- {k} ({len(items)} matches) --")
for item in items[:100]:
print(" " + " | ".join(map(str, item)))
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: 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에서 직접 제공한 IOCs, 실용적인 헌팅, 그리고 트리아지를 시작할 안전한 스크립트. EBS 서버를 패치하거나 차단하고, SOC 전체에 IOC 헌팅을 실행하고, 의심스러운 것은 모두 격리하세요. 경계를 유지하고, 빠르게 패치하고, 사고 대응 역량을 발휘하세요. 🗿🔥