本文重点在提供一个逻辑思路。
国内一个开源的PHP框架,在后台存在管理员凭证泄露漏洞,可通过简单操作来得到管理员凭证,再接着使用管理员凭证为自己添加管理账户,从而后台失守。这个系统后台getshell的点比较多。
因为是开源框架,很多人都盯着这个系统,这个系统一个高危奖金都很高的,想要直接攻破这个系统可谓是非常的难,只能是看看有没有其他的方面。只能是靠组合漏洞来打穿了。无聊中在后台胡乱的点击,突然页面发生了跳转,而且在URL中还携带了一个字符串。
这个跳转发生在了后台的友情链接管理的地方。这里是管理员可以直接点击的跳转,所以实现起来相当的容易。链接后面所携带的字符串正是该系统为了防止CSRF所添加的随机字符串。也就是我们得到这个字符串就可以使用csrf了。
这个漏洞点找到了,那么怎么去实现呢,不可能有管理员直接去添加友情链接吧,那么只能是从前台入手,正好可以看到前台存在友情链接申请的功能。那么整个利用链的起点就有了。
那么我们直接写一个接受字符串的页面放到我们的服务器上,用于接收管理员凭证。
然后我们现在直接将我们这个页面的地址以申请链接的方式提交到后台,让管理员去审核这个链接。
现在就等待管理员去审核了,我们模拟管理员操作,后台已经出现了这个链接,就等待管理员去审核这个链接。
当管理员点击这个链接的时候,我们可以看到在我们的服务器上接收到了一个字符串,没错这个字符串就是后台为了防止CSRF而设置的字符串,并且这个字符串在一次登陆成功之后一直有效。
这样的话我们就可以随心所欲的去使用csrf去做任何事情了,比如说我们想去添加一个管理员账户,我们就直接构造CSRF界面。
这里我们可以看到在添加管理员的数据包中出现了我们刚刚得到的字符串,这个字符串就是防攻击的字符串,我们这里直接使用刚刚得到的凭证构造好之后,模仿提交友情链接的方式让管理员访问,那么我们就可以添加一个管理员。
有了后台的权限就可以利用多种方式去深挖了。有兴趣的可以自己去探索一下。