Webpack js算法逆向实战学习

VSole2021-10-15 19:30:55

推文开头,先学习一下中华人民共和国网络安全法,大家要做一名合法的白帽子,不要搞事情。

https://www.cto.ac.cn/thread-106.htm

本推文仅用于信息防御技术教学,切勿用于其他用途,有侵权或者存在危害性,请联系我进行删除。

如若文章中有地方描述错误,还请见谅。

作者本人技术和知识都不扎实,仍在学习中。


遇到一个网站,使用了webpack

输入账号密码后,发现密码被加密了。

此时尝试定位该加密算法,并正向爆破。

当前登录的请求接口是/prod-api/auth/login

此时全局搜索该接口

成功找到该接口文件

打开该js文件,通过分析js函数,可知2727行r函数作用是登录请求,2719行o函数作用是加密。

此时设置断点,观察数值变化 

r函数中的t是用户名admine是明文密码123456

此时下一步

密码e通过2728行的函数调用,传递到了加密函数o

加密函数o中,t是明文密码,e是密钥,密钥是2021123456789012

加密后123456的密文是wzGWkli7/KSZszgljZhEng==

通过分析发现,此处的加解密算法的对象名是a,通过调用对象a下的属性,实现的加密。

将这段加密的函数,复制到我们的js文件中

此时尝试去找到a在哪声明的。

通过分析,发现a2717行被声明

并且对象a的值,是由s调用了n中的3452模块。

此时我们要找到n,看n是在哪出现的,我们并把它给拿出来。

因此设置断点直接跟过去。

此时找到了n的声明。

我们将这段声明n函数的代码复制到js文件中,即把分发器复制到js代码中。

并在外部声明一个用于接收分发器值的变量

通过定位追踪 

我们将o值,赋值给用户接收分发器函数返回值的变量。

即在分发器代码的末尾处进行赋值。

此时分发器确定了,这个时候要找分发器调用了哪些webpack的模块。

通过前面的分析可知,分发器调用的第一个webpack的模块是3452

此时全局搜索3452是在哪个js文件下。

此时找到了3452模块,而3452模块又调用了大量的其他模块,因此我们要一一定位。

通过分析后发现,所有的模块和3452模块都是处于同一个js文件中的。

此时创建一个modules.js文件,用于管理这些模块。 将该存放模块的js代码,全部复制粘贴到本地的modules.js文件中。

并设置全局变量进行调用 即var window = global;

并在encrypt.js文件中导入该模块js文件。

并调用加密函数,查看加密结果。

执行代码后,报错,提示n未被定义。

报错的原因是因为,此时分发器的模块调用的结果,并未赋值给n,而是我最开始设置的变量flag,此flag接收了分发器的返回结果。因此我们要把n改成flag

修改后,再次运行

123456在本地加密的结果和在前端加密的结果值是一样的。

此时尝试重复并多次加密明文。

使用nodejs,按行读写passwords.txt

并将密码的密文并输出到encrypt_passwors.txt中。

const readline = require('readline');
const fs = require('fs');

( () => {
    let fRead = fs.createReadStream("passwords.txt");
    let objReadLine = readline.createInterface({
        input: fRead
    });
    objReadLine.on('line', function (line) {
        console.log(encrypt(line));
        fs.writeFile('./encrypt_passwors.txt', encrypt(line)+'', { 'flag': 'a' }, function(err) {
            if (err) {
                throw err;
            }
        });
    });
})();

尝试去解密aes的加密密文,找了半天也没找到调用了哪些webpack的模块,因此解密失败了,太fw了。

jswebpack
本作品采用《CC 协议》,转载必须注明作者和本文链接
timestamp: d}并在第1886行,找到了有关n的声明此时发现password被md5加密后,与pwdkey的值,进行字符串拼接后,在进行一次md5加密。直接搜索pwdkey,并在第27589行,找到了该值,发现该值是不变的。
最近遇到webpack类型的网站越来越多,所以在B站学习了一下,今天来实战一波。
getshell渗透测试
2021-10-08 07:17:58
随着攻防演练愈演愈烈,弱小的我也不得不加入攻防大军的队伍里,而本篇文章就记录了某次攻防演练中的getshell历程。在这次攻防演练中,初步利用工具批量打点无果,作为团队里卑微的撕口子工具人,只能选择一个站一个站硬啃。
0x01 工具介绍功能:协助红队人员快速的信息收集,测绘目标资产,寻找薄弱点。语言:python3开发功能:一条龙服务,只需要输入根域名即可一键化收集敏感信息。具体案例见下文。调用:脚本借用了JSFinderjs内容提取脚本,感谢Threezh1作者0x02 安装与使用为了避免踩坑,建议安装在如下环境中1、 当前用户对该目录有写权限,不然扫描结果无法生成。root权限即可2、Python环境必须是3.7以上,因为使用了异步。建议VPS环境是ubuntu20,默认是python3.8。
它们不是单线程的,这在处理大量文件方面具有优势。此外,JavaScript 开发人员不需要调试这些工具的内部代码。目前,Vite 2.0 正在底层使用 Esbuild 来提供高性能的构建体验。最近,JavaScript 工具生态系统中出现了一个新成员——Bun。Bun 的一个显著特性是它提供了自己的 Node 模块解析器实现,这是最值得关注的优化之一。
现在越来越多的网站前后端分离,javascript代码基本都会使用webpack这样的工具进行打包,打包过后的javascript代码会被混淆压缩,一个js文件就上万行代码,增加了读取javascript源码业务逻辑的难度。
在我们渗透或者漏洞挖掘的过程中,发现越来越多的网站使用webpack技术,开发人员通常会把api路由
前几个月被授权进行某大型运营商的渗透,在过程中也是遇到了一些比较有意思的东
个隐藏的不是很深的站点。该系统域名为test,看来是个测试的环境。?个登录框没有账号,没有密码,爆破?将js.map 下载下来,使?还原02发现新线索翻看代码的信息,在?件发现了注释掉的corpid 和secret信息通过百度搜索CORPID查询官??于保障数据安全的“钥匙”,每?access_token是企业后台去企业微信的后台获取信息时的重要票据,由corpid和secret产?。
VSole
网络安全专家