最重要的是,官方 RFC 并不是唯一的規(guī)范。你還有ECMAScript、JSON5、HJSON,甚至二進制 JSON (BSON )。 

這可能讓人抓狂。解析器之間的互操作性暴露了許多人甚至沒有意識到的安全風險。 

讓我給你舉幾個例子。

JSON 解析器互操作性中的安全問題    

JSON 解析器之間存在一些互操作性安全問題。BishopFox 對該主題進行了一些出色的研究,我在此總結一下。如果您對這些問題感興趣,我強烈建議您查看他們關于該主題的研究。

處理重復密鑰的方式不一致

我希望你考慮一下這個例子:

fu = {“bar”: 1, “bar”: 2}

的值是否fu[“bar”]等于1或2?或者會產生錯誤?

根據(jù)官方規(guī)范,任何結果都是完全可以接受的。如果你總是期望它以特定的方式工作,那就有問題了。

因此,如果您有一個用 Python Flask 編寫的前端公開 API,它會使用最后一個鍵的優(yōu)先級,結果為 2。 

但是,如果該有效負載被轉發(fā)到后端的單獨微服務進行進一步處理,情況會怎樣?假設它是用 Golang 編寫的。那么,它使用第一鍵優(yōu)先,結果為 1。

看到這里的問題了嗎?

因此,您需要確保在依賴 JSON 對象的代碼中正確理解順序優(yōu)先級。否則,這可能會成為一種可能的攻擊媒介,您可以通過以特定順序使用重復鍵來操縱業(yè)務邏輯,使其以意想不到的方式工作。

這就是為什么在偵察過程中檢測 API 組件的編程語言非常重要。您需要了解正在使用的語言,并嘗試找出 JSON 對象的解析方式。  

按鍵碰撞響應不一致 

當解析器以不一致的方式處理特殊字符或注釋時,就會發(fā)生鍵沖突。

例如,在 Python 2.x 中,JSON 解析器在處理某些 Unicode 的方式上有所不同。

考慮以下 JSON 塊:

{“bar”:1,”bar\ud888”:2}

默認 JSON 解析器會將其干凈地處理為兩個不同的鍵。但是,Python 中流行的 ujson 解析器會截斷 Unicode,將鍵視為重復項,并接受 Python 的最后一個鍵優(yōu)先級。結果如何?標準 JSON 解析器將 bar 的值視為 1,而 uJSON 解析器將 bar 的值視為 2。

查看下面的屏幕截圖,了解實際操作的示例……

JSON 序列化(反序列化)中的不一致

雖然我們一直在討論鍵的優(yōu)先級,但我們實際上一直在展示反序列化過程中的問題。事實上,這也可能發(fā)生在序列化過程中。 

有時序列化和反序列化本身是不一致的。

以 Java 的 JSON 迭代器為例……

輸入:

fu = {“bar”: 1, “bar”: 2}

輸出:

fu[“bar”] // 1
fu.toString() // {“bar”: 2}

所以在同一個解析器中,鍵的檢索和序列化的值是不同的。底層數(shù)據(jù)結構保留了重復鍵的值,但序列化器和反序列化器之間的優(yōu)先級不一致。

JSON RFC 不會阻止重復鍵的序列化。因此,您必須依賴于理解所有組件中數(shù)據(jù)序列化和反序列化過程中鍵的順序優(yōu)先順序。

舉個例子,C++ rapidjson 解析器會以不同的方式處理相同的數(shù)據(jù):

輸入:

fu = {“bar”: 1, “bar”: 2}

輸出:

fu[“bar”] // 2
fu.toString() // {“bar”: 1, “bar”: 2}

如您所見,相同的 JSON 對象在解析時可能會得到不同的結果。重新序列化這些對象并不能提供任何保護,因為數(shù)據(jù)可能會有所不同,從而使攻擊者能夠繞過清理邏輯偷偷獲取值。 

這可能導致業(yè)務邏輯缺陷、注入漏洞或其他安全風險。

JSON 解析器很爛,我該如何利用它?

希望您能夠看到如何濫用 JSON 并注入可能導致應用程序以開發(fā)人員未預料的方式運行的數(shù)據(jù)。除了我之前提到的結構化格式注入之外,當您可以操縱數(shù)據(jù)如何在 API 基礎架構內遍歷組件時,您就可以開始控制邏輯流程。 

例如,如果您知道 JSON 對象直接序列化到數(shù)據(jù)庫(例如 MongoDB、Couchbase、DynamoDB、CosmosDB 等)并反序列化到使用不同解析器的外部組件,那么就有機會污染數(shù)據(jù)并查看它如何進出 API。

考慮一個類似這樣的 API 請求流程:輸入清理阻止創(chuàng)建管理員

POST /user/create HTTP/1.1 ... Content-Type: application/json { "user": "dana", "role": "administrator" } HTTP/1.1 401 Not Authorized ... Content-Type: application/json {"Error": "Assignment of internal role 'administrator' is forbidde

因此我們可以看到輸入驗證不允許我們將角色設置為管理員。

了解解析器如何處理輸入允許您利用解析器的行為以您可以操縱的方式解釋數(shù)據(jù),從而潛在地繞過輸入清理。

想想之前的 Python 示例。想象一下,如果您使用 Unicode 字符截斷帳戶創(chuàng)建對象中名為“ role ”的鍵中的值。突然間,“ administrator\ud888”被解析為“ administrator”,并且 API 內的 privesc 成為可能。 

最終看起來是這樣的:JSON 注入允許繞過清理以獲得管理員權限

POST /user/create HTTP/1.1 ... Content-Type: application/json { "user": "dana", "role": "administrator\ud888" } HTTP/1.1 200 OK ... Content-Type: application/json {"result": "OK: Created user ‘dana’ with the role of ‘administrator’"}

這就是 JSON 注入的最高境界,這要歸功于奇特的 JSON 解析器。 

結論

對三星智能中心的攻擊只是 JSON 注入如何導致一系列復雜的漏洞鏈(從 SQL 注入到遠程代碼執(zhí)行)的一個例子。?

正如我們所見,根本原因通常在于 JSON 解析器處理數(shù)據(jù)的方式不一致,尤其是當涉及具有不同怪癖的多個解析器時。這些漏洞凸顯了了解 JSON 在 API 基礎架構中的不同語言和組件之間解析和處理方式的細微差別的重要性。

通過徹底審查 JSON 對象的序列化、反序列化和處理方式,您可以開始弄清楚如何制作可以繞過清理過濾器并影響業(yè)務邏輯的有效負載。 

由于 API 繼續(xù)成為現(xiàn)代應用程序的基石,因此確保其處理數(shù)據(jù)的安全性比以往任何時候都更加重要。希望我今天能讓您對此有所了解。

對各種內容進行注入嘗試。如果不親自動手,你永遠無法了解它們會被如何處理。

文章轉自:使用JSON注入攻擊API

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
用ASP.NET Core 給你的API接口打造一個自定義認證授體系
下一篇
認證與授權API對比:OAuth vs JWT
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
91麻豆精品视频| 日韩一卡二卡三卡四卡| 国产69精品一区二区亚洲孕妇| 欧美无乱码久久久免费午夜一区| 精品区一区二区| 成人免费在线视频观看| 成人小视频在线| 中文字幕亚洲欧美在线不卡| 国产91高潮流白浆在线麻豆 | 国产亚洲午夜高清国产拍精品| 久久精品国产网站| 精品日韩99亚洲| 国产成a人亚洲| 亚洲精品乱码久久久久久日本蜜臀| 一本色道**综合亚洲精品蜜桃冫| 亚洲已满18点击进入久久| 欧美日韩久久久久久| 精品在线一区二区| 最新高清无码专区| 精品免费一区二区三区| 成人av在线影院| 秋霞电影网一区二区| 国产精品免费久久| 日韩一级高清毛片| 99精品欧美一区| 美女视频一区二区| 亚洲欧美中日韩| 精品久久久久久久人人人人传媒| thepron国产精品| 天天影视网天天综合色在线播放| 国产欧美综合在线| 欧美一区二区三区四区五区| 91在线一区二区三区| 狂野欧美性猛交blacked| 亚洲欧美成aⅴ人在线观看| 久久综合色之久久综合| 欧美丝袜丝交足nylons| 成人av高清在线| 精品影视av免费| 午夜精品久久久久久久久久久 | 综合中文字幕亚洲| 精品亚洲免费视频| 亚洲国产另类av| 亚洲夂夂婷婷色拍ww47| 亚洲欧洲综合另类| 综合激情成人伊人| 国产精品免费视频观看| 久久久国产一区二区三区四区小说| 欧美精品色综合| 欧美三级韩国三级日本一级| av综合在线播放| 99视频精品全部免费在线| 国产精品综合网| 国产黄色成人av| 国产成人综合自拍| 不卡电影一区二区三区| 91视频一区二区| 91福利国产精品| 欧美美女视频在线观看| 日韩女优电影在线观看| 日韩视频在线你懂得| 日韩色视频在线观看| 日韩你懂的在线观看| 欧美sm极限捆绑bd| 欧美激情在线免费观看| 94色蜜桃网一区二区三区| 欧美色综合久久| 欧美不卡一区二区三区| 国产精品色哟哟网站| 亚洲一区二区三区四区的| 捆绑紧缚一区二区三区视频| 国产大陆精品国产| 欧美日韩五月天| 国产午夜久久久久| 亚洲精品乱码久久久久| 日本成人在线电影网| 成人午夜精品在线| 欧美精品xxxxbbbb| 亚洲国产精品传媒在线观看| 夜夜精品视频一区二区| 国内精品在线播放| 欧美亚洲国产一区在线观看网站 | 2020国产精品久久精品美国| 亚洲天堂免费在线观看视频| 麻豆国产精品777777在线| 国产91精品一区二区麻豆亚洲| 欧美性xxxxxxxx| 国产精品视频第一区| 日韩电影在线看| av午夜一区麻豆| 亚洲精品在线观看网站| 亚洲福利视频一区二区| 成人精品小蝌蚪| 欧美xxxx在线观看| 亚洲第一在线综合网站| jlzzjlzz亚洲日本少妇| 日韩视频在线观看一区二区| 亚洲一区在线观看网站| 成人av午夜电影| 国产欧美一区二区精品性色超碰| 日韩不卡在线观看日韩不卡视频| 色一区在线观看| 亚洲国产精品精华液2区45| 蜜桃视频一区二区三区| 欧美日韩国产大片| 亚洲午夜在线观看视频在线| 色综合天天综合网天天狠天天| 国产精品成人一区二区艾草| 成人黄动漫网站免费app| 亚洲国产高清aⅴ视频| 国产精品一级黄| 日韩免费成人网| 久久91精品久久久久久秒播| 精品美女一区二区| 蜜乳av一区二区三区| 日韩一区二区视频在线观看| 蜜桃精品视频在线| 国产日韩欧美一区二区三区综合 | 国产日韩欧美制服另类| 国产成人在线网站| 国产精品网站一区| 色呦呦一区二区三区| 亚洲综合在线第一页| 欧美美女一区二区| 精品夜夜嗨av一区二区三区| 欧美激情在线一区二区三区| 91视视频在线观看入口直接观看www| 亚洲人成网站精品片在线观看| 91色在线porny| 天天综合天天综合色| 91麻豆精品国产自产在线观看一区 | 7777精品伊人久久久大香线蕉经典版下载| 亚洲精品视频一区| 91精品国产综合久久福利软件| 激情亚洲综合在线| 亚洲精品视频一区二区| 欧美精品在线观看播放| 粉嫩av一区二区三区| 亚洲成av人片在www色猫咪| 欧美成人精品高清在线播放| av一二三不卡影片| 毛片一区二区三区| 自拍偷在线精品自拍偷无码专区| 欧美日韩成人综合| 粉嫩av一区二区三区| 男人的j进女人的j一区| 最近中文字幕一区二区三区| 日韩西西人体444www| 91同城在线观看| 国产激情偷乱视频一区二区三区| 亚洲综合一区在线| 1024成人网| 国产精品成人免费在线| 欧美一级一区二区| 欧美色国产精品| av在线这里只有精品| 国产麻豆成人精品| 久久99精品久久久久| 偷拍与自拍一区| 亚洲午夜激情av| 亚洲精品高清在线| 国产精品女主播av| 久久久综合精品| 日韩美女视频在线| 91国内精品野花午夜精品| 成人av午夜影院| 成人午夜av电影| 高清国产一区二区三区| 国产酒店精品激情| 激情文学综合丁香| 国产精品自拍一区| 国产69精品久久777的优势| 丁香婷婷综合网| www.欧美日韩| 色综合天天视频在线观看| 91亚洲精华国产精华精华液| 91亚洲资源网| 日本va欧美va精品发布| 精品一区二区三区影院在线午夜| 久久国产免费看| 成人美女视频在线观看| 91丨国产丨九色丨pron| 在线观看一区不卡| 91精品国产综合久久精品| 26uuu亚洲婷婷狠狠天堂| 国产三区在线成人av| 国产精品久久看| 视频一区国产视频| 国产精品一区二区黑丝| 成人av网站免费观看| 欧美色图片你懂的| 欧美mv日韩mv亚洲| 亚洲欧洲一区二区在线播放| 亚洲一区二区三区视频在线播放| 婷婷久久综合九色国产成人 | 中文字幕精品一区二区精品绿巨人 | 福利一区二区在线| 在线观看免费亚洲| 久久久五月婷婷| 亚洲国产综合色|