ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

零基础也能看懂:什么是 XSS 跨站脚本攻击

零基础也能看懂:什么是 XSS 跨站脚本攻击 零基础也能看懂什么是 XSS 跨站脚本攻击前言XSS 全称跨站脚本攻击Cross-Site Scripting是 Web 安全里最经典、高频出现的漏洞之一。很多新手刚接触 Web 安全经常疑惑XSS 到底是什么为什么插入 JS 代码就能攻击网站它能造成什么危害本文避开晦涩难懂的专业术语用通俗的例子讲清楚 XSS 原理、分类、利用场景和防御方案零基础也能看懂适合 Web 安全入门学习。免责声明本文仅用于授权环境安全学习。禁止在任何未授权网站插入恶意脚本进行测试违规操作将承担相应法律责任。一、一句话理解 XSS简单来说网站没有对用户输入的内容做过滤攻击者可以把恶意 JS 代码提交到网站当其他用户访问页面时这段 JS 代码会在受害者浏览器里执行。重点JS 代码是在访客浏览器执行不是在服务器执行。举个生活化例子论坛支持留言功能正常用户留言今天天气不错。攻击者输入一段 JSscriptalert(XSS)/script。网站直接把留言原样展示在页面上没有过滤。别的用户打开这条留言浏览器就会执行这段 JS弹出弹窗。这就是最简单的 XSS。很多人误解XSS 是攻击服务器。不对XSS 目标是访问页面的用户浏览器。二、XSS 的三大类型1. 存储型 XSS持久化 XSS高危恶意代码存入服务器数据库永久保存。只要有人访问对应页面恶意 JS 就执行。常见场景论坛留言、评论区、文章投稿、用户资料。攻击流程攻击者提交包含恶意 JS 的评论存入数据库其他用户访问这条评论页面页面加载取出数据库中的恶意代码浏览器执行 JS危害最大一次植入所有访问者都会中招。2. 反射型 XSS非持久化恶意代码不会存入数据库需要诱导受害者点击带有 payload 的链接代码随请求传给服务器直接返回页面。常见场景搜索框、页面跳转、URL 参数。例子链接xxx.com/search?qscriptalert(1)/script服务器拿到 q 参数直接输出到页面用户点开这个链接JS 执行。特点必须诱骗用户点击特制链接不会永久保存在网站危害次于存储型。3. DOM 型 XSSDOM XSS不需要和服务器交互恶意代码完全由前端 JS 处理直接在浏览器页面 DOM 中渲染。后端不会接收、存储 payload抓包看服务器返回源码时看不到恶意脚本。场景前端直接读取 URL 参数插入页面 DOM。比如前端 JS 代码document.getElementById(text).innerHtmllocation.searchURL 参数里的恶意代码直接被前端渲染执行。区分小技巧存储型恶意代码进数据库反射型参数传给后端后端返回 payloadDOM 型纯前端处理后端不参与。三、XSS 能做什么不只是弹弹窗alert(1)只是验证漏洞存在的测试 payload真实攻击可远不止弹窗窃取 Cookie执行 JS 拿到用户 Cookie发送到攻击者服务器。攻击者拿到 Cookie直接登录受害者账号不需要账号密码会话劫持。钓鱼伪造页面弹出假登录框欺骗用户输入账号密码。窃取页面数据读取当前页面信息、用户手机号、订单等敏感页面内容。诱导操作利用受害者身份在当前页面执行操作比如发帖、修改密码、添加管理员。配合其他漏洞组合攻击。弹框只是证明漏洞存在窃取 Cookie 才是 XSS 最常用的攻击方式。四、简单 Payload 示例靶场测试使用基础测试 payloadscriptalert(xss)/script如果页面直接执行就证明存在 XSS。很多场景script标签会被过滤可以使用其他标签绕过img srcx onerroralert(1)原理图片地址 x 不存在触发 onerror 事件执行 JS。a hrefjavascript:alert(1)点击我/a五、新手容易踩的误区❌ 误区 1XSS 只是弹个窗危害不大弹窗只是验证。一旦能执行 JS就能盗取 Cookie 接管账号存储型 XSS 属于高危漏洞。❌ 误区 2后端做了过滤前端就不用处理前端过滤很容易绕过所有输入过滤必须在后端做前端过滤只能做辅助。❌ 误区 3输入加引号就安全只过滤script就够了攻击者可以使用 img、svg、onclick、onerror 等事件不一定需要 script 标签只过滤 script 很容易被绕过。❌ 误区 4DOM XSS 漏洞是后端问题DOM XSS 由前端代码引起后端没有接收恶意代码需要前端做输出编码。❌ 误区 5只有输入框才存在 XSSURL 参数、页面展示内容、返回 JSON、前端渲染都可能产生 XSS。六、XSS 防御方案开发必看1. 输入过滤对用户提交内容进行过滤删除 、事件关键词等危险标签。但单纯过滤容易被绕过不能单独依靠。2. 输出编码最核心推荐方案在把内容输出到 HTML 页面时进行 HTML 实体编码转为lt;转为gt;转为quot;编码后浏览器会当成普通文本展示不会解析成 JS 代码。3. 使用 CSP内容安全策略设置 CSP 响应头限制页面只能加载指定域名的 JS 脚本禁止内联 JS 执行。就算成功注入 JS也无法运行。4. Cookie 设置 HttpOnly 属性Cookie 加上 HttpOnlyJS 无法读取 Cookie。就算存在 XSS攻击者拿不到 Cookie大幅降低危害。注意HttpOnly 不能阻止 XSS只是阻止 Cookie 窃取。七、简单测试思路靶场练习在输入框提交scriptalert(1)/script观察页面是否弹出窗口查看网页源码看输入内容有没有原样输出如果 script 被过滤尝试 img 标签等其他 payloadURL 参数位置测试反射型 XSS测试 DOM XSS观察前端 JS 是否读取 URL 参数渲染页面。总结XSS 的本质网站把用户可控内容直接当成 HTML 代码输出到页面浏览器将这段内容解析执行 JS 脚本。三大类型存储型、反射型、DOM 型。存储型危害最高DOM 型容易被忽略。防御核心思路不要信任任何用户输入输出的时候做 HTML 编码搭配 CSP、HttpOnly 等防护手段。看懂 XSS 之后再结合 HTTP 包的知识就能理解 payload 怎么通过请求包提交到服务器。XSS 也是 Web 安全入门必须吃透的基础漏洞。记住用户输入永远不可信输出编码是防御 XSS 的核心手段。了解网络安全首先要搞清楚下面这些前提网络安全到底包含哪些技术是否需要会编程网络安全行业有哪些职业方向“我”该如何选择网络安全的职业发展和成长路线是什么如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表