初识XXE漏洞

2018-06-06  本文已影响63人  CSeroad

XML是一种可扩展性语言,经常被用来传输和存储数据。

XML包括XML声明、DTD文档类型定义、文档元素。DTD文档类型定义即可以在XML内部声明,也可以是外部引用。

内部声明:<!DOCTYOE  test   any >

外部声明:<!DOCTYOE  test  SYSTEM  '' >

XXE漏洞即为XML外部实体注入

看看漏洞是如何产生的?

代码为

<?php

$xml=<<<ABC

<?xml  version="1.0" ?>

<!DOCTYPE  AND  [

<!ENTITY   xxe    SYSTEM   "file:///C:/windows/win.ini">

]>

<note>

<name>&xxe;</name>

<sex>boy</sex>

</note>

ABC;

$data=simplexml_load_string($xml);

//把XML字符串载入对象中

print_r($data);

?>

simplexml_load_string函数将XML字符串进行执行,隐藏在XML文件里DTD外部引用成功得到执行,漏洞由此产生。

漏洞利用

读取任意文件内容

源代码

进行访问,可获取到win.ini文件内容

win.ini

我们来验证一下

win.ini

当没有回显的时候,只要能够被正确解析,依然可以利用。

a.php

把数据发送至远端服务器。

evil.dtd

依然可以读取文件

ok

探测内网端口

我这里开一台kali虚拟机进行测试,修改源码为

xxe.php

再次访问

探测出端口开放

实验操作

访问http://testhtml5.vulnweb.com/ 网站,点击login----forgot  pwd ,进行实验

抓包,进行漏洞利用

注入

漏洞的利用至少满足两个条件:XML文件能成功解析、参数可控成功注入。

更多的实验和细节,参考

http://www.freebuf.com/articles/web/126788.html

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

上一篇 下一篇

猜你喜欢

热点阅读