Learn about fuzzing HTTP requests with Nuclei
fuzzing
section of the HTTP request. This allows creating templates for generic Web Application vulnerabilities like SQLi, SSRF, CMDi, etc without any information of the target like a classic web fuzzer. We call this concept as Fuzzing for Unknown Vulnerabilities.
filters
section which contains conditions when the template should be executed.
Filters can be considered a twin of matchers in nuclei. They support all matcher types, including DSL, and the only difference is that this serves a different purpose.
For example, to only execute template on POST request with some body, you can use the following filter.
default
) - fuzz query parameters for URL
default
) - replace the value with payloadkey
and value
pairs. This allows users to fuzz based on the key or value of the request part.
For example, Below sample HTTP request can be abstracted as key-value pairs as shown below.
part: Query
key | value |
---|---|
token | x0x0x0 |
source | app |
part: Path
key | value |
---|---|
value | /reset-password |
part: Header
key | value |
---|---|
Host | 127.0.0.1:8082 |
User-Agent | Go-http-client/1.1 |
Content-Length | 23 |
Content-Type | application/json |
Accept-Encoding | gzip |
Connection | close |
part: Cookie
key | value |
---|---|
PHPSESSID | 1234567890 |
part: Body
key | value |
---|---|
password | 12345678 |
value
and value as the entire Body.
key | value |
---|---|
value | ”\x08\x96\x01\x12\x07\x74” |
default
) - replace all values at onceNote: default values are set/used when other options are not defined.
type
for a parameter. It supports payloads, DSL functions, etc and allows users to fully utilize the existing nuclei feature-set for fuzzing purposes.