响应变参数-挖掘潜在的逻辑越权
开始
对一个网站做测试的时候发现了这样一条请求:
这条请求返回的是个人信息(用户ID、手机号、密码)
{"responseData":{"userid":"用户id","login":"用户名","password":"密码","mobilenum":"手机号","mobileisbound":"01","email":null}}
一开始的想法是变为GET请求(可行),然后增加JSONP劫持的回调参数。。。(失败)
过程
挖不到漏洞怎么办?瞎想,想多了,尝试多了就会有惊喜!后来想到响应变参数的方式。
一开始我尝试的是将返回的JSON内容变为HTTP请求参数的格式,但没成功。
后来一想会不会是因为参数命名格式问题导致的,于是开始了下面的测试。
注意同网站其他请求参数的命名方式
结论:大写、英文
响应变参数
(注意参数值都应为B用户,也就是你需要准备A、B两个用户)
上面所述的返回信息中包含了很多“参数”,可生成如下(这里可以使用我写的一个BurpSuite插件进行转换 - https://github.com/gh0stkey/Json2Dict ):
userid=B用户id
login=B用户名
password=B用户密码
mobilenum=B用户手机号
email=B用户邮箱
整合
B信息+命名规则,最后变成如下的字典:
(F12进入Console使用JavaScript的 str.toUpperCase()
转换成大写字母)
USERID=B用户id
LOGIN=B用户名
PASSWORD=B用户密码
MOBILENUM=B用户手机号
EMAIL=B用户邮箱
结尾
然后Burp Intruder模块开启(使用A用户的凭证去跑),导入字典(这里参数位置在POST请求正文中),Start :
测试结果发现使用LOGIN参数可以成功的从A用户的个人信息越权获取到B用户的个人信息~
评论44次
burp可以抓取response的包,修改后提交完成确权
思路可以 get到新知识点
一些在客户端校验,或者服务端未未二次校验的,改响应包的参数确实有意外收获,但是这种问题一般很少
请教一下:对于用户的凭证(cookie session),原本A的请求的凭证格式是什么样的?在越权的时候凭证的格式修改成了什么?
简单的来说就是你抓了A用户的包,把A用户的包里加LOGIN参数,对应的参数值是B用户的信息,就越权查看到B用户了。
大佬,那一句改为GET请求,增加JSONP劫持的回调参数是什么意思啊,还有修改响应包不行么
应该说的是增加callback之类的参数。
你真是特别关注啊,刚刚查了一下知道了
大佬,那一句改为GET请求,增加JSONP劫持的回调参数是什么意思啊,还有修改响应包不行么
应该说的是增加callback之类的参数。
大佬,那一句改为GET请求,增加JSONP劫持的回调参数是什么意思啊,还有修改响应包不行么
请教一下:对于用户的凭证(cookie session),原本A的请求的凭证格式是什么样的?在越权的时候凭证的格式修改成了什么?
我会说我没看懂吗
看了开头的getUserAuth,以为是尝试构造参数getAdminAuth,不过楼主这个思路也很棒,学到了。
就是看看用户数据中有纳西参数,然后测试有哪些参数可能存在越权?
同感,对参数做权限测试
就是看看用户数据中有纳西参数,然后测试有哪些参数可能存在越权?
key师傅漏洞银行的视频啥时候发布啊
说实话 感觉稍微有点没看明白。。可能我太菜了
首先核心思路是:响应变参数 其次就是准备两个账号 A B ,B的响应变参数放入A用户凭证的请求中 如果A凭证可越权获取B信息,同理也可以获取其他用户信息,遍历下参数就行了。这是越权的测试方法...
上次就想问下 这里的使用A用户的凭证去跑 指的是A的useridloginpasswordmobilenumemail 吗
A用户的凭证(cookie session) B用户的响应变参数放入带有A凭证的请求 然后跑
这个是只知道login这个参数就行吗
上次就想问下 这里的使用A用户的凭证去跑 指的是A的userid login password mobilenum email 吗
说实话 感觉稍微有点没看明白。。可能我太菜了
爆破账号密码直接登录不可以吗
思路不错