freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

企业安全测试分享 | 如何通过python模拟前端加密登录
aboood 2023-10-27 14:31:01 203865

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

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

0x01 背景

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

0x01 前端加密过程溯源

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

1697526760_652e33e8ac1479614d61e.png!small?1697526760474

1697526805_652e34158bbe61143cd59.png!small?1697526805374

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

1697526915_652e34839bcce694b1482.png!small?1697526915467

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

1697527038_652e34fe216bada5e15d1.png!small?1697527037922

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

1697527124_652e355452dbaa15e2de3.png!small?1697527124082

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

1697527522_652e36e210cc3dbee4ab0.png!small?1697527521759

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

1697527704_652e37985b43cbb7b211b.png!small?1697527704102

1697527751_652e37c7c18099ef7ee13.png!small?1697527751416


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
可试读前30%内容
¥ 9.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# 渗透测试 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 aboood 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
aboood LV.4
这家伙太懒了,还未填写个人描述!
  • 15 文章数
  • 20 关注者
JAVA代码审计3·某XXX博客系统
2023-10-02
JAVA代码审计2 · 某XXX网络考试系统
2023-09-18
JAVA代码审计1 · pb-cms(瀑布内容管理系统)
2023-09-13
文章目录