一般用途:拿cookie進后台,將后台地址一起發送過來
特點:挖掘困難,繞過困難
大綱:
XSS漏洞基礎講解
XSS漏洞發掘與繞過
XSS漏洞的綜合利用
XSS漏洞基礎講解
XSS介紹:
跨站腳本攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意的Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script
代碼會被執行,從而達到惡意攻擊用戶的目的。
特點:
能注入惡意代碼到用戶的客戶端瀏覽器的網頁上,從而達到劫持用戶會話的目的。
什么是跨站腳本?
介紹:跨站腳本(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或過濾策略時,有以下幾種繞過方法:
1、繞過magic_quotes_gpc
2、編碼繞過
3、改變大小寫
4、閉合標簽
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
