Johnny's Collections

          生活總是有太多的無奈與失望,讓我們以在努力學(xué)習(xí)和工作中獲得的成就感和快樂來沖淡它們。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            10 Posts :: 0 Stories :: 80 Comments :: 0 Trackbacks

          筆者在N年前曾經(jīng)參與一個第三方支付平臺的設(shè)計開發(fā)工作,這過程中研究了某個國內(nèi)著名的第三方支付平臺,就是因為該平臺的設(shè)計者輕易

          的相信外部傳入的數(shù)據(jù),不進(jìn)行校驗,導(dǎo)致被我發(fā)現(xiàn)了一個致命的漏洞,從而測試性的盜取了2分錢,這個事情一直到2個月后,該平臺通過

          與網(wǎng)銀對賬才發(fā)現(xiàn),由于不知道這個致命的漏洞是否已經(jīng)修復(fù),避免有惡意的人使用該方式去做違法的事情,我在這里只簡單描述該漏洞,

          而不公開該支付平臺的真實身份。

          該漏洞出現(xiàn)在充值業(yè)務(wù)上,實現(xiàn)邏輯請看下面的Sequence diagram:




          描述一下流程:

          1.客戶打開第三方支付平臺的充值頁面,選擇一個銀行,填入充值數(shù)據(jù)(充值虛擬賬戶、充值金額等),提交表單。
          2.充值頁面把數(shù)據(jù)(包括充值數(shù)據(jù),第三方支付平臺在該銀行注冊的商戶標(biāo)識)使用銀行提供的加密工具進(jìn)行加密,傳遞給指定銀行的網(wǎng)銀系統(tǒng)前臺。
          3.網(wǎng)銀系統(tǒng)前臺產(chǎn)生一張轉(zhuǎn)賬訂單,并要求用戶輸入賬號、密碼,然后提交。
          4.網(wǎng)銀系統(tǒng)后端校驗賬號和密碼,然后根據(jù)用戶賬號,充值金額,第三方支付平臺商戶標(biāo)識,把金額從用戶賬號轉(zhuǎn)賬到第三方支付平臺賬號。
          5.網(wǎng)銀系統(tǒng)把確認(rèn)數(shù)據(jù)(充值虛擬賬戶、充值金額、充值結(jié)果、轉(zhuǎn)入商戶標(biāo)識等)加密后重定向到第三方支付平臺結(jié)果頁面。
          6.頁面把確認(rèn)數(shù)據(jù)提交給后臺,并向客戶顯示充值成功。
          7.第三方支付平臺后臺接收到確認(rèn)數(shù)據(jù),把虛擬金額充入虛擬賬戶,完成整個流程。

          漏洞描述:

          我們可以看到,用戶在第三方支付平臺充值頁面提交數(shù)據(jù),和網(wǎng)銀向第三方支付平臺發(fā)送確認(rèn)數(shù)據(jù),都需要對數(shù)據(jù)進(jìn)行非對稱加密,但在當(dāng)

          時,我發(fā)現(xiàn)某一銀行,竟然不提供發(fā)送充值數(shù)據(jù)時的加密工具,這意味著,選擇這家銀行,用戶必須以明文的格式提交充值數(shù)據(jù),好了,這

          下我可以嘗試進(jìn)行man in the middle attack了,在我提交表單一刻,我把頁面的HTML腳本修改了,把提交時由第三方支付平臺指定的在所

          選銀行注冊的商戶標(biāo)識修改為另外一個商戶的標(biāo)識(假設(shè)是我自己注冊的商戶),OK,這意味著我的充值金額從我的賬號轉(zhuǎn)到我修改后的注

          冊商戶賬號,這時,該網(wǎng)銀把確認(rèn)數(shù)據(jù)(注意,包括轉(zhuǎn)入商戶標(biāo)識,這時的商戶標(biāo)識是我修改后的標(biāo)識)發(fā)送回第三方支付平臺,其實,如

          果第三方支付平臺如果能進(jìn)一步校驗確認(rèn)數(shù)據(jù)中的注冊商戶標(biāo)識,就能發(fā)現(xiàn)注冊商戶標(biāo)識被惡意篡改,從而導(dǎo)致充值失敗,但該平臺的設(shè)計

          人員卻假設(shè)之前的充值頁面已經(jīng)自動填入了自己的注冊商戶標(biāo)識,這里并不作校驗,從而導(dǎo)致這個致命的漏洞,錢沒有轉(zhuǎn)到自己的賬號上,

          而自己卻把等額的虛擬資金充值到了第三方虛擬賬戶中。


          特別聲明:本文內(nèi)容純屬用于技術(shù)研討,任何人嘗試使用本文的信息實施非法行為而導(dǎo)致的任何損失和責(zé)任,本人概不負(fù)責(zé)。
          posted on 2010-04-27 21:51 Johnny.Liang 閱讀(3419) 評論(0)  編輯  收藏 所屬分類: 系統(tǒng)設(shè)計
          主站蜘蛛池模板: 河源市| 驻马店市| 永安市| 仙游县| 龙海市| 临江市| 尉氏县| 罗山县| 当阳市| 石狮市| 巴南区| 临澧县| 南康市| 大新县| 康定县| 汝阳县| 涿州市| 和田县| 汶川县| 永城市| 彰武县| 巴林右旗| 花莲市| 海口市| 辉县市| 久治县| 田林县| 门头沟区| 宁强县| 灵璧县| 额敏县| 洮南市| 霍山县| 南昌县| 外汇| 怀宁县| 肇东市| 延寿县| 桐柏县| 浏阳市| 自治县|