问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
小程序安全 | 对某次渗透项目加密密文进行解密
渗透测试
转载来自微信公众号“云雾安全”的《小程序安全 | 对某次渗透项目加密密文进行解密》 原文地址:https://mp.weixin.qq.com/s/oCTCu0nID3xHodxfBcgfSQ
接到某个项目进行渗透测试时,每个人都有自己的习惯,大部分师傅都会从擅长的方向开始,而笔者个人比较偏向小程序的测试。小程序相对于主站资产站点缺少些关注度,且其维护程度可能会不及核心站点,容易存在较多的问题。 当打开小程序点击其他功能点的时候发现参数被进行加密了,这时候考虑反编译一下小程序获取其前端代码,尝试找到小程序传参加密代码。  对小程序进行反编译后得到其前端代码之后,使用**微信小程序开发者工具**进行查找,尝试从代码中搜索出常用关键字**encrypt也就是常见命名的加密函数**。 **反编译后的众多文件中,app.js文件中包含着小程序核心功能代码,而其他的js文件绝大多数是额外引用的第三方库,从app.js入手则可以成功定位到encrypt**。  发现加密关键字与流程之后,跟进对象 o,获取其调用的JS文件为A6F17FD27F6C38AFC09717D525323F76.js  查看文件A6F17FD27F6C38AFC09717D525323F76.js内容,再次定位关键字“encrypt”,成功找到其参数加密函数。   加密函数如下: ```php r.encrypt = function(t, e, i) { return function(t, e, i) { var n = r.enc.Utf8.parse(t); return r.AES.encrypt(n, e, { iv: i, mode: r.mode.CBC, padding: r.pad.Pkcs7 }).ciphertext.toString().toUpperCase(); }(t, e, i); }, r.decrypt = function(t, e, i) { return function(t, e, i) { var n = r.enc.Hex.parse(t), s = r.enc.Base64.stringify(n); return r.AES.decrypt(s, e, { iv: i, mode: r.mode.CBC, padding: r.pad.Pkcs7 }).toString(r.enc.Utf8).toString(); }(t, e, i); }, module.exports = r; ``` 从加密代码分析得知,**其小程序参数加密采用的是cbc模式,pkcs7填充的aes加密**。 而aes解密函数第一个参数s是明文,第二个参数e是密钥,i是iv,尝试跟进e,发现e是传进来的,那就只能搜一下key试试看。  **继续跟进n,查看调用1F03AD467F6C38AF7965C541D7123F76.js的内容**  成功找到key和iv值  剩下的过程就是利用其加密js文件进行调试,传入加密所需要的key、iv与测试时抓取的密文,成功解密出其参数的明文信息。  - - - - - - 解密成功密文后接下来跟常规渗透测试无区别了。 - - - - - - 文章相关备份与快速利用笔记已经上传到公众号资料网盘(持续更新中)  
发表于 2023-01-10 09:14:33
阅读 ( 9268 )
分类:
WEB安全
3 推荐
收藏
0 条评论
请先
登录
后评论
云雾安全
2 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!