教大家如何找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=」blog.cccc.com?」;

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這個目錄下。那麼大家肯定會問為什麼要放到這個目錄下呢?其實很簡單,就是為了方便我們利用命令行來打開這個工具。

liuwx.cn/content/uploadliuwx.cn/content/upload

4.大家可去點一下網站,看看URL有沒有類似於這樣的:xxx.com/search.aspx?

也就是url中帶『=』的,那麼找到後我們可以吧URL複製下來,拿到我們的BruteXSS里

那麼準備工作完成後我們開始進入正題:

測試站點:xxx.com/search.aspx?

liuwx.cn/content/upload

1.我們win+R運行CMD

2.用cd命令打開brutexss:

  • cd brutexss

liuwx.cn/content/upload

3.然後用命令打開我們的BruteXSS的PY腳本:

  • brutexss.py

可以看到,進入了BruteXSS的命令行界面:

它上面有選擇方法,問你時候GET還是POST請求,我們選擇GET(當然遇到POST的話就用POST)我們這裡按g就可以了

liuwx.cn/content/upload

4.我們把疑似XSS的URL複製進去:

默認回車就行了,他用他默認的字典來跑,當然我們可以用他其他字典,之前我講過了,大家自己吧字典的文件名COPY進去就好了,然後回車

liuwx.cn/content/upload

5.從上圖可以看到已經檢測出XSS漏洞了,我們去驗證一下是否存在XSS,這時候就需要火狐瀏覽器來調試了

可以看到確實是存在XSS漏洞的~~~

那麼就寫到這吧,希望能幫助到大家。

本文章作者是*Liuwx

*未經允許請勿轉發,轉發請註明來源,謝謝

工具我打包放到我博客里了,大家可以去下方的鏈接自行下載!

原文來源:如何找XSS漏洞並且利用(工具+資源)

推薦閱讀:

QQ空間自動發說說還能@好友是怎麼回事?
存儲型XSS與反射型XSS有什麼區別?
DOM-based XSS 與存儲性 XSS、反射型 XSS 有什麼區別?
XSS 攻擊時怎麼繞過 htmlspecialchars 函數呢?
XSS 攻擊有哪些黑魔法?

TAG:XSS | 漏洞挖掘 | Web漏洞 |