本文记录了一次水平越权的全过程,大致发生了如下:
修改post参数,导致越权查看和删除;
修改路径(REST风格参数),导致越权修改;
修改cookie字段,绕过登录实现未授权访问;
越权编辑植入xssPayload,获取完整cookie。
好了,开始虚构。
注册登录进入个人中心,一通胡乱测试,发现可通过修改参数来越权查看或修改任意用户资料。这里就拿教育经历做演示吧。
1、先创建,再修改。
2、抓包拦截重放,通过infoId去引用对象,返回用户信息,并进入编辑状态。
3、请求包中通过infoId参数引用对象,sql注入无果,尝试修改infoId值,引用对象成功,返回其他用户信息。删除时修改post参数值同样可越权删除任意用户信息。
4、继续编辑自己的自我评价,点击保存。发现前面infoId的值跑到路径中去了,也尝试修改一下(注意这里涉及修改了,就不要随意修改了,可以尝试修改另外的测试账号的内容)。
5、返回修改成功(去目标账号中刷新,发现资料确实被修改了)。
6、为什么路径也能作为参数测试点呢,因为这里使用的是REST风格参数。参考链接:https://blog.csdn.net/weixin_44750790/article/details/118195473
前面一顿操作,一直没能获取到手机号邮箱等敏感信息,结果发现这些基本信息的编辑使用的不是同一套流程,为了能扒出来,就有了下文。
1、下面是预览资料的请求,没看到get/post参数啊,自然不存在“不安全的直接对象引用”这类越权漏洞。
很明显是通过cookie鉴别的,又这么多字段,一般这种我都不考虑越权(头不够铁),不过乍一看cookie中字段值貌似都为base64编码。竟然都是base64编码的,这!
2、控制变量法,逐个字段删除,找出有效的字段(删除某个字段,页面无变化说明该字段是无效字段,相信大家都知道这个技巧)。一番删除操作,只留下了 career_id 这个字段。重放返回该个人资料,修改删除该字段便异常,说明服务端仅校验该字段。
仅校验一个字段,看似使用是简单的base64编码,不错不错!
3、解码看看,5160397估计就是该用户id了。
4、通过Burpsuite的Intruder模块遍历career_id字段,抓个别的id看看。
5、使用该id,成功越权访问到该用户的个人简历信息。
6、接下来,复制该cookie替换掉自己浏览器中的cookie,成功绕过登录,未授权访问其他用户个人中心,且可进行资料编辑删除等操作。
正经的越权到上面差不多就结束了,下面就是利用的“歪门邪道”了。
1、进一步摸索发现,其实仅仅是个人中心的访问凭证是只校验 career_id 这一个字段,其他页面还校验了更多的cookie字段,只有校验通过才可访问更多页面查看岗位信息、投递简历等操作。
2、其实吧,编辑资料这里还存在个存储型XSS。简历编辑页的存储型xss,基本是个self-xss无疑了,一般谁能访问到我的简历编辑页。
3、竟然都能越权编辑他人简历了,那我们是不是可以在编辑别人的简历的时候向其中植入xssPayload,一套“越权 + self_xss”组合拳。
另外,不难从前面的请求包中看出,这些资料编辑操作,一定是存在CSRF漏洞的。那么,又一套“CSRF + self\_xss”组合拳。当然,CSRF肯定不如我们越权编辑稳当。接下来就等目标访问了......这里就简要分析下思路,就不做演示了。
总结一下测试水平越权漏洞的基本思路:
控制变量法删除参数或cookie字段,找到有效参数或cookie字段;
尽可能的对参数或cookie字段去模糊化,再进一步测试;
修改参数值或cookie字段,对增删改查等操作进行越权测试;
越权结合其他漏洞提升危害等级。
越权漏洞也可以结合Authz这类burp插件来测试,不过一般都局限于查看操作的越权。
原文链接:https://www.freebuf.com/articles/web/334522.html
学习更多技术,关注我: