Web安全--XXE

0x01 简介

Web安全--XXE_第1张图片

 

顺手搜了一下CVE,XXE的问题还真不少。

XXE,XML External Entity (外部实体)。

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。

一般实体(General Entities)

可在xml中进行引用,&js;

 



    // js 为dtd中声明的内部实体
]>
&js;  // 通过&js;进行引用

外部实体(External Entities)

可获取外部资源(非xml中声明的),可用于一般实体、参数实体

 


// DTD 定义,root为声明的外部实体
 
]> 
 
  &root;Hello  //&root;引用

​
// 也可以是使用PUBLIC关键字进行定义,读取公共资源

外部是实体支持http、file等协议,具体如下:

Web安全--XXE_第2张图片

 

参数实体(Parameter entities)

可在doctype声明中使用,也可以在实体定义value 中使用




%remote;
]>

  test&ping;

​
// 其他如:

说完实体的概念,基本就能看清楚漏洞的原理了,通过外部实体(http、ftp)获取信息。

0x02 漏洞危害

读取任意文件

因为外部实体支持ftp协议,可以构造payload获取目录、文件信息。

具体可参考webgoat8 xxe stage 3,利用也比较简单。

 


 ]>
 
  &root;xxe

如果没有回显,通过Bland XXE(OOB)进行利用,具体参考webgoat8 xxe stage 7

搭一个服务器(A)接收http请求发送的数据,A服务器定义attack.dtd

目标机解析包含payload的xml,外部实体读取attack.dtd,然后发送数据至获取数据。

attack.dtd

 


// 参数实体、外部实体,读取目标机文件
 
// 参数实体,实体内定义外部实体访问A服务器并发送读取的内容
">
%all;

payload:

 



%remote;
]>

  test123---&send;

DOS攻击

通过构造恶意实体,指数级生成超大xml文档,服务器在解析时好景资源,导致DOS。此示例及著名的Billion laughs attack。

payload:

 



 
 
 
 
 
 
 
 
 
 
]>
&lol9;

内网探测

因为外部实体支持ftp、http等协议,所以可利用进行内网探测(服务器、端口),甚至进行账号、密码爆破。

服务器、端口探测

 


 ]>
 
  &root;xxe

用webgoat8 xxe 的例子试一下,把webwolf当成内网机器。

 

左边是可访问地址,返回解析错误。

 

"javax.xml.bind.UnmarshalException\\n - with linked exception:
\\n[javax.xml.stream.XMLStreamException: 
    ParseError at [row,col]:[4,15]
\\nMessage: http:\\/\\/192.168.3.103:9091\\/WebGoat]\\r\\n\\tat com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamEx

右边端口未开放,拒绝连接,且响应时间明显会长一些。

 

"javax.xml.bind.UnmarshalException\\n - with linked exception:
\\n[javax.xml.stream.XMLStreamException:
ParseError at [row,col]:[4,15]\\nMessage: Connection refused: connect

远程代码执行(RCE)

针对PHP环境中安装expect扩展,通过返回报错信息、返回时间等进行判断。

payload如下,具体示例懒得搭环境了。

 

 
    
    ]>
    &test;

 

0x03 漏洞检测

黑盒

  • 看到xml传输数据,必须试一把xxe;
  • 对于一些json传输,修改content-type,是否可注入xml;
  • 使用xml标签进行闭合,是否可打到篡改目的;
  • 单引号、双引号、注释、地址符、外部实体引用

 

‘    "    &  < >  ]]>

                    

你可能感兴趣的:(web安全,XXE,漏洞,web安全)