前言
它山之石,可以攻玉。DSRC课程会定期邀请一些嘉宾进行安全技术分享,希望大家在切磋交流的同时,有所收获不断进步。
本期嘉宾
土夫子-DSRC榜首白帽,低调谦和帅锅一枚,尤其擅长爆破和逻辑漏洞挖掘。本期DSRC课程,很荣幸邀请到了土夫子,为大家进行爆破技术分享。
相对于xss、sql注入、二进制,爆破学习门槛更低,实施成本更容易,这也是爆破的魅力之一。接下来夫子就和大家分享一下关于爆破的那点事,如有遗漏、描述不当之处,感谢师傅们文章底部留言交流。以下是分享框架:
很多时候,无论是对第三方做授权渗透测试,还是对自己公司业务做测试,我们都无法拿到精准的账号,这个时候就需要安全人员自己去想办法获取精准的账号列表。
如何获取呢?在我看来,获取精准的账号列表,如漏斗形式一样,都是由大到小
“1000万用户名测试-->经过验证100万账号真实存在-->1万个账号成功登录”。
首选要做的第一步就是验证账号是否存在,一般我的思路是拿一个几百万的拼音用户名字典去挂载到burp扫描,然后观察http返回状态码。
拿到精准账号列表后,再进行进一步测试,观察密码规则。
拿一个存在账号登录,观察是否要求使用特殊字符/数字/密码位数;
观察账号锁定机制,同一个账号输入密码多少次会被锁定,锁定时间是多少。
获取一个系统或者一个公司的精准账号列表,途径多种多样,一般包括如下几个方面:
邮箱:现在无论是市面上的企业邮箱,还是公司内部自建的OWA,几乎都能通过大型用户名字典撞库确定存在用户名。
公司系统:
夫子主要通过三种途径发现公司系统。
1、子域名爆破,通过子域名爆破的方式获取公司存在域名,得知系统用途;
2、搜索引擎,如搜索引擎下的site命令使用,获取指定域名下的子域名,该命令除了能给你提供大量子域名,还能给你发现系统未授权的惊喜;
3、网页title获取,说简单点,就是扫描一个公司整个网站所在网段ip的开放端口,然后通过脚本去跑一下所有开放端口web页面名称,不要小看这个功能,很多公司的后台、测试后台,都是通过ip+特殊端口直接对外提供服务的。通过这三点找到系统后,都可以验证哪些账号存在。
第三方业务平台:
举个很简单的例子,hr都给自己员工在某订餐平台开启了账号,以便实现自助订餐,使用的均为公司邮箱。假如,恰好订餐平台登录时web页面直接提示账号不存在,由此我们是不是可以轻而易举的获取到hr公司的员工账号列表了?!
其它业务接口:
如app内嵌的一些后台、h5页面,笔者在进行授权安全测试的时候就经常碰到这类问题,pc版本的页面无懈可击,但是用手机浏览器访问同一后台时就被自动适配到了h5页面,h5页面没有任何认证安全防护措施(多数无验证码、任意破解)。
用户名字典比较庞大,一般分为如下几类:
常用姓名top100w的拼音、lyy(三位26个字母组合)、liyy(姓氏排行top100的拼音+26字母)、liyy01、bjliyy、bjliming。
最近几年由于app发展的火热,导致很多app注册时使用手机号作为唯一账号登录,所以手机号也是用户名字典。
键盘习惯:如1qaz2wsx、1qaz@WSX、1234qwer
企业域名+数字:
google123、google@123、google.com@123 、Google@123
姓名123组合:
如liyy123、liyy@123、liming@123!
hash值:
比如密码123456的md5或base64值
已公开泄露的密码库:
这个很容易理解,不少被泄露出来的密码库。
WAF:能有效的防止扫描频率
验证码/二次验证:
系统登录接口处增加签名、验证码等功能
内部定期扫描:
定期对内部系统、数据库表中密码字段弱口令扫描
域名定期导出扫描:
定期从dns处导出域名,观察有无新后台上线
后记:土夫子下期滴滴专稿内容预告——《逻辑至上》。