[其餘] 在線支付邏輯漏洞總結

原文地址:http://drops.wooyun.org/papers/345             分類:運維安全
支付漏洞通常能夠分爲四類:
1、支付過程當中能夠直接修改數據包中的支付金額
這種漏洞應該是支付漏洞中最多見的。開發人員每每會爲了方便,直接在支付的關鍵步驟數據包中直接傳遞須要支付的金額。而這種金額後端沒有作校驗,傳遞過程當中也沒有作簽名,致使能夠隨意篡改金額提交。只須要抓包看到有金額的參數修改爲任意便可。
2、沒有對購買數量進行負數限制
這中案例也比較常見,產生的緣由是開發人員沒有對購買的數量參數進行嚴格的限制。這種一樣是數量的參數沒有作簽名,致使可隨意修改,經典的修改方式就是改爲負數。當購買的數量是一個負數時,總額的算法依然是「購買數量×單價=總價」。因此這樣就會致使有一個負數的支付金額。若支付成功,則可能致使購買到了一個負數數量的產品,也有可能返還相應的積分/金幣到你的賬戶上。
3、請求重放
購買成功後,重放其中請求,使得購買商品一直增長。
4、其餘參數干擾
更改參數,使得對金額的簽名認證失效。

修復方案 對傳遞的金錢,數量等對最後金額會產生影響的全部參數作簽名。而且注意簽名算法不可被猜想到。這樣攻擊者修改數據的時候便不會經過。同時注意對已經交易的訂單不可重複而形成重複重置的漏洞。