xxe靶场下载地址:https://download.vulnhub.com/xxe/XXE.zip
(国外网站下载慢)
一、准备靶场环境:
下载完压缩包(解压):

点开虚拟机:

然后打开虚拟机:

如果发现不了靶机ip,建议勾选如图设置

二、信息收集:
因为靶场网络是随机分配的,所以把kali放在同一网段,然后进行扫描主机确定靶场IP地址(通过arp协议):

Ip192.168.120.128是靶场地址
确认后进行端口扫描:

只开放了80 端口,游览器访问:

发现是默认apache2页面,进行目录扫描:
用dirsearch命令工具扫描目录:

发现robots.txt,猜测是源码泄露,访问

三、漏洞发现和利用
发现网址后台,再访问:

因为是xxe靶场,于是猜测登录是用xml数据传输,使用bp抓取登录包内容:

发现是xml格式,于是构造poc:

访问本地xxe.php的源码,用base64格式输出。解码得:
<?php
libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$info = simplexml_import_dom($dom);
$name = $info->name;
$password = $info->password;
echo "Sorry, this $name not available!";
?>
无作用,想起之前的admin.php,同样查看admin.php的源码:

解码得(部分):
if ($_POST['username'] == 'administhebest' &&
md5($_POST['password']) == 'e6e061838856bf47e1de730719fb2609') {
得到登录密码,因为是在admin.php的源码里于是访问admin.php网址:

MD5加密的password在网站解得:

登录进去:

点击flag发现404错误,但是有新的文件名

于是再依靠上面的xxe漏洞查看flagmeout.php的源码:

解base64得
<?php
$flag = "<!-- the flag in (JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5) -->";
echo $flag;
?>
全是大写字母和数字,猜测是base32加密:

再base64解密发现路径:

发现路径,再次依靠上面的xxe漏洞读取源代码:

解码得:
$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$Ã=+_;$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=++$Ã[];$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$__('$_="'.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.'"');$__($_);
看不懂,但是是flag.php里的内容,猜测是php代码,于是放入在线的php环境或者自己的 网站查看:


注意!php解析器版本是php5才能正常解析出flag,版本过高都会显示不出flag。
那么最后感谢你的阅读,点个赞吧。如果有错误欢迎指正。
本文介绍了如何下载并配置XXE靶场环境,通过信息收集找到靶场IP,利用XEE漏洞发现并破解登录密码,最终解码隐藏的flag。提示读者注意PHP版本对代码解析的影响。
720





