m420147085的gravatar头像
m4201470852018-08-06 08:23:31

门户网站XML实体注入漏洞(XXE)修改的问题

门户网站测试发现高危漏洞。

但是门户网站都是静态html页面,没有post请求,看测试报告的案例,也没有针对哪一个交互的接口。在测试报告中提出的两个修改方案,也都是网上普遍提出的两个。1,是java代码中添加代码。2,是增加过滤条件,过滤SYSTEM等。

 

现在的问题有两个

1,这个post请求是在哪里解析xml文件,并且执行xml文件中的内容的(测试用burp suite,xml文件中是具体访问某一个网站地址,通过查看网站的访问记录,测试是否解析xml文件)。在给的测试的post请求中并不能看出针对哪一个与后台交互的接口,而且门户网站一般都是html页面,并不会产生后台数据交互。

2,如果需要按网上那些方法改的话,应该具体在哪里改(不知道应该把代码写在哪里=,=)。如果不是,那应该怎么改?


最代码官方编辑于Aug 6, 2018 1:36:38 PM
所有回答列表(1)
dongsir的gravatar头像
dongsir LV208月8日

首先没太看你的描述。如下给出的是解决XXE漏洞方法:

XXE是由于xml解析库在解析xml文件时解析了entity实体造成,可以通过设置解析器不解析entity实体,当然不同的解析器设置方法不同,可根据具体xml解析器直接问度娘,如下是我们公司的代码(其中加粗,斜体,红色为设置不解析entity实体代码):

public <T> T fromXmlSafe(String xml) {

try {

System.out.println("fromXmlSafe: " + xml);

XMLInputFactory xif = XMLInputFactory.newFactory();

xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

xif.setProperty(XMLInputFactory.SUPPORT_DTD, true);

// StringReader reader = new StringReader(xml);

XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader(xml));

return (T) createUnmarshaller().unmarshal(xsr);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

 

public Unmarshaller createUnmarshaller() {

try {

return jaxbContext.createUnmarshaller();

} catch (JAXBException e) {

throw new RuntimeException(e);

}

}

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友