通常用途:拿cookie進後臺,將後臺地址一塊兒發送過來javascript
特色:挖掘困難,繞過困難 php
大綱:html
XSS漏洞基礎講解java
XSS漏洞發掘與繞過web
XSS漏洞的綜合利用express
XSS漏洞基礎講解瀏覽器
XSS介紹:安全
跨站腳本攻擊(Cross Site Scripting),爲了避免和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意的Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script服務器
代碼會被執行,從而達到惡意攻擊用戶的目的。cookie
特色:
能注入惡意代碼到用戶的客戶端瀏覽器的網頁上,從而達到劫持用戶會話的目的。
什麼是跨站腳本?
介紹:跨站腳本(cross-site scripting,XSS)是一種安全攻擊,其中,攻擊者在看上去來源可靠的連接中惡意嵌入譯碼。它容許惡意用戶將代碼注入到網頁上,其餘用戶在觀看網頁時就會受到影響。這類攻擊一般包含了HTML以及用戶
端腳本語言。
XSS腳本示例:
<html>
<head>xss test</head>
<body>
<script>alert(/xss/)</script>
</body>
</html>
以上代碼使用alert函數彈出來一個網頁彈框,彈框內容就是/xss/,xss的輸入也是能夠是html代碼,好比能讓網站不停地刷新
<meta http-equiv="refresh" content="0";>
也能夠嵌入其餘網頁連接
<iframe src=http://xx.com with=0 height=0></iframe>
XSS的危害
竊取Cookies、蠕蟲、釣魚等等。
JavaScript基礎知識
簡介:JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML(標準通用標記語言下的一個應用)
網頁上使用,用來給HTML網頁增長動態功能。
document對象
它表明着當前的頁面(文檔),咱們調用它的write()方法就能向該對象中寫入內容,即:document.write(),能夠在HTML引用外部js代碼<script src=x.js></script>,其中x.js的內容以下:
document.write("hello xxx");
在標籤、屬性、元素這三種地方可能會調用。
JavaScript變量
定義變量
var [變量]
e.g var x; var a=1; var b="hello"; var c=ture;
JavaScript流程控制
if-else控制語句
e.g
var a=20; var b=10; if(a>b){ alert("b=20"); } else{ alert("b=10"); }
switch控制語句
e.g
var x=10; switch(x){ case 2: alert('1'); break; case 10: alert('10'); break; }
for循環
e.g
<script>
for(var i=0;i<100;i++){ alert(1); } </script>
while循環
e.g
<script>
var a=0; while(a<100){ alert(1); a++; } </script>
JavaScript函數
function x(a,b){ var c=a+b; return c; } var xx=x(1,2); conseole.log(xx);
JavaScript事件
onclick屬性,點擊事件
e.g
function x(){ alert(/xss/) } <h1 onclick="x()">hello</h1>
XSS分類
反射型、DOM型、存儲型
反射型
介紹:XSS反射型攻擊,惡意代碼並無保存在目標網站,經過引誘用戶點擊一個連接到目標網站的惡意連接來實施攻擊的。
e.g
http://www.xx.com/src.asp?key="><script>alert(/xss/)</script>
通常使用的時候是將構造好的URL發送給目標者,誘使其點擊連接後觸發攻擊,可是這種的只能使用一次,非持久化的。
存儲型XSS
比反射性的XSS更具備威脅性,而且可能影響到web服務器是我自身安全,這種的不須要用戶本身點擊特定的連接就能夠執行,攻擊者將惡意代碼上傳到服務器中,或存儲在漏洞服務中,只要瀏覽器包含有這個惡意代碼的問題,就會受到攻擊。
攻擊模型
XSS漏洞發掘和繞過
火狐中經常使用的XSS調試插件
hackbar、firebug、tamper data、live http headers、editor cookie(編輯cookie)
XSS漏洞挖掘:
挖掘方式:
手工挖掘、工具挖掘、標籤閉合、AWVS
手工挖掘XSS漏洞
站點:http://www.xx.com/xss.php?id=1
將payload分別添加到id=1的地方進行測試
常測試的地方是有輸入的地方,文件上傳的地方、flash、、
閉合標籤
1 1 <script>alert(1)</script>
2 2 "'><script>alert(1)</script> 3 3 <img/src=@onerror=alert(1)/> 4 4 "'><img/src=@onerrer=alert(1)/> 5 5 'omouseover=alert(1) x='
6 6 "onmouseover=alert(1) x=" 7 7 'onmousover=alert(1) x="
8 8 javascript:alert(1)// 9 9 data:text/html;base64,PHNjcmludD5== 10 10 "';alert(1)// 11 11 </script><script>alert(1)// 12 12 }x:expression(alert(1)) 13 13 alert(1)//
工具挖掘XSS漏洞
AWVS netsparke appscan burp xsser
xsscrapy bratexssr OWASP Xemotix
當插入的代碼在標籤的中間時,須要閉合標籤
當插入的代碼在標籤的屬性時,e.g <div value="123"><script>alert(1)</script>">
要先找到位置,嘗試閉合
在留言的地方通常是找存在存儲型的XSS必須挖的地方,在存儲型的多個要輸入內容的框時,咱們須要對每一個框都進行寫入測試,二通常不留彈框的代碼,防止管理員發現,通常都是打cookie的代碼,
注意:閉合標籤的時候要閉合他加載後的標籤,對於文本域的標籤加載先後都要閉合</textarea>
常見的防XSS的代碼
1 $x=preg_replace("/script/","",$x); 2 $x=preg_replace("/script/i","",$x); 3 $x=preg_replace("/alert/","",$x); 4 $x=preg_replace("/script/","",$x); 5 這裏面,i是表明不區分大小寫 6 上述的代碼是指將檢測到的關鍵字用空格替換 7 對於區分大小寫咱們能夠對關鍵字進大小寫的轉換 8 對於替換成空格的咱們能夠重複覆蓋,如:<SCRSCRRTPIPT>他將裏面的一個替換成空格後還會剩下一個
XSS繞過限制
當存在XSS但又有waf或過濾策略時,有如下幾種繞過方法:
一、繞過magic_quotes_gpc
二、編碼繞過
三、改變大小寫
四、閉合標籤
XSS漏洞的綜合利用
在網站上進行測試,通常就是尋找這種post型傳遞參數,進行交互的地方
能夠看到結果,這裏是只接受數字型的參數,因此咱們就無法注入xss語句了,只能尋找其餘的地方
咱們在站內查找的地方輸入代碼,能夠看到他彈框了,說明存在xss漏洞
這個實驗是要用低版本的瀏覽器進行測試的,在高版本的瀏覽器中會將這條語句檢測出來,直接過濾攔截,報錯沒法顯示。好比Google瀏覽器
留言成功後並不會當即顯示出什麼,可是等咱們登陸到後臺的時候,點擊待審留言,就會出現彈框,這就是存儲型的XSS
也可使用工具直接跑(BruteXSS)
他會加載字典進行嘗試
注意:最好選擇get類型的方式,若是是post會有很大的可能改變網站排版,致使網站頁面扭曲等現象,危害很大;
由於它是直接留存在服務器裏面的,須要網站管理員進行恢復,更嚴重的可能追究你的刑事責任。
在他的wordliet文件裏面就是他的字典,在跑的時候就是加載的這個文件,裏面的語句只能夠本身再添加的
平臺:xss.fbisb.com
建立一個項目
填寫相關信息
選擇默認模塊,此次演示的是盜取管理員的cookie
以下就時他給出的利用代碼
將XSS代碼進行留言
而後咱們登錄管理員,看看審查元素能夠發現,他將管理員的cookie發送到那個平臺
能夠看到咱們的項目中已經得到了管理員的cookie
cookie利用
此時咱們用火狐的插件
路徑選擇根,裏面填寫的內容就是在平臺中給的cookie的內容
而後去訪問,登錄後的鏈接,若是仍是登陸不了,九江cookie中的全部信息都添加如下,多添加幾個就能夠了
2019-05-13 23:38:55