弱口令密码破解

弱口令和暴力破解

弱口令

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)

猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令。

公共弱口令

公共弱口令就是常见的密码,也就是根据大量的密码数据统计得出的出现频率较高的弱口令。如
123456、admin、88888888 及默认密码

常见默认密码:
https://forum.ywhack.com/password.php
https://github.com/ibaiw/2023Hvv/blob/main/默认密码.md
https://192-168-1-1ip.mobi/default-router-passwords-list/
https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/default-passwords.csv

条件弱口令

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

弱口令示例

1
2
3
4
简单数字组合: 000000 111111 11111111 112233 123123
顺序字符组合:abcdef abcabc abc123 a1b2c3 aaa111
临近字符组合:123qwe Qwerty qweasd
特殊含义组合:admin password p@ssword Iloveyou 5201314

弱口令原因

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

暴力破解

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

但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包,所以在实施暴力破解之前,我们只需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。Web暴力破解通常用在,已知部分信息,尝试爆破网站后台,为下一步的渗透测试做准备。

弱口令密码破解方法

密码破解介绍

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

暴力破解工具

暴力破解字典

  • 通用弱口令字典

历年弱口令top100,github上搜索弱口令字典

https://github.com/k8gege/PasswordDic
https://github.com/danielmiessler/SecLists
https://github.com/Dormidera/WordList-Compendium

  • 创建自定义字典
  1. Crunch
1
2
3
4
5
6
7
8
9
10
11
12
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 ,@@^^%%
  1. cewl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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>:蜘蛛站点。
  1. pydictor

https://github.com/LandGrey/pydictor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-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

弱口令密码破解实例

Tomcat弱口令

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

漏洞环境搭建

1
2
3
docker pull betsy0/tomcat

docker run -itd --privileged -p 8080:8080 --name tomcat-pass-shell betsy0/tomcat /usr/sbin/init

Tomcat

  • Tomcat默认页面

image-20240122220036488

  • 抓取登录包

image-20240122222039852

发现其账户密码是经过base64加密的,组合为asd:asd

Burpsuite爆破

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

将抓到的包发送到爆破模块。快捷键 ctrl+i

image-20240122222204975

image-20240122222302270

image-20240122222316189

image-20240122222507277

爆破成功

image-20240122223326400

后台GetShell

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

  • 什么是war包

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

  • war包制作方法
1
jar –cvf *.war *.jsp

爆破MySQL

这里使用超级弱口令检查工具,该工具包含许多爆破模块,支持ssh,rdp,mysql等爆破。使用简单,直接导入IP及用户名密码字典就可以使用。

image-20240122223609608

并且内置了许多字典

直接输入ip,也可以导入ip列表批量爆破,导入用户名及密码字典,选中服务,就可以得到用户名密码

Hydra爆破MySQL

Hydra是一款开源的暴力破解工具,支持FTP、MSSQL、MySQL、PoP3、SSH等暴力破解

1
2
3
4
5
6
7
8
参数介绍
-l 指定用户名
-L 指定用户名字典
-p 指定密码
-P 指定密码字典
-C 使用冒号分隔,比如root:root
-M 指定目标列表文件
-f 在找到第一对登录名或密码的时候停止

MSF模块爆破SSH

1
2
3
4
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 172.26.2.36
set USER_FILE /root/Desktop/tools/dic_username_ssh.txt
set PASS_FILE /root/Desktop/tools/pwd100.txt

这里metasploit在探测ssh弱口令时,如果发现存在,则会返回一个linux shell,注意此时不是meterpreter shell。接下来可以使用sessions –u id进行升级

验证码爆破

captcha-killer-modified: https://github.com/f0ng/captcha-killer-modified

参考:https://mp.weixin.qq.com/s/_P6OlL1xQaYSY1bvZJL4Uw

下载并安装插件

下载插件: captcha-killer-modified-0.24.1-jdk8.jar

https://github.com/f0ng/captcha-killer-modified/releases

安装插件:

image-20240122224243246

验证码识别服务安装

验证码识别服务安装

1
2
https://github.com/sml2h3/ddddocr
https://github.com/sml2h3/ocr_api_server
  • docker启动ocr_api_server
1
docker run -d -p 9898:9898 ytdock/ocr_server:v1

image-20240122231950499

配置及使用插件

  1. Pbcms靶场搭建:
1
2
3
docker run -d -p 9899:80 vulfocus/pbootcms-cve_2018_16356:latest

管理员页面:/admin.php 用户名密码:admin:123456

image-20240122233724186

  1. 获取验证码请求,发送到 captcha panel

image-20240122233710975

  1. 获取验证码图片

image-20240122233819957

  1. 配置验证码识别接口

接口URL:http://127.0.0.1:9898,填写你启动 ocr_api_server 所在的WEB服务

image-20240122234853321

Request template:

1
2
3
4
5
6
7
8
9
POST /ocr/b64 HTTP/1.1
Host: 127.0.0.1:9898
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 2540

<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>

验证码爆破实例

  1. 发送登录请求到Intruder模块,在Positions选项卡下,选择攻击模式为 Pitchfork,给要爆破的密码字段、验证码字段添加标记

image-20240122235152295

  1. 在Payloads选项卡下设置攻击Payload

image-20240122235250456

  1. 点击Start attack,开始爆破,成功爆破得到账号密码

image-20240122235329489

  1. 验证码识别结果

image-20240122235418643