json的csrf的利用(json csrf)

本文目錄一覽:

如何在JSON端點上利用CSRF漏洞

可以安裝一個電腦管家在電腦上

然後打開工具箱,在裡面找到修復漏洞功能

使用這個功能,去修複電腦所有檢測出的高危漏洞即可

CSRF 攻擊是什麼

說明: 本文大部分借鑒 wiki-跨站請求偽造 , 另一部分來自文章 wiki-Cross-Site Request Forgery

csrf 全稱 Cross-site request forgery, 通常縮寫為CSRF 或者 XSRF, 中文名跨站請求偽造. 是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。 . CSRF 攻擊手段是通過發起改變狀態的請求, 而不是竊取用戶的數據, 因為攻擊者無法得到伺服器返回的響應

攻擊者通過一些技術手段欺騙用戶的瀏覽器去訪問一個自己曾經認證過的網站並執行一些操作(如發郵件,發消息,甚至財產操作如轉賬和購買商品)。由於瀏覽器曾經認證過,所以被訪問的網站會認為是真正的用戶操作而去執行。這利用了web中用戶身份驗證的一個漏洞: 簡單的身份驗證只能保證請求發自某個用戶的瀏覽器,卻不能保證請求本身是用戶自願發出的。 補充: 還可能更改賬號所綁定的郵箱地址或者密碼等.

假如 Alice 在 bank.com 向 Bob 匯款 10000, 那麼攻擊將會由以下兩步驟組成:

如果 bank.com 把查詢參數放到 URL 中, 那麼 Alice 向 Bob 轉賬的操作可以簡化為如下:

GET ;amount=100 HTTP/1.1

Maria 根據 bank.com 網站請求的結構, 將 Bob 名字替換為她自己的, 還把金額變大:

;amount=100000

那麼這個充滿惡意的 URL ,被 Maria 放到 a 標籤中, 並且利用欺騙語言吸引 Alice 點擊:

a href=”;amount=100000″View my Pictures!/a

或者放到一個 長度和寬度都為0 的圖片的src 中(圖片不用用戶點擊, 自己就發起請求):

img src=”;amount=100000″ width=”0″ height=”0″ border=”0″

如果這張圖片放到郵件中, Alice 根本就不會發現什麼. 然而瀏覽器還是會將請求提交到 bank.com 的後台中.

一個真實的事件是發生在2008 年的 uTorrent exploit

假設 bank.com 現在使用 post 請求來傳遞參數的, 那麼這個請求可以簡化為:

這種情況下, a 標籤和 img 標籤都無法發送 post 請求, 但是可以使用 FORM 來完成:

我們還可以利用 JavaScript 來讓文檔載入的時候就發送這個請求:

假設現在銀行使用的是 PUT 將數據放到一個JSON 中發送到後台中:

那麼我們可以利用內嵌的 JavaScript :

幸運的是這段 PUT 請求並不會發送, 因為 同源策略 的限制. 除非你的後台設置了

不論是 GET 請求還是 POST 請求, 如果有賬戶名為Alice的用戶訪問了惡意站點,而她之前剛訪問過銀行不久,登錄信息尚未過期,那麼她就會損失10000資金。

這種惡意的網址可以有很多種形式,藏身於網頁中的許多地方。此外,攻擊者也不需要控制放置惡意網址的網站。例如他可以將這種地址藏在論壇,博客等任何用戶生成內容的網站中。這意味著 如果伺服器端沒有合適的防禦措施的話,用戶即使訪問熟悉的可信網站也有受攻擊的危險。

CSRF實例

CSRF攻擊的主要目的是讓用戶在不知情的情況下攻擊自己已登錄的一個系統,類似於釣魚。如用戶當前已經登錄了郵箱,或bbs,同時用戶又在使用另外一個,已經被你控制的站點,我們姑且叫它釣魚網站。這個網站上面可能因為某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,由於當前你的瀏覽器狀態已經是登陸狀態,所以session登陸cookie信息都會跟正常的請求一樣,純天然的利用當前的登陸狀態,讓用戶在不知情的情況下,幫你發帖或干其他事情。

一句話就是我們利用CSRF攻擊就是借用用戶的身份去執行用戶的操作

先看一個例子(白帽子講web安全),一個刪除搜狐博客的例子,利用CSRF刪除搜狐博客。

正常情況下,登陸搜狐博客後,只需請求這個url,就能把編號156713012的博客文章刪除

我們嘗試利用CSRF漏洞,刪除編號為「156714243」的博客文章。這篇文章標題「test1」.

攻擊者首先在自己的域構造一個頁面:

其內容;

使用了一個img標籤,其地址指向了刪除博客文章的鏈接。

攻擊者誘使目標用戶,也就是博客主人「test1test」訪問這個頁面:

該用戶會看到一張無法顯示的圖片,也就是img標籤創造的圖片,但無法顯示,然後回頭看搜狐博客:

發現原來存在的標題為『』test1」的文章,已被刪除。

這個刪除博客攻擊文章的請求,是攻擊者偽造的,所以這種攻擊就叫做「跨站點請求偽造」。

下面仿照以上做一個實例,這裡利用自己的簡單留言板實施一次CSRF攻擊

前面我們已經講過了,CSRF攻擊是在用戶登錄狀態下,利用用戶身份執行操作,這裡就用到了cookie,當用戶正在訪問留言板時,誘導用戶去點開攻擊者偽造的一個網頁(有刪除留言的指令),用戶點開之後便帶著原來的留言板cookie去執行刪除留言這條指令,當用戶返回之後發現原來留言信息沒了。

這是登錄界面,輸入用戶名進去後

看一下用戶的cookie吧

當然這裡是自己的cookie,已經能看到了。

可以看到是post請求以表單的形式提交到delete.php,執行刪除操作找到表單提交的name=”ids”,也就是ids=1時,我們可以刪除id=1的留言,因為是POST請求,不能用標籤的src屬性,所以需要構建一個POST請求。

攻擊者在自己的伺服器中建立一個HTML文件csrf.html,用JS自動提交POST請求的form表單

這個只是本地測試,現在刪除第三條留言,這個時候只要誘導用戶去訪問 就會刪除該留言,至於用什麼方法,需要攻擊者去精心構造了,只要想像力豐富,就能發揮CSRF強大的破壞力。

當用戶在登錄留言板狀態下去訪問該網頁,,,,

原來的留言沒了

這就是基本的CSRF攻擊。。

json格式,CSRF如何防禦?

關於防禦方案,一般有如下幾種:

1)用戶操作驗證,在提交數據時需要輸入驗證碼

2)請求來源驗證,驗證請求來源的referer

3)表單token驗證

現在業界對CSRF的防禦,一致的做法是使用一個Token(Anti CSRF Token)。

這個Token的值必須是隨機的,不可預測的。由於Token的存在,攻擊者無法再構造一個帶有合法Token的請求實施CSRF攻擊。另外使用Token時應注意Token的保密性,盡量把敏感操作由GET改為POST,以form或AJAX形式提交,避免Token泄露。

例子:

第一步:用戶訪問某個表單頁面。

第二步:服務端生成一個Token,放在用戶的Session中,或者瀏覽器的Cookie中。

第三步:在頁面表單附帶上Token參數。

第四步:用戶提交請求後,服務端驗證表單中的Token是否與用戶Session(或Cookies)中的Token一致, 一致為合法請求,不是則非法請求。

4) 在前後端分離的前提下(例如使用ajax提交數據)設置不了token,可以給 cookie 新增 SameSite 屬性,通過這個屬性可以標記哪個 cookie 只作為同站 cookie (即第一方 cookie,不能作為第三方 cookie),既然不能作為第三方 cookie ,那麼別的網站發起第三方請求時,第三方網站是收不到這個被標記關鍵 cookie,後面的鑒權處理就好辦了。這一切都不需要做 token 生命周期的管理,也不用擔心 Referer 會丟失或被中途被篡改。

SameStie 有兩個值:Strict 和 Lax:

SameSite=Strict 嚴格模式,使用 SameSite=Strict 標記的 cookie 在任何情況下(包括非同步請求和同步請求),都不能作為第三方 cookie。

SameSite=Lax 寬鬆模式,使用 SameSite=Lax 標記的 cookie 在非同步請求 和 form 提交跳轉的情況下,都不能作為第三方 cookie。

JSON必知必會

1、JSON基於JavaScript對象字面量

所謂字面量,是對數據值的具體表示。它的字面意思與其想要表達的意思是完全一致的。

2、名稱-值對

計算機世界裡,名稱-值對也被稱為鍵-值對、屬性-值對或欄位-值對,它們都表示一個意思。

3、正確的JSON語法

示例:

4、JSON文件使用.json 拓展名

5、JSON媒體類型是application/json

1、對象數據類型

JSON中的對象數據類型非常簡單。追根溯源,JSON本身就是對象,也就是被花括弧包裹的名稱-值對的列表。對象可以嵌套。

2、字元串類型

簡單的字元串類型,比如前面提到的”cat”我就不多說了 ,下面重點講一下稍微複雜一點的。在這之前,我覺得有必要說一下解析器是如何讀JSON

的。對於解析器來說,當一個值以雙引號(”)開始時,它希望接下來的字元串文本以另一個雙引號結尾。這意味著這段字元串本身包含

雙引號可能會出錯。我不知道你是否理解我的意思,我們看一個例子吧:

3、數字類型

4、布爾類型

5、null類型

6、數組類型

JSON中的數組類型呢也是一個比較重要的類型,上面用的不多的我就不細說,你記住就好。廢話不多說,先來看一個例子吧:

1、跨站請求偽造CSRF:

拓展一下:

頂層JSON數組指存在於JSON名稱-至對之外的位於文檔最頂層的JSON數組

2、跨站腳本攻擊XSS

3、安全漏洞:決策上的失誤

原創文章,作者:CTZKK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317224.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CTZKK的頭像CTZKK
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相關推薦

  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Spread 8展示JSON數據

    使用Spread 8可以方便地展示JSON數據,本文將詳細介紹如何利用Spread 8展示JSON數據。 一、Spread 8簡介 Spread 8是一款強大的電子表格軟體,可以方…

    編程 2025-04-27
  • 如何在json轉實體類時忽略大小寫

    本文將從以下幾個方面介紹如何在json轉實體類時忽略大小寫。 一、使用Gson庫實現json轉實體類忽略大小寫 Gson是Google提供的Java JSON操作庫,它提供了簡單易…

    編程 2025-04-27
  • C# 中 JSON null 不顯示的處理方法

    本文將為大家介紹在 C# 中處理 JSON null 不顯示的解決方法。 一、null 不顯示的問題 在使用 C# 進行 JSON 數據處理的時候,經常會遇到 null 值不顯示的…

    編程 2025-04-27
  • Hive解析JSON詳解

    一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有結構清晰、易於讀寫、便於解析等特點。它基於JavaScript的一…

    編程 2025-04-25

發表回復

登錄後才能評論