本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。
文章正文
项目成果
从Web接口越权到APP获取所有商户控制权限。
利用技术、平台
开发者工具:JS调试
加密平台:
http://tool.chacuo.net/cryptaes
https://www.cmd5.com/
第一步获取加密方法越权
进行注册登录操作的时候需要上传身份信息等资料
然后进行查看数据包的时候发现该接口信息利用ID参数那就试试越权
修改userid提示未登录
那就尝试修改dealerId
提示token异常,那这个时候就要看token怎么获取的,首先看到又是数字字母的长度又是32位的,第一反应md5加密,这个时候就去JS文件查找一下。(后续会专门出一篇关于JS加解密的文章)
在开发者工具-源代码-搜索里面直接搜索token,但是出来很多怎么办,我的思路是每个token都下一个断点,只要触发了在进行跟踪
然后搜索到了一个headers.token。中文意思可以理解成headers的token等于后面的参数,这个时候可以着重看看这个点。
断点到这一步的时候,我们可以利用控制台进行调试输出结果,发现果然是我们要找加密方法
然后进行跟踪发现了还用了AES.ECB加密
key:onLineTradeTKAMC
进行跟踪最终得到的加密方式是:data数据>AES.ECB加密hex>md5加密
结果成功匹配上,说明方法正确。
那这个时候我们修改dealerId在进行data数据>AES.ECB加密hex>md5加密
成功越权获取几十万用户身份信息但是只有该接口存在越权,发现还有APP果断再去尝试一下看能不能进一步突破。
第二步APP越权获取用户所有权
直接登录刚刚注册的账号进行抓包
第一反应要遭都是加密,在想会不会是刚刚加密方式呢,想到就去尝试一下
果真是刚刚的加密,那岂不是会有越权。
data数据包里面有2个参数是我们未知的分别是data、token。
data也尝试AES解密
userid在进行解密
就是用户ID,而且加密方式跟Web如出一辙,直接把data数据再进行md5加密
得到了token,那尝试把cookie删除请求看看
一样返回结果了,那岂不是说明身份就是userid。
这个时候在想如何再进一步突破呢,每个接口都要去加解密岂不是很麻烦。
userid肯定是登录成功然后获取到,那修改数据包中的userid后面所有的接口都会用这个userid,那岂不是就等于任意用户登录的效果了嘛。
找到登录成功的返回包把userid替换成10081661,在进行aes加密。
登录的时候账号密码随便输入点击登录再利用burp的功能修改返回包。
直接把失败返回包的数据进行替换。
直接进去来了,不就代表可以控制几十万商户了吗。
完美收工!
技术交流
原文始发于微信公众号(Z2O安全攻防):实战之从Web中危越权到APP高危越权
原文始发于微信公众号(Z2O安全攻防):实战之从Web中危越权到APP高危越权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论