1.1.1.2. 操作系統型 API

操作系統型 API 通常是操作系統層對外部提供的接口,開發者通過接口調用,完成對操作系統行為的操作。例如,應用程序調用 Windows APl 或 Linux 標準庫。

image

1.1.1.3. 遠程應用型 API

遠程應用型 API 是開發者通過標準協議的方式,將不同的技術結合在一起,不用關心所涉及的編程語言或平臺,來操縱遠程資源。例如,Java 通過 JDBC 連接操作不同類型的數據庫。

image

1.1.1.4. WEB 應用型 API

Web 應用型 API 通常使用 HTTP 協議,在企業與企業、企業內部不同的應用程序之間,通過 Web 開發過程中架構設計的方法,以一組服務的形式對外提供調用接口,以滿足不同類型、不同服務消費者的需求。例如,社交應用新浪微博的用戶登錄。

image

1.1.1.5. 總結

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

1.1.2. API 接口類型

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

1.1.2.1. HTTP 類接口

基于 HTTP 協議的開發接口,這個并不能排除沒有使用其他的協議。

1.1.2.2. RPC 類接口

Remote Procedure Calls 遠程過程調用 (RPC) 是一種協議,程序可使用這種協議向網絡中的另一臺計算機上的程序請求服務。由于使用 RPC 的程序不必了解支持通信的網絡協議的情況,因此 RPC 提高了程序的互操作性。在 RPC 中,發出請求的程序是客戶程序,而提供服務的程序是服務器。 RPC(遠程過程調用)是一項廣泛用于支持分布式應用程序(不同組件分布在不同計算機上的應用程序)的技術。RPC 的主要目的是為組件提供一種相互通信的方式,使這些組件之間能夠相互發出請求并傳遞這些請求的結果。 沒有語言限制。

1.1.2.3. web service 類接口

Web service 是系統對外的接口,比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的。

1.1.2.4. http service 與 web service 區別

本質上其實 http service 與 web service 差不多,但是 httpservice 通過 post 和 get 得到你想要的東西,而 webservice 就是使用 soap 協議得到你想要的東西,相比 httpservice 能處理些更加復雜的數據類型。同時 http 協議傳輸的都是字符串了,webservice 則是包裝成了更復雜的對象。

1.2. API 常見技術

這里只是指常見,同時側重于實戰教程中能夠參考的,至于更多的技術可能需要參考其它文章結合,這里無法將所有內容都涉及到,還請諒解。

1.2.1. SOAP

SOAP(Simple Object Access Protocol)簡單對象訪問協議是交換數據的一種協議規范,是一種輕量的、簡單的、基于 XML(標準通用標記語言下的一個子集)的協議,它被設計成在 WEB 上交換結構化的和固化的信息。SOAP 不是 Web Service 的專有協議。SOAP 使用 HTTP 來發送 XML 格式的數據,可以簡單理解為:SOAP = HTTP +XML。

1.2.2. REST

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

1.2.3. WSDL

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

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

根據安全漏洞發生的機理和原因,對 API 安全漏洞做歸類分析,常見的類型如下。

1.4. OWASP API 安全漏洞類型

在 OWASP API 安全 Top 10 中,OWASP 延續了 Web 安全的傳統,收集了公開的與 API 安全事件有關的數據和漏洞獵人賞金平臺的數據,由安全專家組進行分類,最終挑選出了十大 API 安全漏洞的類型,以警示業界提高對 API 安全問題的關注。這十大 API 安全漏洞類型的含義分別如下。

1.5. 接口數據包中常見問題

2. WEB service 類—wsdl 測試

關于這個接口的測試,若不是很熟,不要輕易的測試,同時若全是英文的情況下,無法理解更不要隨便的嘗試,可能會導致數據刪除等情況的發生。同時由于這方面的環境不好搭建,只能在網上尋找相關的內容進行測試,不能保障測試過程中都會一定會遇到存在問題的接口,這里主要是了解測試手段即可。

2.1. 尋找接口頁面

關于尋找這個接口頁面,可以在前期對網站就是目錄掃描等方式進行獲取,例如這里使用 Google 查詢,這里不一定能百分比搜尋到哦!

語法:edu.cn inurl: asmx?wsdl  ##asmx是語言,但是我嘗試切換了一下語言,我發現反而內容更少了。

image

2.1.1. 查看頁面

一般來說看到這個界面,多數都是接口類的頁面。

image

2.1.2. 查看所有

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

?wsdl  ##查看xml語言

image

2.2. 安全測試

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

2.2.1. 手動測試

所謂的手動測試就是在獲取頁面的信息后,點擊進去,然后手動輸入一些信息進行測試,這方面可能需要掌握一定的 API 接口技術能夠,否則很多測試都是在盲猜或盲測,有時候可能測半天都測錯了,自然就不會出現數據。

2.2.1.1. 選在測試內容

image

例如這里點擊登陸賬號驗證,我們在界面中的輸入框中輸入 admin 來進行測試,然后點擊下面的 invoke,點擊完會自動跳轉出現相關的提示信息。

image

2.2.1.2. 查看回顯

這里顯示數據處理異常,那么就證明沒有 admin 相關的數據,那么就是測試失敗了,那這個整個手動測試流程就是這樣的,admin 不行可以換成其它的,或者進入其它的輸入框中進行測試,均行。

image

2.2.2. SoapUI 工具測試

這個工具下載需要輸入聯系方式,這里直接給安裝包吧,如果確實需要下載最新的那么就去官網下載吧,安裝教程我就不說了,別一個軟件都不會安裝…..這個工具確實本質上也是手動測試,只是相比較于在網頁上測試,更為方便點。

2.2.2.1. 工具下載地址

SOapUI 官網下載地址[1]

2.2.2.2. 添加內容

下載好工具后,點擊工具欄 empty,彈出的內容關閉即可,然后再左側邊欄會出現一個 project1 即可。

image

2.2.2.3. 選在 wsdl

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

image

image

2.2.2.4. 復制地址

在彈出的窗口中,將剛剛的地址復制進行即可,但是要注意一定要復制的是 xml 的鏈接,也就是在地址后面添加?wsdl 的 xml 狀態的結果。

image

2.2.2.5. 測試內容

然后再看左側邊欄就會出現相關的內容了,然后雙擊點進去,修改相關的內容,即可看到相關的結果,這個就是工具測試,當然這個工具有點類似于手工測試。

2.2.3. Ready API 工具測試

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

2.2.3.1. 創建安全測試

這里點擊工具欄選擇下方的創建安全測試。

image

2.2.3.2. 選擇類型

這里我們再選擇需要創建的類型,根據我們剛剛獲取到的是 wdsl,那么我們就選擇左邊這個。

image

2.2.3.3. 輸入地址

將剛剛獲取的地址輸入進去即可。

image

2.2.3.4. 安全漏洞

這里就是選擇你需要測試的安全漏洞,這里可以直接點擊默認。

image

2.2.3.5. 自動進行測試

添加完畢后,就會進行自動測試,這里只需要工具測試完畢即可,該工具會自動生成一個報告。

image

2.2.3.6. 查看報告

報告會在當前了下生成。

image

3. SOAP 類—Swagger 測試

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

3.1. 尋找頁面

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

3.1.1. 尋找 Swagger

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

image

3.1.2. FOFA 搜索

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

image

3.2. 安全測試

同樣這里也是分為手動測試與自動化測試,至于手動測試,這里就簡單的演示一下吧,手動測試確實是比較麻煩的。

3.2.1. 手動測試

簡單來說,手動測試就是在這些框內插入一下相關的數據進行測試,可以是 sql 注入語句、xss 語句、xml 語句以及一些執行代碼或信息泄露等。

3.2.1.1. 英文參考

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

image

3.2.1.2. 漢化參考

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

image

3.2.2. SoapUI 工具測試

這里需要獲取 josn 地址,然后將地址導入。

3.2.2.1. 獲取 josn 地址

在頁面中都會存在一個這個藍色鏈接,打開就是 josn 地址了。

image

3.2.2.2. 導入 josn 地址

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

image

3.2.2.3. 輸入 josn 地址

這里輸入 josn 地址后,點擊 ok,但是會出現一種情況就是無法獲取到,主要原因就是由于有時工具無法訪問國外地址,就會導致測試國外地址的時候會出現無法訪問的情況。

image

3.2.2.4. 添加成功

這里費勁千辛萬苦終于找到一個能夠添加成功的,剩下的測試完全就是替換數據了,然后看內容。

image

3.2.3. 自動化工具

這里的自動化工具是源自于 github 上的工具。

3.2.3.1. 下載鏈接

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

3.2.3.2. swagger-hack 操作

該腳本需要 python3.0 的環境,加上-h 可以顯示相關的參數,通常直接使用-u 即可。

image

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

image

在當前目錄下會生成一個結尾為 csv 的表格,在這里面重點關注響應 200 的一行,不過我這里翻了一下啥數據沒有,我也懶得再去尋找有內容的數據了。

image

4. HTTP 類—Webpack 測試

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

4.1. 尋找頁面

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

image

4.2. 安全測試

這里最好是工具測試,使用手動測試的話比較麻煩。

4.2.1. 工具下載

這個工具需要安全的庫挺多的,最好按照 GitHub 上描述進行操作。

Packer-Fuzzer[4]

4.2.2. Packer-Fuzzer 操作

這里需要提前測試是否成功,以免出現部分庫不正確的情況。

4.2.3. 導入地址

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

python PackerFuzzer.py -u 地址

image

4.2.4. 查看報告

在當前目錄下的 reports 中能夠看到的 word 版報告以及 html 版的報告,可以看到這里泄露了一個郵箱地址,以及手機號碼。

image

參考資料

[1] SOapUI 官網下載地址: 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

原文轉載自:https://mp.weixin.qq.com/s/yEMr5iDEN_5u3_aJpIKHVA

上一篇:

一文簡述,通過公眾號api接口發表文章

下一篇:

程序員必備:C#對接釘釘API 實戰教程
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

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

#AI深度推理大模型API

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

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