Hack the box-AbuseHumanDB攻克思路
字数 1553 2025-08-11 21:26:09

Hack the Box - AbuseHumanDB 攻克思路详解

1. 信息收集

1.1 网站基本请求分析

目标网站存在两个主要API端点:

  • /api/entries
    • 输入非URL字符时控制台报错
    • 输入URL时无回显,暂无利用思路
  • /api/entries/search?q=
    • 输入任意字符响应码为404,暂无直接利用思路

1.2 代码分析发现

通过分析Database.js文件发现:

  • userEntries表中存储有flag值
  • 查询条件:approved=0时才能展示包含flag的数据
  • flag的title字段格式为HTB{...}
  • approved=1title模糊查询"Back"时,可查询出包含"Back"的字符串完整SQL语句

2. 关键代码分析

2.1 index.js中的listEntries函数

  • 使approved=0的条件:
    • 通过发送/api/entries的GET请求
    • 请求URL数据中IP为127.0.0.1
    • 请求头中Host127.0.0.1:1337
    • 满足以上条件可查询出包含flag的SQL语句

2.2 index.js中的getEntry函数

  • 使approved=0title=HTB{可查询出包含flag的SQL语句
  • /api/entries/search请求可进入getEntry函数
  • title值通过getEntry的参数q传入
  • q参数值可通过暴力破解猜测
    • 猜测正确:得到flag
    • 猜测错误:控制台可见异常报错

3. 漏洞利用方案

3.1 请求构造

成功获取flag的条件:

  • 请求URL: http://127.0.0.1:1337/api/entries/search?q=HTB{
  • 请求头: ip:127.0.0.1
  • 当响应码为200时,q的值为flag的模糊搜索值

3.2 环境搭建

需要在外部服务器搭建Nginx环境:

3.2.1 Nginx安装与启动

sudo apt-get -y install nginx
sudo /etc/init.d/nginx start

3.2.2 修改默认网页

  • 路径: /var/www/html/index.nginx-debian.html
  • 替换为自己期望的脚本代码

3.2.3 访问日志

  • 路径: /var/log/nginx/access.log

3.3 盲测技术

3.3.1 测试approved=1情况

  • 已知数据库title中包含"Back The Hox"
  • 查询approved=1title模糊查询"Back"可获取部分数据
  • 通过外网服务器脚本可获取模糊测试结果

3.3.2 测试approved=0情况

  • 构造特殊请求:
    • URL: http://127.0.0.1:1337/api/entries/search?q=HTB{
    • 请求头: ip:127.0.0.1
  • 编写自动化脚本部署在外网服务器
  • 通过HTB网站访问该外网服务器URL执行脚本
  • 定期检查access.log文件获取flag

4. 完整利用流程

  1. 在外网服务器搭建Nginx环境
  2. 编写并部署盲测脚本
  3. 构造特殊请求使approved=0
  4. 通过模糊测试猜测q参数值
  5. 监控服务器访问日志获取flag
  6. q值匹配到HTB{时,flag将出现在响应中

5. 关键注意事项

  • 必须确保请求来自127.0.0.1(通过请求头ip:127.0.0.1)
  • 模糊测试需要耐心,可能需要尝试多个q
  • 服务器日志是获取flag的关键,需要定期检查
  • 确保Nginx配置正确,能够记录所有访问请求

通过以上步骤,可以成功获取AbuseHumanDB挑战中的flag。关键在于构造正确的本地请求并通过模糊测试找到flag的准确位置。

Hack the Box - AbuseHumanDB 攻克思路详解 1. 信息收集 1.1 网站基本请求分析 目标网站存在两个主要API端点: /api/entries 输入非URL字符时控制台报错 输入URL时无回显,暂无利用思路 /api/entries/search?q= 输入任意字符响应码为404,暂无直接利用思路 1.2 代码分析发现 通过分析 Database.js 文件发现: userEntries 表中存储有flag值 查询条件: approved=0 时才能展示包含flag的数据 flag的 title 字段格式为 HTB{...} 当 approved=1 且 title 模糊查询"Back"时,可查询出包含"Back"的字符串完整SQL语句 2. 关键代码分析 2.1 index.js 中的 listEntries 函数 使 approved=0 的条件: 通过发送 /api/entries 的GET请求 请求URL数据中IP为 127.0.0.1 请求头中 Host 为 127.0.0.1:1337 满足以上条件可查询出包含flag的SQL语句 2.2 index.js 中的 getEntry 函数 使 approved=0 且 title=HTB{ 可查询出包含flag的SQL语句 /api/entries/search 请求可进入 getEntry 函数 title 值通过 getEntry 的参数 q 传入 q 参数值可通过暴力破解猜测 猜测正确:得到flag 猜测错误:控制台可见异常报错 3. 漏洞利用方案 3.1 请求构造 成功获取flag的条件: 请求URL: http://127.0.0.1:1337/api/entries/search?q=HTB{ 请求头: ip:127.0.0.1 当响应码为200时, q 的值为flag的模糊搜索值 3.2 环境搭建 需要在外部服务器搭建Nginx环境: 3.2.1 Nginx安装与启动 3.2.2 修改默认网页 路径: /var/www/html/index.nginx-debian.html 替换为自己期望的脚本代码 3.2.3 访问日志 路径: /var/log/nginx/access.log 3.3 盲测技术 3.3.1 测试 approved=1 情况 已知数据库 title 中包含"Back The Hox" 查询 approved=1 且 title 模糊查询"Back"可获取部分数据 通过外网服务器脚本可获取模糊测试结果 3.3.2 测试 approved=0 情况 构造特殊请求: URL: http://127.0.0.1:1337/api/entries/search?q=HTB{ 请求头: ip:127.0.0.1 编写自动化脚本部署在外网服务器 通过HTB网站访问该外网服务器URL执行脚本 定期检查 access.log 文件获取flag 4. 完整利用流程 在外网服务器搭建Nginx环境 编写并部署盲测脚本 构造特殊请求使 approved=0 通过模糊测试猜测 q 参数值 监控服务器访问日志获取flag 当 q 值匹配到 HTB{ 时,flag将出现在响应中 5. 关键注意事项 必须确保请求来自 127.0.0.1 (通过请求头 ip:127.0.0.1 ) 模糊测试需要耐心,可能需要尝试多个 q 值 服务器日志是获取flag的关键,需要定期检查 确保Nginx配置正确,能够记录所有访问请求 通过以上步骤,可以成功获取AbuseHumanDB挑战中的flag。关键在于构造正确的本地请求并通过模糊测试找到flag的准确位置。