IgorBVieira/credential-stuffing-tester
GitHub: IgorBVieira/credential-stuffing-tester
一款用于模拟凭证填充攻击并验证登录端点 rate limiting 及 IP 封锁等安全防御机制的 Python 测试工具。
Stars: 0 | Forks: 0
# 🚦 Credential Stuffing 测试器
一款用于模拟并发自动化暴力破解攻击登录 endpoint 的工具,旨在验证诸如 rate limiting、IP 封锁以及多次尝试后改变错误消息等安全防御机制。
## 免责声明
本项目**仅专用于对您拥有或获得明确书面授权进行测试的系统进行安全测试**。未经授权将此工具用于第三方系统是非法且不道德的。您需对自己使用该工具的行为负全部责任。
## Tech Stack
| 技术 | 版本 |
|------------|--------|
| Python | 3.12+ |
| Requests | 2.32+ |
| Threading (concurrent.futures) | — |
| Colorama | 0.4+ |
## Roadmap
- [x] **里程碑 1**:使用 `requests.Session()` 的脚本,模拟对测试应用的登录 POST 请求
- [x] **里程碑 2**:使用 Threading 并发实现每秒数十次请求
- [x] **里程碑 3**:响应检查 — 检测 IP 封锁 (429/403) 及错误消息的变化
## 安装
```
git clone https://github.com/seu-usuario/credential-stuffing-tester.git
cd credential-stuffing-tester
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
## 使用
```
# 准备 wordlist 文件
echo -e "admin\nuser\nteste" > usernames.txt
echo -e "123456\nsenha123\nadmin2024" > passwords.txt
# 执行测试
python credential_tester.py https://seu-sistema.com/login usernames.txt passwords.txt
# 使用高级选项
python credential_tester.py https://seu-sistema.com/login usernames.txt passwords.txt \
--user-field user \
--pass-field pass \
--rate 10 \
--threads 10 \
--success "Bem-vindo"
```
### 输出示例
```
╔══════════════════════════════════════════╗
║ Credential Stuffing Tester v1.0 ║
╚══════════════════════════════════════════╝
Alvo: https://seu-sistema.com/login
Usuários carregados: 3
Senhas carregadas: 3
Iniciando teste com 3 usuários x 3 senhas...
[1/9] admin:123456 -> 401 (5234b)
[2/9] admin:senha123 -> 401 (5234b)
[3/9] admin:admin2024 -> 200 (12543b) ← SUCESSO
[4/9] user:123456 -> 401 (5234b)
[5/9] user:senha123 -> 401 (5234b)
[6/9] user:admin2024 -> 401 (5234b)
[7/9] teste:123456 -> 403 (245b)
[BLOQUEADO] Servidor bloqueou a requisição após 7 tentativas
=== Resumo ===
Total de tentativas: 7
Servidor bloqueou: SIM
Logins bem-sucedidos: 1
```
## 项目结构
```
07-credential-stuffing-tester/
├── credential_tester.py # Script principal
├── requirements.txt # Dependências
├── usernames.txt # Lista de usuários (exemplo)
├── passwords.txt # Lista de senhas (exemplo)
├── .gitignore
└── README.md
```
## 选项
| 参数 | 描述 | 默认值 |
|-----------|-----------|---------|
| `url` | 登录 endpoint(必填) | — |
| `usernames` | 包含用户名列表的文件 | — |
| `passwords` | 包含密码列表的文件 | — |
| `--user-field` | 用户字段的名称 | `username` |
| `--pass-field` | 密码字段的名称 | `password` |
| `--rate` | 每秒请求数 | 5 |
| `--threads` | 线程数 | 5 |
| `--success` | 指示登录成功的字符串 | — |
| `--fail` | 指示失败的字符串 | — |
## 检测到的 Rate Limiting 指标
| 条件 | 解释 |
|----------|---------------|
| HTTP 429 | 显式 rate limit |
| HTTP 403 | 可能的 IP 封锁 |
| 文本 "too many attempts" | 尝试次数过多导致的封锁 |
| 文本 "rate limit" | 激活的 rate limit |
| 错误消息改变 | 防御枚举攻击 |
## 局限性
- 仅检测基于 IP 的 rate limiting 和错误消息
- 无法绕过 CAPTCHA、2FA 或高级 WAF
- 如果目标系统具有激进的防护措施,测试可能会导致您的 IP 被封禁
- 结果取决于目标的安全实现方式
## 最佳实践
1. **始终在受控环境中测试** — 创建您自己的测试应用
2. **遵守 rate limits** — 从 `--rate 1` 开始并逐渐增加
3. 初始阶段**使用小型字典**以验证行为
4. 在测试任何系统之前**备好授权文档**
## 贡献
1. Fork
2. Branch:`git checkout -b feature/deteccao-captcha`
3. Commit:`git commit -m 'Adiciona detecção de CAPTCHA'`
4. Push:`git push origin feature/deteccao-captcha`
5. Pull Request
## 许可证
MIT
标签:Python, 凭证填充, 字符串匹配, 无后门, 逆向工具