<script>
标签引用,这时就等于建立了信任关系,如果第三方的统计脚本被黑客挂马,那么这些网站也都会被危及<script></script>
标签内、HTML的标签on事件中,以及一些标签的href、src等属性的伪协议(javascript:等)中;HTTP Etags
、Web Cache
、Web History
、window.name
);<scheme>://<netloc>/<path>?<query>#<fragment>
;<script>
和<style>
,它们是不能嵌套标签的,而且payload构造情况会更灵活;同样有意思的场景,比如这三类:1.输出在src/href/action等属性内;2.输出在on*事件内;3.输出在style属性内;对IE来说,在标签的style属性中只要能注入expression关键词,并进行适当的闭合,我们就可以认为目标存在XSS;<textarea>
中是不解析的。这样的标签还有title、iframe、noscript、noframes;textarea在HTML中的权重很高,允许html标签出现在<textarea><textarea>
之间;<iframe>
只能嵌入同域内的UTF-7编码文件;3.通过link方式调用外部UTF-7编码的CSS文件;4.通过指定BOM文件头;BOM的全称为Byte Order Mark。即标记字节顺序码,只出现在Unicode字符集中,BOM出现在文件的最开始位置,软件通过识别文件的BOM来判断它的Unicode字符集编码方式);在实际的攻击场景中,能控制目标网页开头部分的功能如下(用户自定义的CSS样式文件;JSON Callback类型的链接;)<script>
嵌入同域内的js文件,XSS Filter就不会防御,这个受CSP策略的影响;<iframe>
标签利用file协议调用本地的XSS漏洞页面,并通过这个本地XSS执行任意的JavaScript代码,由于是file协议,权限会更大,比如,利用AJAX读取本地文件;2.mhtml:协议跨域;[script]
请求:<script>
标签请求内容可跨域,这是合法的功能,请求到的数据必须是合法的JavaScript语法格式;包括请求回来的是JSON+CallBack函数这样的数据内容(这种跨域数据通信被称为JSONP);<audio>
和视频标签<video>
;2.HTML5中可以利用到的新属性有formation、onformchange、onforminput、autofocus等;<script>
从攻击者域上引用进来,对JavaScript上下文来说,也属于目标网站;CSRF蠕虫的危害性大多与XSS蠕虫一样,如:获取用户隐私、对用户数据进行恶意操作、散播广告、传播网页木马、传播舆情等;<iframe>
标签包含;)<script>
、标签on事件、标签style属性、标签src/href/action等属性都可以内嵌JavaScript执行;HTML仅做HTML的事,JavaScript/CSS都通过加载独立文件的方式被执行。JavaScript/CSS独立文件所在的域可以配置为白名单,这样就能有效地防止加载攻击者域上的相关资源文件。这大大提高了XSS攻击的难度,这就是CSP策略的最大设计初衷;CSP策略使得Web前端更有序,从而更安全,这是一个好趋势,W3C已经在大力推进这样的策略;目前,Chrome支持CSP策略的头部是X-WebKit-CSP,而不是标准的X-Content-Security-Policy;下面举几个应用CSP的场景(1、不允许任何外部的资源加载,且允许内嵌脚本执行;2、仅允许白名单的外部资源加载,不允许内嵌脚本执行;)<script>
引用第三方js文件;<iframe>
引用第三方HTML文件;<object>
等引用第三方Flash等资源