HackTheBox-Oopsie
Hackthebox-Oopsie
目标IP:10.10.10.28
本机IP:10.10.16.38
信息收集
nmap
通过nmap信息搜集可以发现目标开放了22和80端口,既然开放了WEB服务,直接访问看看网站的功能和可能存在问题的点。
网站按钮全部无效,页面底部有邮箱 admin@megacorp.com
可能有用。
其中有处内容存在提示
翻译过来为:我们提供服务来操作生产数据,如报价、客户请求等。请登录以获取服务。
Burpsuite
通过Burpsuite
截包,我们在网站地图中找到了可能的登录路径
直接访问http://10.10.10.28/cdn-cgi/login/
进入登录界面
尝试登录,用户名admin
或者administrator
密码弱口令爆破无果,看了下官方WP,密码为上一台靶机Archetype的管理员密码MEGACORP_4dm1n!!
,登录成功。
越权
简单看了一下功能,其中Uploads
页面提示需要超级管理员权限。
那么接下来就是如何获取超级管理员权限看能否进行文件上传。
其中Account
页面可以看到当前用户信息
再看Burpsuite中当前页面的请求包
GET
参数content
用来进行功能页面的跳转,id
参数作用不明
Cookie
中user
、role
分别对应Access ID
、Name
两个方向猜测:1.是否存在sql注入 2.是否存在越权漏洞
经过简单的测试发现sql注入行不通,尝试对id
进行爆破。Payload可以用Intruder
模块自带的numbers
结果中看到有几个id请求的响应包长度不同,其中id=30
的响应包中发现了super admin
字样,对应的Access ID
为86575
,直接在URL中修改id=30
访问Account
页面发现确实是超级管理员账号。
回到Uploads
页面抓包,修改Cookie
中的user
值为86575
发回数据包,可以上传文件了
文件上传反弹shell
文件上传shell文件(注意抓包修改user值为超级管理员),文件上传成功但是不知道上传目录,用目录扫描工具扫一下试试
发现uploads路径,nc监听2333端口,curl请求test.php反弹shell
1 | nc -lvvp 2333 //shell中写的1234端口 |
查看各种目录文件,在/var/www/html/cdn-cgi/login
中发现了db.php
文件
获取内容得到本地用户robert
的账号密码
尝试用su xxxx
切换用户,报错:su: must be run from a terminal
反弹的shell是个非交互式shell
,非交互式shell会有很多问题,比如:
- 无法用vim等文本编辑器
- 不能用tab补全指令
- 不能su
- 不能向上使用历史
- …
知识点 交互式和非交互式
交互式模式:就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
非交互式模式:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
网上反弹shell升级交互式用的都是python,但是目标机子上没有python环境,然后去问了树哥,树哥说用script /dev/null
,惊了居然su可行了!!
但是这个shell不是交互式的shell,算是个半交互式,不如交互式方便但也凑合
知识点 script命令 和 /dev/null
script命令
scirpt就是一个命令,可以制作一份记录输出到终端的记录
/dev/null
/dev/null
代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”
用途
1.丢弃标准输出
2.丢弃标准错误输出
得到user的flag
提权
利用Linux id命令发现robert所在组为bugtracker
1 | find / -type f -g bugtracker 2>/dev/null #Linuxfind命令 -type 设置查找类型为文件 -g 设置组为bugtracker 2>/dev/null 将错误输出到/dev/null 2为Linux文件描述符(错误输出) |
其中有个s权限,当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。前提是这个文件是可执行文件,可就是具有x权限(属组必须先设置相应的x权限)
执行/usr/bin/bugtracker
文件作用是 用户输入一个BUG ID
输出BUG报告
用strings命令查看/usr/bin/bugtracker
的执行过程
如箭头所指,文件执行过程中调用了cat
命令输出/root/reports/
目录下的BUG报告
由于s权限,robert用户本来无权读取/root/reports/
,现在可以了
我们可以构造一个恶意的cat命令来提权root
1 | export PATH=/tmp:$PATH //设置环境变量到/tmp linux下的tmp目录是一个系统产生临时文件的存放目录,同时每个用户都可以对他进行读写操作 |
此时,再次执行/usr/bin/bugtracker
将会调用/tmp
目录下的恶意cat命令,此时我们再次输入任意BUG ID
就可以用root权限执行命令了
注意没有变成root用户
得到root的flag
end
小结
总的看下来这台靶机其实不算特别难,终究是自己的知识面太狭隘
参考链接
https://blog.csdn.net/gui951753/article/details/79154496