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