Hack The Box-Oopsie
Hack The Box-Oopsie
xxshhIntroduction
在寻找 WEB 漏洞时,始终要检查cookie、session,并尝试弄清楚访问控制是如何工作的。在许多情况下,远程代码执行和系统的控制权限可能无法单独实现,而是需要将不同类型的漏洞和利用方法结合起来。在本篇博客中,你将学习到,信息泄露和访问控制漏洞这类看似不太重要的漏洞。即使是小漏洞在攻击时也可能会产生巨大影响。
Write-up
User flag
nmap 扫描端口:
打开 BurpSuite 的 Target 模块,Site Map功能可以看到目标网站的结构:
发现了一个登录界面:
以访客身份登录:
唯一可操作的就是 uploads 界面,但是需要超级管理员权限:
一种思路就是查看 cookie 或 seesion,是否有操作空间转换为管理员身份:
可以看到,cookie 中有个值就是 Access ID。那么只需获取到 admin 的 Access ID,就可以伪造管理员身份。而 URL 中有个 id 变量,就可以切换账户。凭此漏洞,我们发现,将 id 改为1,显示出了 admin 的 Access ID:
更改cooike,即可访问 uploads 页面:
这里尝试上传后门失败了,查看题解发现可以上传执行反弹 shell 的文件,插件分析出的语言类型是php。
首先要知道文件上传到哪了。用 gobuster 进行目录爆破:
|
果然是 uploads 文件夹:
然后上传 PHP 反弹shell。Kali Linux自带此类文件,在 /usr/share/webshells/ 目录下。也可以从BlackArch/webshells: Various webshells. We accept pull requests for additions to this collection.下载。
本机开启一个监听端口:
php-reverse-shell.php 更改主机 ip 和端口:
上传这个文件,然后在浏览器访问我们上传的shell:
|
成功执行反弹 shell。
输入 whoami
命令,发现当前用户是 www-data:
在 Linux 系统中,/etc/passwd
是一个非常重要的系统文件,它存储了系统中的所有用户账户信息。每一行代表一个用户的信息,每个字段用冒号分隔:
|
执行 cat /etc/passwd
,发现了两个需要登录的用户:
切换到 /home/robert,发现 user flag:
Root flag
接下来尝试能否切换为 robert 用户。首先要找到登录密码。网站服务器是 Apache,其文件通常托管在 /var/www/html/
下,在此目录找到了数据库文件 db.php:
su robert
切换为 robert 用户,出现错误:
因为我们使用的是一个 php shell,不能算作终端。使用以下命令升级 shell:
|
登录成功:
使用 id
命令用于显示当前用户 ID(UID)、组 ID(GID)以及所属的附加组(group):
观察到用户 robert 属于组 bugtracker 。group(组) 是 Linux 系统中用于管理用户权限的一种机制,可以让一组用户共享相同的访问权限。
查看属于该组的所有文件:
|
只有一个 bugtracker
文件:
执行以下命令查看文件的详细信息及类型:
|
这里需要了解有关 SUID(Set owner User ID)的知识。
在 Unix/Linux 系统中,SUID 是一种文件权限设置。当一个二进制程序(可执行文件)具有 SUID 权限时,它在执行时将继承文件所有者的权限,而不是执行该程序的用户的权限。它的设置通常用来允许普通用户以其他用户的权限(比如 root)来执行某些特定程序,而不需要更高的权限。
执行这个文件:
发现该工具接受用户输入作为 cat
命令读取的文件的名称。但是这个 cat
不是一个绝对路径,所以我们可以插入我们自己构造的 cat
并将其添加到路径中,这样那个 cat
就会以 root 身份执行。
要获取 shell,我们需要打开 /bin/sh
,由于 bugtracker
文件以 root 身份执行,因此这将创建一个 root shell。但是不能直接写入 /usr/bin
,因为 robert 没有权限。可以把它写在 /tmp
下:
|
这里用 vi 和 vim 都没写成功,最后用 echo 成功了。
|
给 cat 添加执行权限:
|
为了执行这个 cat
命令,需要将 /tmp 目录添加到 PATH 环境变量中:
|
检查环境变量:
再次运行 bugtracker, 此时以获取了 root 权限。
找到 root flag:
Conclusion
本以为这个靶场会做得比较快,大大高估自己了。不过了解到了一些以前从未涉及过的思路,对 Linux 命令和文件系统也更加熟悉了。但是有些知识还是记不住,博客写完了不能就放那不看了,还是得经常回顾。