声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
最近收到业务给过来的一个系统,说是客户系统最近做了大的调整,希望通过这次测试找到一些重点的漏洞,好呀,这个重点就很魔性,也就是说要找一些关键性的漏洞咯。好了,话不多说,直接开干。
同样的开局,直接注册账号进入系统,发现系统可测试的功能点真的不多,如下。
![SSO统一认证导致的任意帐号登录 SSO统一认证导致的任意帐号登录]()
标准的统一认证后的首页,不过就是功能比标准少了不少,看了一下企业应用发现刚注册的用户都无法访问,有点意思了。
于是从js中找到一些数据接口,直接拼接,看是否可以绕过这个限制,结果无果。然后简单的看了一下企业个人信息处,尝试了一下越权等测试,依旧无果。
看着这最后一个功能,心里想着该怎么漂亮的和业务解释这个系统很安全的时候,发现这最后一个功能可以打开,跳转到了一个新的系统,于是赶紧查看抓取到的报文,结果真不负有心人,找到了一个有意思的接口。
![SSO统一认证导致的任意帐号登录 SSO统一认证导致的任意帐号登录]()
跳转到新的系统时,获取认证的时候带着userName参数,这里盲猜可能存在漏洞,立即修改userName为其他用户进行尝试,如下。
![SSO统一认证导致的任意帐号登录 SSO统一认证导致的任意帐号登录]()
使用获取到的content替换到下一步登录校验的报文。
![SSO统一认证导致的任意帐号登录 SSO统一认证导致的任意帐号登录]()
然后拿获取到的JSESSIONID值去登录,如下,成功登录其他用户的账号。
![SSO统一认证导致的任意帐号登录 SSO统一认证导致的任意帐号登录]()
由于跳转的系统客户说不让测试,于是测试到这里就结束了,快速输出报告,打完收工。
原文始发于微信公众号(安全无界):SSO统一认证导致的任意帐号登录
评论