API安全測試方法論
API安全概述
Application Programma Interface (API)由一組定義和協議組合而成,可用于構建和企業集成應用軟件。隨著數字化轉型的深入,API產品的價值日益增高,特別是與微服務、DevOps等技術的融合,使得API成為企業戰略發展加速的利器,但隨之而來的安全問題也不容忽視。常見的API安全漏洞有以下五種:

- 首先是API應該與應用系統一樣在設計之初就考慮安全的因素,比如防篡改(簽名)、防重放(時間戳)、防止敏感信息泄露(傳輸加密與數據最小化)等。
- API規范性帶來的一個問題就是API很容易被發現,比如在URL中出現的
v1/login,參數中出現的"function": "login"等。 - 安全配置錯誤常常包括:未使用加密傳輸協議、CSRF、CORS等。
- 參數過多就會導致信息泄露以及便于攻擊者執行頻率分析攻擊,比如
"role": "user"容易讓攻擊者聯想到"role": "admin"等。 - 數據過多:傳輸過多的數據、返回過多的數據、參數值暴露敏感信息等都是數據過多導致的安全問題。
同時OWASP在2019年也列舉了API最受關注的十大安全問題:

從上述的兩張圖中我們就可以大體了解API常面臨的風險是什么,那么如何來解決這些安全問題?
API安全測試方法
要想全面解決API的安全問題,就要在每次API研發完成之后進行全面的安全測試,為了防止測試過程中出現的遺漏,我們可以準備一個檢查列表v1.0(本列表主要來自:https://github.com/shieldfy/API-Security-Checklist/blob/master/README-zh.md,添加了一些自己的分類依據、測試方法、修復方案等):

API安全測試工具
很多時候重復的勞動力是不必要的,所以利用好工具事半功倍(工欲善其事必先利其器)。
Astra
https://github.com/flipkart-incubator/Astra
安裝Astra非常簡單,我們直接使用Docker部署即可(官網已經有了詳細說明,值得注意的是編譯Astra時網絡是個大問題,自行扶墻)
Burp Suite
Burp的強大之處不用多說,但是針對API的測試,我更喜歡把BurpSuite與Postman結合起來使用。
fuzzapi
https://github.com/Fuzzapi/fuzzapi
安裝過程不贅述。
Postman
結合Burp來使用,后期有空專門寫BurpSuite + Postman。
其實寫本文主要是為了幫自己梳理一下API的安全漏洞和檢查要點,上面的圖只是一個1.0版本,并且本表的很多列我也暫時沒有共享出來,后期2.0會更新。
reference
- API Security Checklist:https://github.com/shieldfy/API-Security-Checklist
- API的五個常見漏洞:https://min.news/zh-cn/tech/24cceb1c0d9169a7dc68e58e0e669864.html
- API接口滲透測試:https://xz.aliyun.com/t/2412
- 應用程序接口(API)安全:https://www.freebuf.com/articles/web/248251.html