渗透测试过程中的sign签名算法破解
2023-1-20 00:5:35 Author: 橘猫学安全(查看原文) 阅读量:15 收藏

1.sign签名算法概述

sign签名算法:通常用于参数签名,防止参数被非法篡改,常见的使用方式是对请求中的重要参数进行保护,也可以防止重复提交请求屏蔽爬虫等,通常sign值得生成方式为token+一定的随机数+时间戳,而后使用某种加密算法进行加密,做为接口中的一个参数sign来传递,也能够将sign放到请求头中。

2.实战破解

本次调试的目标为最近工作中遇到的渗透测试目标,在是使用brupsuite进行抓包后,数据包无法重复使用。在对目标进行密码破解等操作时受到不小的限制。

登录请求在第一次使用时可以正确发送并返回信息,再次使用时返回包中已经提示“已过期的签名”。

仔细查看请求头中可以看Request-Key、Request-DeviceCode、Request-Timestamp和Request-Sign四个字段,存在Sign可以推测是有签名验证机制。

在浏览器中搜索Request-Sign字段,成功在js文件中找到,分析Request-Sign值生成语句n['Request-Sign'] = so.MD5(Fs.requestSignKey + t + r).toString().toUpperCase(),其中的 r 的值为当前时间戳,t 的值为使用S_(e)函数生成的随机值。

在语句上下断点,当程序运行到断点时可以看到requestSignKey的值为一个固定字段,至此Request-Sign值得生成方式为md5(固定值+随机字符串+当前时间戳),Request-Key值为随机字符串,Request-DeviceCode值为deviceCode固定字段,Request-Timestamp为当前时间戳+“000”,在调试中还发现后端对于时间戳的验证时差在5秒以内,一旦超过这个数值范围,请求将做过期失效处理。

因为对时间戳的验证,后面只能编写的相应python脚本进行测试。
import hashlibimport timeimport requestsdef timestamp(): return str(int(time.time())) + "000"def md5(my_key): return hashlib.md5(my_key.encode(encoding='UTF-8')).hexdigest()def test(): url = "http://10.10.10.206:8000/system/login/login/USERNAME?username=13612012345&password=eld6JpZhn2IHVC%2BioelGzg%3D%3D&type=USERNAME&captcha=48&randomStr=29511656081384846" t = timestamp() # Request-Key 使用的是固定值 key = "[email protected]#" + "2yu874pp1k4" + t headers = { "Request-Key": "2yu874pp1k4", "Request-DeviceCode": "deviceCode", "Request-Timestamp": t, "Request-Sign": md5(key).upper() } response = requests.get(url, headers=headers) print(response.text)if __name__ == "__main__": test()
通过脚本运行结果可以看到Request-Sign值设置前后的效果,签名验证算法可以成功被绕过,渗透测试工作中可以继续进行之后其它方面的安全测试。

原文连接:https://www.freebuf.com/articles/web/337264.html

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell
「 超详细 | 分享 」手把手教你如何进行内网渗透
神兵利器 | siusiu-渗透工具管理套件
一款功能全面的XSS扫描器
实战 | 一次利用哥斯拉马绕过宝塔waf
BurpCrypto: 万能网站密码爆破测试工具
快速筛选真实IP并整理为C段 -- 棱眼
自动探测端口顺便爆破工具t14m4t
渗透工具|无状态子域名爆破工具(1秒扫160万个子域)
查看更多精彩内容,还请关注橘猫学安全:
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“再看

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5OTY2NjUxMw==&mid=2247503118&idx=2&sn=38983b1c5d021a53e5e6f036e66582b8&chksm=c04d4a30f73ac326d32848a4134bec366c35218e94cfc589319f146aaf0bf92cb5fd0122994e#rd
如有侵权请联系:admin#unsafe.sh