HackTheBox - Oopsie
Hack The Box :: Starting Point - Tier2 - Oopsie
信息收集 逻辑漏洞 文件上传漏洞 反弹shell 横向移动 suid
一、信息收集
环境部署好后先用nmap对靶机ip进行扫描
nmap -sC -sV -v 10.129.55.115
可以看到目标靶机开放了22和80端口,分别对应ssh和http服务。
既然开启了http,那就去看看网站
既然是个网站,那就先用gobuster遍历一下目录,用kali自带的字典即可
可以看到存在一个/uploads路径,那么可能存在文件上传的漏洞
二、越权
再尝试点击网站上的按钮发现都没反应,看了一下源码,发现一个可能可以利用的js
尝试访问一下,发现访问不了,去掉后面的script.js再访问,进入到一个登录界面
尝试万能密码登录,失败,但是发现可以以游客身份登录,进去看看
登录进来后看了下账户信息好像没什么用处,但是注意到有个uploads模块
发现需要admin权限才能上传,这时候就可以看下页面的cookie,因为很可能可以通过修改cookie来对用户权限做文章
这时候就发现页面不仅对role有验证,还对user的id有验证,所以必须还要得到admin的Access ID
如何得到admin的ID呢?这时候会发现url上有可以利用的地方
http://10.129.55.115/cdn-cgi/login/admin.php?content=accounts&id=2
guest的id是2,那id=1的时候很可能就是admin,修改id=1
这样,通过水平越权这个逻辑漏洞,我们就得到了admin的Access ID
既然得到了id,继续更改存储的cookie
再次访问uploads,发现可以上传了
三、Getshell
因为一开始不知道这个网站对文件上传是否有过滤,那就先传个php文件看看情况
kali本身自带了一些webshell,位于/usr/share/webshells
目录,php目录下有个php-reverse-shell.php,可以利用它来进行反弹shell
把文件复制出来,改名为shell.php,把ip地址改成自己的vpn地址,端口改成4444
同时监听4444端口
上传shell.php
上传成功,这时就用上了之前gobuster扫描的结果了,去扫到的/uploads目录下访问shell.php,成功getshell
四、横向移动
先cat /etc/passwd
看看靶机上有哪些用户,发现robert用户
信息收集时我们知道靶机用的是apache的服务,那就再去/var/www/html下看看有什么文件
可以发现在../cdn-cgi/login/目录下有一个admin.php,db.php以及index.php
查看这三个文件,在index.php中发现一个password为MEGACORP_4dm1n!!
同时在db.php中发现robert的密码
为了更好地执行shell,我们这时先进入到伪终端,用python的pty模块即可
然后切换到robert用户
切换到robert的用户目录下,看看有什么有用信息
发现一个user.txt,答题的时候会用到
五、提权
先看下用户的id,发现robert属于bugtracker这个组
用find看下bugtracker这个组的用户能执行哪些文件
发现存在一个/usr/bin/bugtracker文件,再看下这个文件有哪些权限
发现这个文件有s权限即suid权限,所有者为root,suid简单来说就是任何用户执行具有suid权限的文件时都会以它拥有者的权限执行
我们先执行一下这个文件
这时候就发现这个文件实际上是用cat命令抓取/root/reports/目录下的指定文件
我们需要注意的是,它这里是直接调用的cat,所以很依赖环境变量,直接调用cat只会抓取环境变量中的路径下的文件
所以我们可以在环境变量中注入一个自定义的路径,替代掉这个文件真正想要调用的cat
进入tmp目录下,创建一个会调用bash的cat文件,然后给文件一个执行权限
使用export PATH=/tmp:$PATH
命令把/tmp加入到环境变量中,再查看一下,发现/tmp已经添加到环境变量中了
这时候我们再执行bugtracker文件时,系统就会先去/tmp目录下找到我们写的cat并以root权限执行我们写的/bin/bash
提权成功
注:在用cat抓root.txt的时候记得先删除/tmp下我们自己写的cat,不然会调用那个cat
六、答题
With what kind of tool can intercept web traffic?
proxy
What is the path to the directory on the webserver that returns a login page?
/cdn-cgi/login
What can be modified in Firefox to get access to the upload page?
cookie
What is the access ID of the admin user?
34322
On uploading a file, what directory does that file appear in on the server?
/uploads
What is the file that contains the password that is shared with the robert user?
db.php
What executible is run with the option "-group bugtracker" to identify all files owned by the bugtracker group?
find
Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?
root
What SUID stands for?
Set Owner User ID
What is the name of the executable being called in an insecure manner?
cat