记一次破解某app的心路历程 | laravel china 社区-江南app体育官方入口
说实话,在写这篇博文前,我很纠结,担心会不会被查水表。由于已经和app所属的公司客服沟通过贵公司的app存在很严重的安全漏洞,但是得到的答复很敷衍,所以在这里公开分享自己的破解过程(以下部分内容由于涉及到隐私以及相关用户信息所以做了打码),纯粹为了技术探究,并引起相关公司的重视,切勿恶意根据文章内容肆意破坏相关单位权益。
相关工具:
charles,google浏览器
1.通过charles抓到app相关页面,抓取过程省略,下面放下已经写好的代码片段
其中抓取到用户排行榜的页面,话不多说,直接用google浏览器->f12->查看返回的数据结构和信息
是谁给了你这么大的勇气直接明文返回了用户的这么多信息。通过分析,用户的pwd即用户的密码使用md5加密的,虽然我们都知道md5加密是不可逆的,但是现在网上很多解谜库,大概率可以逆向破解成功。直接放图
用户的手机号和密码都掌握了,直接可以登陆app,不过没有登陆过app,怕查水表,就不演示了。
上面还只是初步的探索了一下,就很容易的窃取到了用户的相关敏感信息。
重头戏来了。
接下来分析了这个页面所加载的js文件,发现app前端后端通信所用的加密方式竟然是aes-128-ecb,且直接写明了加密所需要的加密密钥
这项目是外包出去的吗?
获取到了密钥之后,接下来就可以通过逆向解谜前端传给后端的参数了,通过上面charles抓取到的相关接口,我随意找了一个用户登陆的接口,通过密钥,逆向获取到了前端的明文传参,下面是我临时写好的模拟传参
通过测试,是能够模拟app用户登陆的。那接下来这个app的所有的接口我都可以进行模拟了。目前已测试了app很多功能都可以进行模拟,说句夸张话,可以模仿这款app的ui,使用这款app的所有功能模块进行开发了。
下面是我模拟该app的邀请新用户注册后返回优惠券的功能:
总结:用户的信息安全是一个企业的重中之重,如果一个企业的用户信息能这么容易的被窃取,那么这个责任在于谁呢?仅已此博文能够得到相关企业的重视。
本作品采用《cc 协议》,转载必须注明作者和本文链接
开门,查水表
建议再写一篇文章来介绍 :grin:针对上面的漏洞如何做优化
很多app获取接口信息是很容易的,但是密码也在接口中返回,这个不应该被原谅
拿不到后端代码,模仿从何谈起,除了能干点坏事以外,连给自己加点账户余额都不一定能行 :smile:
多年经验,小应用都这样,楼主提醒了大家,以后返回字段小心些(我才不会返回加密那些字段)。
防范此类应该用接口签名:
前端:用参数 appid(应用标识符) 时间戳 签名(所有参数升序/降序后转为字符串,用appid对应的secretkey做盐来加密)
服务端:用中间件,有带签名的参数就验证,解密失败了返回错误信息,解密成功就不用管了。
看完之后有没有背后已凉....满脑壳在回忆自己写过的项目..... :joy:
说白了 还是后端么做好权限的处理 返回敏感字段
fbi, open the door!!
@martian 你为什么可以发语音
大部分的态度还是
aes-128-ecb 是对称加密吧
估计外包写的·