本文內容:
~快捷支付原理
~常見支付漏洞
~支付漏洞如何挖掘
~防禦方法
每日一句:
想到就去做,多試總沒壞處
注意尺度,且行且珍惜
一、快捷支付原理
1,原理
~瀏覽器跳轉
簡單說,你付錢了,瀏覽器通知服務器,服務器更新你的金額
//基本依託前端跳轉,不可靠,現在應該極其少見
~服務器端異步通知
簡單說,你付錢,發一個通知給服務器,
同時,你支付的平臺也會向服務器發送一個通知。
服務器對比一下你的通知與支付平臺通知,
一致則更新你的金額。不一致,一般都會等待客服處理
//相對安全
2,補充
~支付漏洞並不需要代碼審計,其實更適合新手
~支付漏洞屬於邏輯漏洞,挖掘這類漏洞要有發散(奇葩)思維
簡單說,不按常理出牌,效果往往事半功倍
3,注意:支付漏洞具有極高的法律危險,滲透測試要極爲注意分寸
建議:幾元錢,幾毛錢差額的測試
二、常見支付漏洞
1,直接修改訂單金額
在訂購、訂單、付款的任意一步,抓包,修改金額。
一般推薦在最後一步修改,因爲每一步都可能有驗證機制,少一事更好。
至於金額數,可以是小數目或者嘗試負數
2,畫棒棒糖的錢買電腦
預購電腦,最後一步(付款前),抓包,查看到有一個xxid=100
//假設xxid=100是電腦的id,即這個100就代表電腦
預購糖,最後一步(付款前),抓包,查看糖的xxid=20
返回第一個數據包,將xxid=100改爲20
點擊付款,金額髮生變化
3,修改買的數量,0元買東西
假設:鍵盤100,鼠標50
購買訂單,抓包,修改數量:鍵盤×1,鼠標×-2,
結算,0元
4,修改附屬值(比如優惠劵、積分等等)
~直接修改優惠劵的金額
~修改優惠劵數量
注意:商家搞活動的時候,最容易出問題
5,越權漏洞(用別人的錢買自己的東西)
抓包,看到有代表身份類得傳參,如userid=xx等等,
嘗試改爲別人的userid,試試能不能讓別人給我們買帳
6,無限制試用
比如使用的參數爲2,正常購買的參數爲1
我們不斷的傳參數2會發生什麼呢
7,總結:抓包,看到有數字類得東西就去改一改,說不定有奇效
三、支付漏洞如何挖掘
1,找到關鍵的數據包
可能一個支付操作有三四個數據包,我們要對數據包進行挑選。
//最差也最有效的就是排除法
2,分析數據包
支付數據包中會包含很多的敏感信息(賬號,金額,餘額,優惠),
要嘗試對數據包中的各個參數進行分析。
3,不按套路出牌
多去想想開發者沒有想到的地方
4,pc端嘗試過,wap端也看看,app也試試。
//app如何抓包,建議百度或谷歌。回答應該很詳細
四、防禦方法
1,參數進行MD5加密、解密、數字簽名及其驗證,可以有效避免數據修改,
及重放攻擊中的各種問題
補充:重放攻擊,即將付款成功的數據包,不斷重新發送
2,不要相信用戶傳來的信息(一切參數都可以被修改)
3,服務端,校驗價格、數量參數
//比如產品數量僅能爲正整數,限制購買產品數量等等
4,與支付平臺傳來數據進行對比
5,超過一定金額(閾值)時,進行人工審覈