构建 404fuzz:永不疲倦的多核 Fuzzer
Source: Dev.to
大多数人认为模糊测试工具只是“发送快速请求的工具”。
这倒是对,但要构建一个既快、内存安全、多核、基于流式、且对开发者友好的模糊测试器,却是完全不同的挑战。
这就是 404fuzz 诞生的故事——它并不是复制 ffuf,而是源于真实的 hacking 痛点、性能问题以及工程取舍。
为什么创建 404fuzz
- 📂 超大词表(数百万行)
- 🐌 工具吃光内存
- 💥 大规模扫描时崩溃
- 🧠 响应重复率太高
- ⚠️ 速率限制(429)导致扫描中止
- 🧱 工具要么太笨拙,要么像扫描器一样沉重
我不想再要一个 Burp、另一个 Nuclei,或是另一个慢吞吞的 Python 模糊器。
我想要一个 笨拙却极其快速的模糊器,只具备足以节省我时间的智能。
“像蚂蚁一样,404fuzz 永远不会累。”
核心原则
- ⚡ 速度不可妥协
- 🧩 内存安全放在首位
- 🎯 猎手决定什么是有趣的——而不是工具
因此:
- ❌ 没有沉重的 “AI 逻辑”
- ❌ 没有扫描规则
- ❌ 没有自动漏洞检测
- ✅ 纯粹的高性能模糊测试
404fuzz 工作原理(内部实现)
1. 流式词表(不占用大量内存)
与其把整个词表一次性加载到内存,404fuzz 会流式读取并在工作进程之间分片:
// streamWordlist.js
export async function* streamWordlist(path, workerId, totalWorkers) {
const rl = require('readline').createInterface({
input: require('fs').createReadStream(path),
crlfDelay: Infinity,
});
let index = 0;
for await (const line of rl) {
if (index % totalWorkers === workerId) {
yield line; // payload
}
index++;
}
}
- 结果: 即使使用百万行的词表,内存也保持稳定;每个工作进程只拿到自己的那一片。
2. 无 Promise.all 的并发,避免内存泄漏
不使用 await Promise.all(requests),404fuzz 采用基于队列的并发模型:
// FuzzQueue.js
class FuzzQueue {
constructor(concurrency = 500) {
this.concurrency = concurrency;
this.running = 0;
this.queue = [];
}
async add(task) {
if (this.running >= this.concurrency) {
await new Promise(resolve => this.queue.push(resolve));
}
this.running++;
try {
return await task();
} finally {
this.running--;
if (this.queue.length) this.queue.shift()();
}
}
}
- 结果: 内存使用保持稳定,吞吐量受控,且不会出现未处理的 Promise 爆炸。
3. 可扩展性与实时反馈
- Node.js cluster: 每个 CPU 核心对应一个工作进程。
- 自动词表分片 给每个进程。
- 实时 RPS 聚合 并在终端实时显示:
- 每秒请求数
- 进度 / 预计完成时间
- 错误率
- 工作进程统计
没有冗余日志——只有简洁、可操作的输出。
404fuzz 是什么(以及不是)
404fuzz 是:
- 一个快速的模糊测试器
- 一个研究工具
- 一个行为探索器
- 一个负载测试引擎
404fuzz 不是:
- 漏洞扫描器
- Burp 替代品
- 基于规则的利用引擎
通过去重降低噪声
扫描 10 万+ 负载时,常会得到大量重复响应(相同的 404 页面、JSON 错误、WAF 拦截等)。其中 70‑90% 可能是噪声。
404fuzz 关注:
- 合并相同的后端行为
- 按响应签名对负载进行分组
输出会显示:
- ✅ 唯一行为
- 📊 有多少负载触发了相同的逻辑
这可以降低噪声、减小输出体积,并减少精神疲劳——且不依赖任何 AI。
附加功能:
- 检测 429 响应并遵守
Retry-After - 智能延迟处理,安全地继续扫描
开源与贡献
404fuzz 完全开源:
👉
适用人群
- 漏洞赏金猎人
- 安全工程师
- Node.js 开发者
- 工具构建者
- 性能爱好者
如何贡献
- 核心引擎改进
- 新的输出模式
- 去重逻辑
- 速率限制处理
- 仪表盘功能
- 文档与测试
- Bug 修复
- 性能基准
这是一款社区驱动的模糊测试器,而非个人自负的项目。
加入项目
如果你认同模糊测试应保持高速、工具应保持可 hack、开源应保持协作,给仓库加星并一起构建 404fuzz。
⭐