漏洞介绍
弱口令也是安全漏洞的一种,是指系统登录口令的设置强度不高,容易被攻击者猜到或破解。造成弱口令的主要原因是系统的运维人员、管理人员安全意识不足。常见的弱口令形式包括:系统出厂默认口令没有修改;密码设置过于简单,如口令长度不足,单一使用字母或数字;使用了生日、姓名、电话号码、身份证号码等比较容易被攻击者猜到的信息设置口令;设置的口令属于流行口令库中的流行口令。
漏洞危害
绝大多数企业有一定用户数,对安全密码复杂对没有安全基准或落实不到位,都会存在弱密码,会看似符合密码复杂度要求的密码,其实是是弱密码如 P@ssw0rd qwer!@#$ 等,暴力破解和弱密码最终都是导致用户身份认证失效 系统可能是基于角色或用户做授权的。
破解成功后即可获取合法用户的权限,从而能够查看用户的敏感信息,还有可以进行钓鱼等操作
甚至可以破解管理员的密码从而能够拿到管理员的权限,通过查找网站是否还有其它危害较大的漏洞,进而控制整个站点
批量获取用户账号密码,对网站以及用户造成较大威胁,进入网站后,有多种攻击手法,具体问题具体分析
可以重置或者修改用户的账号密码等信息
比如暴力破解用户邮箱,可以拉取到通信录,通过历史邮件发现更多信息。
漏洞原理
网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施,如不安全的验证码,或者使用 token 防御暴力
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个 web 应用系统存在暴力破解漏洞,一般是指该 web 应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
是否要求用户设置复杂的密码; 是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机 otp; 是否对尝试登录的行为进行判断和限制(如:连续 5 次错误登录,进行账号锁定或 IP 地址锁定等); 是否采用了双因素认证; …等等。
产生原因
这个应该是与个人习惯相关与意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。相关的安全意识不够,总认为不会有人会猜到我这个弱口令的,相关的安全意识不够,总认为不会有人会猜到我这个弱口令的。
防护方法
防御的主要思路是 加入人机识别或多因素认证。对频率做限制,失败多少次,锁帐号,或封 IP
多因素认证 (影响用户体验,重要的系统可以采用)
验证码 (主流,有时也会影响用户体验)小站用户至上可以
频率做限制 (失败多少次,锁帐号,或封 IP (有绕过的风险,但攻击者成本很高,也是可行的防御方法)
安全加固及监控 或 IPS
token 有时可以防御些重放类的暴力破解,还能有防御 CSRF 的效果。python 的爬虫库可以抓取到到 token burpsuit 也可以配置从响应中提取 token 有一定初级的防御效果但不做为主要。
不明确返回用户帐号是否存在,或者密码错误等。用户 ID 和用户昵称最好分开。
禁常见的弱密码.设置密码定期修改策略.密码加固
口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。
至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。
不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
利用
web类
加密类型
burp 的intruder payloads 下面的payload processing 可对变量进行加密 md5 base64等加密
多参数爆破
burp 的集束炸弹 可对两个参数进行同时爆破
无验证码
猜解 直接使用burp抓包 加上字典跑
有验证码
使用可识别验证码的工具,或自行编写工具,可接入打码平台。
burp验证码识别插件:
GitHub - c0ny1/captcha-killer: burp验证码识别接口调用插件
token验证
后续完善
服务协议类
多种服务爆破
可使用msf、超级弱口令检测工具等进行爆破
文件应用类
zip压缩包暴力破解 --> Advanced Archive Password Recovery
pdf暴力破解
等其他应用的暴力破解,可自行写脚本破解,也可搜工具破解。
思路
渗透测试前期信息搜集好,生成字典跑
也可以社工搜集资料,具体方法途径因特殊原因就不写了吧!
一些设备或网站等都有默认密码,可尝试探针
参考
密码长度范围为8到26位。
密码至少包含以下4种字符中的3种:
大写字母
小写字母
数字
Windows操作系统云服务器特殊字符:包括“$”、“!”、“@”、“%”、“-”、“_”、“=”、“+”、“[”、“]”、“:”、“.”、“/”、“,”和“?”
Linux操作系统特云服务器特殊字符:包括“!”、“@”、“%”、“-”、“_”、“=”、“+”、“[”、“]”、“:”、“.”、“/”、“^”、“,”、“{”、“}”和“?”
密码不能包含用户名或用户名的逆序。
Windows操作系统的云服务器,不能包含用户名中超过两个连续字符的部分。
身份证号的生成规则
(1)前1、2位数字表示:所在省份的代码;
(2)第3、4位数字表示:所在城市的代码;
(3)第5、6位数字表示:所在区县的代码;
(4)第7~14位数字表示:出生年、月、日;
(5)第15、16位数字表示:所在地的派出所的代码;
(6)第17位数字表示性别:奇数表示男性,偶数表示女性;
(7)第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,
用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。
相关网站:
Have I Been Pwned: Check if your email has been compromised in a data breach
密码字典生成器|CTF论坛-Tools 密码攻击器
https://github.com/danielmiessler/SecLists fuzz
https://github.com/hetianlab/DefaultCreds-cheat-sheet 默认密码项目