Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보중국발 10월 Oracle CPU 취약점을 이용한 공격 국내 유입
작성일 2018-11-21 조회 2215

Translation into English

Translation into Japanese (日本語への翻訳)

Translation into Chinese (翻译成中文)

 

 

최근 발표된 신규 Oracle 취약점을 이용한 중국발 국내 해킹이 활발히 발생하고 있습니다.
주 공격 대상은 국내 공공기관으로 환경,과학,근로 분야의 웹사이트를 대상으로 취약점 공격을 시도하고 있습니다.

 

주로 공격에 사용되는 취약점은 [CVE-2018-3191] Oracle WebLogic AbstractPlatformTransactionManager RCE 으로 해당 취약점은 10월 중순부터 Github를 통해 PoC가 공개되었습니다.

 

 

[그림. 1] https://zhuanlan.zhihu.com/p/47429858

 

 

[그림 2.] https://zhuanlan.zhihu.com/p/47429858

 


또한 다수의 중국 웹페이지에 시연 영상과 분석내용이 개제되어 Apache 취약점과 함께 중국해커에게 자주 이용되고 있습니다.

중국의 해커들은 국내 서버에 저장된 사용자 정보를 유출하고, 제2의 공격 거점으로 대상서버를 활용하고 있습니다.

 

 

[그림 3.] 공격 서버 Shodan 검색내역

 

 

 


► 주요 취약점 분석

 

1.[CVE-2018-3191] Oracle WebLogic AbstractPlatformTransactionManager RCE

 

Oracle WebLogic Server에 임의 코드 실행 취약점이 존재합니다.
Oracle WebLogic은 역직렬화 취약점을 방어하기 위해 직렬화 객체 블랙리스트를 보유하고 있습니다.
java.rmi.activation sun.rmi.server 클래스는 위험한 클래스의 비직렬화를 방지하는 블랙리스트를 보유하고 있습니다.
- Spring JNDI 삽입을 방지하는 데 사용되는 AbstractPlatformTransactionManager에 JtaTransactionManage클래스에서 취약점 발생
- taTransactionManager 클래스는 AbstractPlatformTransactionManager를 상속 받아 Serializable 인터페이스를 구현
- 여기서 private 속성 userTransactionName은 JNDI 주소 지정에 사용
- 다음은 PoC의 핵심 코드
public static Object getJtaTransactionManagerObject(String command){
int seq = command.indexOf(':');
if (seq < 0){
command = "rmi://localhost:1099/Exploit";
}
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
jtaTransactionManager.setUserTransactionName(command);
return jtaTransactionManager;
}

 

[그림 4.] CVE-2018-3191 Oracle 역직렬화 취약점 공격 트래픽 - 1

 

 

[그림 5.] CVE-2018-3191 Oracle 역직렬화 취약점 공격 트래픽 - 2

 

공격자는 블랙리스트를 우회하기 위해 AbstractPlatformTransactionManager을 이용해 블랙리스트의 객체 호출을 시도합니다.
원격의 공격자는 java.rmi.activation sun.rmi.server 클래스의 블랙리스트 우회를 위해 AbstractPlatformTransactionManager을 이용해 역직렬화를 시도합니다.
성공시 WebLogic의 블랙리스트 제한을 우회하여 RMI 클래스를 호출할 수 있습니다.
취약점 공격에 성공하면 RemoteObjectInvocationHandler를 통해 UnicastRef가 원격 RMI 레지스트리를 얻기 위해 TCP 연결을 설정하는 데 사용되며 임의의 코드를 실행 할 수 있습니다. 
공격 성공 시 대상 서버에서 임의 코드 실행이 가능합니다.

 

 

 

2.[CVE-2018-3245] Oracle WebLogic Server ReferenceWrapper_Stub RCE

 

Oracle WebLogic Server에 임의 코드 실행 취약점이 존재합니다.
Oracle WebLogic은 역직렬화 취약점을 방어하기 위해 직렬화 객체 블랙리스트를 보유하고 있습니다.
java.rmi.activation sun.rmi.server 클래스는 위험한 클래스의 비직렬화를 방지하는 블랙리스트를 보유하고 있습니다.

 

 

[그림 6.] CVE-2018-3245 취약점 PoC (https://blogs.projectmoon.pw/2018/10/19/Oracle-WebLogic-Two-RCE-Deserialization-Vulnerabilities/?fbclid=IwAR3j0r1SiVfXxlfHdlueCKn2nkwHDKY3OaH_hoa7mUeEZOu0v9DoVyLU5gE)

 

 


1.Oracle WebLogic은 역직렬화 취약점을 방어하기 위해 직렬화 객체 블랙리스트를 보유
2.java.rmi.activation sun.rmi.server 클래스는 위험한 클래스의 비직렬화를 방지하는 블랙리스트를 보유
3.공격자는 블랙리스트를 우회하기 위해 ReferenceWrapper_Stub을 이용해 블랙리스트의 객체 호출을 시도
4.원격의 공격자는 java.rmi.activation sun.rmi.server 클래스의 블랙리스트 우회를 위해 ReferenceWrapper_Stub을 이용해 역직렬화를 시도
5.성공시 WebLogic의 블랙리스트 제한을 우회하여 RMI 클래스를 호출
6.취약점 공격에 성공하면 RemoteObjectInvocationHandler를 통해 UnicastRef가 원격 RMI 레지스트리를 얻기 위해 TCP 연결을 설정하는 데 사용되며 임의의 코드를 실행

 


공격자는 블랙리스트를 우회하기 위해 ReferenceWrapper_Stub을 이용해 블랙리스트의 객체 호출을 시도합니다.
원격의 공격자는 java.rmi.activation sun.rmi.server 클래스의 블랙리스트 우회를 위해 ReferenceWrapper_Stub을 이용해 역직렬화를 시도합니다.
성공시 WebLogic의 블랙리스트 제한을 우회하여 RMI 클래스를 호출할 수 있습니다.
취약점 공격에 성공하면 RemoteObjectInvocationHandler를 통해 UnicastRef가 원격 RMI 레지스트리를 얻기 위해 TCP 연결을 설정하는 데 사용되며 임의의 코드를 실행 할 수 있습니다..  공격 성공 시 대상 서버에서 임의 코드 실행이 가능합니다.

 


3.[CVE-2018-3252] Oracle WebLogic Server DeploymentService RCE

 

Oracle Fusion Middleware의 WLS Core Components에서 임의의 코드가 가능한 취약점이 존재합니다.
공격자는 weblogic 사용자 인증을 우회하여 코드 실행을 시도합니다.
공격자는 GET /bea_wls_deployment_internal/DeploymentService 요청을 임의의 서버로 보내 취약한 서버를 스캔합니다.
취약한 서버는 공격자에게 Content-Length: 0의 Response를 전송합니다.

 

 

[그림 7.] CVE-2018-3252 취약점 PoC (https://blogs.projectmoon.pw/2018/10/19/Oracle-WebLogic-Two-RCE-Deserialization-Vulnerabilities/?fbclid=IwAR3j0r1SiVfXxlfHdlueCKn2nkwHDKY3OaH_hoa7mUeEZOu0v9DoVyLU5gE)

 

 

1) DeploymentObjectInputStream함수 파라미터에 authenticateRequestweblogic함수가 사용될때 취약점 발생
2) authenticateRequestweblogic 인증방법은 POST 메서드 호출시 헤더값에 username/password를 삽입해 인증
3) 해당 필드에 올바른 username/password 입력시 서버는 500 Internal Server Error를 반환
4) 이를 통해 계정정보 탈취 가능
5) 탐지된 POST 메서드 헤더에 username과 password필드가 존재
6) Content-Length: 0 값이 헤더에 존재
7) 계정값 추측을 위해 다수의 시도 흔적 발견

 

취약한 서버를 확보한 공격자는 POST /bea_wls_deployment_internal/DeploymentService 메세지를 서버에 보냅니다.
이때 헤더에 Default username과 password 값을 함께 보내 계정 탈취를 시도합니다.

 

 

 

 

► WINS Sniper 대응방안
Sniper-IPS

[4539] Oracle WebLogic Server ReferenceWrapper_Stub RCE
[4540] Oracle WebLogic Server ReferenceWrapper_Stub RCE.A
[4541] Oracle WebLogic DeploymentService Login Bruteforce
[4542] Oracle WebLogic DeploymentService Login Bruteforce.A
[4543] Oracle WebLogic AbstractPlatformTransactionManager RCE
[4544] Oracle WebLogic AbstractPlatformTransactionManager RCE.A

Sniper-UTM

[805374715] Oracle WebLogic Server ReferenceWrapper_Stub RCE
[805374716] Oracle WebLogic Server ReferenceWrapper_Stub RCE.A
[805374718] Oracle WebLogic DeploymentService Login Bruteforce
[805374719] Oracle WebLogic DeploymentService Login Bruteforce.A
[805374720] Oracle WebLogic AbstractPlatformTransactionManager RCE
[805374721] Oracle WebLogic AbstractPlatformTransactionManager RCE.A

Sniper-APTX

[3790] Oracle WebLogic Server ReferenceWrapper_Stub RCE
[3791] Oracle WebLogic Server ReferenceWrapper_Stub RCE.A
[3793] Oracle WebLogic DeploymentService Login Bruteforce
[3794] Oracle WebLogic DeploymentService Login Bruteforce.A
[3795] Oracle WebLogic AbstractPlatformTransactionManager RCE
[3796] Oracle WebLogic AbstractPlatformTransactionManager RCE.A

 

 

 

 


► IOC

(1) Attacker
185.234.218.248
(2) Malscript Download URL
185.234.218.248:1099/LoadObject 
51.158.68.139:80/Exp

 

 

 

 

► 참조

https://qiita.com/oraizonja/items/3f6ce71c0b3bba9567dc

https://github.com/pyn3rd/CVE-2018-3245
https://blogs.projectmoon.pw/2018/10/19/Oracle-WebLogic-Two-RCE-Deserialization-Vulnerabilities/?fbclid=IwAR3j0r1SiVfXxlfHdlueCKn2nkwHDKY3OaH_hoa7mUeEZOu0v9DoVyLU5gE

https://github.com/jas502n/CVE-2018-3191
https://github.com/voidfyoo/CVE-2018-3191/?fbclid=IwAR0AQnKx2JSWAB6XKGoHiRPNWvBLl2XpMa6u1J0OnwIdddtJK_9ktxIJz84
https://www.youtube.com/watch?v=6tC5aaUEVCw
https://paper.seebug.org/718/
https://www.anquanke.com/post/id/162274

 

첨부파일 첨부파일이 없습니다.
태그 CVE-2018-3191  CVE-2018-3245  CVE-2018-3252