企业安全测试分享 | 如何通过python模拟前端加密登录 | xxx企业安全测试分享 | 如何通过python模拟前端加密登录 – xxx
菜单

企业安全测试分享 | 如何通过python模拟前端加密登录

十月 30, 2023 - FreeBuf

免责声明本文章中演示的漏洞带有一定攻击性,仅供安全研究与学习之用,风险自负!

传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢

0x01 背景

近期在公司内部对某品牌的路由器进行安全性测试,前端登录的过程中抓包发现密码已经加密过,采用了前端的加密方式,要进行登录密码安全测试的话,无法直接使用 burpsuite 等工具进行包重放测试,自学过一些python编程,使用python模拟登录过程进行安全测试。

0x01 前端加密过程溯源

在登录页面中填入密码进行抓包,可以看到请求中“password”参数已经变为密文。

企业安全测试分享 | 如何通过python模拟前端加密登录

企业安全测试分享 | 如何通过python模拟前端加密登录

打开浏览器的调试功能,在xhr发包处设置断点,数据包发送时可以停顿调试。

企业安全测试分享 | 如何通过python模拟前端加密登录

在OnPOST方法中参数已经被加密,依次向上查看调用栈。

企业安全测试分享 | 如何通过python模拟前端加密登录

在OnLogin方法中password参数的加密方式为 GibberishAES.enc(passwordEl.value, k).replace(/s+/g, ”)

企业安全测试分享 | 如何通过python模拟前端加密登录

AES加密是一种对称加密算法,特点是加密和解密的秘钥为同一个。

企业安全测试分享 | 如何通过python模拟前端加密登录

秘钥在页面源码内,为固定值,可以直接解密得到。

企业安全测试分享 | 如何通过python模拟前端加密登录

企业安全测试分享 | 如何通过python模拟前端加密登录

0x02 调试JS代码

本文章中使用的是python中execjs库来执行JS代码,execjs库的作用是在Python中执行JavaScript代码。它允许开发者在Python环境下调用JavaScript逻辑和功能,从而实现Python与JavaScript之间的交互。通过execjs,Python开发者可以利用JavaScript的强大功能和现有库,拓展Python应用的能力,实现跨语言的灵活互动,以及进行前后端开发的联动与测试。

安装execjs库

pip install PyExecJSj

基本使用

import execjs   # 创建一个JavaScript执行环境 ctx = execjs.compile("""     function add(a, b) {         return a + b;     } """)   # 调用JavaScript函数并获取结果 result = ctx.call("add", 5, 10) print(result)  # 输出:15

前端页面中实际执行加密功能的是AES.js。

/**  * Gibberish-AES v1.0.0 - 2013-04-15  * A lightweight Javascript Libray for OpenSSL compatible AES CBC encryption.  *  * Author: Mark Percival <mark@mpercival.com>  * Copyright: Mark Percival - http://mpercival.com 2008  *  * With thanks to:  * Josh Davis - http://www.josh-davis.org/ecmaScrypt  * Chris Veness - http://www.movable-type.co.uk/scripts/aes.html  * Michel I. Gallant - http://www.jensign.com/  * Jean-Luc Cooke <jlcooke@certainkey.com> 2012-07-12: added strhex + invertArr to compress G2X/G3X/G9X/GBX/GEX/SBox/SBoxInv/Rcon saving over 7KB, and added encString, decString, also made the MD5 routine more easlier compressib

本文作者:, 转载请注明来自FreeBuf.COM

# 渗透测试 # web安全

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51