前言
它山之石,可以攻玉。DSRC课程会定期邀请一些嘉宾进行安全技术分享,希望大家在切磋交流的同时,有所收获不断进步。

本期嘉宾
土夫子-DSRC榜首白帽,低调谦和帅锅一枚,尤其擅长爆破和逻辑漏洞挖掘。本期DSRC课程,很荣幸邀请到了土夫子,为大家进行爆破技术分享。

相对于xss、sql注入、二进制,爆破学习门槛更低,实施成本更容易,这也是爆破的魅力之一。接下来夫子就和大家分享一下关于爆破的那点事,如有遗漏、描述不当之处,感谢师傅们文章底部留言交流。以下是分享框架:

ddd

 

一、漏斗流程

很多时候,无论是对第三方做授权渗透测试,还是对自己公司业务做测试,我们都无法拿到精准的账号,这个时候就需要安全人员自己去想办法获取精准的账号列表。

如何获取呢?在我看来,获取精准的账号列表,如漏斗形式一样,都是由大到小
“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处导出域名,观察有无新后台上线

 

后记:土夫子下期滴滴专稿内容预告——《逻辑至上》。