安全的關(guān)鍵.png)
長(zhǎng)時(shí)間運(yùn)行操作的 API 設(shè)計(jì)最佳實(shí)踐:GraphQL 與 REST
訪問(wèn)之后提示我們?nèi)鄙賲?shù),我們往上一級(jí)目錄,也就是api目錄訪問(wèn)看看
發(fā)現(xiàn)了說(shuō)明文檔
我們直接點(diǎn)delete就可以直接對(duì)指定用戶進(jìn)行刪除,但是這里回顯是401權(quán)限不足,根據(jù)靶場(chǎng)提供的信息我們wiener用戶,再次訪問(wèn)即可刪除。當(dāng)然,我們也可以通過(guò)抓包,去查看這個(gè)api的使用參數(shù),仿照發(fā)送請(qǐng)求,達(dá)到任意控制效果
研究api端點(diǎn)時(shí),測(cè)試方法很重要,比如我們知道端點(diǎn)/api/tasks,我們可以嘗試以下方法
該靶場(chǎng),首先我們需要找到未被使用的api端點(diǎn),上面一個(gè)靶場(chǎng)我們是找不到的,這里根據(jù)靶場(chǎng)提示,我們挨個(gè)點(diǎn)擊靶場(chǎng)中購(gòu)買,走一遍購(gòu)買流程,我們可以在數(shù)據(jù)記錄中,找到一個(gè)隱藏的api
這個(gè)是我們?cè)谔峤毁?gòu)買的時(shí)候產(chǎn)生的,我們將這個(gè)發(fā)送到重放器中
嘗試使用不同的方式進(jìn)行排查,比如我們可以嘗試使用/api/products/1,或者/api/products、/api來(lái)排查所有的內(nèi)容,但是這里均無(wú)法響應(yīng)
那么下一步我們可以嘗試不同的方式
比如我這里使用post
這里提示不支持該方法,并且告訴了我可用的方法,這里我們?cè)囋?/p>
提示內(nèi)部服務(wù)錯(cuò)誤,我們?cè)谙旅婕由侠ㄌ?hào)
提示我們?nèi)鄙賞rice參數(shù)
加上參數(shù)
提示必須是非負(fù)整數(shù),我們?nèi)サ粢?hào)試試
提示我們需要Content-Type: application/json
我們復(fù)制放到下面
這里成功修改了價(jià)格,我們將價(jià)格修改為0元,購(gòu)買即可通關(guān)。
本關(guān)卡以api傳遞參數(shù)的方式,讓我們成功修改了參數(shù)。
我們通常可以看到,一個(gè)api請(qǐng)求,他會(huì)允許我們修改某些東西
PATCH /api/users/請(qǐng)求它允許用戶更新他們的用戶名和電子郵件,并包含以下JSON:
{
"username": "wiener",
"email": "wiener@example.com",
}
返回的信息是以下JSON
{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"isAdmin": "false"
}
這表示隱藏的id和參數(shù),可能可以進(jìn)行改變使用
我們想要測(cè)試上面的isadmin參數(shù),可以將上面的參數(shù)修改后發(fā)送到PATCH請(qǐng)求
{
"username": "wiener",
"email": "wiener@example.com",
"isAdmin": false,
}
如果我們將false修改為true,那么在沒(méi)有充分驗(yàn)證的情況下,有可能會(huì)錯(cuò)誤綁定對(duì)象,獲取權(quán)限。
該靶場(chǎng),我們需要分析一下,流量包中的api,根據(jù)提示,我們?cè)谫?gòu)買的過(guò)程中,找到兩個(gè)api的包
一個(gè)get一個(gè)post兩個(gè)數(shù)據(jù)包,這里我們可以在post數(shù)據(jù)包中看到一個(gè)數(shù)據(jù)結(jié)構(gòu)
在GET數(shù)據(jù)包中,可以在返回包中發(fā)現(xiàn)一些隱藏的數(shù)據(jù)傳遞方式
我們可以嘗試拼接到post數(shù)據(jù)包中進(jìn)行嘗試
這里報(bào)錯(cuò)提示我們資金不足, 我們嘗試改變內(nèi)容
嘗試數(shù)據(jù)
改成100,直接通關(guān)了
返回true,完成了關(guān)卡。
該靶場(chǎng)的問(wèn)題,在于,我們可以從GET中獲取到一些隱藏的參數(shù),在得到隱藏參數(shù)之后,我們可以通過(guò)post或者其他的方法進(jìn)行發(fā)送,嘗試執(zhí)行。
文章轉(zhuǎn)自微信公眾號(hào)@SecNL安全團(tuán)隊(duì)
長(zhǎng)時(shí)間運(yùn)行操作的 API 設(shè)計(jì)最佳實(shí)踐:GraphQL 與 REST
在 ASP .NET Core中通過(guò) Web API 中將 HTML 轉(zhuǎn)換為 PDF
免費(fèi)使用微博熱搜API進(jìn)行數(shù)據(jù)分析的教程
REST API 示例
性別預(yù)測(cè)API:如何讓名字背后的性別信息一目了然?
Python實(shí)現(xiàn)免費(fèi)百度天氣API調(diào)用,獲取最新實(shí)時(shí)天氣數(shù)據(jù)
終極對(duì)決:KimiGPT與GLM-4文本生成模型API深度比較
構(gòu)建高效API的10個(gè)API設(shè)計(jì)最佳實(shí)踐
如何獲取Mistral AI API Key 密鑰(分步指南)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)