訪問之后提示我們?nèi)鄙賲?shù),我們往上一級目錄,也就是api目錄訪問看看

發(fā)現(xiàn)了說明文檔

我們直接點delete就可以直接對指定用戶進行刪除,但是這里回顯是401權(quán)限不足,根據(jù)靶場提供的信息我們wiener用戶,再次訪問即可刪除。當(dāng)然,我們也可以通過抓包,去查看這個api的使用參數(shù),仿照發(fā)送請求,達到任意控制效果

常見支持HTTP的方法

研究api端點時,測試方法很重要,比如我們知道端點/api/tasks,我們可以嘗試以下方法

靶場二:查找利用未使用的API端點

該靶場,首先我們需要找到未被使用的api端點,上面一個靶場我們是找不到的,這里根據(jù)靶場提示,我們挨個點擊靶場中購買,走一遍購買流程,我們可以在數(shù)據(jù)記錄中,找到一個隱藏的api

這個是我們在提交購買的時候產(chǎn)生的,我們將這個發(fā)送到重放器中

嘗試使用不同的方式進行排查,比如我們可以嘗試使用/api/products/1,或者/api/products、/api來排查所有的內(nèi)容,但是這里均無法響應(yīng)

那么下一步我們可以嘗試不同的方式

比如我這里使用post

這里提示不支持該方法,并且告訴了我可用的方法,這里我們試試

提示內(nèi)部服務(wù)錯誤,我們在下面加上括號

提示我們?nèi)鄙賞rice參數(shù)

加上參數(shù)

提示必須是非負整數(shù),我們?nèi)サ粢栐囋?/p>

提示我們需要Content-Type: application/json

我們復(fù)制放到下面

這里成功修改了價格,我們將價格修改為0元,購買即可通關(guān)。

本關(guān)卡以api傳遞參數(shù)的方式,讓我們成功修改了參數(shù)。

識別隱藏參數(shù)

我們通??梢钥吹?,一個api請求,他會允許我們修改某些東西

PATCH /api/users/請求它允許用戶更新他們的用戶名和電子郵件,并包含以下JSON

{
"username": "wiener",
"email": "wiener@example.com",
}

返回的信息是以下JSON

{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"isAdmin": "false"
}

這表示隱藏的id和參數(shù),可能可以進行改變使用

我們想要測試上面的isadmin參數(shù),可以將上面的參數(shù)修改后發(fā)送到PATCH請求

{
"username": "wiener",
"email": "wiener@example.com",
"isAdmin": false,
}

如果我們將false修改為true,那么在沒有充分驗證的情況下,有可能會錯誤綁定對象,獲取權(quán)限。

靶場三:利用批量分配漏洞

該靶場,我們需要分析一下,流量包中的api,根據(jù)提示,我們在購買的過程中,找到兩個api的包

一個get一個post兩個數(shù)據(jù)包,這里我們可以在post數(shù)據(jù)包中看到一個數(shù)據(jù)結(jié)構(gòu)

在GET數(shù)據(jù)包中,可以在返回包中發(fā)現(xiàn)一些隱藏的數(shù)據(jù)傳遞方式

我們可以嘗試拼接到post數(shù)據(jù)包中進行嘗試

這里報錯提示我們資金不足, 我們嘗試改變內(nèi)容

嘗試數(shù)據(jù)

改成100,直接通關(guān)了

返回true,完成了關(guān)卡。

該靶場的問題,在于,我們可以從GET中獲取到一些隱藏的參數(shù),在得到隱藏參數(shù)之后,我們可以通過post或者其他的方法進行發(fā)送,嘗試執(zhí)行。

文章轉(zhuǎn)自微信公眾號@SecNL安全團隊

上一篇:

OAuth 2.0和OpenID Connect概述

下一篇:

假冒WordPrssAPI竊取Cookie并劫持會話
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費