HackTheBox-Oopsie
Posted ColinDope
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HackTheBox-Oopsie相关的知识,希望对你有一定的参考价值。
HackTheBox-Oopsie
实验环境
信息收集
端口扫描:
nmap -sT -Pn 10.10.10.28
发现80端口开放,在浏览器打开,啥也没有,尝试找登录界面
目录扫描:
成功找到登录界面
在bp中也可以看到登录页的js加载记录
在浏览器打开
实验过程
账号为admin
,密码是上一题中出现过的MEGACORP_4dm1n!!
,直接登录,登录后看到有一个上传功能,点击提示需要super admin权限
先看一下我们现在账号信息,在url中还可以看到目前的用户id=1
再抓包看一下:
id和user、role对应,可以尝试遍历用户
发送到interlude模块,标记id参数,设置好payload开始爆破
看到id=30的响应包的长度比较大,看一下他的响应包的内容,确认为super admin用户
修改目前用户的user和role值,成功越权到super admin用户
然后尝试上传shell,同样修改当前用户的user和role值,就可以进行文件上传
直接用kali自带的反弹shell文件,修改好ip和port
注意上传的过程中也要修改当前用户的user和role,改成super admin的值,就可以成功上传
接下来开启一个监听端口来接收反弹的shell
然后就是要找到我们上传的shell,扫目录的时候有一个uploads的路径,我们上传的文件应该就在这里
访问上传的shell来执行
回到netcat中就可以看到反弹的shell了
拿到shell先看看有没有有用的文件,我们拿到了数据库的账号密码
但是现在的shell是非交互式的,我们接下来要升级到交互的shell,两者的区别如下:
交互式模式就是shell等待你的输入,并且立即执行你提交的命令,退出后才终止
非交互式模式就是以shell script方式执行,shell不与你进行交互,而是读取存放在文件中的命令并执行它们,读取到结尾就终止
用netcat获得的shell是非交互式的,不能传递tab来进行补全,不能使用su、nano,也不能执行ctrl+c等命令,所以我们需要升级为交互式的shell
逐条键入命令:
# 将在环境变量下将shell设置为/bin/bash且参数为-q和/dev/null的情况下运行脚本,-q参数为静默运行,输出到/dev/null里,如果不加script -q /dev/null不会新启一个bash,shell=/bin/bash只是设置shell为bash,加了以后会给你挂起一个新的shell,并帮你记录所有内容
SHELL=/bin/bash script -q /dev/null
# 将netcat暂挂至后台
Ctrl-Z
# 将本地终端置于原始模式,以免干扰远程终端
stty raw -echo
# 将netcat返回到前台,注意:这里不会显示输入的命令
fg
# 重置远程终端,经测试也可以不进行此操作
reset
# 运行xterm
xterm
拿到交互的shell我们就可以切换到Robert用户了
获取普通用户权限的flag
权限提升
下面我们就要想办法提权,我们先看看这个组里面有没有特殊权限
# -type f 为查找普通文档,-group bugtracker 限定查找的组为bugtracker,2>/dev/null 将错误输出到黑洞(不显示)
find / -type f -group bugtracker 2>/dev/null
# -al 以长格式方式显示并且显示隐藏文件
ls -al /usr/bin/bugtracker
拥有者有s
(setuid
)特殊权限,可执行的文件搭配这个权限,可以得到特权,任意存取该文件的所有者能使用的全部系统资源,我们尝试运行它,发现这个文件根据提供的ID
值输出以该数字为编号的bug
报告
接下来我们可以使用strings
命令来看看对象文件或二进制文件中查找可打印的字符串
可以看到bugtracker
调用了cat
命令,输出了/root/reports/
目录下的bug
报告,其实本来我们当前用户是没有权限访问/root
目录的,但是我们有了setuid
后就拥有了/root
目录的访问有权限,也就拥有了root
权限,当前用户执行bugtracker
程序是会优先使用当前的path
变量,这时候我们就可以在当前用户环境变量指定的路径
中搜索cat
命令,然后创建一个恶意的cat
命令,修改当前用户环境变量,完成提权操作
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
用户
这样我们就可以获取system的flag了
在/root/.config/filezilla/filezilla.xml文件中有下一题的ftp账号密码
参考:
以上是关于HackTheBox-Oopsie的主要内容,如果未能解决你的问题,请参考以下文章