概述
登錄邏輯
系統(tǒng)開放3012、12017兩個(gè)端口,前者為身份認(rèn)證接口,以json形式返回token與權(quán)限參數(shù),后者為業(yè)務(wù)系統(tǒng),前端調(diào)用js-aes對json加密得到cookie
漏洞成因
業(yè)務(wù)系統(tǒng)與接口彼此獨(dú)立,僅驗(yàn)證token真實(shí)性,未檢測cookie完整性,攻擊者能解密cookie則可修改參數(shù)實(shí)現(xiàn)越權(quán),而系統(tǒng)采用不安全的前端加密,導(dǎo)致漏洞產(chǎn)生
過程
js信息泄露
settingService.js,泄露aes密鑰 1234567812345678 與偏移向量 1234567812345678

漏洞驗(yàn)證
對cookie解密得到j(luò)son數(shù)據(jù)流

發(fā)現(xiàn)role等關(guān)鍵參數(shù),默認(rèn)1為真

使用全0與全1測試,驗(yàn)證漏洞存在


其他
登錄名受cookie控制

寫入js彈窗,可行

復(fù)測
已修復(fù)后端驗(yàn)證邏輯,但前端AES加密過程依然可見 Ctrl+shift+f 全文搜索 encrypt , login.min.js 文件中發(fā)現(xiàn) key 與 iv


修復(fù)思路
前端:
- 使用對稱加密方法,避免明文存放關(guān)鍵數(shù)據(jù),提高數(shù)據(jù)獲取門檻
- 采用非對稱加密方式,前端使用公鑰對數(shù)據(jù)加密,后端使用私鑰對數(shù)據(jù)解密
后端:
- 驗(yàn)證數(shù)據(jù)完整性
作者:Ainrm
轉(zhuǎn)載自:https://xz.aliyun.com/t/8022