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=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安装与启动
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=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
- URL:
- 编写自动化脚本部署在外网服务器
- 通过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的准确位置。