记一次src挖掘过程中遇到的前端js加密爆破

开局一个登录界面,由于测试其他系统的时候感觉这个系统的口令强度整体做的比较弱(其他系统也有存在弱口令的情况),就想着对这个登录进行爆破

首先要测测这里的验证码验证机制是真还是假的,测试发现对于同一个验证码是可以重放不同用户名密码,这就为后续提供了条件

我们先随机填一个账户密码抓包

发现用户名密码都做了加密处理,之前爆破这里都放弃了,现在重新审视一下。

得知加密字段是txt_Name txt_Password,在前端js搜索一下这两个字段

成功搜到了相关加密代码

if (checkResult) {
        txt_Name = encrypt(xssFilter(txt_Name));
        txt_Password = encrypt(xssFilter(txt_Password));

得知这里使用了encrypt函数对密码用户名进行加密,xssFilter可以忽略,是对一些特殊字符的过滤

到这里试试了网上很多的方法没有成功,不知道是环境问题还是哪里。

我也一点也不懂前端js技术,思考了一下html文件的大致逻辑,html引用一系列js文件,这里

<script src="Js/jquery-3.1.1.min.js"></script>

的代码就大致相当于php中的文件包含,将js引入这个html文件,那我们能不能直接将网页中的所有js文件下载下来,然后利用本地的html文件引用,本地html文件再调用js中的加密函数。
理论可以,我们开始实践

由于我不会js以及html的编写,这里向chatgpt说了一下我们的诉求,生成了对应的html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件加密</title>
<script src="jquery-3.1.1.min.js"></script>  //这个部分引入网页的所有js文件
    <script src="crypto-js.js"></script>
    <script src="decrypt.min.js"></script>
    <script src="Login.js"></script>
<script>


    function handleFileSelect(event) {
        const file = event.target.files[0];
        const reader = new FileReader();

        reader.onload = function(e) {
            const content = e.target.result;
            const lines = content.split('\n');
            let encryptedLines = [];

            lines.forEach(line => {
                const encrypted = encrypt(line.trim()); //修改你的前端加密函数名称
                encryptedLines.push(encrypted);
                console.log(encrypted);
            });

            // 将加密的结果输出到一个新的 txt 文件
            const encryptedContent = encryptedLines.join('\n');
            const blob = new Blob([encryptedContent], { type: 'text/plain' });
            const url = URL.createObjectURL(blob);
            const link = document.createElement('a');
            link.href = url;
            link.download = 'encrypted.txt';
            link.click();
        };

        reader.readAsText(file);
    }
</script>
</head>
<body>
    <input type="file" id="fileInput" onchange="handleFileSelect(event)">
</body>
</html>

使用方法是我们首先下载网页的所有js文件,然后引用的这个文件中(这个操作可以使用右键保存网页批量下载),并且我们要知道前端加密数据的函数名,修改html文件中的函数名(位置在代码中以及标出),比如这里就是encrypt

然后我们打开这个网页

选择一个用户名字典

网页就会自动下载加密好的文本文件

这里加密之前的字典是一行形式的,接着我们就可以直接导入burpsuite中字典进行爆破

综上就可以实现无需前端逆向知识,无需js文件编写知识实现对前端js加密爆破绕过的一种方法,对我这种小白很友好,文章技术含量也很低,仅仅提供一种便捷简单的方法,感谢阅读

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值