记一次域渗透实战之heapddump深度利用到Gateway劫持获取域控的过程
字数 3265 2025-10-01 14:05:52

记一次域渗透实战:从Heapdump深度利用到Gateway劫持获取域控

文档摘要

本报告详细复盘了一次通过对Spring Boot应用堆转储(Heapdump)文件的分析,获取关键凭证,进而通过SSRF、流量劫持与XSS组合拳,最终接管整个域环境的完整渗透过程。过程涉及信息收集、漏洞分析、内网横向移动及权限提升等多个关键阶段。

1. 信息收集阶段 (Information Gathering)

1.1 端口扫描 (Port Scanning)

攻击者使用 nmap 对目标进行探测,发现开放端口:

  • 22/tcp:SSH服务,可能的远程管理入口。
  • 80/tcp:HTTP服务,Web应用主要入口。
  • 8761/tcp:Spring Boot Admin Server或Eureka服务发现组件常用端口,是重点攻击面。

命令示例:

nmap -sS -sV -O <目标IP>

1.2 Web应用探测 (Web Application Reconnaissance)

  • 访问80端口Web应用,发现是一个商品展示网站(Furni_WebApp)。
  • 通过访问不存在的路径触发错误页面,确认后端采用 Spring Boot 框架,这增加了发现Spring相关漏洞(如Actuator未授权访问、SPEL表达式注入)的可能性。
  • 对Web目录进行爆破,发现了关键信息泄露点:/heapdump 端点,并成功下载了Heapdump文件。

2. 堆转储文件分析 (Heapdump Analysis)

Heapdump是JVM应用程序在特定时刻的内存快照,其中可能包含运行时的敏感信息,如数据库连接字符串、密码、密钥、会话对象等。

2.1 手动分析 (Manual Analysis)

  • 使用 Eclipse MATJVisualVM 等工具加载heapdump文件。
  • 通过检索关键词如 jdbcurlpassworduser 来寻找数据库连接配置。

2.2 自动化工具分析 (Automated Analysis)

  • 使用自动化工具 JDumpSpider 快速分析heapdump文件,高效地提取出硬编码在内存中的敏感信息。
  • 关键发现:从内存中提取出完整的MySQL数据库连接字符串。
    jdbc:mysql://localhost:3306/Furni_WebApp_DB?user=oscar190&password=0sc@r190_S0l!dP@sswd
    

2.3 凭证复用 (Credential Reuse)

  • 攻击者立即使用获取到的用户名 oscar190 和密码 0sc@r190_S0l!dP@sswd 进行凭证复用攻击。
  • 使用 netexec (原crackmapexec) 验证该凭证对SSH服务的有效性。
    netexec ssh <目标IP> -u oscar190 -p '0sc@r190_S0l!dP@sswd'
    
  • 结果:成功通过SSH登录到系统,获得初始立足点。

3. 内网横向移动 (Lateral Movement)

3.1 环境探查 (Post-Exploitation Recon)

登录后,攻击者开始收集当前系统信息:

  • 用户信息:确认当前用户为 oscar190,并查看是否有其他用户。
  • 权限评估:检查sudo权限(sudo -l),发现该用户并无特殊权限。
  • 网络信息:检查网络连接(netstat -antp)、ARP表(arp -a)等,发现该机器存在多块网卡,处于一个内网环境中。
  • 进程与服务:检查运行的服务,发现关键应用。

3.2 配置文件分析 (Configuration Analysis)

在Web应用根目录(如 /opt/tomcat/webapps/ROOT//home/oscar190/app/)下寻找配置文件:

  • application.propertiesapplication.yml:发现了另一个内部应用的配置。
  • 关键发现:找到一个指向内网网关管理界面的配置,其地址类似于 http://192.168.1.1:8080/admin

3.3 攻击向量:SSRF (Server-Side Request Forgery)

  • 攻击者在Web应用上寻找功能点(如商品信息查询、API接口),发现一处请求外部URL的功能。
  • 利用该功能构造恶意请求,将其作为代理访问内网资源(即之前发现的网关管理地址)。
  • Payload示例: http://192.168.1.1:8080/admin
  • 结果:成功通过SSRF访问到内网网关设备的管理后台界面。

4. 权限提升与域控获取 (Privilege Escalation & Domain Compromise)

4.1 攻击向量:流量劫持与XSS (Traffic Hijacking & XSS)

网关管理界面存在存储型XSS漏洞。攻击者通过SSRF,以管理员会话(Cookie)在网关后台执行操作。

  1. 创建恶意路由/策略:在网关节点的管理界面中,添加一条恶意路由策略或DNS重定向规则。

    • 目的:将内网中所有对 *.google.com(或某个常见域名)的HTTP请求,重定向到攻击者控制的一台服务器(http://<攻击者IP>/capture)。
    • 原理:这是一种网关劫持,所有域内用户访问Google的流量都会被引导到攻击者的服务器上。
  2. 部署XSS载荷:在攻击者服务器(/capture)上,放置一个精心构造的HTML页面,其内容为一段用于获取域用户NTLM Hash的XSS载荷。

    • 常用技术:NTLM Hash捕获。页面中包含一个指向攻击者机器的UNC路径(\\<攻击者IP>\share),
      这会触发Windows系统的认证请求,从而将当前登录用户的NTLMv2 Hash发送给攻击者。
    • 工具:攻击者使用 responderntlmrelayx 在本地监听,等待Hash送上门。
      responder -I eth0
      
  3. 等待触发:当域内任意用户(最好是域管理员)访问被劫持的域名时,其浏览器会被重定向到恶意页面,并自动发起认证,泄露其NTLM Hash。

4.2 哈希传递攻击 (Pass-the-Hash)

  • 攻击者捕获到域管理员的NTLM Hash后,使用 netexecpsexec 进行哈希传递攻击(PtH),直接模拟域管理员身份访问域控制器。
    netexec smb <域控IP> -u Administrator -H <捕获到的NTLMHash> -x "whoami"
    

4.3 获取域控权限 (Domain Compromise)

  • 通过PtH获得域控的SYSTEM权限后,即可执行任意命令,从而完全控制整个域环境。
  • 最终标志:成功转储域控制器的NTDS.dit数据库,获取域内所有用户的哈希值,标志着整个域渗透的完成。

5. 漏洞链总结与防御建议

5.1 攻击链梳理

  1. 信息泄露/heapdump 端点未授权访问 → 获取数据库明文密码。
  2. 凭证复用:数据库密码复用至SSH服务 → 获得初始shell。
  3. 内部侦察:发现内网网关管理地址。
  4. SSRF:利用Web功能漏洞访问内网网关管理界面。
  5. 网关劫持 + XSS:通过网关配置注入实现流量劫持,结合XSS窃取NTLM Hash。
  6. 哈希传递:利用捕获的域管理员Hash直接控制域控。

5.2 防御建议 (Defensive Recommendations)

  • 禁止生产环境开启Heapdump:切勿将heapdump等Actuator端点映射到公网。必要时,应通过防火墙策略严格限制访问源。
  • 使用强密码且避免复用:为不同服务(DB, SSH, OS)使用唯一、复杂的密码。建议使用密码管理器。
  • 网络分段与隔离:严格划分网络区域,确保Web服务器无法直接访问核心网络设备(如网关、域控)的管理接口。
  • 最小权限原则:为应用程序账户分配所需的最小权限,避免其能够读取敏感配置文件或执行系统命令。
  • 输入输出过滤:对所有用户输入进行严格过滤和校验,彻底杜绝SSRF和XSS漏洞的产生。
  • 禁用不必要的协议:在内网中,考虑禁用LLMNR、NBT-NS等协议,以防止NTLM Relay攻击。
  • 启用强制签名:对SMB等协议启用强制签名,增加哈希传递攻击的难度。

记一次域渗透实战:从Heapdump深度利用到Gateway劫持获取域控 文档摘要 本报告详细复盘了一次通过对Spring Boot应用堆转储(Heapdump)文件的分析,获取关键凭证,进而通过SSRF、流量劫持与XSS组合拳,最终接管整个域环境的完整渗透过程。过程涉及信息收集、漏洞分析、内网横向移动及权限提升等多个关键阶段。 1. 信息收集阶段 (Information Gathering) 1.1 端口扫描 (Port Scanning) 攻击者使用 nmap 对目标进行探测,发现开放端口: 22/tcp :SSH服务,可能的远程管理入口。 80/tcp :HTTP服务,Web应用主要入口。 8761/tcp :Spring Boot Admin Server或Eureka服务发现组件常用端口,是重点攻击面。 命令示例: 1.2 Web应用探测 (Web Application Reconnaissance) 访问80端口Web应用,发现是一个商品展示网站(Furni_ WebApp)。 通过访问不存在的路径触发错误页面,确认后端采用 Spring Boot 框架,这增加了发现Spring相关漏洞(如Actuator未授权访问、SPEL表达式注入)的可能性。 对Web目录进行爆破,发现了关键信息泄露点: /heapdump 端点,并成功下载了Heapdump文件。 2. 堆转储文件分析 (Heapdump Analysis) Heapdump是JVM应用程序在特定时刻的内存快照,其中可能包含运行时的敏感信息,如数据库连接字符串、密码、密钥、会话对象等。 2.1 手动分析 (Manual Analysis) 使用 Eclipse MAT 或 JVisualVM 等工具加载heapdump文件。 通过检索关键词如 jdbc 、 url 、 password 、 user 来寻找数据库连接配置。 2.2 自动化工具分析 (Automated Analysis) 使用自动化工具 JDumpSpider 快速分析heapdump文件,高效地提取出硬编码在内存中的敏感信息。 关键发现 :从内存中提取出完整的MySQL数据库连接字符串。 2.3 凭证复用 (Credential Reuse) 攻击者立即使用获取到的用户名 oscar190 和密码 0sc@r190_S0l!dP@sswd 进行 凭证复用 攻击。 使用 netexec (原crackmapexec) 验证该凭证对SSH服务的有效性。 结果 :成功通过SSH登录到系统,获得初始立足点。 3. 内网横向移动 (Lateral Movement) 3.1 环境探查 (Post-Exploitation Recon) 登录后,攻击者开始收集当前系统信息: 用户信息 :确认当前用户为 oscar190 ,并查看是否有其他用户。 权限评估 :检查sudo权限( sudo -l ),发现该用户并无特殊权限。 网络信息 :检查网络连接( netstat -antp )、ARP表( arp -a )等,发现该机器存在多块网卡,处于一个内网环境中。 进程与服务 :检查运行的服务,发现关键应用。 3.2 配置文件分析 (Configuration Analysis) 在Web应用根目录(如 /opt/tomcat/webapps/ROOT/ 或 /home/oscar190/app/ )下寻找配置文件: application.properties 或 application.yml :发现了另一个内部应用的配置。 关键发现 :找到一个指向内网网关管理界面的配置,其地址类似于 http://192.168.1.1:8080/admin 。 3.3 攻击向量:SSRF (Server-Side Request Forgery) 攻击者在Web应用上寻找功能点(如商品信息查询、API接口),发现一处请求外部URL的功能。 利用该功能构造恶意请求,将其作为代理访问内网资源(即之前发现的网关管理地址)。 Payload示例 : http://192.168.1.1:8080/admin 结果 :成功通过SSRF访问到内网网关设备的管理后台界面。 4. 权限提升与域控获取 (Privilege Escalation & Domain Compromise) 4.1 攻击向量:流量劫持与XSS (Traffic Hijacking & XSS) 网关管理界面存在存储型XSS漏洞。攻击者通过SSRF,以管理员会话(Cookie)在网关后台执行操作。 创建恶意路由/策略 :在网关节点的管理界面中,添加一条恶意路由策略或DNS重定向规则。 目的 :将内网中所有对 *.google.com (或某个常见域名)的HTTP请求,重定向到攻击者控制的一台服务器( http://<攻击者IP>/capture )。 原理 :这是一种 网关劫持 ,所有域内用户访问Google的流量都会被引导到攻击者的服务器上。 部署XSS载荷 :在攻击者服务器( /capture )上,放置一个精心构造的HTML页面,其内容为一段用于获取域用户NTLM Hash的XSS载荷。 常用技术: NTLM Hash捕获 。页面中包含一个指向攻击者机器的UNC路径( \\<攻击者IP>\share ), 这会触发Windows系统的认证请求,从而将当前登录用户的NTLMv2 Hash发送给攻击者。 工具:攻击者使用 responder 或 ntlmrelayx 在本地监听,等待Hash送上门。 等待触发 :当域内任意用户(最好是域管理员)访问被劫持的域名时,其浏览器会被重定向到恶意页面,并自动发起认证,泄露其NTLM Hash。 4.2 哈希传递攻击 (Pass-the-Hash) 攻击者捕获到域管理员的NTLM Hash后,使用 netexec 或 psexec 进行哈希传递攻击(PtH),直接模拟域管理员身份访问域控制器。 4.3 获取域控权限 (Domain Compromise) 通过PtH获得域控的SYSTEM权限后,即可执行任意命令,从而完全控制整个域环境。 最终标志 :成功转储域控制器的NTDS.dit数据库,获取域内所有用户的哈希值,标志着整个域渗透的完成。 5. 漏洞链总结与防御建议 5.1 攻击链梳理 信息泄露 : /heapdump 端点未授权访问 → 获取数据库明文密码。 凭证复用 :数据库密码复用至SSH服务 → 获得初始shell。 内部侦察 :发现内网网关管理地址。 SSRF :利用Web功能漏洞访问内网网关管理界面。 网关劫持 + XSS :通过网关配置注入实现流量劫持,结合XSS窃取NTLM Hash。 哈希传递 :利用捕获的域管理员Hash直接控制域控。 5.2 防御建议 (Defensive Recommendations) 禁止生产环境开启Heapdump :切勿将 heapdump 等Actuator端点映射到公网。必要时,应通过防火墙策略严格限制访问源。 使用强密码且避免复用 :为不同服务(DB, SSH, OS)使用唯一、复杂的密码。建议使用密码管理器。 网络分段与隔离 :严格划分网络区域,确保Web服务器无法直接访问核心网络设备(如网关、域控)的管理接口。 最小权限原则 :为应用程序账户分配所需的最小权限,避免其能够读取敏感配置文件或执行系统命令。 输入输出过滤 :对所有用户输入进行严格过滤和校验,彻底杜绝SSRF和XSS漏洞的产生。 禁用不必要的协议 :在内网中,考虑禁用LLMNR、NBT-NS等协议,以防止NTLM Relay攻击。 启用强制签名 :对SMB等协议启用强制签名,增加哈希传递攻击的难度。