[網站漏洞] 005 商業邏輯漏洞 Business Logic Vulnerabilities
飛飛 | 2023-02-17前言
商業邏輯漏洞主要由「開發者」在撰寫程式碼的時候,不太熟悉安全的程式碼開發原則,因此寫出 Bug 而該 Bug 引起重大影響,如個資外洩、商業邏輯任意修改。
何謂商業邏輯
首先我們可以看以下的流程
- 使用者看到商品列表
- 使用者看到喜歡的商品,後點選「加入購物車」的按鈕
- 系統將商品加入到購物車
- 使用者點選結帳
- 系統結算應該結帳的金額
其中加入購物車跟結帳都是需要系統後端撰寫程式碼去實作「邏輯」的部分,但如果這些內容沒有撰寫好,可能就會有邏輯缺陷。
為什麼會有商業邏輯漏洞
主要有幾個原因
- 無條件信任使用者輸入的內容
- 過濾使用者輸入,但是沒有過濾完全,導致被繞過
商業邏輯漏洞影響
- 任意修改系統邏輯
- 影響到使用系統的使用者,如個資外洩
商業邏輯漏洞範例
- 前端進行過濾,但後端沒有過濾,導致只需要攔截封包,修改封包內容就可以被繞過。
- 訂購商品沒有限制為正整數,被駭客修改成 負數或是 0 可能會造成金額上的算數問題。
Hackerone 真實案例
- Business logic Failure - Browser cache management and logout vulnerability. (2014-04-18)
- 2FA Session not expires after the password reset (2019-01-27)
- Payment method token being sent to 3rd party analytics service (2019-07-08)
- Grammarly Previously created sessions continue being valid after MFA activation (2019-08-05)
- Business Logic Flaw - A non premium user can change/update retailers to get cashback on all the retailers associated with Curve (2019-08-13)
- An attacker can buy marketplace articles for lower prices as it allows for negative quantity values leading to business loss (2020-01-10)
- 2FA bypass by sending blank code (2020-06-13)
- Availing Zomato gold by using a random third-party
wallet_id
(2020-07-23) - Imgur Bypass subscription (2020-11-07)
- Get information about the users emails without authentication (2021-01-28)
- Twitter Bypass t.co link shortener in Twitter direct messages (2021-04-04)
如何防禦商業邏輯漏洞
- 完全不要信任使用者的輸入
- 程式碼邏輯應該要撰寫清晰
CWE
- CW-840 Business Logic Errors
[網站漏洞] 004 Command injection 指令注入
飛飛 | 2022-03-30今天要介紹的 Command injection ,也就是可以透過這個漏洞去執行伺服器的命令 ( Command ) ,通常有這個漏洞就可以做到遠端程式碼執行( RCE,Remote Code Execution)。
[網站漏洞] 003 Directory traversal/File Path traversal 路徑穿越/目錄遍歷
飛飛 | 2022-03-30本文介紹目錄遍歷(文件路徑遍歷)-Directory traversal/Path traversal,透過漏洞取得伺服器檔案,如原始碼、設定檔(帳號密碼 IP)造成敏感外洩。
[網站漏洞] 002 Broken Authentication vulnerabilities 身份驗證漏洞
飛飛 | 2022-03-25本篇文章介紹 OWASP top 10 中 2017 第二名的 broken authentication 針對身份驗證相關的漏洞,身份驗證原理,以及常見的三種身份驗證漏洞成因,最後附上與身份驗證防禦的方式。
[網站漏洞] 001 SQL injection 與自建 LAB
飛飛 | 2022-03-24本篇文章介紹網站漏洞 SQL injection,先認識 SQL 查詢語言,介紹注入類型:如字串型、數字型、Union 型、blind 型,最後完成一個 SQLi LAB。