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。使用ifconfigip 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/