XXE代码审计和防御策略 for Java

1、Java代码中的XXE触发点
XXE的产生需要满足:1. 接收外部传入的XML格式,2.未禁用外部实体。
1 | JAXP DocumentBuilderFactory, SAXParserFactory and DOM4J |
https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
XXE&SSRF
1 | <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal.vulnerable-website.com/"> ]> |
XInclude攻击
1 | <foo xmlns:xi="http://www.w3.org/2001/XInclude"> |
2、如何防御XXE攻击
2.1 禁用外部实体解析
例如SAXReader
1 | saxReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); |
更多参考:https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
2.2 升级到安全版本
Apache POI >= 4.1.1
- Post title:XXE代码审计和防御策略 for Java
- Post author:langu_xyz
- Create time:2018-05-16 21:00:00
- Post link:https://blog.langu.xyz/XXE代码审计和防御策略 for Java/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.