什么是弱口令

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


公共弱口令

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

如:123456、admin、88888888 及默认密码。

常见密码TOP:

常见默认密码


条件弱口令

通常与以下信息相关:

  • 个人信息(姓名,生日,手机号,特殊昵称,爱好,社交软件账号,常用用户名,邮箱…)

  • 关系成员(家庭成员,男女朋友…)

  • 所处环境(车牌号,公司信息比如公司名称,公司成立时间或地点,公司域名等…)

  • 特殊的指定字符(数字,单词…)

弱口令示例

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

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

临近字符组合:123qwe Qwerty qweasd

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


弱口令原因

与个人习惯、意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。

相关的安全意识不够,总认为不会有人会猜到我这个弱口令。




弱口令利用姿势

暴力破解介绍

密码破解介绍

针对于密码的最常见的攻击方式就是 —— 暴力破解!

暴力破解的原理就是使用攻击者自己的用户名和密码字典,不断进行枚举,直到枚举成功。因为理论上来说,只要字典足够庞大,枚举总是能够成功的!

但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”;实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。

但是你不可能一个一个去手动构造数据包,所以在实施暴力破解之前,我们只需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件工具构造数据包,然后实施攻击就可以了。

暴力破解工具

暴力破解字典

现成字典

定制化字典

-h, --help 显示帮助信息

-base Type Choose from (d, L, c, dL, dc, Lc, dLc)

d digital [0 - 9]

L lowercase letters [a - z]

c capital letters [A - Z]

dL Mix d and L [0-9 a-z]

dc Mix d and c [0-9 A-Z]

Lc Mix L and c [a-z A-Z]

dLc Mix d, L and dL [0-9 a-z A-Z]

-char character 使用自定义字符构建字典

-chunk arg [arg ...] 使用multi-chunk构建字典

-extend arg [arg ...]

扩展字符串列表或文件

-plug arg [arg ...] birthday [开始日期] [结束日期], 时间格式: [yyyyMMdd or ddMMyyyy(--dmy option)]

ftp [keyword1] [keyword2] ...

pid4 中国身份证最后4位

pid6 中国身份证最后6位

pid8 中国身份证最后8位

scratch [url_or_file]

--conf [file_path] 使用配置字符串或文件构建字典

--sedb 进入社会工程词典生成器

-o path, --output path

设置输出目录路径

-tool arg [arg ...] combiner [dir]

comparer [minuend_file] [subtrahend_file]

counter ['v','s','vs'] [file] [view_num]

handler [file]

hybrider [file1] [file2] ...

shredder [file_or_dir]

uniqbiner [dir]

uniqifer [file]

--len minlen maxlen 默认: min=0 max=4

--head prefix 为项目添加字符串头

--tail suffix 为项目添加字符串尾

--encode encode b16 base16 编码

b32 base32 编码

b64 base64 编码

des Des算法和需要修改的代码

execjs 执行js函数和需要修改代码

hmac Hmac消息摘要算法

md5 Md5消息摘要算法输出32个字符

md516 Md5消息摘要算法输出16个字符

none 默认,不编码

rsa Rsa算法,需要修改代码

sha1 Sha-1消息摘要算法

sha256 Sha-256消息摘要算法

sha512 Sha-512消息摘要算法

test 通过修改函数自定义编码方法

url url 编码

--occur letter digital special

默认: letter "<=99" digital "<=99" special "<=99"

--types letter digital special

默认: letter ">=0" digital ">=0" special ">=0"

--repeat letter digital special

默认: letter ">=0" digital ">=0" special ">=0"

--regex regex 正则表达式过滤器, 默认: (.*?)

--level code 使用代码[1-5]过滤结果, 默认: 3

--leet code [code ...]

选择let模式代码 (0, 1, 2, 11-19, 21-29)

--dmy 使用 ddMMyyyy 时间格式, 默认时间格式: yyyyMMdd



暴力破解场景

不含验证码后台

不含验证码可以无损爆破,有验证码也可以配合 OCR 进行暴力破解

不失效的验证码

多种情况:

  1. 验证码可复不失效。

  2. 验证码有效期长,可暴力破解。

  3. 验证码长度短,可暴力破解。

各种常见应用程序

phpmyadmin、tomcat、mysql .... 等等服务均可暴力破解

Tomcat 弱口令

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

Tomcat 默认页面

tomcat 弱口令暴力破解流程

前往后台登录页登录

实验平台:蚁景网安实验室-tomcat8_weakpass

再次鸣谢:蚁景网安实验室

Burpsuite抓取登陆页面数据包

分析数据包

tomcat 是在认证的字段下对用户输入 用户名密码 做了以下认证:

Base64_encode(username:password)

通过新版本 Burpsuite 我们也可以清晰的看到给出了提示,认证过程的 明文信息编码方式

重发数据包到 Intruder 模块进行数据重发暴力破解:

Intruder 模块几种爆破方式简介:

Sniper(狙击手模式)

狙击手模式使用一组payload集合,它一次只使用一个payload位置,假设你标记了两个位置“A”和“B”,payload值为“1”和“2”,那么它攻击会形成以下组合(除原始数据外)。

attack NO.

location A

location B

1

1

no replace

2

2

no replace

3

no replace

1

4

no replace

2

Battering ram(攻城锤模式)

攻城锤模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。

attack NO.

location A

location B

1

1

1

2

2

2

Pitchfork(草叉模式)

草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合,假设有两个位置“A”和“B”,payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,则攻击模式如下。

attack NO.

location A

location B

1

1

3

2

2

4

Cluster bomb(集束炸弹模式)

集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积,还是上面的例子,如果用集束炸弹模式进行攻击,则除baseline请求外,会有四次请求。

attack NO.

location A

location B

1

1

3

2

1

4

3

2

3

4

2

4

配置 Payload:

启动暴力破解

查看成功数据包

Base64解码成功数据包中的验证数据,得到明文用户名密码。

后渗透 Getshell

上传 Webshell

在 tomcat 后台管理页面的 “WAR file to deploy” 功能点下上传被打包为 war 格式的 webshell,tomcat 该功能会自动解压压缩包并配置压缩包内文件项目,Web端访问 Webshell 文件成功 Getshell。

  • 什么是 war

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

  • war 包制作方法

jar –cvf *.war *.jsp

连接 Webshell

找到我们上传的项目,并索引到我们的Webshell。

成功 Getshell。

爆破MySQL

实验平台:蚁景网安实验室-pass_enum_mysql8

再次鸣谢:蚁景网安实验室

爆破工具

爆破 MySQL 这些非 Http 服务时,Burpsuite 无法拦截此类流量,自然无法暴力破解,此时我们需要使用其他工具。

必须注意:Hydra 请使用 Linux 版本! Windows 版本太老爆破高版本 MySQL 服务时无法验证新版 MySQL 的 caching_sha2_password 认证插件!此插件是 MySQL 8 默认使用插件!

爆破目标

MySQL 非 Http 服务,当然不能使用浏览器直接访问了,可以使用 Mysql 远程连接 或者 数据库第三方管理工具均可,第三方工具如:navicat、DBeave等。

根据靶场信息已知目标 ip(域名)和 端口,可以尝试连接进行爆破。

尝试连接目标

我们使用第三方数据库管理工具尝试去远程连接目标,提示以下信息,可以判断出目标数据是可以用密码登录 root 用户的。

—— 这一步不知道密码无所谓,只是判断目标是否可以入侵。

Hydra 爆破目标

Hydra 语法:

  • -l 指定用户名

  • -L 指定用户名字典

  • -p 指定密码

  • -P 指定密码字典

  • -C 使用冒号分隔,比如root:root

  • -M 指定目标列表文件

  • -f 在找到第一对登录名或密码的时候停止

  • -v 显示调用mode

  • -V 显示爆破过程

  • -s 当服务端口不为默认端口时手动指定服务端口

  • -S 使用 SSL 连接

验证码爆破

验证码爆破本质其实是调用 OCR 文字识别来获取验证码,代入到 数据包 中。

安装插件不做过多演示。

安装成功后界面:

我们不难发现需要填写几个地方:

  • 验证码URL:爆破目标配置了验证码的时候,请求包中请求验证码的 URL 参数填此处。

  • 关键字/响应提取:无须理会,是这个插件进行识别的地方

  • 接口 URL:OCR 文本识别的 URL 接口,此处推荐 ddddocr 大佬的本地 OCR 识别模型。

  • 模板:选择识别验证码的种类(接口URL下方的 Request template,template是模板的意思Zzz...)

爆破实战

此处以某登录站点作为演示:

获取”获取验证码“的数据包

访问生成验证码的文件,得到申请-生成验证码的 数据包

右击发送到我们的 ”captcha-killer-modified“ 插件

配置本地 OCR 识别模型

启动 codereg.py 脚本,本地的 OCR 识别模型挂载了本地 0.0.0.0 地址的 8888 端口了。

  1. 在 captcha-killer-modified 插件中配置 OCR 的 api 为 0.0.0.0:8888

  2. 然后右击 Request template 选择需要识别的模板。

  3. 提前说要注意 !!!需要勾选 " 是否适用该模块 " 的选项为 被选中 状态 !!!

成功识别

搭配插件开始爆破

登录 数据包发送到 Intruder 模块进行爆破,爆破用户名或密码 + 搭配插件爆破验证码,当然推荐爆破密码。

使用鱼叉模式因为一个密码与一个验证码一一对应。

成功进入后台拿下站点

文章作者: QiaoShen
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QiaoShen-World
实景渗透基础 基础 姿势 渗透 OWASP-Top10 弱口令
喜欢就支持一下吧