HACKTHEBOX HELP靶机打靶过程记录
字数 1353 2025-09-01 11:26:10

HACKTHEBOX HELP靶机渗透测试教学文档

1. 靶机信息收集

1.1 初始扫描

  • 使用nmap进行端口扫描,发现开放端口:
    • 80端口:HTTP服务
    • 3000端口:未知服务
    • 22端口:SSH服务

1.2 Web服务枚举

  • 对80端口进行目录爆破,发现需要认证的网页
  • 检查网页源代码,未发现有用信息
  • 3000端口发现GraphQL接口

2. 漏洞发现与利用

2.1 GraphQL接口利用

  • 发现3000端口存在GraphQL目录
  • 使用GitHub上现成的GraphQL渗透工具
  • 获取到凭证:
    • 用户名:Shiv
    • 密码:godhelpmeplz (MD5解密后)

2.2 Web应用漏洞利用

  • 发现网站使用HelpDeskZ系统
  • 在GitHub和Exploit-DB找到相关漏洞:
    1. 文件上传漏洞:
      • 文件类型过滤逻辑错误
      • 即使提示上传错误也会保存文件
      • 使用时间戳混淆文件名
    2. SQL盲注漏洞

2.3 文件上传绕过尝试

  • 尝试上传PHP后门文件
  • 使用GitHub上的exp查找混淆后的文件名
  • 多次尝试未成功

2.4 SQL盲注利用

  • 使用现成的盲注脚本
  • 获取新凭证:
    • 用户名:support@mysite.com
    • 密码:Welcome1

3. 权限提升路径

3.1 SSH访问

  • 尝试使用获取的凭证登录SSH
  • 成功使用以下组合登录:
    • 用户名:help
    • 密码:Welcome1
  • 获取第一个flag

3.2 本地提权

  1. 使用linux-exploit-suggester.sh识别潜在漏洞

    • 发现可能存在脏牛(Dirty Cow)漏洞
    • 尝试利用失败
  2. 尝试CVE-2017-16995漏洞

    • 成功提权至root
    • 获取最终flag

4. 关键漏洞总结

漏洞类型 利用方法 获取信息
GraphQL信息泄露 使用专用工具查询 用户名和加密密码
HelpDeskZ文件上传逻辑缺陷 上传恶意文件绕过过滤 尝试获取Webshell
HelpDeskZ SQL盲注 使用自动化脚本 新凭证信息
Linux内核漏洞(CVE-2017-16995) 编译运行exp root权限

5. 技术要点

  1. GraphQL渗透

    • 了解GraphQL查询语法
    • 使用专用工具进行信息收集
    • 注意敏感字段和查询
  2. 文件上传绕过

    • 研究目标应用的过滤机制
    • 尝试各种绕过技术(如%0a绕过)
    • 利用逻辑缺陷(如错误提示但文件仍保存)
  3. 凭证重用攻击

    • 尝试在不同服务间重用发现的凭证
    • 注意用户名变体(如help与support@mysite.com)
  4. Linux提权

    • 使用linux-exploit-suggester.sh识别潜在漏洞
    • 了解常见内核漏洞利用方法
    • 准备多个exp应对不同情况

6. 防御建议

  1. 对GraphQL接口:

    • 实施适当的访问控制
    • 禁用内省查询
    • 记录和监控可疑查询
  2. 对文件上传功能:

    • 实施严格的文件类型验证
    • 使用白名单而非黑名单
    • 将上传文件存储在非Web可访问目录
  3. 对认证系统:

    • 避免密码重用
    • 实施强密码策略
    • 监控暴力破解尝试
  4. 系统层面:

    • 及时更新内核和安全补丁
    • 限制用户权限
    • 实施适当的日志记录和监控
HACKTHEBOX HELP靶机渗透测试教学文档 1. 靶机信息收集 1.1 初始扫描 使用nmap进行端口扫描,发现开放端口: 80端口:HTTP服务 3000端口:未知服务 22端口:SSH服务 1.2 Web服务枚举 对80端口进行目录爆破,发现需要认证的网页 检查网页源代码,未发现有用信息 3000端口发现GraphQL接口 2. 漏洞发现与利用 2.1 GraphQL接口利用 发现3000端口存在GraphQL目录 使用GitHub上现成的GraphQL渗透工具 获取到凭证: 用户名:Shiv 密码:godhelpmeplz (MD5解密后) 2.2 Web应用漏洞利用 发现网站使用HelpDeskZ系统 在GitHub和Exploit-DB找到相关漏洞: 文件上传漏洞: 文件类型过滤逻辑错误 即使提示上传错误也会保存文件 使用时间戳混淆文件名 SQL盲注漏洞 2.3 文件上传绕过尝试 尝试上传PHP后门文件 使用GitHub上的exp查找混淆后的文件名 多次尝试未成功 2.4 SQL盲注利用 使用现成的盲注脚本 获取新凭证: 用户名:support@mysite.com 密码:Welcome1 3. 权限提升路径 3.1 SSH访问 尝试使用获取的凭证登录SSH 成功使用以下组合登录: 用户名:help 密码:Welcome1 获取第一个flag 3.2 本地提权 使用linux-exploit-suggester.sh识别潜在漏洞 发现可能存在脏牛(Dirty Cow)漏洞 尝试利用失败 尝试CVE-2017-16995漏洞 成功提权至root 获取最终flag 4. 关键漏洞总结 | 漏洞类型 | 利用方法 | 获取信息 | |---------|---------|---------| | GraphQL信息泄露 | 使用专用工具查询 | 用户名和加密密码 | | HelpDeskZ文件上传逻辑缺陷 | 上传恶意文件绕过过滤 | 尝试获取Webshell | | HelpDeskZ SQL盲注 | 使用自动化脚本 | 新凭证信息 | | Linux内核漏洞(CVE-2017-16995) | 编译运行exp | root权限 | 5. 技术要点 GraphQL渗透 : 了解GraphQL查询语法 使用专用工具进行信息收集 注意敏感字段和查询 文件上传绕过 : 研究目标应用的过滤机制 尝试各种绕过技术(如%0a绕过) 利用逻辑缺陷(如错误提示但文件仍保存) 凭证重用攻击 : 尝试在不同服务间重用发现的凭证 注意用户名变体(如help与support@mysite.com) Linux提权 : 使用linux-exploit-suggester.sh识别潜在漏洞 了解常见内核漏洞利用方法 准备多个exp应对不同情况 6. 防御建议 对GraphQL接口: 实施适当的访问控制 禁用内省查询 记录和监控可疑查询 对文件上传功能: 实施严格的文件类型验证 使用白名单而非黑名单 将上传文件存储在非Web可访问目录 对认证系统: 避免密码重用 实施强密码策略 监控暴力破解尝试 系统层面: 及时更新内核和安全补丁 限制用户权限 实施适当的日志记录和监控