弱口令密码破解
什么是弱口令
弱口令 (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包所需要的参数,然后扔给暴力破解软件工具构造数据包,然后实施攻击就可以了。
暴力破解工具
John the Ripper
暴力破解字典
现成字典
定制化字典
-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 进行暴力破解
不失效的验证码
多种情况:
验证码可复不失效。
验证码有效期长,可暴力破解。
验证码长度短,可暴力破解。
各种常见应用程序
phpmyadmin、tomcat、mysql .... 等等服务均可暴力破解
Tomcat 弱口令
由于管理员安全意识不足,设置了弱口令导致了可以被爆破从而部署
war
包getshell
。(需要注意的是tomcat 6
版本之后针对爆破设置了锁定机制,爆破超过一定频率后账户会被锁定,即使账密正确也无法登录)
Tomcat 默认页面
tomcat 弱口令暴力破解流程
前往后台登录页登录
实验平台:蚁景网安实验室-tomcat8_weakpass
再次鸣谢:蚁景网安实验室
Burpsuite抓取登陆页面数据包
分析数据包
tomcat 是在认证的字段下对用户输入 用户名 与 密码 做了以下认证:
Base64_encode(username:password)
通过新版本 Burpsuite 我们也可以清晰的看到给出了提示,认证过程的 明文信息 和 编码方式。
重发数据包到 Intruder 模块进行数据重发暴力破解:
Intruder 模块几种爆破方式简介:
Sniper(狙击手模式)
狙击手模式使用一组payload集合,它一次只使用一个payload位置,假设你标记了两个位置“A”和“B”,payload值为“1”和“2”,那么它攻击会形成以下组合(除原始数据外)。
Battering ram(攻城锤模式)
攻城锤模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。
Pitchfork(草叉模式)
草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合,假设有两个位置“A”和“B”,payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,则攻击模式如下。
Cluster bomb(集束炸弹模式)
集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积,还是上面的例子,如果用集束炸弹模式进行攻击,则除baseline请求外,会有四次请求。
配置 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 文字识别来获取验证码,代入到 数据包 中。
爆破验证码工具:captcha-killer-modified
安装插件不做过多演示。
安装成功后界面:
我们不难发现需要填写几个地方:
验证码URL:爆破目标配置了验证码的时候,请求包中请求验证码的 URL 参数填此处。
关键字/响应提取:无须理会,是这个插件进行识别的地方
接口 URL:OCR 文本识别的 URL 接口,此处推荐 ddddocr 大佬的本地 OCR 识别模型。
模板:选择识别验证码的种类(接口URL下方的 Request template,template是模板的意思Zzz...)
爆破实战
此处以某登录站点作为演示:
获取”获取验证码“的数据包
访问生成验证码的文件,得到申请-生成验证码的 数据包
右击发送到我们的 ”captcha-killer-modified“ 插件
配置本地 OCR 识别模型
启动 codereg.py 脚本,本地的 OCR 识别模型挂载了本地 0.0.0.0 地址的 8888 端口了。
在 captcha-killer-modified 插件中配置 OCR 的 api 为 0.0.0.0:8888
然后右击 Request template 选择需要识别的模板。
提前说要注意 !!!需要勾选 " 是否适用该模块 " 的选项为 被选中 状态 !!!
成功识别
搭配插件开始爆破
将 登录 数据包发送到 Intruder 模块进行爆破,爆破用户名或密码 + 搭配插件爆破验证码,当然推荐爆破密码。
使用鱼叉模式因为一个密码与一个验证码一一对应。