1.1.1.2. 操作系統(tǒng)型 API

操作系統(tǒng)型 API 通常是操作系統(tǒng)層對(duì)外部提供的接口,開發(fā)者通過接口調(diào)用,完成對(duì)操作系統(tǒng)行為的操作。例如,應(yīng)用程序調(diào)用 Windows APl 或 Linux 標(biāo)準(zhǔn)庫。

image

1.1.1.3. 遠(yuǎn)程應(yīng)用型 API

遠(yuǎn)程應(yīng)用型 API 是開發(fā)者通過標(biāo)準(zhǔn)協(xié)議的方式,將不同的技術(shù)結(jié)合在一起,不用關(guān)心所涉及的編程語言或平臺(tái),來操縱遠(yuǎn)程資源。例如,Java 通過 JDBC 連接操作不同類型的數(shù)據(jù)庫。

image

1.1.1.4. WEB 應(yīng)用型 API

Web 應(yīng)用型 API 通常使用 HTTP 協(xié)議,在企業(yè)與企業(yè)、企業(yè)內(nèi)部不同的應(yīng)用程序之間,通過 Web 開發(fā)過程中架構(gòu)設(shè)計(jì)的方法,以一組服務(wù)的形式對(duì)外提供調(diào)用接口,以滿足不同類型、不同服務(wù)消費(fèi)者的需求。例如,社交應(yīng)用新浪微博的用戶登錄。

image

1.1.1.5. 總結(jié)

從上述介紹的 4 種 API 類型可以看出,API 并非新生事物,很早就存在著,只是隨著技術(shù)的發(fā)展,這個(gè)專有名詞的含義已經(jīng)從當(dāng)初單一的類庫型 API 或操作系統(tǒng)型 API 擴(kuò)展到如今的 Web 應(yīng)用型 API 接口,區(qū)是商業(yè)反展和業(yè)務(wù)多樣化驅(qū)動(dòng)技術(shù)不斷改進(jìn)的必然結(jié)果。同時(shí),API 的存在對(duì)業(yè)務(wù)的意義也已經(jīng)從單純的應(yīng)用程序接口所定義的用于構(gòu)建和集成應(yīng)用程序軟件的一組定義和協(xié)議,變成了業(yè)務(wù)交互所在的雙方之間的技術(shù)約定。使用 API 技術(shù)的業(yè)務(wù)雙方,其產(chǎn)品或服務(wù)與另一方產(chǎn)品和服務(wù)在通信過程中,不必知道對(duì)方是如何實(shí)現(xiàn)的就像在生活中需要使用電,只要按照要求接上電源就會(huì)有電流,而不必知道電流的產(chǎn)生原理自己來發(fā)電。不同的行業(yè)應(yīng)用可以獨(dú)立去構(gòu)建自己的 API 能力再對(duì)外部提供服務(wù),這樣做的好處是大大地節(jié)約了社會(huì)化服務(wù)能力的成本,簡化了應(yīng)用程序開發(fā)的難度,節(jié)省了時(shí)間,為業(yè)務(wù)能力的快速迭代提供了可操作的機(jī)會(huì)。

1.1.2. API 接口類型

這里就是介紹簡單的一些常見的接口,可以擴(kuò)展看書上的。

1.1.2.1. HTTP 類接口

基于 HTTP 協(xié)議的開發(fā)接口,這個(gè)并不能排除沒有使用其他的協(xié)議。

1.1.2.2. RPC 類接口

Remote Procedure Calls 遠(yuǎn)程過程調(diào)用 (RPC) 是一種協(xié)議,程序可使用這種協(xié)議向網(wǎng)絡(luò)中的另一臺(tái)計(jì)算機(jī)上的程序請(qǐng)求服務(wù)。由于使用 RPC 的程序不必了解支持通信的網(wǎng)絡(luò)協(xié)議的情況,因此 RPC 提高了程序的互操作性。在 RPC 中,發(fā)出請(qǐng)求的程序是客戶程序,而提供服務(wù)的程序是服務(wù)器。 RPC(遠(yuǎn)程過程調(diào)用)是一項(xiàng)廣泛用于支持分布式應(yīng)用程序(不同組件分布在不同計(jì)算機(jī)上的應(yīng)用程序)的技術(shù)。RPC 的主要目的是為組件提供一種相互通信的方式,使這些組件之間能夠相互發(fā)出請(qǐng)求并傳遞這些請(qǐng)求的結(jié)果。 沒有語言限制。

1.1.2.3. web service 類接口

Web service 是系統(tǒng)對(duì)外的接口,比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息,別人肯定不會(huì)把數(shù)據(jù)庫共享給你,他只能給你提供一個(gè)他們寫好的方法來獲取數(shù)據(jù),你引用他提供的接口就能使用他寫好的方法,從而達(dá)到數(shù)據(jù)共享的目的。

1.1.2.4. http service 與 web service 區(qū)別

本質(zhì)上其實(shí) http service 與 web service 差不多,但是 httpservice 通過 post 和 get 得到你想要的東西,而 webservice 就是使用 soap 協(xié)議得到你想要的東西,相比 httpservice 能處理些更加復(fù)雜的數(shù)據(jù)類型。同時(shí) http 協(xié)議傳輸?shù)亩际亲址耍瑆ebservice 則是包裝成了更復(fù)雜的對(duì)象。

1.2. API 常見技術(shù)

這里只是指常見,同時(shí)側(cè)重于實(shí)戰(zhàn)教程中能夠參考的,至于更多的技術(shù)可能需要參考其它文章結(jié)合,這里無法將所有內(nèi)容都涉及到,還請(qǐng)諒解。

1.2.1. SOAP

SOAP(Simple Object Access Protocol)簡單對(duì)象訪問協(xié)議是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于 XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)子集)的協(xié)議,它被設(shè)計(jì)成在 WEB 上交換結(jié)構(gòu)化的和固化的信息。SOAP 不是 Web Service 的專有協(xié)議。SOAP 使用 HTTP 來發(fā)送 XML 格式的數(shù)據(jù),可以簡單理解為:SOAP = HTTP +XML。

1.2.2. REST

REST(Representational State Transfer)即表述性狀態(tài)傳遞,在三種主流的 Web 服務(wù)實(shí)現(xiàn)方案中,因?yàn)?REST 模式的 Web 服務(wù)與復(fù)雜的 SOAP 和 XML-RPC 對(duì)比來講明顯的更加簡潔,越來越多的 Web 服務(wù)開始采用 REST 風(fēng)格設(shè)計(jì)和實(shí)現(xiàn)。例如,Amazon.com 提供接近 REST 風(fēng)格的 Web 服務(wù)進(jìn)行圖書查找;雅虎提供的 Web 服務(wù)也是 REST 風(fēng)格的。

1.2.3. WSDL

WSDL(Web Services Description Language)即網(wǎng)絡(luò)服務(wù)描述語言,用于描述 Web 服務(wù)的公共接口。這是一個(gè)基于 XML 的關(guān)于如何與 Web 服務(wù)通訊和使用的服務(wù)描述;也就是描述與目錄中列出的 Web 服務(wù)進(jìn)行交互時(shí)需要綁定的協(xié)議和信息格式。通常采用抽象語言描述該服務(wù)支持的操作和信息,使用的時(shí)候再將實(shí)際的網(wǎng)絡(luò)協(xié)議和信息格式綁定給該服務(wù)。

1.3. API 常見的安全漏洞類型

根據(jù)安全漏洞發(fā)生的機(jī)理和原因,對(duì) API 安全漏洞做歸類分析,常見的類型如下。

1.4. OWASP API 安全漏洞類型

在 OWASP API 安全 Top 10 中,OWASP 延續(xù)了 Web 安全的傳統(tǒng),收集了公開的與 API 安全事件有關(guān)的數(shù)據(jù)和漏洞獵人賞金平臺(tái)的數(shù)據(jù),由安全專家組進(jìn)行分類,最終挑選出了十大 API 安全漏洞的類型,以警示業(yè)界提高對(duì) API 安全問題的關(guān)注。這十大 API 安全漏洞類型的含義分別如下。

1.5. 接口數(shù)據(jù)包中常見問題

2. WEB service 類—wsdl 測(cè)試

關(guān)于這個(gè)接口的測(cè)試,若不是很熟,不要輕易的測(cè)試,同時(shí)若全是英文的情況下,無法理解更不要隨便的嘗試,可能會(huì)導(dǎo)致數(shù)據(jù)刪除等情況的發(fā)生。同時(shí)由于這方面的環(huán)境不好搭建,只能在網(wǎng)上尋找相關(guān)的內(nèi)容進(jìn)行測(cè)試,不能保障測(cè)試過程中都會(huì)一定會(huì)遇到存在問題的接口,這里主要是了解測(cè)試手段即可。

2.1. 尋找接口頁面

關(guān)于尋找這個(gè)接口頁面,可以在前期對(duì)網(wǎng)站就是目錄掃描等方式進(jìn)行獲取,例如這里使用 Google 查詢,這里不一定能百分比搜尋到哦!

語法:edu.cn inurl: asmx?wsdl  ##asmx是語言,但是我嘗試切換了一下語言,我發(fā)現(xiàn)反而內(nèi)容更少了。

image

2.1.1. 查看頁面

一般來說看到這個(gè)界面,多數(shù)都是接口類的頁面。

image

2.1.2. 查看所有

這里如果想要一次性查看所有內(nèi)容,可以在后面輸入?wsdl 即可查看 xml 語言,就會(huì)顯示所有內(nèi)容。

?wsdl  ##查看xml語言

image

2.2. 安全測(cè)試

這里可以使用手動(dòng)測(cè)試,也可以使用工具測(cè)試,手動(dòng)測(cè)試走效率上來說肯定是沒有工具測(cè)試那么快的,當(dāng)然我們也要先介紹一下如果使用手動(dòng)測(cè)試。

2.2.1. 手動(dòng)測(cè)試

所謂的手動(dòng)測(cè)試就是在獲取頁面的信息后,點(diǎn)擊進(jìn)去,然后手動(dòng)輸入一些信息進(jìn)行測(cè)試,這方面可能需要掌握一定的 API 接口技術(shù)能夠,否則很多測(cè)試都是在盲猜或盲測(cè),有時(shí)候可能測(cè)半天都測(cè)錯(cuò)了,自然就不會(huì)出現(xiàn)數(shù)據(jù)。

2.2.1.1. 選在測(cè)試內(nèi)容

image

例如這里點(diǎn)擊登陸賬號(hào)驗(yàn)證,我們?cè)诮缑嬷械妮斎肟蛑休斎?admin 來進(jìn)行測(cè)試,然后點(diǎn)擊下面的 invoke,點(diǎn)擊完會(huì)自動(dòng)跳轉(zhuǎn)出現(xiàn)相關(guān)的提示信息。

image

2.2.1.2. 查看回顯

這里顯示數(shù)據(jù)處理異常,那么就證明沒有 admin 相關(guān)的數(shù)據(jù),那么就是測(cè)試失敗了,那這個(gè)整個(gè)手動(dòng)測(cè)試流程就是這樣的,admin 不行可以換成其它的,或者進(jìn)入其它的輸入框中進(jìn)行測(cè)試,均行。

image

2.2.2. SoapUI 工具測(cè)試

這個(gè)工具下載需要輸入聯(lián)系方式,這里直接給安裝包吧,如果確實(shí)需要下載最新的那么就去官網(wǎng)下載吧,安裝教程我就不說了,別一個(gè)軟件都不會(huì)安裝…..這個(gè)工具確實(shí)本質(zhì)上也是手動(dòng)測(cè)試,只是相比較于在網(wǎng)頁上測(cè)試,更為方便點(diǎn)。

2.2.2.1. 工具下載地址

SOapUI 官網(wǎng)下載地址[1]

2.2.2.2. 添加內(nèi)容

下載好工具后,點(diǎn)擊工具欄 empty,彈出的內(nèi)容關(guān)閉即可,然后再左側(cè)邊欄會(huì)出現(xiàn)一個(gè) project1 即可。

image

2.2.2.3. 選在 wsdl

然后右擊 project1,選擇 add WSDL 即可。

image

image

2.2.2.4. 復(fù)制地址

在彈出的窗口中,將剛剛的地址復(fù)制進(jìn)行即可,但是要注意一定要復(fù)制的是 xml 的鏈接,也就是在地址后面添加?wsdl 的 xml 狀態(tài)的結(jié)果。

image

2.2.2.5. 測(cè)試內(nèi)容

然后再看左側(cè)邊欄就會(huì)出現(xiàn)相關(guān)的內(nèi)容了,然后雙擊點(diǎn)進(jìn)去,修改相關(guān)的內(nèi)容,即可看到相關(guān)的結(jié)果,這個(gè)就是工具測(cè)試,當(dāng)然這個(gè)工具有點(diǎn)類似于手工測(cè)試。

2.2.3. Ready API 工具測(cè)試

這個(gè)工具由于沒找到新版的破解版,都是老版的,同時(shí)雖然可以試用,但是在時(shí)間操作中,發(fā)現(xiàn)需要發(fā)送郵箱,但是不知道為何一直發(fā)送失敗。屬于這里也就不提供了,我這里大概截圖看一下如何使用吧,同時(shí)由于我這個(gè)找到的地址是國內(nèi)了,也就不使用這個(gè)工具掃描了,畢竟有影響。這個(gè)工具會(huì)自動(dòng)去分析是否存在一些安全漏洞,屬于全自動(dòng)的,只需要將地址復(fù)制上去即可。

2.2.3.1. 創(chuàng)建安全測(cè)試

這里點(diǎn)擊工具欄選擇下方的創(chuàng)建安全測(cè)試。

image

2.2.3.2. 選擇類型

這里我們?cè)龠x擇需要?jiǎng)?chuàng)建的類型,根據(jù)我們剛剛獲取到的是 wdsl,那么我們就選擇左邊這個(gè)。

image

2.2.3.3. 輸入地址

將剛剛獲取的地址輸入進(jìn)去即可。

image

2.2.3.4. 安全漏洞

這里就是選擇你需要測(cè)試的安全漏洞,這里可以直接點(diǎn)擊默認(rèn)。

image

2.2.3.5. 自動(dòng)進(jìn)行測(cè)試

添加完畢后,就會(huì)進(jìn)行自動(dòng)測(cè)試,這里只需要工具測(cè)試完畢即可,該工具會(huì)自動(dòng)生成一個(gè)報(bào)告。

image

2.2.3.6. 查看報(bào)告

報(bào)告會(huì)在當(dāng)前了下生成。

image

3. SOAP 類—Swagger 測(cè)試

關(guān)于 Swagger,其實(shí)是 java 中經(jīng)常使用到的第三方軟件,類似于數(shù)據(jù)庫管理系統(tǒng) phpMyadmin 一樣。專業(yè)的解釋就是 Swagger 是一款 RESTFUL 接口的文檔在線自動(dòng)生成+功能測(cè)試功能軟件。Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新文件的方法,參數(shù)和模型緊密集成到服務(wù)器。這個(gè)解釋簡單點(diǎn)來講就是說,Swagger 是一款可以根據(jù) resutful 風(fēng)格生成的生成的接口開發(fā)文檔,并且支持做測(cè)試的一款中間軟件。

3.1. 尋找頁面

這里同樣都是可以采取很多種方式進(jìn)行查找。

3.1.1. 尋找 Swagger

關(guān)于尋找 Swagger 其實(shí)可以使用目錄掃描,JS 資源探針,或者瀏覽器插件等,這里舉例子就使用瀏覽器插件來演示。

image

3.1.2. FOFA 搜索

"Swagger" && title=="Swagger UI"

image

3.2. 安全測(cè)試

同樣這里也是分為手動(dòng)測(cè)試與自動(dòng)化測(cè)試,至于手動(dòng)測(cè)試,這里就簡單的演示一下吧,手動(dòng)測(cè)試確實(shí)是比較麻煩的。

3.2.1. 手動(dòng)測(cè)試

簡單來說,手動(dòng)測(cè)試就是在這些框內(nèi)插入一下相關(guān)的數(shù)據(jù)進(jìn)行測(cè)試,可以是 sql 注入語句、xss 語句、xml 語句以及一些執(zhí)行代碼或信息泄露等。

3.2.1.1. 英文參考

這里是找了一個(gè)其它國家的頁面,可以看到全部都是英文,有時(shí)候確實(shí)無從下手,就算有翻譯軟件,也不一定能夠翻譯準(zhǔn)確。

image

3.2.1.2. 漢化參考

比如上圖都是英文,可能考翻譯軟件,也會(huì)出現(xiàn)不知道如何測(cè)試的情況,那么下面這個(gè)應(yīng)該就能一目了然了,當(dāng)然我不會(huì)去操作,僅僅的展示,由于都是國內(nèi)網(wǎng)站。這里都很明顯告訴你是干嘛了,還能不知道怎么測(cè)試么,就是輸入相關(guān)的內(nèi)容進(jìn)行測(cè)試,當(dāng)然手動(dòng)測(cè)試比較慢,也可以借助工具來進(jìn)行測(cè)試。

image

3.2.2. SoapUI 工具測(cè)試

這里需要獲取 josn 地址,然后將地址導(dǎo)入。

3.2.2.1. 獲取 josn 地址

在頁面中都會(huì)存在一個(gè)這個(gè)藍(lán)色鏈接,打開就是 josn 地址了。

image

3.2.2.2. 導(dǎo)入 josn 地址

這里將地址導(dǎo)入即可,可以看到下圖,先選在 Swagger,在彈出的對(duì)話框中輸入 josn 地址。

image

3.2.2.3. 輸入 josn 地址

這里輸入 josn 地址后,點(diǎn)擊 ok,但是會(huì)出現(xiàn)一種情況就是無法獲取到,主要原因就是由于有時(shí)工具無法訪問國外地址,就會(huì)導(dǎo)致測(cè)試國外地址的時(shí)候會(huì)出現(xiàn)無法訪問的情況。

image

3.2.2.4. 添加成功

這里費(fèi)勁千辛萬苦終于找到一個(gè)能夠添加成功的,剩下的測(cè)試完全就是替換數(shù)據(jù)了,然后看內(nèi)容。

image

3.2.3. 自動(dòng)化工具

這里的自動(dòng)化工具是源自于 github 上的工具。

3.2.3.1. 下載鏈接

swagger-exp[2]
swagger-hack[3]

3.2.3.2. swagger-hack 操作

該腳本需要 python3.0 的環(huán)境,加上-h 可以顯示相關(guān)的參數(shù),通常直接使用-u 即可。

image

這里測(cè)試一定要加上 josn 的地址,而不是頁面地址。

image

在當(dāng)前目錄下會(huì)生成一個(gè)結(jié)尾為 csv 的表格,在這里面重點(diǎn)關(guān)注響應(yīng) 200 的一行,不過我這里翻了一下啥數(shù)據(jù)沒有,我也懶得再去尋找有內(nèi)容的數(shù)據(jù)了。

image

4. HTTP 類—Webpack 測(cè)試

webpack 是一個(gè)模塊打包器(module bundler),webpack 視 HTML,JS,CSS,圖片等文件都是一種資源 ,每個(gè)資源文件都是一個(gè)模塊(module)文件,webpack 就是根據(jù)每個(gè)模塊文件之間的依賴關(guān)系將所有的模塊打包(bundle)起來。

4.1. 尋找頁面

這個(gè)尋找頁面我就不介紹了采用的方式和 SOAP 類尋找頁面的方式都是一樣的。

image

4.2. 安全測(cè)試

這里最好是工具測(cè)試,使用手動(dòng)測(cè)試的話比較麻煩。

4.2.1. 工具下載

這個(gè)工具需要安全的庫挺多的,最好按照 GitHub 上描述進(jìn)行操作。

Packer-Fuzzer[4]

4.2.2. Packer-Fuzzer 操作

這里需要提前測(cè)試是否成功,以免出現(xiàn)部分庫不正確的情況。

4.2.3. 導(dǎo)入地址

這里把我們尋找到的地址使用-u 添加地址進(jìn)行掃描。

python PackerFuzzer.py -u 地址

image

4.2.4. 查看報(bào)告

在當(dāng)前目錄下的 reports 中能夠看到的 word 版報(bào)告以及 html 版的報(bào)告,可以看到這里泄露了一個(gè)郵箱地址,以及手機(jī)號(hào)碼。

image

參考資料

[1] SOapUI 官網(wǎng)下載地址: https://www.soapui.org/downloads/soapui/

[2] swagger-exp: https://github.com/lijiejie/swagger-exp

[3] swagger-hack: https://github.com/jayus0821/swagger-hack

[4] Packer-Fuzzer: https://github.com/rtcatc/Packer-Fuzzer

原文轉(zhuǎn)載自:https://mp.weixin.qq.com/s/yEMr5iDEN_5u3_aJpIKHVA

上一篇:

一文簡述,通過公眾號(hào)api接口發(fā)表文章

下一篇:

程序員必備:C#對(duì)接釘釘API 實(shí)戰(zhàn)教程
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

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

查看全部API→
??

熱門場景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

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

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)