弱口令与暴力破解

弱口令

含义

弱口令( weak password ) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令。

公共弱口令

公共弱口令就是常见的密码,也就是根据大量的密码数据统计得出的出现频率较高的弱口令。

条件弱口令

往往与这个人的个人信息(姓名,生日,手机号,特殊昵称,爱好,社交软件账号,常用 username ,邮箱…),关系成员(家庭成员,男女朋友…),所处环境(车牌号,公司信息比如公司名称,公司成立时间或地点,公司 domain 等…),还有特殊的指定字符(数字,单词…)等相关。

弱口令实例

简单数字组合: 000000 111111 11111111 112233 123123

顺序字符组合:abcdef abcabc abc123 a1b2c3 aaa111

临近字符组合:123qwe Qwerty qweasd

特殊含义组合:admin password p@ssword Iloveyou 5201314

弱口令原因

与个人习惯、意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。相关的安全意识不够,总认为不会有人会猜到我这个弱口令的。

暴力破解

暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞大,枚举总是能够成功的!

密码暴力破解

指用枚举的方式来爆破用户信息。具体的流程是用事先收集好的数据集成一个字典,然后用字典不断进行枚举,直到枚举成功。

暴力破解工具

Burpsuite

Hydra

Metasploit

SNETCracker

https://github.com/shack2/SNETCracker

暴力破解字典

创建自己的字典

  • Crunch工具

    在Linux下自动生成字典文件

    crunch 4 6 0123456789ABCDEF -o crunch1.txt
    #长度从4到6用哪个字母
    crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha
    #只有长度4使用字符集mixalpha
    @ :小写字母字符
    , :大写字母字符
    % :数字字符
    ^ :特殊字符,包括空格
    crunch 7 7 -t ,@@^^%%
    
  • Cewl

ruby编写的应用程序,可以将给定的URL爬行到指定的深度,能有选择的跟随外部链接,并返回一个单词列表,这些单词可用于密码破解。

cewl [options] <url>
Options:
   -h,--help:显示帮助。
   -k,-keep:保留下载的文件。
   -d <x>,-depth <x>:到达蜘蛛的深度,默认为2。-
   -m,--min_word_length:最小字长,默认为3。-
   -o,--offsite:让蜘蛛访问其他站点。
   -w,--write:将输出写入文件。
   -u,--ua <agent>:要发送的用户代理。
   -n,--no-words:不输出单词表。
   --with-numbers:接受带有数字以及字母
   -a,--meta的单词:包括元数据。
   --meta_file文件:元数据的输出文件。
   -e,--email:包括电子邮件地址。
   --email_file <文件>:电子邮件地址的输出文件。
   --meta-temp-dir <dir>:exiftool解析文件时使用的临时目录,默认
为/ tmp。
   -c,--count:显示找到的每个单词的计数。
   -v,--verbose:详细。
   --debug:额外的调试信息。
     
Authentication
   --auth_type:摘要或基本。
   --auth_user:身份验证用户名。
   --auth_pass:验证密码。
     
proxy
   --proxy_host:代理主机。
   --proxy_port:代理端口,默认为8080
   --proxy_username:代理的用户名(如果需要)。
   --proxy_password:代理的密码(如果需要)。
header
   --header,-H:格式为name:value-可以传递多个。
     
<url>:蜘蛛站点。

cewl -d 2 -m 5 -w words.txt https://example.com

#对网站https://example.com 进行深度为2的爬行,生成最小长度为5的字典words.txt

  • pydictor

使用方法,在pydictor.py的目录下打开终端,执行命令:pydictor.py --sedb

在执行show options查看条件

配合 set … 设置条件

最终run生成字典

请添加图片描述

请添加图片描述

暴力破解场景

  • 不含验证码后台

请添加图片描述

  • 不失效的验证码

请添加图片描述

  • 各种常见应用程序,比如: phpmyadmin 、 tomcat 、 mysql
  • 各种协议:ftp、ssh、rdp
  • 爆破大马

实际利用

Tomcat弱口令

由于管理员安全意识不足,设置了弱口令导致了可以被爆破从而部署 war 包
getshell 。(需要注意的是tomcat 6版本之后针对爆破设置了锁定机制,爆破超过
一定频率后账户会被锁定,即使账密正确也无法登录)

  • 刚进入靶场页面

请添加图片描述

环境分析

随意点击一个模块进入登录页面:

http://192.168.1.149:8080/manager/html

请添加图片描述

发送 登录请求后,使用burp抓包

将数据包发送到Repeater模块分析

请添加图片描述

Authorization: Basic YWRtaW46MTIzNDU2进行选项查看

请添加图片描述

得到 Authorization: Basic admin:123456,admin和123456正是我在浏览器请求时使用的用户名和密码,但是使用了base64 加密,并且在用户名和密码之间增加了冒号分割

爆破思路

先从用户名爆破文件里面导入用户名,再在每一个用户名后面加一个冒号,最后再在每一个冒号后面添加所有可能的密码,再把这三个的结合体使用 base64 加密后发送给服务器,逐个尝试得到正确账号密码。也就是说我们需要给 burpsuit 导入三样东西,即:用户名表、冒号、密码表。

  • 发送到Intruder模块,开始构造payload

请添加图片描述

  • payload类型选择使用自定义迭代

  • 这个“1”对应的是冒号前面的用户名

请添加图片描述

  • 这个“2”对应的只有冒号 “:”

请添加图片描述

  • 这个“3”对应的就是冒号后面的密码

请添加图片描述

  • 设置base64编码

请添加图片描述

  • 开始爆破

爆破后查看响应数据包的长度可以得到一个不同的数据包

请添加图片描述

用户名:tomcat

密码:tomcat

后台Getshell

登录到后台后可以通过部署 war 包进行 getshell

  • war包原理

war 包是用来进行 Web 开发时一个网站项目下的所有代码,包括前台 HTML/CSS/JS 代 码,以及后台 JavaWeb 的代码。当开发人员开发完毕时,就会将源码打包给测试人员测试,测试完后若要发布也会打包成 War 包进行发布。 War 包可以放在 Tomcat 下的webapps 或 word 目录,当 Tomcat 服务器启动时, War 包即会随之被解压得到源代码并自动部署。

  • war包生成

需要在前端代码文件的当前目录下打开终端,并且执行命令进行生成war包

jar -cvf mm.war *.jsp

请添加图片描述

通过tomcat管理员后台直接上传war包并部署,使用蚁剑连接,getshell。

at 下的webapps 或 word 目录,当 Tomcat 服务器启动时, War 包即会随之被解压得到源代码并自动部署。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值