这个漏洞比较有意思,我甚至没有成功登录进去目标站点,这个站有什么功能还不清楚,就花了大概10来20分钟吧,喜提一个高危(虽然是个边缘站,也是也够出去吃几顿大餐了~)。只需要比别人多走一点点~
0x00 尝试
首先是信息收集,这部分就不细说,大家都有自己的熟悉的信息收集手段(我是使用自己写了个脚本整合了几个工具跑的 ),发现了一个疑似后台的网站,某某后台管理系统。这不得干它?
首先尝试了一下弱密码,失败。而且所有登录、验证码等操作,全部都有行为验证,爆破或并发之类的都可以放弃了。也没有注册入口,甚至连找回密码都没有,看起来已经没得搞了?
0x01 FindSomething
FindSomething很多师傅都用过,一般我们可能会有如下操作:
-
找敏感信息,比如手机号、ID或key之类的
-
找算法,看看这个站都用到了什么加密算法
-
找未授权接口,把里面的path拿出来在浏览器跑一遍,看看有没有未授权接口
我就是使用的第三种方式,通过path寻找未授权路径,但是!如果只是简单跑一遍就可以跑出高危未授权,这又哪轮得到我来捡这个洞呢?
所以真实的情况是,我拿着所有path跑完发现基本上全是错误,要么提示未登录,要么Server Error,要么返回405。
0x02 再多走一点点
上面这一波下来,可能有些师傅已经放弃了,站点进不去,FindSomething跑出来全是错误,那怎么办?
其实如果对开发有一定了解的话,应该知道,上面跑path的时候,其实跑出了不少信息,因为它返回了3种类型的错误提示:
-
未登录
-
Server Error
-
http状态码405(请求方法不对,比如服务端接口是POST请求,而我们使用GET方法访问)
这不是很明显有机会了,如果所有接口都校验了权限,那应该全部返回未登录或405,而不应该存在Server Error。
所以这很有可能是接口没有权限校验,进入了接口逻辑处理阶段,但是由于参数错误或其它原因处理异常了。
马上过滤返回Server Error的路径,有一些从名称上来看就不太可能带有敏感信息的就过滤掉了,但是有一个路径是xxxx/manager/finance/overiview
,这个必须得搞一下啊。
一般情况下,路径里面带有admin、manager、super之类的,很大可能都是管理接口,权限都比较高
那又到了分析JS阶段了,通过对应的path,在JS中搜索,找到它的调用方法,发现它的参数是tenantId:
那看起来这个接口就是获取对应租户的财务信息之类的,直接fuzz,然后拼接起来请求一波,果然,ID是4位数ID,返回了所有租户的财务信息:
0x03 总结
这个站自始至终都没有登录进去,也没有获取任何弱口令,就是很简单的通过FindSomething + 分析JS找到的未授权接口,大概20分钟不到。所谓的多走一步,可能也就仅仅只是简单地分析了一下请求结果,然后通过JS文件找了一下参数。但是越简单的方法,越实用。
PS:后面可能会聊一下怎么在不懂JS的情况下,在茫茫多的被混淆的JS文件中找到我们想要的东西。
最后:大家有兴趣也可以关注我的同名公众号,获得最新推送~