1. Oracle WebLogic RCE Deserialization Vulnerability 이란?
: Oracle WebLogic 서버의 RMI(Remote Method Invocation) 레지스트리를 역 직렬화(Deserialization)로 원격 코드를 실행(RCE : Remote code execution)하게 할 수 있는 취약점이다.
일단 배경지식에 대해 간단히 살펴보고 그 후 취약점에 대해 알아보도록 하자.
1.1. RMI(Remote Method Invocation)란?
: 우리 말로 자바 원격 함수 호출로 프로그램에서 각 객체간, 컴퓨터간 메서드를 호출할 수 있게 해주는 기술이다.
그렇다면 이 기술은 언제 사용되는 것일까?
이는 분산시스템에서 네트워크로 연결된 여러 대의 컴퓨터에서 하나의 프로그램을 분산하여 실행되기 위해 자유롭게 메서드를 호출 및 실행하기 위해 사용되는 기술이다. 즉 '분산시스템을 위해 자바에서 제공해주는 패키지가 RMI다' 라고 생각하면 된다.
이렇게 RMI를 이용하여 메서드를 호출할 때에는 RMI 내부에서 객체 직렬화(Serialization) 기법을 이용하여 매개변수로 넘겨 줄 객체를 직렬화한 후 메서드를 호출할 때 함께 보내준다. 그 결과 메소드 호출에 따른 리턴값이 직렬화되어 원격 컴퓨터로부터 반환된다.
1.2. RMI 모델과 RMI 레지스터
◎ RMI 모델 : RMI를 구축하기 위해서는 원격지의 컴퓨터에 RMI Server가 필요하다. 해당 RMI Server에 객체를 넣어두고(바인딩) 로컬 머신에서 접근한 후 객체의 메서드를 호출하는 것
- 일반적으로 가장 널리 알려진 RMI 모델은 EJB를 서비스해주는 J2EE모델이고 그 중 가잘 잘 얼려진 것이 해당 취약점에서 언급 된 Oracle사의 Weblogic이다.
◎ RMI 레지스터 : 자바 RMI는 원격 객체를 관리하고 서비스하는 원격 객체 컨테이너(Container)를 제공하는데, 이것을 RMI Register라고 한다.
- RMI Register에 원격 객체를 등록하는 과정을 바인딩(Binding)이라고 한다.
- 바인딩 과정에서 객체를 식별할 수 있는 식별자(Name)이 함께 등록되어야 한다.
2. 공격 메커니즘
: Oracle WebLogic RCE Deserialization 취약점은 ①공격자가 Weblogic 서버에서 오픈해 놓은 T3 서비스와 제작된 Java 객체를 이용하여 Socket 연결을 맺고, ②공격자가 조작한 패킷을 서버측에 보내어 역직렬화 원격 명령을 실행하는 취약점이다.
: 기본 포트(7001)를 사용하는 서버를 대상으로 보통 공격이 이루어지지만 다른 포트를 사용 중인 경우에도 공격된다.
- 여기서 T3 서비스란 WebLogic 서버와 다른 유형의 Java 프로그램간에 정보를 전송하는데 사용되는 프로토콜이다.
3. 코드 분석
◎ 공격 코드 : https://www.exploit-db.com/exploits/44553/
◎ 코드 분석은 참고하던 이글루시큐리티의 분석이 잘 되어있어 해당 포스팅을 참고
4. Real World
- 아래가 영향받는 버전이다. 해당 버전이라면 버전을 업그레이드하던지, 기본 포트(7001) 변경 및 포트 접근 제한이 필요하다.
참고 )
- http://www.igloosec.co.kr/BLOG_CVE-2018-2628%20:%20Oracle%20WebLogic%20RCE%20Deserialization%20Vulnerability?searchItem=&searchWord=&bbsCateId=0&gotoPage=3
- http://www.igloosec.co.kr/pdf/igloosec_security_report_201805.pdf
- https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%9B%90%EA%B2%A9_%ED%95%A8%EC%88%98_%ED%98%B8%EC%B6%9C
- http://devyongsik.tistory.com/42
- http://3dmpengines.tistory.com/283
'Hacking > Web' 카테고리의 다른 글
Web Wargame Site (0) | 2019.01.13 |
---|---|
리버스 쉘 명령어 (0) | 2018.10.14 |
[root-me] File upload - ZIP (0) | 2018.07.01 |
S3 bucket 대응방안 (0) | 2018.06.04 |
Web Application Firewall (WAF) Evasion Techniques #2 (0) | 2018.06.03 |