對於OWASP API TOP 10的一些理解


前言

  OWASP API 安全項目是第一次發布,在查找OWASP API TOP 10相關解讀資料的時候,發現中文資料比較少,但是API在萬物雲化的今天越來越重要,因此考慮自己寫點東西以加深自己的理解。

   API全稱為Application programming interface,意為應用程序編程接口。這個概念較為廣泛,更像是一種資源交互方式。

 

OWASP API Security Top 10具體為:

API 1 Broken Object Level Authorization-----------失效的對象級別授權

API 2 Broken Authentication---------------------------失效的用戶身份驗證

API 3 Excessive Data Exposure------------------------過度的數據暴露

API 4 Lack of Resources & Rate Limiting-----------資源缺乏和速率限制

API 5 Broken Function Level Authorization----------失效的功能級授權

API 6 Mass Assignment-------------------------------- 批量分配

API 7 Security Misconfiguration-----------------------安全配置錯誤

API 8 Injection-----------------------------------------------注入

API 9 Improper Assets Management--------------------資產管理不當

API 10 Insufficient Logging & Monitoring-------------日志和監控不足

 附中文版鏈接: http://www.owasp.org.cn/owasp-project/OWASPAPITop102019.pdf

 

通過對比表發現和OWASP Top 10還是具有一定差異的。我通過查詢找到下面這個圖。可以看到紅色的是主要差異項,綠色的是排名不變的,黃色的是排名發生了變化的項目。通過這個排名可以知道,在api安全方面,側重點是不一樣的,XXE、反序列化、敏感信息泄露、XSS、使用具有已知漏洞的組件是API安全TOP 10里是沒有的。沒有的原因不是說API安全不存在這些問題,而且這些問題排名在10名開外,因此不在其中。

 

 

接下來,結合案例來看看API安全提及的一些問題。

1、失效的對象級別授權

這里直接上圖,文中的對於API 1的定義類似於IDOR,也就是說API 安全中排名第一的問題是權限問題,提供的案例也是越權。如遍歷用戶ID方式,以用戶角色為維度。因此,嘗試去hackerone上找相關的公開報告。

https://hackerone.com/reports/763994

https://hackerone.com/reports/853130

https://hackerone.com/reports/975047

https://twitter.com/samwcyo/status/1350025970615529473?s=20

 

2、失效的用戶身份認證

排名第二的是身份認證問題。這個問題基本上圍繞認證方面,如弱口令、明文存儲、弱加密、密碼爆破、GET方式傳輸令牌和密碼等,這里案例就比較多了。弱口令就不說了,完全是管理問題。明文存儲國內案例有CSDN、網易,國外有 facebook,而GET方式傳輸令牌和密碼,某運營商目前仍這樣處理,由於查詢余額、積分、賬單等敏感操作都是用GET請求方式,后續大部分查詢操作referer都可以看到令牌和sessionid,又由於令牌等幾個值一直不變,過期時間較長,因此很容易泄露用戶個人數據。而爆破的話,H1上案例也不少。

https://hackerone.com/reports/708013

https://hackerone.com/reports/970157

 

 

 3、過度的數據暴露

這個問題比較容易理解,字面上的意思即是問題的所在。API在對查詢進行響應的時候返回了過多的敏感信息。之前在測試一個微信公眾號,就遇到過這樣的問題,明明只查了待繳金額,結果把余額、賬單等信息都返回過來了。

 

4、資源缺乏和速率限制

這個問題偏向於資源競爭。我在其他文章里找到更容易懂的解釋-----API不會對客戶端/用戶可以請求的資源大小或數量施加任何限制。這不僅會影響API服務器的性能,從而導致拒絕服務(DoS),而且還為諸如暴力破解之類的身份驗證漏洞敞開了大門。

https://hackerone.com/reports/764434

https://hackerone.com/reports/887321

 

5、失效的功能級授權

這個問題和API 1有點像,都是授權方面的問題。但是這個更偏向於在功能授權上的問題,像是垂直越權。比如,管理員面板,普通用戶正常情況無法訪問,但存在此類越權問題時即可訪問管理員面板。

 https://twitter.com/hunter0x7/status/1352572216119062528

 

 

6、批量分配

這個問題從字面上是最難理解的。但仔細看定義,還好理解。大致就是API存在用戶可控的參數。

https://hackerone.com/reports/452959

https://hackerone.com/reports/813300

 

7、安全配置錯誤

這個范圍會大一些,如明文傳輸、敏感信息泄露、存儲桶未授權訪問、錯誤配置CORS等問題。之前測幾個小程序的時候,接口未授權訪問出現的頻率最高,有的接口可遍歷所有用戶信息。個別參數客戶端可控,導致返回了明文敏感信息。因此在測試接口時,仔細看重要操作的數據包還是十分必要的。

https://hackerone.com/reports/1021906

https://hackerone.com/reports/1001951

 

8、注入

屬於輸入驗證漏洞類別。如sql注入、HTML注入、命令注入、LDAP注入等漏洞類別。

https://hackerone.com/reports/816254

https://hackerone.com/reports/1034625

https://hackerone.com/reports/950180

 

9、資產管理不當

這個問題就是字面上的意思,很好理解。資產管理的問題。如暴露測試接口地址、未下線的舊接口。而此類接口的發現,我總結了三種方式,一是捕風捉影,通過檢測所有流量包來查找;二是按圖索驥,通過JS等信息收集方式發現去尋找並構造API;三是無中生有,通過猜解、遍歷方式去獲取接口。而在實踐中,這三種方式都有成功的記錄。

 

 10、日志和監視不足

最后一個無需多說,是以資產擁有方的角度出發的。和日常安全測試關系不大。

 

參考鏈接:

http://r6d.cn/acMHU

https://owasp.org/www-project-api-security/

https://nordicapis.com/testing-owasps-top-10-api-security-vulnerabilities/

https://apisecurity.io/encyclopedia/content/owasp/owasp-api-security-top-10.htm

https://apisecurity.io/encyclopedia/content/owasp-api-security-top-10-cheat-sheet-a4.pdf

https://portswigger.net/daily-swig/owasp-reveals-top-10-security-threats-facing-api-ecosystem

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM