1131 字
6 分钟
vulnhub靶机-DarkHole(IDOR越权+php上次绕过+Ghidra逆向+环境劫持)
vulnhub靶机-DarkHole(IDOR越权+php上次绕过+Ghidra逆向+环境劫持)
声明
- 本文为个人跟随b站up主红队笔记学习vulnhub的DarkHole靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
- 该靶机下载地址为’https://www.vulnhub.com/entry/darkhole-1,724/‘
渗透流程
- 在vmware部署靶机并开机后,打开kali对靶机进行信息收集,找到22、80端口开放,以及一些路径。

- 进行路径爆破,扩大获得信息,有个upload文件夹,疑似上传文件所在目录。

- 从web页面的login模块随意注册一个账号登录进来,注意到url对于当前用户可能通过id=2来对应,可能存在不安全的直接对象引用。

- 启动burpsuite抓包修改密码请求,把最下面的id=2改为1,密码为aaa试一试,页面响应说修改成功。

- 用admin
成功登录。(这里如果用户名猜不到,可以考虑通过本靶机网站制作者、主站链接等办法进一步信息收集) 
- upload模块提示只能上传jpg、gif、png文件,尝试通过抓包绕过,发现不可以,但是通过随意上传无效扩展名的文件发现上传成功,说明使用的不完整黑名单。

- 再尝试使用phar或phtml后缀上传,上传成功了,打开监听,在upload中访问文件,获得初始shell。

提权过程
- 尝试查看sudo特权,根据反馈使用python(3)提高一下shell交互性,需要密码,我们另寻他路。

- 在/home/john内无权限查看多数文件,在/var/www路径有个admin凭据,但经过尝试无法连接ssh,如图路径还有个凭据,这个凭据通过ssh也登录不上。

- 刚才/home/john有一个遗漏点,有个文件toto权限比较特殊。

- 先用strings读取文件头几行,确认它是一个二进制可执行文件。然后,再用Ghidra打开它,主要利用它的反编译功能,把二进制代码还原成接近源代码的C语言伪代码,先创建新项目。

- 打开toto文件并按默认选项进行反编译,查看main函数,执行了id并没有使用绝对路径,故可以考虑劫持。

- 按照下图方式在/tmp创建名为id的可执行文件,内容为打开新的shell,并export PATH,执行后切换到john用户。

- 发现凭证,另外有sudo特权,可以root执行file.py。

- 写一个简单python的脚本到file.py,执行成功提权到root。

其它补充与收获总结
- phar和pthml类型文件为什么可以执行?
- phar:可以把多个PHP文件打包成一个文件(可参考.jar文件),需在PHP代码中用phar://协议包含才运行,默认情况下,Web服务器不会将.phar当作脚本直接解析。
- phtml:一种常用于混写HTML和PHP的模板文件扩展名,Web服务器配置决定是否当作PHP解析的模板文件扩展名。
- 但是本台靶机可能由于Web服务器对php解析配置不当,例如
AddType application/x-httpd-php .php .phar .phtml等非常规扩展名文件也可被当作PHP脚本直接执行。
- 关于Ghidra工具:
- 项目地址为’https://github.com/NationalSecurityAgency/ghidra’
- github官方项目介绍:该框架包含一套功能齐全的高端软件分析工具,使用户能够在包括 Windows、macOS 和 Linux 等多种平台上分析编译后的代码。功能包括反汇编、汇编、反编译、绘制图表和脚本,以及数百个其他功能。Ghidra 支持多种处理器指令集和可执行格式,并可在用户交互和自动化模式下运行。用户还可以使用 Java 或 Python 开发自己的 Ghidra 扩展组件和/或脚本。
- 环境劫持原理:
- 当程序调用外部命令(如本靶机system(“id”))时,如果没有使用绝对路径(例如/usr/bin/id),操作系统会按照环境变量PATH中预设的顺序去搜索并执行第一个匹配的id命令。因此在本靶机情况下,在/tmp创建一个名为id的文件,注入恶意代码,并声明环境变量(将会提到PATH最前面),调用toto程序时会优先执行新添加的id文件。
vulnhub靶机-DarkHole(IDOR越权+php上次绕过+Ghidra逆向+环境劫持)
https://www.dxowo8.top/posts/post-27/27/ 部分信息可能已经过时







