跳转至

暴力破解与速率限制 (Brute Force & Rate Limit)

摘要 (Summary)

工具 (Tools)

  • ZephrFish/OmniProx - 来自不同提供商的 IP 轮换 - 类似于 FireProx,但适用于 GCP、Azure、阿里巴巴和 CloudFlare。
  • ddd/gpb - 通过轮换 IPv6 地址,对任何 Google 用户的电话号码进行暴力破解。
  • ffuf/ffuf - 用 Go 编写的快速 Web 模糊测试工具 (fuzzer)。
  • PortSwigger/Burp Suite - 行业领先的漏洞扫描、渗透测试和 Web 应用安全平台。
  • lwthiker/curl-impersonate - 一个特殊的 curl 构建版本,可以模拟 Chrome 和 Firefox。

暴力破解 (Bruteforce)

在 Web 环境中,暴力破解是指尝试获得 Web 应用程序未经授权访问的方法,特别是通过登录表单或其他用户输入字段。攻击者系统地输入大量的凭据组合或其他值(例如,遍历数字范围),以利用弱密码或不足的安全措施。

例如,他们可能会提交成千上万个用户名和密码组合,或者通过遍历一个范围(如 0 到 10,000)来猜测安全令牌。如果这种方法没有得到有效的缓解,可能会导致未经授权的访问和数据泄露。

诸如速率限制 (rate limiting)、账户锁定策略、CAPTCHA 和强密码要求之类的对策,对于保护 Web 应用程序免受此类暴力破解攻击至关重要。

Burp Suite Intruder

  • Sniper 攻击 (狙击手):针对单一位置(一个变量),同时循环遍历一个 Payload 集。

    用户名: 密码
    Username1:Password1
    Username1:Password2
    Username1:Password3
    Username1:Password4
    
  • Battering ram 攻击 (攻城槌):使用单一 Payload 集,同时将相同的 Payload 发送到所有标记的位置。

    Username1:Username1
    Username2:Username2
    Username3:Username3
    Username4:Username4
    
  • Pitchfork 攻击 (干草叉):并行使用不同的 Payload 列表,将每个列表中的第 n 个条目组合到一个请求中。

    Username1:Password1
    Username2:Password2
    Username3:Password3
    Username4:Password4
    
  • Cluster bomb 攻击 (集束炸弹):遍历多个 Payload 集的所有组合。

    Username1:Password1
    Username1:Password2
    Username1:Password3
    Username1::Password4
    
    Username2:Password1
    Username2:Password2
    Username2:Password3
    Username2:Password4
    

FFUF

ffuf -w usernames.txt:USER -w passwords.txt:PASS \
     -u https://target.tld/login \
     -X POST -d "username=USER&password=PASS" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -H "X-Forwarded-For: FUZZ" -w ipv4-list.txt:FUZZ \
     -mc all

速率限制 (Rate Limit)

HTTP Pipelining (HTTP 管线化)

HTTP 管线化是 HTTP/1.1 的一个功能,它允许客户端在同一个持久的 TCP 连接上发送多个 HTTP 请求,而无需先等待相应的响应。客户端在同一个连接上“像管道一样”接连发送请求。

TLS 栈 - JA3

JA3 是一种通过对 TLS "hello" 消息的内容进行哈希处理,来对 TLS 客户端进行指纹识别的方法(JA3S 应用于 TLS 服务器)。它提供了一个紧凑的标识符,即使在更高级别的协议字段(如 HTTP user-agent)被隐藏或伪造时,您也可以用它来检测、分类和跟踪网络上的客户端。

JA3 收集 Client Hello 数据包中以下字段的字节十进制值:SSL 版本、接受的加密套件、扩展列表、椭圆曲线和椭圆曲线格式。然后按顺序将这些值连接在一起,使用 "," 分隔每个字段,使用 "-" 分隔每个字段中的每个值。

  • Burp Suite JA3: 53d67b2a806147a7d1d5df74b54dd049, 62f6a6727fda5a1104d5b147cd82e520
  • Tor 客户端 JA3: e7d705a3286e19ea42f587b344ee6865

对策:

  • 使用浏览器驱动的自动化工具 (Puppeteer / Playwright)
  • 使用 lwthiker/curl-impersonate 伪造 TLS 握手
  • 适用于浏览器/库的 JA3 随机化插件

IPv4 网络 (Network IPv4)

使用多个代理来模拟多个客户端。

proxychains ffuf -w wordlist.txt -u https://target.tld/FUZZ
  • 使用 random_chain 来轮换每个请求

    random_chain
    
  • 将每个连接要链接的代理数量设置为 1。

    chain_len = 1
    
  • 最后,在配置文件中指定代理:

    # 类型  主机      端口
    socks5  127.0.0.1 1080
    socks5  192.168.1.50 1080
    http    proxy1.example.com 8080
    http    proxy2.example.com 8080
    

IPv6 网络 (Network IPv6)

许多云提供商(如 Vultr)提供 /64 IPv6 范围,它提供了海量的地址 (18 446 744 073 709 551 616)。这允许在暴力破解攻击期间进行大规模的 IP 轮换。

参考资料 (References)