原文始发于先知(行行行之):SRC另类思路分享:不受限制的资源调用
0x00前言
对于SRC的挖掘思路,很多师傅已经给出了挖掘实用技巧。今天带来一篇本人的思路分享:不受限制的资源调用。
1.进入正题
此处我以某厂商的云服务购买为例,由图可知,需要我们输入姓名、身份证、联系电话等。如果按照我们普通的挖掘思路,此处可能存在的漏洞是不是有SQL、XSS、越权查看他人提交信息、CSRF等等,其实此处可以利用一种新的思路,我称之为不受限制的资源调用。
2.漏洞测试
此处我们先输入自己的真实姓名+身份证号,然后把身份证号的最后一位7,改成5,进行提交,此时可以发现,提示我们需要输入正确的身份证号码,同时Burp没有任何数据包请求,判断此处是前端做了校验,校验用户输入的身份证号是否能够与规则匹配。同时可在JS文件中找到相应规则,此处校验不通过会返回false阻止我们进行提交。
console有如下结果:
所以此时,我们需要把身份证号改成一个正确的身份证号,把姓名也改成正确的姓名,同时进行提交,此时可见,在我们的Burp中出现了我们想要的数据包,包含了我们的姓名、身份证号、联系电话等等。此时我们再将数据包中的6改成5,也就是把真实身份证号又改回去一个不存在的身份证号,然后抓取返回包,可见,此时后端又做了一个验证,告知我们:身份证验证错误。
错误图:
3.原理剖析
此时先不着急往下进行测试,我们先来了解一下身份证验证的原理:
这里我做了一张流程图,假如我此时是一名开发者,我需要给我的APP加上实名验证功能,那么我可以直接去向最上层的那个机构申请接口吗?不能,因为我不是企业,而且我也不是属于它直系应用的开发者。我只能向他的下级,也就是腾讯、阿里、百度这样的企业去申请API接口,同时这些公司会把我们提交的数据,提交给最上层的那个机构,并且根据返回的数据,给我们返回的数据。也就是身份证号验证成功,或者二要素验证不一致。
我们再来说一下直系应用与企业的区别,直系应用去申请二要素验证,一般是不用花钱的。而我们作为个人开发者,或者企业,去调用那个接口,其实是要钱的。我们在网上随便找一些关键字,可以看到,价格其实还是蛮高的。
4.深入理解
那么此时是不是可以利用楼上所示的接口?去做一些事情呢,我这里假设要对别人进行社工,那么他的姓名是XXX,身份证号的后四位或者后六位我不知道,就可以对他进行一个爆破。此时我们勾选上最后四位,然后把数值调整到0000-9999之间,此时根据返回包的长度大小、可判断身份证号码是否正确。
此处可见,我们利用某平台开放的实名认证接口,可以完成我们自己想做的身份证二要素验证,同时由于厂商没有做限制,便可以无限消耗此厂商的资源,从而达到我们的目的。像本文中的二要素验证,以及短信验证,还有活人检测,其实都是基于Money的,在我们的SRC挖掘过程中,也可以去尝试一下这些点。
教程文章仅限用于学习和研究目的,请勿用于非法用途。漏洞挖掘中应遵守SRC中的相关规则。