当前位置: 首页 > news >正文

XSS跨站脚本

目录


一、概述与核心概念

1.1什么是XSS

XSS全称Cross Site Scripting(跨站脚本攻击),为了与CSS区分而缩写为XSS。它是一种代码注入攻击,攻击者将恶意脚本注入到网页中,当其他用户浏览该网页时,恶意脚本在受害者浏览器中执行。

1.2为什么叫“跨站”

虽然攻击脚本来源于当前站点(同源),但攻击目标跨越了用户对“当前站点可信”的心理边界——用户以为在访问可信站点,实际执行了攻击者的恶意代码。

二、XSS三大类型

类型 存储位置 危险等级
反射型 URL参数 诱导用户点击恶意链接
存储型 服务器数据库 访问含恶意数据的页面即触发
DOM型 URL(前端解析) 前端DOM操作导致代码执行

2.1反射型XSS

原理:用户输入的数据被服务器直接拼接进HTML响应中返回,未做过滤或编码。攻击者将恶意参数构造在URL中,诱导受害者点击。

攻击流程
1.攻击者构造恶意URL:http://target.com/search?q=
2.服务器将直接输出到页面
3.受害者点击链接,恶意脚本在浏览器中执行

2.1.1pikachu实战演示(GET反射型XSS)

打开皮卡丘靶场的XSS关卡,首先是这样的页面
图片
我们尝试提交内容Celandine
图片
发现输出的是Who is Celandie,i don't care!
打开网页开发者工具,发现网站是把我们的输入作为了一个变量放入句子"who is ___,i don't care!"里面,我们可以尝试进行XSS攻击了,尝试输入<script>alert(1)</script>
图片
又发现输入20个长度内容后就无法输入了
我们审查一下元素,修改元素限制长度
图片
将审查元素扩大至100,即将上图中的20修改为100长度。再次尝试输入<script>alert(1)</script>
图片
弹窗1,说明反射型xss利用成功。

2.1.2pikachu实战演示反(POST反射型XSS)

打开靶场出现了一个登陆界面,在右上角拿到提示,登陆用户名为admin,密码为123456
登录之后显示如图
图片
输入Celandine,回显who is Celandine,i don't care!
图片
此时尝试攻击,输入<script>alert(1)</script>
图片
弹窗回显1,xss攻击成功。

2.2存储型XSS

原理:恶意代码被持久化存储在服务器端(数据库、文件等),所有访问该页面的用户都会遭受攻击。

攻击流程
1.攻击者在留言板提交包含恶意脚本的内容。
2.服务器将内容存入数据库
3.其他童虎访问留言板时,服务器从数据库中取出内容并输出
4.恶意脚本在所所有访问者浏览器中执行

2.2.1pikachu实战演示(存储型XSS)

打开靶场是一个留言板的界面,这个关卡是不允许进行sql注入的,我们尝试xss攻击。
输入攻击代码<script>alert(1)</script>,点击提交,这段恶意脚本就被注入到了数据库中,以后所有的用户浏览该网页时,浏览器都会从数据库中读取恶意代码并解析,那么用户的浏览器上就会执行该恶意脚本。
模拟被攻击者:先打开别的页面,再点击被攻击网站,触发弹窗1,说明恶意脚本执行了。
图片

2.3DOM型XSS

DOM全称Document Object Model中文译为文档对象模型。HTML DOM树,可以理解为DOM为一个一个访问html的标准变成接口。
图片

原理:纯前端漏洞,不涉及服务器端相应。恶意代码通过修改DOM环境导致有效载荷执行。

关键特征:没有向后端发送请求,攻击完全发生在客户端。通过document.writeinnerHTMLeval等前端操作将恶意内容注入DOM

2.3.1pikachu实战演示

打开对应靶场,随机输入内容,查看网页源码
图片
可以看到网页是把我们的输入当成了一个网址跟在href属性后面。现在有两种思路进行攻击。
1)第一种就是不闭合标签,利用javascript伪协议或者onlick事件执行命令。payload1:javascrip:alert(1)点击蓝色字体触发伪协议中的命令。
图片
payload2:' onclick="alert(1)"点击蓝色字体执行命令。
2)第二种就是提前闭合a标签,使得我们的输入能被独立解析。payload:'"><img src="#" onmouseover="alert(1)">,利用onmouseover标签属性来触发代码,onmouserover就是将鼠标移动到这个上面。
图片

三、xss盲打

xss盲打就是攻击网站后台管理系统,比如说有个提供建议的网站,当管理员想去查看这些建议时就要网站去请求服务器,然后服务器去数据库拿取这些建议输出到客户端浏览器中。

2.5XSS过滤

2.5.1标签与事件绕过

很多浏览器过滤了<script>,却忽略了其他标签。

  • 利用其它标签
    • <img src=x onerror=alert(1)>
  • 利用伪协议
    • <a href="javascript:alert(document.cookie)">点击</a>

2.5.2关键字绕过

大小写混淆、双写/多写过滤、利用注释

2.5.3JS环境中绕过

单引号被过滤,使用反引号`
eval被过滤,使用Function构造函数

2.5.4htmlspecialchars转义

在默认情况下hemlspecialchars()只转义这5个字符:

原始字符 转移后 说明
& &amp;
" &quot;
' 默认不转义 需额外设置
< &lt;
> &gt;

3.防御策略

这里重点讲一下httponly和csp

3.1HttpOnly

HttpOnly是Cookie的一个属性标志。设置了HttpOnly的Cookie,无法被JavaScipt的document.cookieAPI读取,只能通过HTTP请求自动携带。它只防御通过XSS窃取Cookie进行会话劫持。

3.2CSP(内容安全策略)

3.2.1CSP是什么

CSP(Content Security Policy)是一个HTTP响应头,它告诉浏览器哪些资源可以加载和执行,形成一个白名单机制。

3.2.2常用指令

指令 作用
script-src 'self' 仅允许同源JS
script-scr 'none' 禁止所有JS
script-src 'nonce-xxx' 仅允许带指定的nonce的script标签
http://www.gsyq.cn/news/1569809.html

相关文章:

  • 嵌入式GUI开发实战:基于Kinetis K70与PEG+图形库的LCD驱动配置详解
  • Ubuntu 14.04 上稳定部署 Bottle Web 服务实战指南
  • 2026年南京塑料件开模定制厂家:品质与交付双维度评测 - 起跑123
  • HCS08单片机窗口式COP与内存保护实战:构建高可靠嵌入式系统
  • 东莞前十大专管叛逆学生的学校2026全新榜单出炉 - 武汉中职最新信息发布
  • 网安培训避坑指南:2026主流机构资质与课程实测梳理 - 互联网科技品牌测评
  • 嵌入式AI部署实战:基于NXP eIQ环境在Layerscape处理器上部署机器学习模型
  • WordPress插件文件包含漏洞深度剖析:从原理到实战复现
  • 融合频率论与贝叶斯统计,构建CNV检测实验室特异性性能评估模型
  • 在线最大独立集:贪心算法局限与随机化几何策略优化
  • 方差-协方差矩阵
  • 响应流式传输(Response Streaming)
  • BurpSuite Intruder爆破登录配置:6个关键错误与解决方案
  • NXP MKW36到MKW35低功耗蓝牙MCU迁移实战:硬件差异与IDE适配详解
  • 2026昌吉白蚁消杀防治金盾虫控青蚁卫士权威本土品牌 - 我叫一
  • Django ASGI生产部署:Uvicorn+Postgres+Nginx全栈实践
  • Ubuntu 20.04 搭建 LEMP 栈:从原理到生产就绪的全链路实践
  • WordPress插件SQL注入漏洞实战:CVE-2024-10400复现与自动化利用
  • AI Agent长期记忆实战:MemOS本地部署与Dify/LangChain集成指南
  • HyPeR框架:优化音频大模型推理延迟的主动暂停与感知增强技术
  • i.MX处理器Flash存储选型指南:NOR、NAND与DiskOnChip深度解析
  • 开源计算机视觉项目easy12306深度剖析:基于深度学习的12306验证码识别算法原理与本地部署实战指南
  • GraphQL-Yoga + MongoDB Node.js 服务实战:防注入、连接池与Windows部署
  • Ubuntu 16.04 vsftpd 用户目录隔离与TLS安全配置实战
  • 2026年青甘大环线旅行攻略:寻找最专业的领队指 权威推荐青海龙清国际旅行社 - 行业深度观察
  • StarCore SC140 DSP性能与代码体积优化:混合编程实战策略
  • AI赋能RobotFramework:智能自动化测试新范式实战解析
  • 武汉市江岸区水电维修|维小达|电路|水管|马桶|暖气|管道疏通一站式全屋水电维保服务 - 维小达科技
  • 如何快速使用markdownReader:面向新手的完整Chrome扩展指南
  • 导师推荐 AI论文网站 2026最新测评:工具对比+好用推荐