08 CSRF偽造請求攻擊

Redmaple925發表於2020-12-10

CSRF偽造請求攻擊

簡介

在CSRF的攻擊場景中攻擊者會偽造一個請求(這個請求一般是一個連結),然後欺騙目標使用者進行點選,使用者一旦點選了這個請求,整個攻擊就完成了。所以CSRF攻擊也稱為"one click"攻擊。

CSRF攻擊的特點

  • 1、CSRF攻擊是建立會話之上的攻擊,瀏覽器與伺服器之間是在會話之中

    • 先決條件
  • 2、攻擊者偽造了合法的身份

  • 3、欺騙使用者訪問URL

原理

程式設計師在設計時,沒有對敏感資訊(referer、token)進行嚴格的審查和過濾,導致攻擊者可以偽造提交資訊,騙被攻擊者開啟或者點選

    1. 使用者C開啟瀏覽器,訪問受信任網站A,輸入使用者名稱和密碼請求登入網站A;
  • 2.在使用者資訊通過驗證後,網站A產生Cookie資訊並返回給瀏覽器,此時使用者登入網站A成功,可以正常傳送請求到網站A;
    1. 使用者未退出網站A之前,在同一瀏覽器中,開啟一個TAB頁訪問網站B;
    1. 網站B接收到使用者請求後,返回一些攻擊性程式碼,併發出一個請求要求訪問第三方站點A;
    1. 瀏覽器在接收到這些攻擊性程式碼後,根據網站B的請求,在使用者不知情的情況下攜帶Cookie資訊,向網站A發出請求。網站A並不知道該請求其實是由B發起的,所以會根據使用者C的Cookie資訊以C的許可權處理該請求,導致來自網站B的惡意程式碼被執行。

分類

站外

  • 本質上就是傳統意義上的外部提交資料問題

站內

  • 一定程度上是由於程式設計師濫用$_REQUEST類變數造成的

CSRF漏洞檢測

最簡單的方法就是抓取一個正常請求的資料包,去掉(或者修改)Referer欄位後再重新提交,如果該提交還有效,那麼基本上可以確定存在CSRF漏洞。

  • 如果含有token資訊,基本可以放棄CSRF漏洞

CSRF漏洞檢測工具

  • CSRFTester,CSRF Request Builde

  • 原理

    • 首先需要抓取我們在瀏覽器中訪問過的所有連結以及所有的表單等資訊,然後通過在CSRFTester中修改相應的表單等資訊,重新提交,這相當於一次偽造客戶端請求。如果修改後的測試請求成功被網站伺服器接受,則說明存在CSRF漏洞,當然此款工具也可以被用來進行CSRF攻擊。

CSRF 例項

快速拖庫

  • 攻擊者

    • 1、偽造管理員許可權拖庫連結

      • http://192.168.0.102:8080/dzcsrt/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=xxxx%26backupfilename%3Daaaa
      • 需要知道連結的最終形式(如上,可以去網上找到原始碼,或者其他途徑),修改備份儲存的資料夾(xxxx)和檔名(aaaa)
    • 2、正常註冊網站

      • 在前端發帖或者留言

        • 在發帖的過程中使用新增圖片連結等方式將上面偽造的拖庫連結傳送出去,等待管理員許可權的使用者檢視,等待攻擊
    • 5、訪問檔案,訪問成功則完成攻擊,達到目的

  • 被攻擊者(管理員等)

    • 3、正常登入,開啟相關會話

    • 4、檢視含有攻擊者偽造資訊的內容

      • 攻擊完成

修改密碼

新增管理使用者

本地網路裝置CSRF攻擊

  • fast路由器開啟遠端web管理

無需瀏覽器案例

  • 新增自解壓檔案

    • 實現彈窗、隱藏執行

CSRF防範

服務端

  • 1、驗證HTTP Referer欄位
  • 2、在請求地址中新增token並驗證
  • 3、 使用驗證碼或者密碼確認方式進行
  • 4、在服務端區嚴格區分好POST與GET的資料請求,避免使用request
  • 5、在HTTP頭中自定義屬性並驗證

使用者端

  • 1、不輕易點選連結和圖片
  • 2、及時退出長時間不使用的會話
  • 3、在裝置上安裝防護軟體,並更新軟體特徵庫

安全裝置

  • 第三方的專業安全裝置

CSRF(Cross-site request forgery)是Web應用程式的一種常見漏洞,其攻擊特性是危害性大但非常隱蔽,尤其是在大量Web 2.0技術的應用背景下,攻擊者完全可以在使用者毫無察覺的情況下發起CSRF攻擊。

“沉睡的巨人”

相關文章