首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

客户端JavaScript本地加密破解

在分析客户端本地加密破解案例之前,有必要先抛出“明文传输”这个问题。明文传输问题常出现在web应用测试场景,在客户端与服务器之间,采用HTTP、FTP及Telnet等非通道加密协议,未对数据做任何其他加密处理。敏感数据直接以明文方式传输。为了避免此问题影响,可以采用HTTPS协议进行通道加密。尽管大部分Web应用已转向HTTPS协议,但攻击者依然能够在局域网中对HTTPS流量进行中间人攻击,通过嗅探的方式窃取用户敏感信息。因此,在HTTPS加密通道中的二次加密技术出现。

开发人员在实现二次加密需求时,会考虑利用客户端本地JavaScript技术对用户名、密码等敏感信息加密后再发送到服务器端,通常会采用base64编码、md5摘要、对称加密、非对称加密、自定义加密等方式对数据进行“加密”处理。但是base64编码这种处理,极其容易还原出明文数据。本测试案例重点介绍对称加密及自定义加密情况下,如何破解加密技术,篡改传输数据达到攻击的目的。

案例一

加解密方法如下:

针对将密钥和加解密方式写到JavaScript这种情况,可在浏览器的console控制台直接调用加解密函数:

接下来即可对登录进行暴力破解,这里做下延伸,常见的Web登录暴力破解有三种模式:

1、固定账号对密码暴力破解

2、在得知账号呈现一定的规律性,或者通过其他方式获取到大量账号的前提下,固定密码(通常设置为弱口令)对账号进行枚举

3、撞库攻击

该场景下已知账号呈现一定的规律性,适合采用第二种模式进行暴力破解:

第一步,根据上述方式调用解密函数解密登录数据:

{"type":"dlyz","openId":"o1vECuFzn****pDcXU6yThrbk","accountType":"C","account":"10**00***87","password":"12****","valid_code":"","trdpwdjtws":"","logintype":"0","mth":"Weixin_CMD"}"

修改account为不同的值之后,再根据上述方式调用加密函数对登录数据加密,得到暴力破解所需的字典,这里建议写个脚本批量处理,以下是暴力破解的结果,返回长度为1010和1004的均是登录成功。

案例二

开发人员采用自主研发的加密算法(简单的字符替换),对所有的请求和响应都进行了加密处理,所有请求都通过POST请求的encode参数发送至服务器端,例如退出登录的请求如下:

在前端JavaScript中找到加解密代码如下:

代码定义了一个数组,用于存储一些字符串的ascii码。将数组第i位的数字c取出,若不为0,则将i对应的ascii码转化为字符串ic。并将第i位对应的数字c转化为字符串,并与ic构成加密字典encodeArray(此decodeArray与encodeArray相同)。例如,数组第25位对应数字47,ascii码25对应字符“%”,ascii码47对应字符“/”,因此形成字典“%”:“/”,以此类推构成encodeArray和decodeArray。

encode函数处理过程是将数据中的每一位进行分割,并通过encodeArray查找对应的密文,完成加密。

因此,可以编写逆算法脚本,根据字符替换关系进行逆向替换,从而得到明文数据

使用该脚本对密文进行解密,如下图所示:

对明文数据篡改后,再调用加密函数完成篡改后请求的加密,即可继续进行暴力破解、SQL注入、越权等各种漏洞的测试。

小结

针对明文传输问题,首先建议采用HTTPS协议进行通信。若采用本地加密的方式,建议使用非对称加密算法。HTTPS协议也是非对称算法安全交换密钥的重要保障。

小贴士

防御数据篡改攻击,除采用加密方式之外,还可使用数据签名机制防止数据被篡改。

而对于暴力破解攻击,建议从以下几个方面进行防御:

1、账户锁定

账户锁定是很有效的方法,因为暴力破解程序在5-6次的探测中猜出密码的可能性很小。但是同时也拒绝了正常用户的使用。如果攻击者进行暴力破解是建立在用户名探测成功之后的行为,那么会造成严重的“拒绝服务攻击”。对于固定密码对账号进行枚举这种模式,账户锁定是无法防御暴力破解攻击的。服务器端对已经锁定的账户并不返回任何提示信息,可能迷惑攻击者,但用户体验会有所影响,因此需要寻找安全和用户体验的平衡点。

2、封锁多次登录的IP地址

这种方法也是有缺点的,因为攻击者可以定时更换自己的IP。

3、验证码

验证码是阻止暴力攻击的好方法,但存在设计缺陷的验证码是可以绕过的,开发人员在编码时应考虑该风险。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180713G19QAK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券