動態

詳情 返回 返回

邏輯漏洞挖掘之CSRF漏洞原理分析及實戰演練 | 京東物流技術團隊 - 動態 詳情

一、前言

2月份的1.2億條用户地址信息泄露再次給各大公司敲響了警鐘,數據安全的重要性愈加凸顯,這也更加堅定了我們推行安全測試常態化的決心。隨着測試組安全測試常態化的推進,有更多的同事對邏輯漏洞產生了興趣,本系列文章旨在揭秘邏輯漏洞的範圍、原理及預防措施,逐步提升大家的安全意識。第二篇選取了廣為熟知的CSRF漏洞進行介紹。

二、CSRF漏洞介紹

1、CSRF漏洞的定義

跨站請求偽造(Cross-site request forgery,簡稱CSRF),攻擊者利用受害者身份發起了HTTP請求,導致受害者在不知情的情況下進行了業務操作,如修改資料、提交訂單、發佈留言或評論等

2、CSRF主要攻擊形式

① GET類型的CSRF

這類攻擊非常簡單,只需要一個HTTP請求:<img src=””>

② POST類型的CSRF

這種類型的 CSRF 利用起來通常使用的是一個自動提交的表單,訪問問該頁面後,表單會自動提交,相當於模擬用户完成了一次 POST 操作。可見這種類型的 CSRF 與第一種一樣,都是模擬請求,所以後端接口也不能將安全寄託在僅允許 POST 請求上。

③ 鏈接類型的 CSRF

鏈接類型的CSRF並不常見,比起其他兩種用户打開頁面就中招的情況,這種類型需要用户點擊鏈接才會觸發,但本質上與前兩種一樣。這種類型通常是在論壇發佈的圖片中嵌入惡意鏈接,或者以廣告的形式誘導用户中招,攻擊者通常會以比較誇張的詞語誘騙用户點擊,例如: <a/>由於之前用户登錄了信任的網站A,並且保存登錄狀態,只要用户主動訪問這個頁面,則表示攻擊成功。

3、CSRF漏洞危害

CSRF漏洞可能導致在用户不知情的情況下進行業務操作:

① 修改資料

② 提交訂單

③ 發佈留言或評論(關鍵操作、增刪改)等

三、CSRF漏洞原理分析

四、CSRF漏洞實例分析

1、GET類型的CSRF

通過請求“http://1.116.45.67:82/vul/csrf/csrfget/csrf\_get\_edit.php?sex=%E5%A5%B3&phonenum=19898980000&add=%E5%8C%97%E4%BA%AC&email=555%40qq.com&submit=submit”即可修改用户郵箱

2、POST類型的CSRF

構造form表單類型的poc,請求addOrEdit接口新增字典成功。

五、CSRF漏洞防範意見

1、驗證請求的Referer值

如果Referer是以⾃⼰的⽹站開頭的域名,則説明該請求來⾃⽹站⾃⼰,是合法的。如果Referer是其他⽹站域名或空⽩,就有可能是CSRF攻擊,那麼服務器應拒絕該請求,但是此⽅法存在被繞過的可能。

2、請求中添加token並驗證

CSRF攻擊之所以能夠成功,是因為攻擊者可以偽造⽤户的請求,由此,抵禦CSRF攻擊的關鍵在於:在請求中放⼊攻擊者不能偽造的信息。例如可以在HTTP請求中以參數的形式加⼊⼀個隨機產⽣的token,並在服務器端驗證token,如果請求中沒有token或者token的內容不正確,則認為該請求可能是CSRF攻擊從⽽拒絕該請求。

六、CSRF常用構造內容

1、GET類型:

2、POST類型的CSRF

表單類型 POC構造:

JSON類型 POC構造:

作者:京東物流 範文君

來源:京東雲開發者社區 自猿其説Tech 轉載請註明來源

user avatar soroqer 頭像 aresn 頭像 steven_code 頭像 pannideniupai 頭像 baozouai 頭像 beiyouzhiyu 頭像 wangjingyu_5f58472234cff 頭像
點贊 7 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.