近期同事遇到一個(gè)金融站點(diǎn)的前端加簽驗(yàn)證問(wèn)題,找到本菜雞一起幫忙分析。經(jīng)過(guò)測(cè)試發(fā)現(xiàn),客戶端每次請(qǐng)求都會(huì)對(duì)數(shù)據(jù)包進(jìn)行加簽,然后服務(wù)端會(huì)對(duì)數(shù)據(jù)包進(jìn)行驗(yàn)簽。
解決大概思路:確定加簽關(guān)鍵字-》分析前端代碼獲取加簽算法-》使用burpy插件調(diào)用前端加密函數(shù)自動(dòng)對(duì)數(shù)據(jù)包進(jìn)行加簽操作
Burpy:一款burp插件,可自定義python腳本對(duì)數(shù)據(jù)包進(jìn)行加解密。https://github.com/mr-m0nst3r/Burpy
確定加簽關(guān)鍵字
開局一個(gè)登錄框
通過(guò)測(cè)試得知,服務(wù)端會(huì)對(duì)每個(gè)請(qǐng)求數(shù)據(jù)包的“_msgid”和“_sign”參數(shù)進(jìn)行驗(yàn)簽,一但數(shù)據(jù)包被修改或者重復(fù)發(fā)送相同數(shù)據(jù)包,服務(wù)端則會(huì)返回“驗(yàn)證簽名失敗!”
分析js獲取加簽算法
首先F12全局搜索查找“_msgid”的生成算法
找到對(duì)應(yīng)的uuid()算法邏輯
把js加密代碼摳出來(lái)復(fù)制到sign.js文件
使用python的execjs模塊調(diào)用sign.js的uuid函數(shù),編寫demo測(cè)試沒(méi)問(wèn)題,加簽字段“_msgid”搞定
接下來(lái)分析加簽字段“_sign”的加密邏輯,通過(guò)sign關(guān)鍵字定位到getSign函數(shù)
此處對(duì)前端代碼進(jìn)行調(diào)試,得知傳入的參數(shù)requestObject為字典格式,通過(guò)對(duì)字典數(shù)據(jù)進(jìn)行處理后得到參數(shù)“sb”的值,最終將“sb”的值MD5加密后得到加簽字段“_sign”的值
“_sign”的大致加密邏輯有了,那么就需要查看前端調(diào)用棧來(lái)查看傳入?yún)?shù)“requestObject”的字典數(shù)據(jù)是如何生成的。
分析后得知“requestObject”由兩部分組成,一部分為不固定參數(shù),根據(jù)業(yè)務(wù)功能點(diǎn)不同傳入不同的參數(shù)字典,另一部分為固定參數(shù)token、msgid、app_id、redisIdBindCustno添加到字典數(shù)據(jù)的尾部,然后傳入getSign獲取加簽參數(shù)“_sign”的值
編寫加簽?zāi)_本
大致的加簽數(shù)據(jù)生成流程已經(jīng)理清楚,接下來(lái)就需要編寫burpy腳本搞定“_sign”加簽參數(shù),首先把getSign()函數(shù)的加密算法摳出來(lái)復(fù)制到sign.js文件中
編寫腳本調(diào)用sign函數(shù)獲取加簽參數(shù)“_msgid、_sign”的值,從而實(shí)現(xiàn)自動(dòng)化對(duì)數(shù)據(jù)包進(jìn)行加簽。 (注意:傳入的encrypt函數(shù)的body為str類型,返回時(shí)也必須為str類型)
接下來(lái)可以開啟burpy插件,即可自動(dòng)替換數(shù)據(jù)包中的加簽參數(shù)
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4701瀏覽量
94853 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4372瀏覽量
64306
原文標(biāo)題:記一次金融站點(diǎn)的驗(yàn)簽破解實(shí)戰(zhàn)
文章出處:【微信號(hào):菜鳥學(xué)安全,微信公眾號(hào):菜鳥學(xué)安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
循環(huán)充放電一次就是少一次壽命嗎?
一次電池為什么不能被充電?
循環(huán)充放電一次就是少一次壽命嗎?
電池循環(huán)充放電一次就是少一次壽命嗎?
無(wú)線路由器密碼破解Beini破解wpa實(shí)戰(zhàn)教程詳細(xì)說(shuō)明

對(duì)于加解密、加簽驗(yàn)簽你們有概念嗎
記一次CH552不識(shí)別無(wú)法下載解決辦法

CFCA簽名驗(yàn)簽服務(wù)器解決方案獲鯤鵬Validated認(rèn)證
一次調(diào)頻和二次調(diào)頻的概念 一次調(diào)頻可以實(shí)現(xiàn)無(wú)差調(diào)節(jié)?
鴻蒙開發(fā):Universal Keystore Kit密鑰管理服務(wù) 簽名、驗(yàn)簽介紹及算法規(guī)格

移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)

評(píng)論