Web攻防之暴力破解

1 @序

攻防之初,大多为绕过既有逻辑和认证,以Getshell为节点,不管是SQL注入获得管理员数据还是XSS 获得后台cookie,大多数是为了后台的登录权限,假若我们获得一枚口令,都是柳暗花明。不管口令复杂与否,只要在构造的字典内都是爆破之结晶。

Web形态及业务之错综,我们暂可将能够自定义字典的请求归类到爆破,以便信息的提炼和知识的逻辑推理。

本文主要收集了常用的一些爆破相关的零碎点和技巧点。

2 账户探测

1.探测存在与否

2.第一梯队:Top500用户名、手机号

3.第二梯队:邮箱、员工编号

3 指定口令爆破用户名

1.指定类123456口令爆破用户名

2.正常的top500,top10000帐号;

3.单个字母、两个字母、三个字母、四个字母随机组合的帐号;

a)小工具pydictor值得推荐

python pydictor.py -base L --len 2  3

b)Burp也可以

4.一位数字、二位数字、三位数字、四位数字的随机组合

for n in xrange(10000):
print str(n).zfill(4)

5.厂商名相关帐号

a) 如:facebook、fb_steven …

b) 页面联系邮箱的规则学习及自创建

4 密码爆破

1.top500, top3000,top10000,自定义密码

a)Top 系列,几乎安全从业都有自己的弱口令字典,常规就好,太大的字典跑起来也费劲,关键是定制

b)定制字典,pydictor值得推荐:https://github.com/LandGrey/pydictor

c)社工库的使用,指定用户的历史密码,是一种尝试

2.厂商特色口令生成,如baidu@123

a)适用于应用管理员类人员以及主机协议类密码

b)更多定制类字典也可以pydicor

c)http://www.cnblogs.com/shellr00t/p/5316401.html

3.加密密码暴力破解

a)普通编码类,如base64

b)自定义加密算法(目标系统使用了可猜测的加密算法去加密口令)

可参考浮萍写的基于RSA算法加密口令后爆破脚本:

https://github.com/fupinglee/MyPython/blob/master/web/RSADemo.py

c)Selenium 自动浏览器提交模块(可适用与不明加密算法,模拟正常操作流)

详细代码过程参考我博客:

http://sm0nk.com/2017/11/27/%E5%9F%BA%E4%BA%8ESeleinum%E7%9A%84%E5%8F%A3%E4%BB%A4%E7%88%86%E7%A0%B4%E5%BA%94%E7%94%A8/

4.弱文件后的后台爆破

a)弱文件爆破获得后台

b)后台密码爆破

i.各大中间件及CMS的口令破解,如weblogic 、tomcat

ii.自定义后台的密码破解

5.Webshell 密码爆破

a)Shell 发现(弱文件以及蛛丝马迹)

b)Shell 爆破(有专用工具,也可用burp完成)

6.辅助信息

a)Web 源码、JS 以及注释信息中是否包含用户名以及口令指定规则

b)技术运维人员的桌子上面的便签信息(若能接触到目标内部)…

5 登录验证码爆破

1.验证码绕过

a)验证码非必须参数,可省略

b)验证码不失效,可多次使用

c)验证码问题集合答案有限,可以遍历后破解

d)非空逻辑校验,验证码置空 或 去掉校验参数的请求

e.g. ecshop后台暴力破解验证码绕过

2.简单验证码识别

https://github.com/fupinglee/CrackCaptcahLogin/releases

类似工具很多,看使用习惯。

3.高模糊度验证码识别

a)一般的识别流程都是二值化、去干扰、区域选择、OCR识别

b)可用云打码平台 (不打广告)

6 短信/邮箱验证码爆破

1.部分登录验证码的分类也可适用于此

2.验证码的本身绕过

a)返回包回显(包括返回包、输出在cookie等)

b)JS控制

c)返回包控制:True&false控制(0&1),修改返回包可绕过

3.4位数字,验证码爆破,很快

4.6位数字,验证码爆破;可根据多线程的前提进行多进程处理,0-199999一波;200000-399999一波…(依次类推);也可以看频率,哪块区间分布的概率较高可重点关注;也可以指定前一位或两位进行爆破。

5.弱token

a)例:奇虎360任意用户密码修改漏洞,发送给邮箱的验证链接里面的vc值为时间戳的md5加密;作为一种检验参数可被猜测。

b)基于密码找回的手机号、UID、邮箱等遍历,结合客户端源码可能的些蛛丝马迹

c)不完全属于爆破逻辑,但可互补增值,参考

http://bobao.360.cn/learning/detail/287.html

7 数据信息爆破(遍历)

1.关键参数的的信息遍历(select)

a)包括用户名

b)ID号

c)手机号

d)邮箱

e)身份证号

f)订单号

g)银行卡

h)信用卡(e.g 携程乌云漏洞)

i.PAN+信用卡到期时间(即:最小的身份验证模块);

ii.PAN+信用卡到期时间+CVV;

iii.PAN+信用卡到期时间+CVV+持卡人地址;

iv.From http://t.cn/Rfrsdki

i)…

2.批量注册(insert)

a)逻辑不严谨或校验不严格,实现多帐号的薅羊毛

3.一套组合拳(也可关联到爬虫):

a)两个常见的功能:密码找回、网站论坛

b)切入点一:从密码找回功能分析,有相当一部分网站,提供账号检测功能,且提示存在与否,根据友情提示以及次数限定情况,可以通过返回包匹配存在的帐号,包括用户名、甚至手机号(其实主要是手机号)。

c)切入点二:密码找回功能,输入手机号后会提示…正在找回XXX的密码信息…,这个就是用户名,(若输入用户名,有可能提示正在找回某手机号的密码信息(部分打码))

d)切入点三:网站论坛,为了交流,以及用户的活跃度,部分网站存在bbs、club等论坛信息,一般二次开发的Discuz 。 上面会存在关于个人的一些数据,比如用户名(论坛网名)、性别、粉丝情况、帖子情况、联系方式、住址(部分需要登录权限)、还有一些倾向数据,比如购物平台关注的商品;

e)从这三个切入点来讲,单独哪个可能都影响不足够大,没有达到影响的最大化。从一个数据利用者角度分析,最希望得到与平台性质相关的属性,比如交友网站的性别和联系方式信息,房产网站的倾向房产和联系方式等属性。 那把三个切入点的数据整合起来能得到什么呢?

i.通过用户检测 获得手机号用户个人信息;

ii.通过手机号检测,获得用户名信息;

iii.通过论坛遍历,获得ID和用户名信息;

iv.通过关联以上数据,可以对应手机号------>用户名 ------> 论坛ID,同样也就意味着获得了某手机号的用户关注了什么的信息。Demo 说明

用户:188xxxx8888 用户名:HelloWorld 关注:某别墅

用户:138xxxx9999 用户名:52BMW 关注:宝马X6

用户:159xxxx6666 用户名:HelloKitty 就职某金融企业

用户:186xxxx5555 用户名:独孤求败 购买了大疆无人机

针对Demo数据,从一个数据威胁角度来分析,那可以实现精准营销。带来的场景就是另一片天地。

8 爆破关联

1.数据重放-短信炸弹

a)无任何限制的短信炸弹

b)单独手机号存在短信阈值限制,有可能通过间隔符绕过,18888888888,,,与18888888888效果一样;

c)针对单独手机号有阈值限制,但可随意轮询其他手机号,同样有危害

d)会导致短信网关的资源浪费和流失

2.数据重放-邮箱炸弹

a)相对短信炸弹成本较低,但其逻辑同短信炸弹

1.子域名爆破

a)根据自己平台和习惯选择即可:subDomainsBrute、Layer、FuzzDomain

2.子目录、弱文件爆破

a)弱文件爆破,对比过老御剑、weakfilescan、dirfuzz、cansian.py 仍然觉得一款基于python3的dirsearch 值得拥有(可自定义字典) https://github.com/maurosoria/dirsearch

b)也可以自己写,就是基本的web请求,以及返回包的长度或特征匹配。

3.Fuzzing 测试

a)SQL、XSS

b)拒绝服务漏洞,例如SPIKE对表单测试特殊字符的异常处理

9 协议口令爆破

1.SSH RDP FTP MySQL MSSQL …

a)Fenghuangscan值得推荐,Hydra (Kali自带)值得拥有;

b)Nmap 也可完成部分破解工作,本身是一个基础工具,但script下的脚本能让你做出不基础的事情

c)毕竟直接拿到远控权限事半功倍,可直接获取数据,对于测试来讲还可获取源码,以半审计的方法进行挖掘。

d)且有人以此为生(全网抓鸡)

2.SMTP、VPN协议类

a)第一点提到的一些协议,初具成熟均不公开于互联网(当然意识和测试情况也有),但SMTP 和 VPN 类,大部分都有,也是入侵的概率很大的入口点

i.brut3k1t(github有)

ii.也有自定义的PY脚本

iii.小技巧点:部分对同一用户有密码失败次数限制,可把循环颠倒过来,用同密码刷一遍用户,在用下一个口令刷一遍用户…

b)翻到邮箱,根据信息检索,信息很精准,很有可能获得认证信息

c)获得VPN认证,在内网搞事,一不小心就干掉了一个大家伙。

3.特殊服务类未授权访问或者弱认证

a)Redis未授权访问

b)Jenkins未授权访问

c)MongoDB未授权访问

d)ZooKeeper未授权访问

e)Elasticsearch未授权访问

f)Memcache未授权访问

g)Hadoop未授权访问

h)CouchDB未授权访问

i)Docker未授权访问

j)毕竟这些未授权可以直接getshell或直接获得数据

详细介绍利用及加固请参考https://www.secpulse.com/archives/61101.html

10 攻击防御

1.登录界面暴力破解,哪些加固方法?

a)阈值的设立

i.单位时间内超过额定请求次数,封帐号&封IP段时间

ii.支持逆向思路

b)密码输入错误次数达到3次后增设验证码

i.验证码自身的安全性参考下一个问题

c)自身应用系统的健壮性

i.强制要求用户注册时满足口令复杂度要求

ii.定期检索数据库弱口令帐号的存在,可比对top500的密文值

2.图形验证码自身常见的加固方法?

1)字体扭曲

2)字体粘连

3)字体镂空

4)字体混用

5)主体干扰线

6)背景色干扰

7)背景字母干扰

8)公式验证码

9)加减法验证码

10)逻辑验证码

3.安全登录流程设计?

11)系统设置一个固定的盐值,该盐值最好足够复杂,如:1qaz2wsx3edc4rfv!@#$%^&**qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA

12)用户注册、修改密码时,将用户的原始密码与我们的固定盐值拼接,然后做md5运算。

13)传递至后端,保存进数据库(数据库中保存的密码是用户的原始密码拼接固定盐值后,md5运算后的结果)。

14)登录时,将用户的原始密码与我们的固定盐值进行拼接,然后做md5运算,运算后的结果再拼接上我们的随机码,再次md5运算,然后提交。

15)后端接收到登录请求后,将从数据库中查询出的密码与session中的随机码拼接后,md5运算,然后与前端传递的结果进行比较。

PS:这种登录流程对于数据包重放来讲的确有效,但对于正常的selenium浏览器输入爆破仍需要结合阈值和验证码来防御。

4.Modsecurity类防御暴力破解类?

a)若代码变更成本大,可以使用Modsecurity (当然直接买硬WAF也可以)

b)https://www.trustwave.com/Resources/SpiderLabs-Blog/Defending-WordPress-Logins-from-Brute-Force-Attacks/(Freebuf有翻译

5.针对验证码可多次重用的加固方法?

6.主机类暴力破解的防御方法?

a)自身的帐号口令体系满足复杂度要求

b)若非必须的服务,直接禁止对外的开放,包括22、3389

c)限定指定IP访问(网络的访问控制)

d)不使用口令方式,使用私钥类登录

e)意识类:不在标签写密码;运维管理类也不直接统记录到一个txt

本站所有文章均为原创,转载请注明出处

更多技术文章,敬请关注猎户安全实验室微信公众号:

发表评论

电子邮件地址不会被公开。 必填项已用*标注