記一次發現某餐飲企業二維碼支付漏洞的經歷


  •        背景

  如今,移動支付已經成為了主流,無現金支付越來越普遍,我們出門完全不用帶紙幣,到商店買東西、餐館吃飯、坐車等都可以用手機支付解決,這給我們帶來了很大的便利;我們再也不用擔心錢包被偷或者丟掉的問題了,這一定程度上減少了偷盜的犯罪率,為社會的安定做了貢獻;也減少了紙幣的丟失和損耗,降低了國家貨幣流通的成本。而移動支付里,當屬二維碼支付最為流行,像微信支付,支付寶支付,二維碼收款等,各行各業只要涉及到支付的問題,都會弄個二維碼支付。盡管,二維碼支付很方便和安全,但是也存在一定的風險,如果沒有理解其本質,不考慮其安全性,將會帶來一定的安全風險。下面,就將我的最近一次發現某餐飲企業二維碼支付漏洞的經歷分享給大家。

  •        經歷

  最近發現公司周邊的一家餐飲店做得很不錯,雖說是快餐,但是每個菜都是小鍋現炒的,菜品很美味,第一次吃肯定會讓你稱贊。和同事一起去這家店吃了10多天之后,趁其充值1000送500的活動,辦了一個會員,然后支付的時候可以用會員里的個人二維碼支付。某一天,我們吃飯討論起來了二維碼支付的問題,有個同事說,支付這樣的動作涉及到錢,企業肯定會重視的,所以這個二維碼應該是動態生成的,每次登錄會員的時候都會變;我說,可能未必,支付寶支付、微信支付的二維碼都是固定的,更何況這個小餐飲企業呢。一番爭論不下,同事就說驗證一下就可以了,將二維碼里面的內容掃出來,如果每次都不一樣,那么就是動態生成的,反之不是;不驗不知道,一驗嚇一跳。原來,那個支付的二維碼內容掃出來是會員的手機號碼,每次掃都是。一下子大家都隱約感覺到了其中可能存在的安全漏洞,因為二維碼的內容太簡單,支付的時候后台無法確定是否是本人操作(越權漏洞),所以如果我拿別個會員的手機號生成一個二維碼,然后將生成的二維碼替換我那個二維碼,來個“移花接木”,不就可以刷別人會員的錢了,以后每天都可以吃霸王餐啦,想想都很興奮。為了滿足我們的好奇心以及驗證我們的推斷,我決定親自去試驗。我將試驗分成了三步

   第一步:登陸會員之后,將支付二維碼截圖下來,付款的時候用截圖的二維碼支付(每次登陸都好慢,好多人不知道可以將二維碼截圖下來,包括之前我也是),驗證一下是否可以正常支付;經過驗證是可以的,也是符合預期的。

   第二步:退出會員登陸,看后台有沒有做會員在登陸狀態才能支付的校驗,這也是它唯一能做的安全性校驗了;退出會員登陸幾天后再去驗證,發現還是可以正常支付的。結果似乎已經越來越接近我們的推斷了。

   第三步:也就是大招,拿同事的手機號(他也是會員),生成了一個二維碼,然后將生成的二維碼替換我的二維碼;拿做好的二維碼去支付,也能正常支付。給大家看一下,原二維碼與做好的二維碼

                                      

    左邊的是原支付界面,右邊是我替換二維碼之后的界面,這樣看二維碼的區別還是很大的。不過,現場去支付的時候,收銀員是完全注意不到的。這里我把涉及到企業logo相關的信息給模糊掉了,避免給別人造成經濟損失。

    經過三步走之后,結果與我們的推斷完全一致,可以確定其存在支付漏洞了。

  •   漏洞產生的原因

  先說一下二維碼,官方解釋是:是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的,直白一點就是記錄一串文字(比如數字,字母等)。相同的二位碼包含的信息肯定是相同的,但是相同的信息,根據不同的二維碼生成策略,二維碼是不一樣的,所以我能自己生成二維碼,然后支付的時候也能掃出來相同的信息。至於二維碼的生成,自己可以寫程序生成,也可以直接在網上在線生成。然后說說為什么支付寶支付、微信支付等二維碼支付不存在支付漏洞,而這家企業的支付卻存在漏洞。因為支付寶支付、微信支付等二維碼的內容不是簡單的手機號,具有一定的含義,支付的時候也需要用戶輸入密碼確定。其他安全的二維碼,有的會對內容做加密處理,或者包含更多唯一的信息等。

  •   解決方案

  說說針對這個漏洞的解決方案,其實也很簡單:1、對手機號做坐加密處理,然后用加密后的串生成二維碼 2、用登錄后的Token和手機號號碼生成二維碼 ,3、用具有一定規則的一串數字作為串生成二維碼,以上是三種常用生成二維碼的方法。同時,用戶在支付的時候要做校驗是否是本人操作等。加上這些處理就能很容易避免支付漏洞了。

  此次經歷分享完了,希望能給大家提升一點安全支付的意識,以后自己做二維碼支付的時候不會出現安全漏洞。

 


免責聲明!

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



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