*本文作者:黑客小平哥,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
前言
前几天空间被CVE-2018-2894刷屏,大家也都在研究和复现这个漏洞,正好我们安全团队也在玩这个漏洞,那大家就一起来玩咯。 本次的重点是复现,上传webshell,环境是内部一个测试环境,当我使用其中一个上传页面的时候,脑子突然热了一下,把文件后缀改成了.xml,结果就很6了。
地址如下:http://127.0.0.1:8338/ws_utc/begin.do。
分析
此处当然要传个payload试下了读下etc/passwd,发现还是报错,无法读取:
这就完了?当然不是,既然无法读取回显,那就换个payload反弹下shell试试:
设置本地监听:
返回包发现执行了payload代码,并且读取到服务器etc/passwd文件:
至此,该漏洞已经确定存在,并将及时报告给官方了,2018年10月16日,该漏洞已经在oracle发布。
漏洞简要分析:
根据路径,漏洞定位到ws-testpage-impl.jar文件里的“importWsTestConfig”方法:
代码如下:
可以发现,此处使用的方法为“ImportTestCaseAction”,进去看下该方法:
代码如下:
Unmarshaller接口是将XML数据转化为Java对象,此处是Unmarshaller使用不当,造成XXE,值得注意的是,经过和同事的不懈尝试,发现jdk8默认禁止外部DTD的,jdk6和jdk7是可以的,而weblogic默认的jdk是存在该问题的(详细版本范围有待进一步考证)。
Demo介绍:
此处jdk为1.8,无法实现XXE:
此处jdk为1.6,即可执行:
本次研究结束,欢迎大佬继续研究并指正。
*本文作者:黑客小平哥,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
领取专属 10元无门槛券
私享最新 技术干货