项目地址: https://github.com/G-Security-Team/JS-Forward
访问靶场:http://39.98.108.20:8085/#/login
加密效果图:
找到加密关键点-"由于是靶场可以直接用关键字找到encrypt"
验证效果:
多发几次发现校验requestId、sign等信息
timestamp、requestId、sign生成:【靶场比较简单的】
按照这套逻辑写py(其实是丢给AI直接帮我写的)
import random
import hashlib
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
import time
def p():
t = "0123456789abcdef"
# 生成一个长度为 32 的列表,列表元素为 t 中的随机字符
e = [t[random.randint(0, 15)] for _ in range(32)]
# 将索引为 14 的元素设置为 '4'
e[14] = '4'
# 根据规则更新索引为 19 的元素
e[19] = t[(int(e[19], 16) & 3) | 8]
# 将索引为 8、13、18、23 的元素设置为相同的值
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)
运行替换计算得出的结果,可以获得正确返回包
运用项目:
此工具使用前提要找到关键的前端加密算法。如上图
如果是https项目可以参考此项目:https://github.com/CTF-MissFeng/jsForward
根据项目要求,安装一下证书
正常靶场我都用这个:
https://github.com/G-Security-Team/JS-Forward
使用项目:
其中输入内容可以从网页获取
我们就处理一个参数,然后可以输入$end,多个参数请参考文档说明
结束开始替换JS文件。
存在两种方法:
1、浏览器直接替换
发现现在没有直接替换的按钮了...我不知道是不是因为我英文不好
(破案,是我英文不好)(使用edge中国人就看得懂了)
PS:记得别选错插入的位置,sign值会需要对比请求内容n,所以要在s处理之前插入我们想修改的内容
替换好,记得刷新一下浏览器。再点击提交
网页不需要监听,直接发包即可,burp就可以看到客户端提交的明文内容了
但是有缺陷,不如自己写脚本感觉。
1️⃣:没有实际URL
2️⃣:返回包没有适配,要做在浏览器自己查看
修改请求数据可以在burp直接修改
可以在浏览器看到正式发送的请求数据、返回结果。可以看到此脚本是可用的
请求包:
返回包:
项目运行截图:
2、使用抓包工具替换网络建议fiddler但是我的mac没有激活版fiddler..
请参考网络教程,谢谢。
原文始发于微信公众号(NightTalk安全团队):JS解密之JS-Forward项目运用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论