國(guó)內(nèi)環(huán)保行業(yè)網(wǎng)站開(kāi)發(fā)seo獨(dú)立站
一、認(rèn)識(shí)API
1. 什么是API
API(應(yīng)用程序接口):是一種軟件中介,它允許兩個(gè)不相關(guān)的應(yīng)用程序相互通信。它就像一座橋梁,從一個(gè)程序接收請(qǐng)求或消息,然后將其傳遞給另一個(gè)程序,翻譯消息并根據(jù) API 的程序設(shè)計(jì)執(zhí)行協(xié)議。API 幾乎存在于我們數(shù)字生活的各個(gè)方面,可以說(shuō)是我們現(xiàn)代插件、數(shù)字接口和軟件通信環(huán)境的隱藏支柱。它們將所有內(nèi)容連接在一起,使軟件系統(tǒng)協(xié)調(diào)一致地工作。
通俗的來(lái)說(shuō)API就是A調(diào)用B中某個(gè)功能的接口,比如說(shuō)我們自己搭建的網(wǎng)站有個(gè)上傳圖片的功能,我們要把圖片上傳到阿里云的云儲(chǔ)存,就需要調(diào)用阿里云的云儲(chǔ)存的API接口。如果還無(wú)法理解,更通俗的說(shuō)法比如你的電腦需要連接移硬盤(pán),移動(dòng)硬盤(pán)用來(lái)連接電腦的那根線就是API。
2. 為什么使用API
當(dāng)我們?cè)陂_(kāi)發(fā)功能的時(shí)候比如我們需要使用A程序的地圖功能,如果我們要在程序上添加地圖這個(gè)功能,需要寫(xiě)一大堆代碼,但是有了API我們直接調(diào)用地圖這個(gè)功能的函數(shù),帶來(lái)了很大的便利。
3. API造成的安全問(wèn)題
當(dāng)然帶來(lái)便利的同時(shí)也帶來(lái)了安全隱患:信息截獲、篡改信息、信息泄露
詳細(xì)的分類可以參考:OWASP API Security TOP 10 2023
4. 常見(jiàn)API特征
SOAP:WSDL
OpenApi:Swagger
RESTful:/v1/api
二、API利用
(一) 工具介紹
Postman(常用)
ReadyAPI
Burp插件APIKit
工具聯(lián)動(dòng)xray、burp等方法,雖然工具好但是不精確,所以手工也是不可缺的部分。
(二) 靶場(chǎng)實(shí)戰(zhàn)練習(xí)
vAPi:GitHub - roottusk/vapi: vAPI is Vulnerable Adversely Programmed Interface which is Self-Hostable API that mimics OWASP API Top 10 scenarios through Exercises.
1. 靶場(chǎng)搭建
git clone https://github.com/roottusk/vapi.git
cd vapi/
docer-compose up -d
訪問(wèn)http://ip/vapi
Postman導(dǎo)入Collection
Collection:https://raw.githubusercontent.com/roottusk/vapi/master/postman/vAPI.postman_collection.json
設(shè)置hosts
2. vapi1
一共有三個(gè)接口:創(chuàng)建用戶、查看用戶、修改用戶
創(chuàng)建用戶
查看用戶
user后面是用戶id,還需要修改Authorization-Token的值為username:password編碼成base64
修改用戶
最開(kāi)始的步驟修改Authorization-Token更改查看用戶一樣
漏洞點(diǎn)只要登錄了憑證就可以查看所有用戶
防護(hù)措施:完善權(quán)限校驗(yàn)
3. vapi2
兩個(gè)接口:登錄用戶、獲取用戶信息
這關(guān)是爆破,不用burp抓包我們直接在Postman中復(fù)制到burp中
復(fù)制到burp的爆破模式中,使用Pitchfork模式
字典在vapi/Resources/API2_CredentialStuffing目錄中
因?yàn)樽值淝懊媸青]箱后面是密碼所以我們要設(shè)置一下burp爆破規(guī)則
郵箱設(shè)置把","以及后面的數(shù)據(jù)都刪掉
密碼設(shè)置取后面8位數(shù)字
爆破得到賬號(hào)密碼
剛剛爆破得到的響應(yīng)的token值放入獲取用戶接口的Authorization-Token中得到flag
防護(hù)方法:添加登錄驗(yàn)證碼;限制賬號(hào)、IP登錄次數(shù)。
4. vapi3
在/bc/vapi/Resources/API3_APK目錄下有個(gè)apk文件安裝到虛擬機(jī)打開(kāi)
輸入靶場(chǎng)地址,不要再后面加上/
利用接口創(chuàng)建用戶
用在Postman注冊(cè)的用戶登錄
登錄成功后找到這個(gè)數(shù)據(jù)包
發(fā)送請(qǐng)求得到flag,可以在登錄的時(shí)候就開(kāi)始抓包然后放包到這個(gè)請(qǐng)求在查看返回值就可以了
防護(hù)方法:返回?cái)?shù)據(jù)時(shí),統(tǒng)一使用特定的 Wrapper 包裹,進(jìn)行數(shù)據(jù)過(guò)濾; 在 DAO 層中指定非 JSON 序列化屬性; 使用特定數(shù)據(jù)傳輸類。
5. vapi4
一共三個(gè)接口:手機(jī)號(hào)登錄、驗(yàn)證碼、獲取用戶信息
這個(gè)驗(yàn)證碼是一次性驗(yàn)證碼我們可以直接爆破4位數(shù)的驗(yàn)證碼
把key值放在獲取用戶信息的接口Authorization-Token中,得到flag
防護(hù)方法:限制OTP錯(cuò)誤次數(shù);增強(qiáng)OTP復(fù)雜度。
6. vapi5
有兩個(gè)接口:創(chuàng)建用戶、查詢用戶
先利用創(chuàng)建用戶接口創(chuàng)建一個(gè)用戶
利用查詢用戶接口查詢用戶
有個(gè)查詢所有用戶的接口為users,我們用這個(gè)普通用戶的權(quán)限就可以查看所有用戶
防護(hù)方法:完善權(quán)限校驗(yàn)機(jī)制
7. vapi6
兩個(gè)接口:創(chuàng)建用戶、查詢用戶
先創(chuàng)建用戶
查詢用戶credit為0
重新創(chuàng)建用戶把credit的值改為200
得到flag
防護(hù)方法:添加數(shù)據(jù)傳輸層;添加權(quán)限校驗(yàn);抽離函數(shù)功能,指定修改字段。
8. vapi7
四個(gè)接口:創(chuàng)建用戶、登錄用戶、獲取Key值、退出登錄
創(chuàng)建用戶
登錄
存在CORS漏洞,添加Origin隨便輸入值
防護(hù)方法:配置 CORS 添加 CSRF_TOKEN
9. vapi8
兩個(gè)接口:登錄用戶、獲取用戶信息
登錄用戶地方存在sql注入利用萬(wàn)能賬戶登錄成功
得到flag
防護(hù)方法:預(yù)處理;過(guò)濾特殊字符。
10. vapi9
一個(gè)接口(這是一個(gè)v2的接口):登錄
爆破pin的值
爆破時(shí)發(fā)現(xiàn)返回的全是500,因?yàn)関2有放爆破機(jī)制的,我們更改為v1
改了v1后爆破得到為1655
防護(hù)方法:停用老版本 API; 將老版本 API 放入內(nèi)網(wǎng)。
11. vapi10
直接發(fā)送就可以
(三) 工具利用檢測(cè)
Post聯(lián)動(dòng)xray自動(dòng)檢測(cè)
開(kāi)啟xray被動(dòng)監(jiān)聽(tīng)
./xray.exe webscan --listen 127.0.0.1:1236
打開(kāi)Postman的下游代理
Postman發(fā)包
跳轉(zhuǎn)到這個(gè)頁(yè)面點(diǎn)擊run vapi
分別找到了第七關(guān)和第九關(guān)的漏洞
三、總結(jié)
API發(fā)現(xiàn)接口的方法:爆破、開(kāi)放的接目錄
如何測(cè)試:利用Postman工具(Postman工具是專門(mén)給開(kāi)發(fā)人員測(cè)試功能的并不具備安全檢測(cè)功能,所以需要聯(lián)動(dòng)其他檢測(cè)工具進(jìn)行批量檢測(cè)),配合Postman手工檢測(cè),主要查看返回狀態(tài)碼為200的包,與burp聯(lián)動(dòng)插件自動(dòng)檢測(cè)。
API的檢測(cè)主要是用手工檢測(cè)而工具只能作為輔助。