概述
Nuclei引擎支持使用payloads模块对HTTP请求的任何值/组件进行暴力破解,该模块允许以多种格式运行各种类型的payloads。可以使用简单关键字定义占位符(或在需要变异函数时使用括号{{helper_function(variable)}}),并执行batteringram、pitchfork和clusterbomb攻击。
这些攻击的wordlist需要在请求定义下的payload字段中定义,名称与关键字匹配。Nuclei同时支持基于文件和模板内的wordlist,最后所有DSL功能都完全可用和支持,可用于操作最终值。
注意,如果您正在开发基于文件的payload并将其存储在Nuclei模板目录之外,
您必须使用
-lfa(或-allow-local-file-access)标志运行Nuclei。
这是允许访问不在默认模板目录中的本地文件所必需的。{{ }}标记之间引用。
HTTP Payloads和HTTP Fuzzing之间的区别
虽然两者听起来相似,但Fuzzing和Payloads/BruteForce之间的主要区别在于Fuzzing是Payloads/BruteForce的超集,具有与发现未知漏洞相关的额外功能,而Payloads只是使用给定攻击类型和一组payloads对值进行简单的暴力破解。示例
使用本地wordlist的payloads示例:clusterbomb或pitchfork作为攻击类型,但在payload部分只定义了一个变量,模板将无法编译,因为clusterbomb或pitchfork期望在模板中使用多个变量。
攻击模式
Nuclei引擎支持多种攻击类型,包括默认类型batteringram(通常用于模糊测试单个参数)、clusterbomb和pitchfork(用于模糊测试多个参数,其工作方式与经典的burp intruder相同)。
| 类型 | batteringram | pitchfork | clusterbomb |
|---|---|---|---|
| 支持 | ✔ | ✔ | ✔ |
batteringram
batteringram攻击类型在所有位置放置相同的payload值。它只使用一个payload集。它遍历payload集并用payload值替换所有位置。pitchfork
pitchfork攻击类型为每个位置使用一个payload集。它将第一个payload放在第一个位置,第二个payload放在第二个位置,依此类推。 然后,它同时遍历所有payload集。第一个请求使用每个payload集中的第一个payload,第二个请求使用每个payload集中的第二个payload,依此类推。clusterbomb
clusterbomb攻击尝试payloads的所有不同组合。它仍然将第一个payload放在第一个位置,第二个payload放在第二个位置。但是当它遍历payload集时,它会尝试所有组合。 它同时遍历所有payload集。第一个请求使用每个payload集中的第一个payload,第二个请求使用每个payload集中的第二个payload,依此类推。 这种攻击类型对于暴力破解攻击很有用。在第一个payload集中加载常用用户名列表,在第二个payload集中加载常用密码列表。clusterbomb攻击将尝试所有组合。 更多详情在这里。攻击模式示例
使用clusterbomb攻击进行fuzzing的示例: