CSRF學(xué)習(xí)報(bào)告

0x01

CSRF攻擊方式

一:HTML csrf攻擊:

  1. 利用HTML元素發(fā)出GET請(qǐng)求
    帶src屬性的html標(biāo)簽都可以跨域發(fā)起GET請(qǐng)求
  • <link href="…">
  • <img src="…">
  • <iframe src="…">
  • <meta http-equiv="refresh" content="0; url=…">
  • <script src="…">
  • <video src="…">
  • <audio src="…">
  • <a href="…">
  • <table background="…">....................
  1. POST請(qǐng)求攻擊
    需用表單提交方式,標(biāo)簽可由js動(dòng)態(tài)生成
    <script>
    new Image().src = 'http://www.goal.com/…';
    </script>

二. JSON Hijacking攻擊

JSONP:是Web前端的JavaScript跨域獲取數(shù)據(jù)的一種方式。
基本原理是利用了 HTML 里 <script></script> 元素標(biāo)簽,遠(yuǎn)程調(diào)用 JSON 文件來(lái)實(shí)現(xiàn)數(shù)據(jù)傳遞。如要在 a.com 域下獲取存在 b.com 的 JSON 數(shù)據(jù)

當(dāng)用戶通過(guò)身份認(rèn)證之后,前端會(huì)通過(guò)jsonp的方式從服務(wù)端獲取該用戶的隱私數(shù)據(jù),然后在前端進(jìn)行一些處理,如個(gè)性化顯示等,這個(gè)jsonp的調(diào)用接口如果沒(méi)有做相應(yīng)的防護(hù),就容易受到JSON劫持攻擊
條件:這個(gè)JSON劫持漏洞需要你暴露出JSON服務(wù)(指JSON服務(wù)地址被攻擊者知道)并且進(jìn)行如下操作:

  • 返回敏感的數(shù)據(jù)
  • 返回一個(gè)JSON數(shù)組
  • 響應(yīng)一個(gè)GET請(qǐng)求
  • 發(fā)送請(qǐng)求的瀏覽器啟用了JavaScript(很有可能)
  • 發(fā)送請(qǐng)求的瀏覽器支持defineSetter方法

關(guān)于某些情形下的繞過(guò)

  • 有種防御方案是驗(yàn)證json文件調(diào)用的來(lái)(referer),主要利用了 <script> 遠(yuǎn)程加載 JSON 文件時(shí)會(huì)發(fā)送 Referer ,在網(wǎng)站輸出 JSON 數(shù)據(jù)時(shí)判斷 Referer 是不是白名單合法的就可以進(jìn)行防御。
  1. Referer過(guò)濾不嚴(yán)謹(jǐn)以及空Rerferer
    空情形:通過(guò)跨協(xié)議調(diào)用js時(shí)發(fā)送到http請(qǐng)求里為空referer eg:



    可使用<iframe>調(diào)用js偽協(xié)議來(lái)實(shí)現(xiàn)空referer

  2. 隨機(jī)token:某些token可以暴力循環(huán)破解
  • 更多的是組合攻擊 callback可定義導(dǎo)致安全問(wèn)題
  1. Content-Type 與xss漏洞

    callback未進(jìn)行過(guò)濾

    直接就能導(dǎo)致xss漏洞

0x02

實(shí)例:

一:利用html元素發(fā)出get請(qǐng)求

以DVWA(medium)為例:
在用戶登路狀態(tài)下可更改密碼,進(jìn)行修改操作時(shí)還檢測(cè)了referer參數(shù),抓包在referer參數(shù)中可發(fā)現(xiàn)ip地址(這里是本地),在構(gòu)造csrf網(wǎng)頁(yè)時(shí)所包含的referer信息包含被攻擊ip


構(gòu)造網(wǎng)頁(yè)

引誘自己訪問(wèn)=-=便可成功修改掉密碼

二:復(fù)現(xiàn):POST(phpok4.2.100添加管理員)

本地部署了phpok后進(jìn)入后臺(tái)可查看編輯管理員:



編輯網(wǎng)頁(yè)



在管理員登錄的狀態(tài)下誘導(dǎo)其訪問(wèn)該頁(yè)面

成功添加一名管理員
之后使用添加的系統(tǒng)管理員身份登錄后臺(tái),風(fēng)格管理中添加模板文件



抓包修改后綴為.php上傳成功,并且頁(yè)面顯示了文件夾路徑

在后臺(tái)找到文件并編輯成木馬文件即可getshell

0x03

關(guān)于防御

  • 驗(yàn)證Referer;

有些請(qǐng)求不需要referer

  • 使用驗(yàn)證碼;

影響用戶體驗(yàn)

  • 使用CSRF token;

隨機(jī)性不夠好或通過(guò)各種方式泄露,此外,在大型的服務(wù)中需要一臺(tái)token生成及校驗(yàn)的專(zhuān)用服務(wù)器,需要更改所有表單添加的字段,有時(shí)效性的問(wèn)題。

  • 限制Session生命周期。

緩解csrf。只是降低csrf攻擊成功率

  • 一個(gè)看不懂的新方法。

當(dāng)表單提交時(shí),用JavaScript在本域添加一個(gè)臨時(shí)的Cookie字段,并將過(guò)期時(shí)間設(shè)為1秒之后在提交,服務(wù)端校驗(yàn)有這個(gè)字段即放行,沒(méi)有則認(rèn)為是CSRF攻擊。
token之所以可以防御CSRF,是因?yàn)楣粽邿o(wú)法使用JavaScript獲取外域頁(yè)面中的token值,必須要遵守同源策略;而臨時(shí)Cookie的原理是:Cookie只能在父域和子域之間設(shè)置,也遵守同源策略,攻擊者無(wú)法設(shè)置該Cookie

eg:復(fù)現(xiàn)的簡(jiǎn)單demo:

前端

前端test.html頁(yè)面中有三個(gè)按鈕:第一個(gè)是正常的表單提交;第二個(gè)是添加臨時(shí)Cookie后提交表單;第三個(gè)是以hook submit事件來(lái)添加臨時(shí)Cookie并提交

服務(wù)端

執(zhí)行normal看到只有xampp設(shè)置的一個(gè)cookie

而執(zhí)行后兩個(gè),則可看到添加的臨時(shí)cookie

但由于這種防御策略還沒(méi)有被大規(guī)模使用,所以無(wú)法確定其是否真實(shí)有效。所以我也不去研究啦

JSON HIJACKING的防御:

1、限制 Referer 、部署一次性 Token 等。
2、按照J(rèn)SON 格式標(biāo)準(zhǔn)輸出 Content-Type 及編碼( Content-Type : application/json; charset=utf-8 )。
3、過(guò)濾 callback 函數(shù)名及 JSON 里數(shù)據(jù)的輸出。
4、限制對(duì) JSONP 輸出 callback 函數(shù)名的長(zhǎng)度
5、在 Callback 輸出之前加入其他字符(如:/**/、回車(chē)換行)這樣不影響 JSON 文件加載,又能一定程度預(yù)防其他文件格式的輸出。
以及 Gmail 早起使用 AJAX 的方式獲取 JSON ,聽(tīng)過(guò)在輸出 JSON 之前加入 while(1) ;這樣的代碼來(lái)防止 JS 遠(yuǎn)程調(diào)用。

0x04

CSRF蠕蟲(chóng)

基于它的傳播性,需要獲取每個(gè)用戶的請(qǐng)求參數(shù)數(shù)據(jù)

  1. 利用服務(wù)端腳本
  2. json 劫持
    啊這個(gè)我還不知道怎么復(fù)現(xiàn),還得學(xué)習(xí)學(xué)習(xí)=-=

0x05

Flash與Actionscript一點(diǎn)點(diǎn)問(wèn)題

有一個(gè)通常在網(wǎng)站根目錄存在的文件crossdomain.xml。
該配置文件中的“allow-access-from domain”用來(lái)配置哪些域的Flash請(qǐng)求可以訪問(wèn)本域的資源。如果該項(xiàng)值為“*”,則表示任何與的Flash都可以訪問(wèn)。當(dāng)存在這樣的配置時(shí),攻擊者可以利用ActionScript腳本輕松突破同源策略的限制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容