记一次JS逆向分析

admin 2024年8月4日21:20:46评论17 views字数 1011阅读3分22秒阅读模式

                        原文首发Freebuf

        https://www.freebuf.com/articles/network/407775.html

            PS: 如果内容图片比较糊,可直接浏览freebuf链接就行

一、前言 

接到某系统的渗透测试,仅仅一个注册和登录,本以为常规低危三连,却发现连一个明文传输都不给机会(非真实业务系统照片,信息敏感,稍微打码一下,抱歉~~)

记一次JS逆向分析

输入任意账户密码进行抓包,分析请求包及返回包均是加密,很绝望 ~,经过观察可知请求包的加密是双引号中间是加密内容,响应包是直接返回加密内容的

记一次JS逆向分析

二、加密分析

通过前端JS分析,找到login.js分析用户名/密码会被一个Encrypt函数进行加密,在loginName、password下断点,进入到Encrypt函数里面,动态调试一下具体的加密方式

记一次JS逆向分析

逐步调试中可以获取IV值(硬编码在JS文件)、KEY是动态获取(239行)以及补码方式ZeroPadding,但不确定mode的,下一步要跟进到55c函数里面分析具体的加密方式 

记一次JS逆向分析

记一次JS逆向分析

通过进一步的动态分析,可看到为CBC模式

记一次JS逆向分析

记一次JS逆向分析

跳出该55c观察一下Encrypt函数最终的返回的jsonStr为最终的加密内容,等于是请求包的 "加密登陆"

记一次JS逆向分析

在分析一下如果要登陆的话,需要满足什么格式,为后续的脚本做铺垫,持续跟进getGuid函数、salt获取方式

记一次JS逆向分析

函数JS已经写好了,salt就是获取当前时间戳了

记一次JS逆向分析

记一次JS逆向分析

三、解密分析

有加密肯定有解密,直接在login.js中找到Decrypt函数,打上断点进入函数进行动态调试分析(进入到55c函数分析应该和上面一致了)

记一次JS逆向分析

记一次JS逆向分析

、编写Python脚本实现自动化加解密

现在确定了AES/CBC/ZeroPadding,KEY/IV,直接chatGPT生成Python脚本,再结合具体的功能进行微调

记一次JS逆向分析

先找一个测试数据验证一下是否正确,通过系统的F12控制台进行分析

记一次JS逆向分析

本地测试当前的加密和解密状态

记一次JS逆向分析

控制台调用函数加密解密状态,发现一致,证明脚本没有啥问题

记一次JS逆向分析五、漏洞挖掘

由于这一套系统是做了登陆失败次数等限制,主要还是测试一个爆破登陆(非实际真实漏洞),这开发的安全意识还是很高的

记一次JS逆向分析

记一次JS逆向分析

记一次JS逆向分析

六、总结

遇到这种加密情况,只能找具体的JS加密方式尝试进行解密,由于信息敏感,打码较为严重,望见谅,主要还是分享思路

原文始发于微信公众号(弱口令验证机器人):记一次JS逆向分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月4日21:20:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次JS逆向分析https://cn-sec.com/archives/3034428.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息