JS解密之JS-Forward项目运用

admin 2025年2月13日15:44:33评论3 views字数 1967阅读6分33秒阅读模式

项目地址: https://github.com/G-Security-Team/JS-Forward

访问靶场:http://39.98.108.20:8085/#/login

JS解密之JS-Forward项目运用

加密效果图:

JS解密之JS-Forward项目运用

找到加密关键点-"由于是靶场可以直接用关键字找到encrypt"

JS解密之JS-Forward项目运用

验证效果:

JS解密之JS-Forward项目运用
JS解密之JS-Forward项目运用

多发几次发现校验requestId、sign等信息

JS解密之JS-Forward项目运用

timestamp、requestId、sign生成:【靶场比较简单的】

JS解密之JS-Forward项目运用

按照这套逻辑写py(其实是丢给AI直接帮我写的)

import randomimport hashlibfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import padimport base64import timedef p():    t = "0123456789abcdef"    # 生成一个长度为 32 的列表,列表元素为 t 中的随机字符    e = [t[random.randint(015)] for _ in range(32)]    # 将索引为 14 的元素设置为 '4'    e[14] = '4'    # 根据规则更新索引为 19 的元素    e[19] = t[(int(e[19], 16) & 3) | 8]    # 将索引为 8131823 的元素设置为相同的值    e[8] = e[13] = e[18] = e[23]    # 将列表元素拼接成字符串    return ''.join(e)# 密钥和初始化向量(IV)key = b"1234567891234567"iv = b"1234567891234567"def l(t):    # 将明文转换为字节类型    if isinstance(t, str):        t = t.encode('utf-8')    # 创建 AES 加密器,使用 CBC 模式    cipher = AES.new(key, AES.MODE_CBC, iv)    # 使用 PKCS7 填充明文    padded_data = pad(t, AES.block_size)    # 进行加密操作    encrypted_data = cipher.encrypt(padded_data)    # 将加密结果转换为 Base64 编码的字符串    return base64.b64encode(encrypted_data).decode('utf-8')# 测试加密函数n = '{"password":"1","username":"1","validCode":"20EJ"}'encrypted_text = l(n)print("密文" , encrypted_text)# 获取当前时间的时间戳(以毫秒为单位)r = int(time.time() * 1000)print("timestamp" , r)# 调用函数并打印结果i = p()print("requestId" , i)# 将 r 转换为字符串类型,再进行拼接concatenated_string = n + i + str(r)# 计算拼接后字符串的 MD5 哈希值md5_hash = hashlib.md5(concatenated_string.encode('utf-8')).hexdigest()# 打印结果print("sign" , md5_hash)

运行替换计算得出的结果,可以获得正确返回包

JS解密之JS-Forward项目运用
JS解密之JS-Forward项目运用

运用项目:

此工具使用前提要找到关键的前端加密算法。如上图

如果是https项目可以参考此项目:https://github.com/CTF-MissFeng/jsForward

根据项目要求,安装一下证书

JS解密之JS-Forward项目运用
JS解密之JS-Forward项目运用

正常靶场我都用这个:

https://github.com/G-Security-Team/JS-Forward

使用项目:

JS解密之JS-Forward项目运用

其中输入内容可以从网页获取

JS解密之JS-Forward项目运用

我们就处理一个参数,然后可以输入$end,多个参数请参考文档说明

JS解密之JS-Forward项目运用

结束开始替换JS文件。

JS解密之JS-Forward项目运用

存在两种方法:

1、浏览器直接替换

发现现在没有直接替换的按钮了...我不知道是不是因为我英文不好

JS解密之JS-Forward项目运用

(破案,是我英文不好)(使用edge中国人就看得懂了)

JS解密之JS-Forward项目运用

PS:记得别选错插入的位置,sign值会需要对比请求内容n,所以要在s处理之前插入我们想修改的内容

JS解密之JS-Forward项目运用

替换好,记得刷新一下浏览器。再点击提交

网页不需要监听,直接发包即可,burp就可以看到客户端提交的明文内容了

但是有缺陷,不如自己写脚本感觉。

1️⃣:没有实际URL

2️⃣:返回包没有适配,要做在浏览器自己查看

JS解密之JS-Forward项目运用

修改请求数据可以在burp直接修改

JS解密之JS-Forward项目运用

可以在浏览器看到正式发送的请求数据、返回结果。可以看到此脚本是可用的

请求包:

JS解密之JS-Forward项目运用
JS解密之JS-Forward项目运用

返回包:

JS解密之JS-Forward项目运用
JS解密之JS-Forward项目运用

项目运行截图:

JS解密之JS-Forward项目运用

2、使用抓包工具替换网络建议fiddler但是我的mac没有激活版fiddler..

请参考网络教程,谢谢。

原文始发于微信公众号(NightTalk安全团队):JS解密之JS-Forward项目运用

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

发表评论

匿名网友 填写信息