禁用XXE处理漫谈
前言
近期准备面试题时,XXE漏洞防范措施(或者说修复方式)在一些文章中比较简略,故本文根据研究进行总结,作为技术漫谈罢了。 简述XXE漏洞
XXE(XML外部实体注入),程序解析XML数据时候,同时解析了攻击者伪造的外部实体。XML用途是为了跨平台语言传输数据,常常用于WEB开发等。 XXE漏洞攻防情况
通常来说,XML文档生成时会常用到XXE和内部实体。因此开发团队根据项目需求去进行防范XXE漏洞。
然而实际情况是,即使采取了防范措施(错误的方法),XXE漏洞仍然可以大行其道。
有一个案例,某开发团队针对CVE-2018-20318漏洞进行了及时的修复,依照的是官方的修复方案:
禁止实体扩展引用,dbFactory.setExpandEntityReferences(false)
然而后续XXE漏洞仍然可以奏效,有师傅又提交了CVE漏洞。
最后有师傅总结正确的修复方法,如下:
禁用XXE处理分析
根据上述所说,XXE漏洞的正确处理是尤为重要的。我们这里以Java为例,并且应用偏向于JAXP API进行分析如何禁用XXE处理。 禁用文档类型
首先可以禁用文档类型。实体通过XML 文档的 DOCTYPE 进行声明。
我们在进行安全开发规划时,如确定不需要 DOCTYPE 声明时,可以完全禁用禁用文档类型。
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
当我们设置为true时,disallow-doctype-decl 使XML处理器发现DOCTYPE 声明时抛出异常。 禁用外部实体声明
其次是可以允许声明DOCTYPE,但禁用外部实体声明。
【----帮助网安学习,需要网安学习资料关注我,私信回复"资料"免费获取----】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
故若想要正常处理其他DTD声明,只针对外部实体进行抛出异常。可以用下面两种方法设置为flase来处理:
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
补充说明:在PHP中,libxml库默认下是安全的,总是禁用外部实体。除非通过设置LIBXML_NOENT参数进行允许。如下:
$doc = simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOENT); // !XXE enabled!$doc = simplexml_load_string($xml, "SimpleXMLElement"); // XXE disabled 启用安全处理
在Java中可以使用Feature for Secure Processing (FSP)进行安全处理。如下:
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
FSP属于一种核心Java机制,用于以应用限制去配置XML处理器,从而可以防范XML拒绝服务攻击和XXE漏洞。
默认设置下,FSP处于部分启用的状态,XML拒绝服务攻击可以防范。而XXE漏洞我们需要通过调用setFeature方法,将FSP由部分启用转为完全启用。
不过也有特例,例如Apache Xerces中FSP不限制外部连接,无法防范XXE漏洞。
总之,开发人员应当测试涉及XXE漏洞的FSP配置,并结合其他方式来禁用或者限制XXE。 禁用实体引用扩展
XML文档中寻找实体引用主要有两种方式:
(1)DOM XML解析器作值替换引用
(2)DOM树创建空实体进行引用
将实体作值替换的机制在解析恶意XML文件时,可能会泄露敏感信息。
在Java中,对象DocumentBuilder中的etExpandEntityReferences方法用于配置实体引用:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setExpandEntityReferences(false);
当配置为false时,不会进行实体引用。因而可以防范XXE漏洞。
扩展外部实体引用是发生在已提取外部内容之后。
因此禁用后且攻击者无法造成泄露敏感数据,仍然执行请求外部资源。
不过经过禁用实体引用扩展,攻击者仅能进行blind SSRF攻击,难以实际造成威胁。
所以禁用实体引用扩展也是我们防范XXE漏洞的可选方案。 结束语
本文为XXE漏洞相关的防范措施漫谈,主要针对禁用XXE处理。
可以采取禁用文档类型、禁用外部实体声明、启用安全处理、禁用实体引用扩展这四种方式去进行防范。
北京玉柴兴顺达燃料电池项目正式入驻大兴国际氢能示范区8月31日,北京玉柴兴顺达新能源科技有限公司与北京市大兴区黄村镇人民政府进行签约,玉柴燃料电池项目正式落地大兴国际氢能产业示范区,标志着玉柴在燃料电池完成技术储备配套应用后,向全面
四大亮点闪耀2022服贸会北京顺义首都产业金融中心崛起引关注2022年中国国际服务贸易交易会将于9月1日在京盛大启幕,作为九大专题之一的金融服务专题展将在北京首钢园举办。目前共有134家国内外金融机构和企业参展,涵盖世界500强及行业龙头企
朝礼千寺之681北京房山常乐寺北京房山常乐寺位于北京市房山区青龙湖镇常乐寺村中部,坐落于明代司礼太监王安庞大的墓地中,地域开阔,有林有园。北京房山常乐寺始建于辽代寿昌年间(公元10951101年),明代重建时规
北京经开区300余家企业参展2022服贸会来源经济日报新闻客户端在京举办的2022年中国国际服务贸易交易会上,北京经济技术开发区300余家企业以线上线下参展的方式带来亦庄智造的高精尖展示,通过开展7场重点活动设置亦城会客厅
麻阳税务文明实践与你万步有约近日,为进一步传播和普及健康文明生活方式,倡导健步行走健康生活理念,麻阳举办以万步有约全民健身为主题的万步有约拓展赛,该县税务局积极响应活动号召,组织由20名干部职工组建万步有约金
皮肤长小肉球是怎么回事,可以抠掉吗?如何处理?一文看懂相信不少朋友生活中都遇到过皮肤长小肉球小肉芽的情况。这些东西可能出现在任何位置,眼皮上脖子上手臂上等,只要是皮肤表面,几乎都能看到它的存在。这种小东西很奇怪,它们出现时不疼不痒,也
地球尽头186,南宫花生输给八阶王者,洛银河牺牲?明天是中秋节,小K回老家了,因此更新的有些晚。好了,本文的配图是漫画地球尽头第186话的,解说内容不是,因为小K只看到前面几十话,所以不用在意小K说了些什么。上回说到蓝星史上最年轻
你跟她出轨吧被出轨可怕吗?答案是肯定的这样的分手或是离婚,确实不体面,这也是渣男自食其果。不是每个人都有勇气有力的回击,被出轨的这件事,往往对受害人是一场毁灭性的灾难。你要永远相信女人的第六感
腾讯基于区块链身份认证专利获授权可避免个人信息泄露天眼查App显示,近日,腾讯科技(深圳)有限公司申请的基于区块链的身份认证方法装置存储介质和设备专利获授权。摘要显示,本方法包括接收用户的服务请求,根据服务请求得到用户的授权信息,
油价调整信息今天9月10号,调整后各地9295号汽油售价今天是2022年9月10日,截至本周期油价调整的第3个工作日,原油综合变化率6。58,折算成每升汽柴油价格预计调整幅度在0。320。35元升左右,随之而来的节假日到来,计价周期也会
美国要给中国一个信息!阿尔忒弥斯重返月球美国表示他还是老大阿尔忒弥斯的SLS巨型火箭矗立在肯尼迪航天中心的39B号发射台上,全球媒体都在等着8月29日这枚火箭从这里起飞前往月球,而在1969年7月20日,土星五号火箭载着阿波罗11号飞船就