原创文章

原文首发我实验室公众号 猎户安全实验室

然后发在先知平台备份了一份

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

   

  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)      相对短信炸弹成本较低,但其逻辑同短信炸弹

  3. 子域名爆破

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

  4. 子目录、弱文件爆破

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

    https://github.com/maurosoria/dirsearch

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

      

  5. 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. 安全登录流程设计?

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

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

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

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

    e)   后端接收到登录请求后,将从数据库中查询出的密码与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

Web攻防之暴力破解(何足道版)的更多相关文章

  1. Web安全之暴力破解

    暴力破解,顾名思义简单粗暴直接,我理解为将所有的“答案”都进行尝试直到找到正确的“答案", 当然我们不可能将所有的“答案”都进行尝试,所以我们只能将所有最有可能是正确的“答案”进行尝试即可 ...

  2. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  3. 教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码

    教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码 很多企业都有自己的网站,需要用户登录后才能访问,但有大量的黑客攻击软件可以暴力破解网站密码,即使破解不了也非常恶心.有没有免费的解决办法 ...

  4. 《11招玩转网络安全》之第三招:Web暴力破解-Low级别

    Docker中启动LocalDVWA容器,准备DVWA环境.在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机.自动跳转到了http://127.0.0.1/login.php登录 ...

  5. DVWA 黑客攻防演练(二)暴力破解 Brute Froce

    暴力破解,简称"爆破".不要以为没人会对一些小站爆破.实现上我以前用 wordpress 搭建一个博客开始就有人对我的站点进行爆破.这是装了 WordfenceWAF 插件后的统计 ...

  6. web服务端安全之暴力破解

    一.暴力破解 指攻击者通过遍历或字典的方式,向目标发起大量请求,通过判断返回数据包的特征来找出正确的验证信息,从而绕过验证机制. 二.常见场景 用户登录处的账号密码暴力破解: 人机验证机制容易绕过,如 ...

  7. CTF—攻防练习之HTTP—暴力破解

    攻击机:192.168.32.152 靶机:192.168.32.164 首先nmap,nikto -host ,dirb 扫描开放带端口,探测敏感文件,扫描目录 开放了21,22,80端口,看到一个 ...

  8. 基于表单的web暴力破解

    暴力破解 概述 连续性尝试+字典+自动化 如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施,则该网站存在暴力破解漏洞. 是否要求用户设置了复杂的密码 是否每次认证都是用安全的验证 ...

  9. Linux 利用hosts.deny 防止暴力破解ssh(转)

    一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7 ...

随机推荐

  1. 简说chart2.4的应用,以及Uncaught ReferenceError : require is not defined的解决

    51呢最近在学习chart.js,然后呢就照着中文的帮助文档来然后就一直出Uncaught ReferenceError : require is not defined的问题查了挺多才知道是帮助文档 ...

  2. mySQL:两表更新(用一个表更新另一个表)的SQL语句

    用一个表中的字段去更新另外一个表中的字段, MySQL 中有相应的 update 语句来支持,不过这个 update 语法有些特殊.看一个例子就明白了. create table student ( ...

  3. 【ASP.NET MVC 学习笔记】- 09 Area的使用

    本文参考:http://www.cnblogs.com/willick/p/3331519.html 1.ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,这对于大的工程非常有用, ...

  4. Jenkins项目部署使用教程-----02视图及项目添加

    注意:此以我公司为例,以svn上传代码 一.添加视图 1.点击右上角”+”号,新建新视图 勾选在该视图下显示的项目或者在该视图新建项目,点保存即可. 二.新建项目 1.点击左上角的新建,创建新项目. ...

  5. LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed (插入删除和获得随机数 常数时间 允许重复项)

    Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...

  6. Django1.11搭建一个简易上传显示图片的后台

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 项目展示需要,之前没研究过Django,网上查资料快速做了一个后台,写下了防止自己忘了. p ...

  7. angualr高级篇之elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的区别

    在angular的使用过程中我们经常用$rootScope.$new()为elem创建一个新的作用域scope,然后使用$compile(elem)(scope)编译这个含有指令的元素.那么这里传进去 ...

  8. angular核心$watch,$digest,$apply之间的联系

    浏览器事件发生时,会在浏览器的上下文window中执行,而angular有自己的上下文angular content,angular 事件在自己的上下文angular content中执行. $wat ...

  9. Muduo阅读笔记---net(三)

    muduo-manual手册一开始就介绍了“Muduo是基于Reactor模式的网络库”,因此必须对Reactor模式有一定的了解才行:另外,文中还提到EventLoop,这些知识点我目前都不太了解.

  10. jquery getScript动态加载JS方法改进详解[转载]

    转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法     $.getScript( ...