教大家如何找XSS漏洞並且利用
- 首先我們得知道什麼是XSS漏洞?
(一)什麼是XSS漏洞?
cross sitescript跨站腳本攻擊,為了避免和css重複,就叫XSS了,是客戶端腳本安全中的頭號大敵。
(二)XSS有哪些類型?
反射型:簡單的描述就是把用戶輸入的數據反射給瀏覽器,這個數據可能是Html代碼或者js代碼,反射後讓瀏覽器去執行。
存儲型:把用戶輸入的數據(比如惡意的js代碼)存儲在伺服器端,具有很強的穩定性,危害時間長。
DOM Based XSS:這種不是按照存儲在哪裡來劃分的,可以說是反射型,由於歷史原因,歸為一類,通過改變DOM結構形成的XSS稱之為DOM Based。
(三)XSS的危害有哪些?
1、劫持Cookie,cookie中一般加密保存了用戶的登錄憑證,瀏覽器發起的所有請求都會自動帶上,如果Cookie被盜取,也就是說用戶不用通過密碼而直接登錄你的賬戶。
Cookie設置HttpOnly屬性,能夠起到四兩撥千金的作用,另外cookie可以綁定用戶客戶端信息,例如ip或者umid信息。
2、構建Get和Post請求,如果cookie按照上述進行了設置,則無法直接劫持cookie來使用了,但是XSS可以在javascript中構建get或者post請求,來實現自己的攻擊。
例如下面的一段代碼:
var img =document.createElement(『img』);
img.src=」http://blog.cccc.com?m=delete&id=212112」;
document.body.appendChild(img);
只要讓用戶執行這段腳本,就能發起get請求,攻擊者通過XSS誘導用戶來執行。
XSS的攻擊過程都是在瀏覽器通過執行javascript腳本自動進行,缺少與用戶交互的過程。例如在POST的請求中,如果需要輸入驗證碼,Js代碼無法解析驗證碼,攻擊也就無法實現。但是針對驗證碼這種情況,如果XSS可以通過把驗證碼的圖片發到遠端攻擊伺服器,伺服器解析驗證碼然後把結果返回給js代碼,js獲取後繼續進行攻擊,不過就是成本有點高。
3、XSS釣魚
上面模擬用戶的POST請求貌似成本有點高,攻擊者可以將XSS和釣魚結合在一起,例如通過javascript代碼模擬出網站的登錄框,用戶輸入用戶名和密碼後,XSS將這些信息發送到伺服器端,用來進行攻擊。
4、獲取用戶系統信息
此外XSS還可以識別用戶的瀏覽器信息、用戶安裝的軟體以及用戶真實的IP等信息。
5、XSS Wrom
這是XSS的一種終極利用方式,破壞力和影響力是巨大的,一般來說,用戶直接發生交互行為的頁面,如果存在存儲型XSS,則比較容易發起Wrom攻擊。
(四)如何防禦XSS呢?
1、給關鍵的Cookie設置HttpOnly屬性
這樣能夠避免js讀取Cookie信息(設置後有助於緩解XSS,但是XSS除了劫持Cookie之外,還可以模擬用戶的身份進行操作)。
2、進行輸入檢查
如果僅僅在客戶端通過JS來做輸入校驗,有可能會被攻擊者繞過,WEB開發中的普遍做法是同時在客戶端和服務端做校驗。這種輸入檢查的方式也稱之為XSS Filter。
3、輸出檢查
一般說來,除了富文本輸出之外,在變數輸出到HTML頁面時,可以使用編碼或者轉義的方式來防禦XSS攻擊。
4、防禦DOM BasedXSS
前面提到的集中方法,對於這種類型不太適用,需要特別對待,那如何才能防禦呢?
首先是$var輸出到<script>是,應該執行一次javasriptEncode,其次在doument.write輸出到HTML頁面時,如果是輸出到事件或者腳本,可以再做一次javaScriptEncode,如果是輸出到HTML內容或者屬性,則可以做一次HtmlEncode。
上面提到的這些防禦方法都屬於安全生產的環節,也就是說實在開發同學寫代碼的時候要特別注意,這種是否做的規範,可以通過工具掃描代碼的方式來實現,也就是白盒測試,如果代碼沒有做輸入或者輸出檢查,則發報告提示開發來進行修改。但是有些場景白盒沒法覆蓋到,例如輸出jsonp類型的介面,對於callback參數的原味輸出,白盒有時候就掃不出來,這時候,可以通過黑盒測試工具,模擬入參的各種情況,也就是窮舉,來構造,如果發生了XSS請求,則發出報告即可。
那麼我將教大家如何找到XSS漏洞:
1.準備工具:BruteXSS丶火狐瀏覽器
BruteXSS這個工具我會打包給大家,火狐瀏覽器大家可以去百度自行下載。
2.要安裝Python2.7環境(我會打包)
3.首先安裝Python2.7環境,安裝後吧我們的BruteXSS放到Administrator這個目錄下。那麼大家肯定會問為什麼要放到這個目錄下呢?其實很簡單,就是為了方便我們利用命令行來打開這個工具。
http://www.liuwx.cn/content/uploadfile/201706/4a471497161676.pnghttp://www.liuwx.cn/content/uploadfile/201706/fb5c1497161739.png4.大家可去點一下網站,看看URL有沒有類似於這樣的:http://xxx.com/search.aspx?searchtype=0&fieldOption=title&Keyword=&page=2
也就是url中帶『=』的,那麼找到後我們可以吧URL複製下來,拿到我們的BruteXSS里
那麼準備工作完成後我們開始進入正題:
測試站點:http://xxx.com/search.aspx?searchtype=0&fieldOption=title&Keyword=&page=2
http://www.liuwx.cn/content/uploadfile/201706/10fb1497161830.png1.我們win+R運行CMD
2.用cd命令打開brutexss:
- cd brutexss
3.然後用命令打開我們的BruteXSS的PY腳本:
- brutexss.py
可以看到,進入了BruteXSS的命令行界面:
它上面有選擇方法,問你時候GET還是POST請求,我們選擇GET(當然遇到POST的話就用POST)我們這裡按g就可以了
http://www.liuwx.cn/content/uploadfile/201706/4a471497162198.png
4.我們把疑似XSS的URL複製進去:
默認回車就行了,他用他默認的字典來跑,當然我們可以用他其他字典,之前我講過了,大家自己吧字典的文件名COPY進去就好了,然後回車
http://www.liuwx.cn/content/uploadfile/201706/4a471497162484.png5.從上圖可以看到已經檢測出XSS漏洞了,我們去驗證一下是否存在XSS,這時候就需要火狐瀏覽器來調試了
可以看到確實是存在XSS漏洞的~~~
那麼就寫到這吧,希望能幫助到大家。
本文章作者是*Liuwx
*未經允許請勿轉發,轉發請註明來源,謝謝
工具我打包放到我博客里了,大家可以去下方的鏈接自行下載!
原文來源:如何找XSS漏洞並且利用(工具+資源)推薦閱讀:
※QQ空間自動發說說還能@好友是怎麼回事?
※存儲型XSS與反射型XSS有什麼區別?
※DOM-based XSS 與存儲性 XSS、反射型 XSS 有什麼區別?
※XSS 攻擊時怎麼繞過 htmlspecialchars 函數呢?
※XSS 攻擊有哪些黑魔法?