Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보최근 해킹조직이 노리는 치명적인 Oracle WebLogic Server 취약점
작성일 2018-07-26 조회 2308

 

 

 

 

Oracle WebLogic Server에서 안전하지 않은 역 직렬화 취약점(CVE-2018-2893)과 WebLogic Server Web Service Config 오류취약점(CVE-2018-2894)이보고되었습니다. 

 

 

[CVE-2018-2893] Oracle WebLogic Server StreamMessageImpl Activator RCE

 

이 취약점은 T3 요청에 포함된 신뢰할 수 없는 데이터의 역직렬화로 인한 것입니다.

Web 역직렬화 취약점은 지속적으로 발견되고 있고, 매우 Critical한 경우가 많았고, 최근의 경우에만 CVE-2015-4852, CVE-2016-0638, CVE-2016-3510, CVE-2017-3248, CVE-2018-2628, CVE-2018-2893 등이 이었습니다.

 

 

그림 1) 404 Team [http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html]

 

 

이번 Oracle 취약점은 빠르게 PoC가 인터넷상에 공개되었고, 실제 공격으로 연결되는 모습을 보이기도 하였습니다.
luoxk 그룹은 마이닝 공격 수행과 DDoS, Ghost RAT 공격등을 수행하는데, 지난 21일에는 약 3시간 동안 CVE-2018-2893 취약점을 이용한 jar패키지를 유포하였습니다.

 

 

그림 2) Google에서 CVE 코드만으로 검색되는 CVE-2018-2893 PoC Github 페이지

 

 

hxxp://103.99.115.220:8080/JexRemoteTools.jar      #md5 hash 2f7df3baefb1cdcd7e7de38cc964c9dc 

 표 1) luoxk 공격그룹 CVE-2018-2893 jar IoC

 

 

그림 3) luoxk 그룹 CVE-2018-2893 공격 도구 패키징

 

 

취약점 공격에 성공하면 C&C로부터 추가 악성코드를 다운받아 실행하게 됩니다.

 

 

hxxp://121.18.238.56:8080/aaa.exe           #to download xmrig  
hxxp://121.18.238.56:8080/testshell.sh      #to download SYN_145, SYN_7008, a4.sh, a5.sh  
hxxp://121.18.238.56:8080/SYN_145           #BillGates ddos malware, C2=121.18.238.56:145  
hxxp://121.18.238.56:8080/a4.sh             #kill process using higher than 10% CPU  
hxxp://121.18.238.56:8080/SYN_7008          #BillGates ddos malware,  C2=121.18.238.56:7008  
hxxp://121.18.238.56:8080/a5.sh             #kill process, download and run xmrig  
hxxp://121.18.238.56/xmrig                  #xmrig, downloaded and ran by the above a5.sh  
hxxp://luoxkexp.com:8099/ver1.txt           #xmrig configureation, detailed as follows  

표 2) luoxk 공격그룹 추가 악성코드 리스트

 

 

또한 블리핑컴퓨터[https://www.bleepingcomputer.com]에 따르면 적어도 3 가지 다른 PoC를 추적했으며, 실제 필드에서 공격 시도가 관찰되었다고 합니다. 첫 번째 시도는 7 월 21 일 토요일에 시작되었으며, PoC의 존재가 소셜 미디어에 확산되었다는 소식이 있습니다. 그 이후로 공격은 천천히 증가했습니다.
ISC SANS 와 Qihoo 360 Netlab의 보안 연구원 은 현재 착취 루틴을 자동화하고 대규모로 이러한 해킹을 수행하는 두 개의 개별 그룹을 추적하고 있다고 전했습니다.

 

 

 

[ 취약점 상세 설명 ]


Oracle WebLogic Server는 엔터프라이즈 급 다중 계층 Java Application Server 플랫폼입니다. WebLogic은 일반적으로 대기업 웹 응용 프로그램을위한 플랫폼으로 사용됩니다. WebLogic Platform의 구성 요소에는 Application Server, Portal, Application Integration 서비스 및 HTTP 웹 서버가 포함됩니다.


WebLogic은 WebLogic Scripting Tool (WLST)을 사용하여 원격으로 관리 할 수 있습니다. 기본적으로 WLST는 T3 프로토콜을 사용하고 WebLogic은 포트 7001에서 T3 요청을 수신합니다.

T3는 WebLogic에서 Remote Method Invocation (RMI)을 위해 사용하는 독점 바이너리 프로토콜입니다. 기본적으로, RMI 용으로 사용되는 Java 직렬화 된 객체의 래퍼로서 기능합니다. T3는 폐쇄 된 사양 프로토콜이므로 다음은 역 엔지니어링을 통해 결정됩니다.


T3 연결은 클라이언트와 서버 간의 핸드 셰이크로 시작됩니다. 이 핸드 셰이크는 ClientHelo 메시지를 사용하여 클라이언트가 시작합니다.

직렬화 가능한 모든 Java 객체는 Serializable 인터페이스를 구현합니다. 이 인터페이스는 개체를 각각 serialize 및 deserialize 할 때 호출되는 writeObject () 및 readObject () 메서드를 적용합니다. 
이러한 메소드는, Java 오브젝트의 직렬화 및 직렬화 복원 중에 커스텀 동작을 구현하도록 (듯이) 변경할 수 있습니다.

 

 

Oracle WebLogic Server에는 보안상 역직렬화(deserialization) 취약점이 존재합니다. 
T3 프로토콜 내에 포함 된 모든 직렬화 된 객체는 결국 InboundMessageAbbrev 클래스의 readObject 메서드 내에서 deserialize됩니다. 
이 직렬화를 구현하는 데 사용되는 클래스 인 ServerChannelInputStream은 FilteringObjectInputStream의 확장입니다. FilteringObjectInputStream는 위험한 클래스의 역 직렬화를 방지하는 블랙리스트를 구현합니다.

 

FilteringObjectInputStream은 checkLegacyBlacklistIfNeeded ()를 호출하는 resolveClass () 메소드를 구현하여 이를 구현합니다. checkLegacyBlacklistIfNeeded ()는 JRE의 블랙리스트 기능 또는 weblogic에서 제공하는 사용자 정의 레거시 블랙리스트 기능을 사용하여 위험한 클래스가 직렬화되지 않도록합니다.

 

 

공격자는 Remote 인터페이스를 구현하는 모든 직렬화 된 클래스 내에 sun.rmi.server.UnicastRef 객체를 내장 할 수 있습니다. deserialization하는 동안 대상 서버는 RMI에 대한 Java의 기본 프로토콜인 JRMP(Java Remote Method Protocol)세션을 공격자가 제어하는 수신기로 초기화합니다. 


그런 다음 공격자는 시스템에서 임의 코드를 실행하기 위해 악의적 인 직렬화 된 개체로 대상 서버에 응답 할 수 있습니다.

 


 그림 4) 대상 시스템 RCE 공격 화면

 

 

블랙리스트는 java.rmi.registry.Registry 클래스만 검사하지만 java.rmi.activation.Activator를 이용하면 블랙리스트 우회가 가능합니다.
원격의 인증되지 않은 공격자는 특수하게 조작 된 UnicastRef 개체가 포함 된 요청 메시지를 취약한 서비스로 보내이 취약점을 악용 할 수 있습니다. 


악용을 성공적으로 수행하면 대상 서버에서 공격자 제어 서버로 나가는 JRMP 세션이 생성되어 공격자가 블랙리스트에 걸리지 않고 취약점을 악용할 수 있습니다.

 

 


[CVE-2018-2894] Oracle WebLogic Server Web Service Config RCE

 

해당 취약점은 WebLogic Server의 활성화된 Web Service Test Page를 노리는 취약점으로 실제 필드에서 성공하기에는 난이도가 높은 취약점입니다.
실제 공격으로 이어지기는 어렵다고 생각되고, Shodan을 통해 검색해본 결과로도 취약버전의 서버에서도 여러 조건을 만족시켜야 하기 때문에 Exploit을 성공하기 하기까지는 많은 어려움이 있습니다.

 

 

 

[ 취약점 상세 설명 ]

 

1. 공격자는 Web Service Test Page가 존재하는 취약한 WebLogic 서버를 검색

GET /ws_utc/resources/setting/options/general HTTP/1.1
Host: 1.1.1.1:7001
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.18.4

 

그림 5) Web Service Test Page Work Home dir 설정 [https://qiita.com/oraizonja/items/c26dc25dddfb345440fb]

 

 

2. Response 결과에서 user_projects/domains 값을 찾아 현재 작업 디렉토리명을 확인

 

3. 현재 작업 디렉토리를 공격자가 원하는 디렉토리로 변경
Work Home 디렉토리(wls12210)를 general 디렉토리로 변경 

 

그림 6) 대상시스템 Work 디렉토리 임의변경 [https://qiita.com/oraizonja/items/c26dc25dddfb345440fb]

 

 

4. 공격자는 이제 작업 디렉토리 루트페이지부터 접근이 가능

 

5. POST /ws_utc/resources/setting/keystore HTTP/1.1 을 통해 백도어를 업로드

 

그림 7) 공격자는 대상 시스템에 백도어를 업로드 [https://qiita.com/oraizonja/items/c26dc25dddfb345440fb]

 

 

6. 응답값의 Key값 확인

 

그림 8) 업로드의 응답값으로 keysrotreitem key값이 공격자에게 전달[https://qiita.com/oraizonja/items/c26dc25dddfb345440fb]

 

 

7. 공격자는 업로드된 백도어의 경로를 요청해 임의 코드를 대상 서버에서 실행 가능
ex) http://1.1.1.1:7001/ws_utc/css/config/keystore/1532091925590_wins.jsp

 

 

그림 9) 응답key값을 이용해 keystore디렉토리의 파일명 유추 공격 [https://qiita.com/oraizonja/items/c26dc25dddfb345440fb]

 

 


취약시스템

Oracle WebLogic Server 12.2.1.3 
Oracle WebLogic Server 12.2.1.2 
Oracle WebLogic Server 12.1.3.0 
Oracle WebLogic Server 10.3.6.0 

 

 


대응방안

1. weblogic.security.net.ConnectionFilterImpl 설정을 통하여 Connection Filter를 활성화, T3/T3s 프로토콜의 접근권한 설정 시, 취약점을 이용한 접근을 차단
2. 취약점에 영향 받는 서비스 포트(80번)에 대해 승인된 시스템 및 관리자만 접근할 수 있도록 방화벽 등을 통한 접근통제 설정
  - 7001번은 기본 포트이며 포트를 변경하여 사용할 경우 변경된 포트로 접근통제 설정
3. 벤더사의 최신패치를 적용한다.
http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
4. Snort.org 권고 Snort 룰 
[CVE-2018-2894] Oracle WebLogic Server Web Service Config RCE
alert tcp $EXTERNAL_NET any -> $HOME_NET 7001 (msg:"SERVER-WEAPP Oracle WebLogic Server unauthenticated compromise attempt"; flow:to_server,established; content:"/ws_utc/css/config/keystore/"; fast_pattern:only; http_uri; content:".jsp"; http_uri; content:"X-Requested-With: XMLHttpRequest"; http_header; content:"Content-Type: application/x-www-form-urlencoded"; http_header; reference:cve,2018-2894; reference:url,www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html; metadata:ruleset community, service http; classtype:attempted-admin; sid:8000201; rev:1;)

 

 

Sniper 제품군 대응방안

 

Sniper-IPS

[4397] Oracle WebLogic Server StreamMessageImpl Activator RCE
[4398] Oracle WebLogic Server StreamMessageImpl Activator RCE.A
[4399] Oracle WebLogic Server Web Service Config RCE

 

Sniper-UTM

[805374619] Oracle WebLogic Server StreamMessageImpl Activator RCE
[805374620] Oracle WebLogic Server StreamMessageImpl Activator RCE.A
[805374621] Oracle WebLogic Server Web Service Config RCE

 

Sniper-APTX

[3649] Oracle WebLogic Server StreamMessageImpl Activator RCE
[3650] Oracle WebLogic Server StreamMessageImpl Activator RCE
[3651] Oracle WebLogic Server Web Service Config RCE

 

 

 

참조

http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
https://isc.sans.edu/diary/rss/23896
https://github.com/pyn3rd/CVE-2018-2893/

첨부파일 첨부파일이 없습니다.
태그 CVE-2018-2893  CVE-2018-2894