XSS/CSRF/SSRF/XXE


XSS/CSRF/SSRF/XXE

參考:

https://www.jianshu.com/p/4fcb4b411a66

https://www.kanxue.com

XSS

概述

Cross Site Scripting 簡稱 XSS(跨站腳本攻擊)。是一種注入攻擊,當web應用對用戶輸入過濾不嚴格,攻擊者寫u人惡意的腳本代碼(HTML, JavaScript)到網頁中時,如果用戶訪問了含有惡意代碼的頁面,惡意腳本就會被瀏覽器解析執行導致用戶被攻擊。

常見的危害有:cookie竊取,sesssion劫持,釣魚攻擊,蠕蟲,DDos

分類

  • 反射型XSS

    反射型xss一般出現在URL參數種及網站搜索欄中,由於需要點擊包含惡意代碼的URL才可觸發,並且只能觸發一次,所以也被稱為“非持久型XSS”。

  • 存儲型XSS

    存儲型XSS一般出現在網站留言板,評論處,個人資料處,等需要用戶可以對網站寫入數據的地方。比如一個論壇評論處由於對用戶輸入過濾不嚴格,導致攻擊者在寫入一段竊取cookie的惡意JavaScript代碼到評論處,這段惡意代碼會寫入數據庫,當其他用戶瀏覽這個寫入代碼的頁面時,網站從數據庫中讀取惡意代碼顯示到網站中被瀏覽器執行,導致用戶cookie被竊取,攻擊者無需受害者密碼即可登入賬戶。所以也被稱為“持久型XSS”。持久型比反射型XSS危害要大的多。

  • DOM型XSS

    DOM是一個與平台、編程語言無關的接口,它允許程序或腳本動態地訪問和更新文檔內容、結構和樣式,處理后的結果能夠成為顯示頁面的一部分。DOM中有很多對象,其中一些是用戶可以操縱的,如uRI ,location,refelTer等。客戶端的腳本程序可以通過DOM動態地檢查和修改頁面內容,它不依賴於提交數據到服務器端,而從客戶端獲得DOM中的數據在本地執行,如果DOM中的數據沒有經過嚴格確認,就會產生DOM XSS漏洞。

CSRF

概述

Cross Site Request Forgery 簡稱CSRF (跨站站點請求偽造)。攻擊者盜用了你的身份,以你的名義發送惡意請求,對服務器來說這個請求時完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以你的名義發送郵件,法消息,盜取你的賬號,添加系統管理員,甚至於購買商品、虛擬貨幣轉賬等。

以兩個例子說明

  • 案例一

    一個銀行站點存在一個csrf漏洞,用戶A轉賬B用戶2000元,執行轉賬操作后會對銀行發送一次請求http://www.bank.com/money?user=A&num=2000&transfer=B,然后A用戶就會把自己的2000元轉到B的賬戶下。在發送這個請求給銀行服務器時,服務器首先會驗證這個請求是否為一個合法的session,並且用戶A確認登入才可以驗證通過。

    如果此時有一個惡意用戶C像把A用戶的錢轉到自己的賬戶下,那么他可以構造 http://www.bank.com/money?user=A&num=2000&transfer=C這個請求,但是這個請求必須由A用戶發出才可以生效,此時惡意用戶C可以搭建一個自己的站點,在網站中寫入如下代碼<img src="http://www.bank.com/money?user=A&num=2000&transfer=C">,之后誘導A用戶訪問自己的站點,當A訪問了這個網站時,這個網站就會把img標簽里的URL發送給銀行服務器,而且除了這個請求以外,還會把A用戶的cookie一起發送到服務器,如果此時A用戶的瀏覽器與銀行的sessions沒有過期,那么就會在A用戶毫不知情的情況下執行轉賬給C的操作。訪問銀行站點時,使用的銀行域下的cookie, 也就不存在跨域

  • 案例二

    一個cms系統的管理后台,可以發送一個post請求添加一個管理員,由於沒有加token或者驗證碼限制,惡意攻擊者可以在自己的服務器evil.com上建立一個a.html的文件,a.html文件是一個添加管理員賬戶的表單,上面寫入需要添加的賬戶用戶名及密碼,當網站管理員打開evil.com/a.html的時候,並且管理員sessions(cookie中含有sessionID)沒有失效,那么此時a.html就會請求受攻擊站點,在管理員毫不知情的情況下添加一個后台賬戶

    但是查詢數據的地方卻不需要保護,因為csrf是借助受害者的cookie來進行攻擊者需要的惡意操作的,攻擊者並不能拿到受害者cookie,對於服務器返回的結果也無法解析查看,攻擊者唯一可以做的就是讓服務器執行自己的操作命令,或者說改變網站數據,而查詢操作即不會改變數據也不會把結果返回給攻擊者,所以並不需要保護。

危害

  1. 對網站管理員進行攻擊
  2. 修改受害者網站上的用戶賬戶和數據
  3. 賬戶劫持
  4. 傳播CSRF蠕蟲進行大規模攻擊
  5. 利用CSRF進行拖庫
  6. 利用其他漏洞進行漏洞進行組合
  7. 針對路由器的CSRF攻擊

解決

  1. 使用驗證碼

    csrf攻擊一般都是在受害者不知情的情況下,使用驗證碼可以有效的防止攻擊,但是每次請求都要輸入驗證碼會影響用戶體驗,所以通常只在用戶登入注冊,還有一些特定業務場景下使用,比如銀行轉賬。如何使用驗證碼要根據業務和場景來決定

  2. 驗證http Referer

    http頭中的referer字段記錄了請求來源地址,比如從http://www.test.com 點擊鏈接到 http://m.test.com 之后,那么referer就是http://www.test.com這個地址。攻擊者在對受害者進行攻擊的時候,是在攻擊者自己的服務器上構建自己的惡意腳本,誘騙受害者點擊,所以此時的referer值就是攻擊者自己的URL地址。

    通過以上可知,csrf攻擊都是跨域發起的,所以在服務端針對referer字段驗證是否屬於安全可靠的域名,可在一定程度上有效防御此類攻擊。

    但是此類方法並非萬無一失,在低版本存在漏洞的瀏覽器中,黑客可以篡改referer值。另一種情況是csrf結合xss進行攻擊,此時就不需要跨域發送,也可以繞過referer驗證。

  3. 使用token

    在說token如何防御csrf攻擊之前,我們了解下token的工作原理。當用戶第一次進行登陸時,客戶端會通過用戶名和密碼去請求服務器登陸,服務端在收到請求后會驗證客戶端傳來的用戶名和密碼,如果驗證通過,服務端就會簽發一個token發送給客戶端,並且將token放到session中,客戶端收到token后存儲到本地,以后客戶端只要每次請求服務器就要帶上token,經過服務器驗證通過后才會返回響應數據,否則報錯。

    csrf攻擊成功的前提條件是攻擊者可以完全偽造處受害者的所有請求,而且請求中的驗證信息都在cookie中,黑客只要使用用戶的cookie通過安全驗證就可以完成攻擊。了解這些之后,想要防止csrf攻擊,就要在http請求中放置黑客不可以偽造的信息,而且該信息不可以存在於cookie中,否則就無效。而token令牌最大的特點就是隨機性,不可預測,並且不存在於cookie中。

    對於GET請求,請求參數直接在URL當中,這樣token的形式就為http://xxx.com?csrftoken=tokenvalue,但是這種方式把請求參數都放在URL中,會導致在referer中泄漏,不僅如此,設想另一種場景,一個在內網系統的員工,從內部敏感系統在點擊對外部提供服務的網站連接,此時就會把內網敏感信息通過referer泄漏出去。而對於POST請求,token是隱藏表單存在,<input type=”hidden” name=”csrftoken” value=”tokenvalue”/>

    最后一點,如果在同域下存在xss漏洞,那么這種tokoen的防御將形同虛設

SSRF

Server-Side Request Forgery 簡稱SSRF(服務端請求偽造),是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。在一般情況下,SSRF攻擊目標是從外網無法訪問的內部系統。正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統

正常情況下,我們無法從外網去訪問一個公司的內部系統,但是如果服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等等。攻擊者就可以利用該漏洞繞過防火牆等訪問限制,進而將受感染或存在漏洞的服務器作為代理進行端口掃描,甚至是訪問內部系統數據。

ssrf的攻擊利用主要有以下幾種:

  1. 內網、本地端口掃描,獲取開放端口信息

  2. 主機信息收集,web應用指紋識別,獲取服務banner信息

  3. 根據識別出的應用針對性的發送payload攻擊,例如struts2

  4. 攻擊內網和本地的應用程序及服務。

  5. 穿越防火牆

  6. 利用file協議讀取本地文件,比如file:///etc/passwd

一般存在於

  1. 在線分享:通過URL地址分享網頁內容
  2. 在線識圖
  3. 在線翻譯:百度翻譯,有道翻譯
  4. 各大網站訂閱
  5. 圖片加載於下載:通過URL地址加載或下載圖片
  6. 圖片,文章收藏功能
  7. 接收郵件服務地址的郵件系統
  8. 調用URL的功能
  9. 文件處理,如ImageMagick, xml
  10. 請求遠程服務器資源,遠程URL上傳,靜態資源圖片文件等
  11. 數據庫內置功能,比如mongodb和copyDatabase函數
  12. 從URL關鍵字中尋找:share,url,link,src,source,sourceURL,imageURL,domain

漏洞驗證方式

1、右鍵圖片在新窗口打開,如果瀏覽器地址顯示為 www.xxx.com/xx.jpg 類似格式的,說明不存在ssrf漏洞,但是如果資源地址類似 http://www.xxx.com/1.jsp?image= 的格式就有可能存在漏洞。

2、另一種方式是使用抓包工具burp fiddler來判斷,SSRF漏洞是構造服務器發送請求的安全漏洞,所以就可以通過抓包分析請求是否有服務端發起的來判斷是否存在漏洞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM