title: CrimeStoppers-PHP伪协议在文件包含中的妙用
categories:
- CTF
tags: - CTF
hackthebox是一个在线的渗透平台,废话不多说,现在来学习如何利用web常见漏洞——PHP文件包含。最后的提权方式涉及到了反汇编的内容。
扫描
Nmap显示只有一个Apache 服务器在默认端口上运行。
Dirbuster目录探测
测试Web服务器会显示相当多的PHP脚本,但是尝试访问大多数脚本会显示是空白页。这个暗示了文件是被其他脚本包含引用的。
用burp抓包,发现cookie参数为 admin=0
修改cookie admin=1
,可以发现多出来list这个网页,获得文件上传后的地址。
PHP文件包含
很明显,op参数用于在当前工作目录中包含一个php文件。通过使用php过滤器将目标文件转换为base64,可以获得php文件的源代码。
http://10.10.10.80/?op=php://filter/convert.base64-encode/resource=index
这一请求将输出以base64格式编码的 index.php 的内容。这说明了两件事,1:本地文件包含漏洞验证了存在,2:可以使用php伪协议
PHP ZIP wrapper/二进制数据上传
再次使用op参数,可以使用 php wrappers 在ZIP压缩文件中包含一个文件。
http://10.10.10.80/?op=zip://uploads/<LAB IP>/FILENAME#writeup.php?cmd=id
这里的FILENAME是tip/zip文件的hash。
通过burp拦截tip提交请求,并输入zip文件的原始数据,可以利用上述技术实现远程代码执行。
在上面的例子中,隐藏名是 9dfc0e1200ee90d2a380c2fcd2ff036754be27b4
通过结合使用zip打包器,可以通过zip中包含的writeup.php文件执行命令。
http://10.10.10.80/?op=zip://uploads/10.10.14.4/9dfc0e1200ee90d2a380c2fcd2ff036754be27b4%23writeup&cmd=id
权限提升
浏览dom用户目录会发现安装了一个Thunderbird。只需复制文件并在本地加载Thunderbird中的配置文件,或运行strings global-messages-db.sqlite上运行字符串,将会提供一个提示,建议被识别为后门的Apache模块rkhunter。
火狐解密:https://github.com/unode/firefox_decrypt
通过使用上述工具,可以恢复dom的密码。因为默认情况下,Thunderbird没有设置主密码,所以恢复密码很简单。
运行netstat-lp
命令可以显示ssh正在侦听ipv6。使用ifconfig
或ip addr
可以很容易地获得目标的ipv6地址。结合从Thunderbird获得的凭证,可以用dom作为用户,ssh直接连入。
提权
检查IDA中的mod_rootme.so
文件,会发现一个DarkArmy函数。进一步检查发现,该函数使用十六进制字符串对文本“HackTheBox”进行了异或。
因为Hack the box (用XOR计算器进行异或计算)结果为 e140d383b0b0c271b01
,我们发现了后门密码。
一旦获得了密码短语,利用后门就很简单了。只需运行命令nc 10.10.10.80 80
,然后输入GET FunSociety,就会获得一个root shell。
参考资料
有趣的本地文件包含方式:
https://diablohorn.com/2010/01/16/interesting-local-file-inclusion-method/