
本文中我们将提供一个全面的针对 DTD 不同类型的攻击列表。
攻击分类如下:
拒绝服务攻击(DDoS)
基本的 XXE 攻击
高级的 XXE 攻击
服务器端请求伪造攻击(SSRF)
XML 包含机制(XInclude)
扩展样式表转换语言(XSLT)
拒绝服务攻击(DDoS)
支持实体测试:

如果解析过程变的非常缓慢,则表明测试成功,即目标解析器配置不安全可能遭受至少一种 DDoS 攻击。
Billion Laughs 攻击 (Klein, 2002)
译者注:“Billion Laughs” 攻击 —— 通过创建一项递归的 XML 定义,在内存中生成十亿个“Ha!”字符串,从而导致 DDoS 攻击。原理为:构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中。

这个文件只有 30 Kb大小但却有 11111 个实体引用,超出了合法的实体引用数量上限。
Billion Laughs 攻击 – 参数实体 (Späth, 2015)

文件位于:http://publicServer.com/dos.dtd

XML 二次爆破 DDoS 攻击

一般实体递归
最好不要使用递归 — [WFC: No Recursion]

外部一般实体 (Steuck, 2002)
这种攻击方式是通过申明一个外部一般实体,然后引用位于网上或本地的一个大文件(例如:C:/pagefile.sys 或 /dev/random)。
然而,这种攻击只是让解析器解析一个 巨大的 XML 文件而已。

基本的 XXE 攻击
基本的 XXE 攻击 (Steuck, 2002)

高级的 XXE 攻击 – 直接反馈通道
这类攻击为高级的 XXE 攻击,用于绕过对基本的 XXE 攻击的限制和 OOB(外带数据) 攻击
绕过基本 XXE 攻击的限制 (Morgan, 2014)

文件位于:http://publicServer.com/parameterEntity_core.dtd
| <!ENTITY all ‘%start;%goodies;%end;’> |
滥用属性值的 XXE 攻击

文件位于:http://publicServer.com/external_entity_attribute.dtd




文件位于:http://publicServer.com/url_invocation_parameterEntity.dtd
| <!ELEMENT data2 (#ANY)> |

文件位于:http://publicServer.com/file.xml

文件位于:http://publicServer.com/url_invocation_schemaLocation.xsd

文件位于: http://publicServer.com/url_invocation_noNamespaceSchemaLocation.xsd


原文作者
Christopher Späth
Christian Mainka (@CheariX)
Vladislav Mladenov

















暂无评论内容