github.com/projectdiscovery/nuclei/v2@v2.9.15/pkg/templates/templates_doc.go (about) 1 // This Source Code Form is subject to the terms of the Mozilla Public 2 // License, v. 2.0. If a copy of the MPL was not distributed with this 3 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 // DO NOT EDIT: this file is automatically generated by docgen 5 package templates 6 7 import ( 8 "github.com/projectdiscovery/yamldoc-go/encoder" 9 ) 10 11 var ( 12 TemplateDoc encoder.Doc 13 MODELInfoDoc encoder.Doc 14 STRINGSLICEStringSliceDoc encoder.Doc 15 STRINGSLICERawStringSliceDoc encoder.Doc 16 SEVERITYHolderDoc encoder.Doc 17 MODELClassificationDoc encoder.Doc 18 HTTPRequestDoc encoder.Doc 19 GENERATORSAttackTypeHolderDoc encoder.Doc 20 HTTPMethodTypeHolderDoc encoder.Doc 21 FUZZRuleDoc encoder.Doc 22 SignatureTypeHolderDoc encoder.Doc 23 DNSRequestDoc encoder.Doc 24 DNSRequestTypeHolderDoc encoder.Doc 25 FILERequestDoc encoder.Doc 26 NETWORKRequestDoc encoder.Doc 27 NETWORKInputDoc encoder.Doc 28 NetworkInputTypeHolderDoc encoder.Doc 29 HEADLESSRequestDoc encoder.Doc 30 ENGINEActionDoc encoder.Doc 31 ActionTypeHolderDoc encoder.Doc 32 USERAGENTUserAgentHolderDoc encoder.Doc 33 SSLRequestDoc encoder.Doc 34 WEBSOCKETRequestDoc encoder.Doc 35 WEBSOCKETInputDoc encoder.Doc 36 WHOISRequestDoc encoder.Doc 37 HTTPSignatureTypeHolderDoc encoder.Doc 38 VARIABLESVariableDoc encoder.Doc 39 ) 40 41 func init() { 42 TemplateDoc.Type = "Template" 43 TemplateDoc.Comments[encoder.LineComment] = " Template is a YAML input file which defines all the requests and" 44 TemplateDoc.Description = "Template is a YAML input file which defines all the requests and\n other metadata for a template." 45 TemplateDoc.Fields = make([]encoder.Doc, 17) 46 TemplateDoc.Fields[0].Name = "id" 47 TemplateDoc.Fields[0].Type = "string" 48 TemplateDoc.Fields[0].Note = "" 49 TemplateDoc.Fields[0].Description = "ID is the unique id for the template.\n\n#### Good IDs\n\nA good ID uniquely identifies what the requests in the template\nare doing. Let's say you have a template that identifies a git-config\nfile on the webservers, a good name would be `git-config-exposure`. Another\nexample name is `azure-apps-nxdomain-takeover`." 50 TemplateDoc.Fields[0].Comments[encoder.LineComment] = "ID is the unique id for the template." 51 52 TemplateDoc.Fields[0].AddExample("ID Example", "CVE-2021-19520") 53 TemplateDoc.Fields[1].Name = "info" 54 TemplateDoc.Fields[1].Type = "model.Info" 55 TemplateDoc.Fields[1].Note = "" 56 TemplateDoc.Fields[1].Description = "Info contains metadata information about the template." 57 TemplateDoc.Fields[1].Comments[encoder.LineComment] = "Info contains metadata information about the template." 58 59 TemplateDoc.Fields[1].AddExample("", exampleInfoStructure) 60 TemplateDoc.Fields[2].Name = "requests" 61 TemplateDoc.Fields[2].Type = "[]http.Request" 62 TemplateDoc.Fields[2].Note = "" 63 TemplateDoc.Fields[2].Description = "Requests contains the http request to make in the template.\nWARNING: 'requests' will be deprecated and will be removed in a future release. Please use 'http' instead." 64 TemplateDoc.Fields[2].Comments[encoder.LineComment] = "Requests contains the http request to make in the template." 65 66 TemplateDoc.Fields[2].AddExample("", exampleNormalHTTPRequest) 67 TemplateDoc.Fields[3].Name = "http" 68 TemplateDoc.Fields[3].Type = "[]http.Request" 69 TemplateDoc.Fields[3].Note = "" 70 TemplateDoc.Fields[3].Description = "description: |\n HTTP contains the http request to make in the template.\n examples:\n - value: exampleNormalHTTPRequest\n RequestsWithHTTP is placeholder(internal) only, and should not be used instead use RequestsHTTP" 71 TemplateDoc.Fields[3].Comments[encoder.LineComment] = " description: |" 72 TemplateDoc.Fields[4].Name = "dns" 73 TemplateDoc.Fields[4].Type = "[]dns.Request" 74 TemplateDoc.Fields[4].Note = "" 75 TemplateDoc.Fields[4].Description = "DNS contains the dns request to make in the template" 76 TemplateDoc.Fields[4].Comments[encoder.LineComment] = "DNS contains the dns request to make in the template" 77 78 TemplateDoc.Fields[4].AddExample("", exampleNormalDNSRequest) 79 TemplateDoc.Fields[5].Name = "file" 80 TemplateDoc.Fields[5].Type = "[]file.Request" 81 TemplateDoc.Fields[5].Note = "" 82 TemplateDoc.Fields[5].Description = "File contains the file request to make in the template" 83 TemplateDoc.Fields[5].Comments[encoder.LineComment] = "File contains the file request to make in the template" 84 85 TemplateDoc.Fields[5].AddExample("", exampleNormalFileRequest) 86 TemplateDoc.Fields[6].Name = "network" 87 TemplateDoc.Fields[6].Type = "[]network.Request" 88 TemplateDoc.Fields[6].Note = "" 89 TemplateDoc.Fields[6].Description = "Network contains the network request to make in the template\nWARNING: 'network' will be deprecated and will be removed in a future release. Please use 'tcp' instead." 90 TemplateDoc.Fields[6].Comments[encoder.LineComment] = "Network contains the network request to make in the template" 91 92 TemplateDoc.Fields[6].AddExample("", exampleNormalNetworkRequest) 93 TemplateDoc.Fields[7].Name = "tcp" 94 TemplateDoc.Fields[7].Type = "[]network.Request" 95 TemplateDoc.Fields[7].Note = "" 96 TemplateDoc.Fields[7].Description = "description: |\n TCP contains the network request to make in the template\n examples:\n - value: exampleNormalNetworkRequest\n RequestsWithTCP is placeholder(internal) only, and should not be used instead use RequestsNetwork" 97 TemplateDoc.Fields[7].Comments[encoder.LineComment] = " description: |" 98 TemplateDoc.Fields[8].Name = "headless" 99 TemplateDoc.Fields[8].Type = "[]headless.Request" 100 TemplateDoc.Fields[8].Note = "" 101 TemplateDoc.Fields[8].Description = "Headless contains the headless request to make in the template." 102 TemplateDoc.Fields[8].Comments[encoder.LineComment] = "Headless contains the headless request to make in the template." 103 TemplateDoc.Fields[9].Name = "ssl" 104 TemplateDoc.Fields[9].Type = "[]ssl.Request" 105 TemplateDoc.Fields[9].Note = "" 106 TemplateDoc.Fields[9].Description = "SSL contains the SSL request to make in the template." 107 TemplateDoc.Fields[9].Comments[encoder.LineComment] = "SSL contains the SSL request to make in the template." 108 TemplateDoc.Fields[10].Name = "websocket" 109 TemplateDoc.Fields[10].Type = "[]websocket.Request" 110 TemplateDoc.Fields[10].Note = "" 111 TemplateDoc.Fields[10].Description = "Websocket contains the Websocket request to make in the template." 112 TemplateDoc.Fields[10].Comments[encoder.LineComment] = "Websocket contains the Websocket request to make in the template." 113 TemplateDoc.Fields[11].Name = "whois" 114 TemplateDoc.Fields[11].Type = "[]whois.Request" 115 TemplateDoc.Fields[11].Note = "" 116 TemplateDoc.Fields[11].Description = "WHOIS contains the WHOIS request to make in the template." 117 TemplateDoc.Fields[11].Comments[encoder.LineComment] = "WHOIS contains the WHOIS request to make in the template." 118 TemplateDoc.Fields[12].Name = "self-contained" 119 TemplateDoc.Fields[12].Type = "bool" 120 TemplateDoc.Fields[12].Note = "" 121 TemplateDoc.Fields[12].Description = "Self Contained marks Requests for the template as self-contained" 122 TemplateDoc.Fields[12].Comments[encoder.LineComment] = "Self Contained marks Requests for the template as self-contained" 123 TemplateDoc.Fields[13].Name = "stop-at-first-match" 124 TemplateDoc.Fields[13].Type = "bool" 125 TemplateDoc.Fields[13].Note = "" 126 TemplateDoc.Fields[13].Description = "Stop execution once first match is found" 127 TemplateDoc.Fields[13].Comments[encoder.LineComment] = "Stop execution once first match is found" 128 TemplateDoc.Fields[14].Name = "signature" 129 TemplateDoc.Fields[14].Type = "http.SignatureTypeHolder" 130 TemplateDoc.Fields[14].Note = "" 131 TemplateDoc.Fields[14].Description = "Signature is the request signature method" 132 TemplateDoc.Fields[14].Comments[encoder.LineComment] = "Signature is the request signature method" 133 TemplateDoc.Fields[14].Values = []string{ 134 "AWS", 135 } 136 TemplateDoc.Fields[15].Name = "variables" 137 TemplateDoc.Fields[15].Type = "variables.Variable" 138 TemplateDoc.Fields[15].Note = "" 139 TemplateDoc.Fields[15].Description = "Variables contains any variables for the current request." 140 TemplateDoc.Fields[15].Comments[encoder.LineComment] = "Variables contains any variables for the current request." 141 TemplateDoc.Fields[16].Name = "constants" 142 TemplateDoc.Fields[16].Type = "map[string]interface{}" 143 TemplateDoc.Fields[16].Note = "" 144 TemplateDoc.Fields[16].Description = "Constants contains any scalar constant for the current template" 145 TemplateDoc.Fields[16].Comments[encoder.LineComment] = "Constants contains any scalar constant for the current template" 146 147 MODELInfoDoc.Type = "model.Info" 148 MODELInfoDoc.Comments[encoder.LineComment] = " Info contains metadata information about a template" 149 MODELInfoDoc.Description = "Info contains metadata information about a template" 150 151 MODELInfoDoc.AddExample("", exampleInfoStructure) 152 MODELInfoDoc.AppearsIn = []encoder.Appearance{ 153 { 154 TypeName: "Template", 155 FieldName: "info", 156 }, 157 } 158 MODELInfoDoc.Fields = make([]encoder.Doc, 10) 159 MODELInfoDoc.Fields[0].Name = "name" 160 MODELInfoDoc.Fields[0].Type = "string" 161 MODELInfoDoc.Fields[0].Note = "" 162 MODELInfoDoc.Fields[0].Description = "Name should be good short summary that identifies what the template does." 163 MODELInfoDoc.Fields[0].Comments[encoder.LineComment] = "Name should be good short summary that identifies what the template does." 164 165 MODELInfoDoc.Fields[0].AddExample("", "bower.json file disclosure") 166 167 MODELInfoDoc.Fields[0].AddExample("", "Nagios Default Credentials Check") 168 MODELInfoDoc.Fields[1].Name = "author" 169 MODELInfoDoc.Fields[1].Type = "stringslice.StringSlice" 170 MODELInfoDoc.Fields[1].Note = "" 171 MODELInfoDoc.Fields[1].Description = "Author of the template.\n\nMultiple values can also be specified separated by commas." 172 MODELInfoDoc.Fields[1].Comments[encoder.LineComment] = "Author of the template." 173 174 MODELInfoDoc.Fields[1].AddExample("", "<username>") 175 MODELInfoDoc.Fields[2].Name = "tags" 176 MODELInfoDoc.Fields[2].Type = "stringslice.StringSlice" 177 MODELInfoDoc.Fields[2].Note = "" 178 MODELInfoDoc.Fields[2].Description = "Any tags for the template.\n\nMultiple values can also be specified separated by commas." 179 MODELInfoDoc.Fields[2].Comments[encoder.LineComment] = "Any tags for the template." 180 181 MODELInfoDoc.Fields[2].AddExample("Example tags", "cve,cve2019,grafana,auth-bypass,dos") 182 MODELInfoDoc.Fields[3].Name = "description" 183 MODELInfoDoc.Fields[3].Type = "string" 184 MODELInfoDoc.Fields[3].Note = "" 185 MODELInfoDoc.Fields[3].Description = "Description of the template.\n\nYou can go in-depth here on what the template actually does." 186 MODELInfoDoc.Fields[3].Comments[encoder.LineComment] = "Description of the template." 187 188 MODELInfoDoc.Fields[3].AddExample("", "Bower is a package manager which stores package information in the bower.json file") 189 190 MODELInfoDoc.Fields[3].AddExample("", "Subversion ALM for the enterprise before 8.8.2 allows reflected XSS at multiple locations") 191 MODELInfoDoc.Fields[4].Name = "impact" 192 MODELInfoDoc.Fields[4].Type = "string" 193 MODELInfoDoc.Fields[4].Note = "" 194 MODELInfoDoc.Fields[4].Description = "Impact of the template.\n\nYou can go in-depth here on impact of the template." 195 MODELInfoDoc.Fields[4].Comments[encoder.LineComment] = "Impact of the template." 196 197 MODELInfoDoc.Fields[4].AddExample("", "Successful exploitation of this vulnerability could allow an attacker to execute arbitrary SQL queries, potentially leading to unauthorized access, data leakage, or data manipulation.") 198 199 MODELInfoDoc.Fields[4].AddExample("", "Successful exploitation of this vulnerability could allow an attacker to execute arbitrary script code in the context of the victim's browser, potentially leading to session hijacking, defacement, or theft of sensitive information.") 200 MODELInfoDoc.Fields[5].Name = "reference" 201 MODELInfoDoc.Fields[5].Type = "stringslice.RawStringSlice" 202 MODELInfoDoc.Fields[5].Note = "" 203 MODELInfoDoc.Fields[5].Description = "References for the template.\n\nThis should contain links relevant to the template." 204 MODELInfoDoc.Fields[5].Comments[encoder.LineComment] = "References for the template." 205 206 MODELInfoDoc.Fields[5].AddExample("", []string{"https://github.com/strapi/strapi", "https://github.com/getgrav/grav"}) 207 MODELInfoDoc.Fields[6].Name = "severity" 208 MODELInfoDoc.Fields[6].Type = "severity.Holder" 209 MODELInfoDoc.Fields[6].Note = "" 210 MODELInfoDoc.Fields[6].Description = "Severity of the template." 211 MODELInfoDoc.Fields[6].Comments[encoder.LineComment] = "Severity of the template." 212 MODELInfoDoc.Fields[7].Name = "metadata" 213 MODELInfoDoc.Fields[7].Type = "map[string]interface{}" 214 MODELInfoDoc.Fields[7].Note = "" 215 MODELInfoDoc.Fields[7].Description = "Metadata of the template." 216 MODELInfoDoc.Fields[7].Comments[encoder.LineComment] = "Metadata of the template." 217 218 MODELInfoDoc.Fields[7].AddExample("", map[string]string{"customField1": "customValue1"}) 219 MODELInfoDoc.Fields[8].Name = "classification" 220 MODELInfoDoc.Fields[8].Type = "model.Classification" 221 MODELInfoDoc.Fields[8].Note = "" 222 MODELInfoDoc.Fields[8].Description = "Classification contains classification information about the template." 223 MODELInfoDoc.Fields[8].Comments[encoder.LineComment] = "Classification contains classification information about the template." 224 MODELInfoDoc.Fields[9].Name = "remediation" 225 MODELInfoDoc.Fields[9].Type = "string" 226 MODELInfoDoc.Fields[9].Note = "" 227 MODELInfoDoc.Fields[9].Description = "Remediation steps for the template.\n\nYou can go in-depth here on how to mitigate the problem found by this template." 228 MODELInfoDoc.Fields[9].Comments[encoder.LineComment] = "Remediation steps for the template." 229 230 MODELInfoDoc.Fields[9].AddExample("", "Change the default administrative username and password of Apache ActiveMQ by editing the file jetty-realm.properties") 231 232 STRINGSLICEStringSliceDoc.Type = "stringslice.StringSlice" 233 STRINGSLICEStringSliceDoc.Comments[encoder.LineComment] = " StringSlice represents a single (in-lined) or multiple string value(s)." 234 STRINGSLICEStringSliceDoc.Description = "StringSlice represents a single (in-lined) or multiple string value(s).\n The unmarshaller does not automatically convert in-lined strings to []string, hence the interface{} type is required." 235 236 STRINGSLICEStringSliceDoc.AddExample("", "<username>") 237 238 STRINGSLICEStringSliceDoc.AddExample("Example tags", "cve,cve2019,grafana,auth-bypass,dos") 239 240 STRINGSLICEStringSliceDoc.AddExample("", "CVE-2020-14420") 241 242 STRINGSLICEStringSliceDoc.AddExample("", "CWE-22") 243 STRINGSLICEStringSliceDoc.AppearsIn = []encoder.Appearance{ 244 { 245 TypeName: "model.Info", 246 FieldName: "author", 247 }, 248 { 249 TypeName: "model.Info", 250 FieldName: "tags", 251 }, 252 { 253 TypeName: "model.Classification", 254 FieldName: "cve-id", 255 }, 256 { 257 TypeName: "model.Classification", 258 FieldName: "cwe-id", 259 }, 260 } 261 STRINGSLICEStringSliceDoc.Fields = make([]encoder.Doc, 0) 262 263 STRINGSLICERawStringSliceDoc.Type = "stringslice.RawStringSlice" 264 STRINGSLICERawStringSliceDoc.Comments[encoder.LineComment] = "" 265 STRINGSLICERawStringSliceDoc.Description = "" 266 267 STRINGSLICERawStringSliceDoc.AddExample("", []string{"https://github.com/strapi/strapi", "https://github.com/getgrav/grav"}) 268 STRINGSLICERawStringSliceDoc.AppearsIn = []encoder.Appearance{ 269 { 270 TypeName: "model.Info", 271 FieldName: "reference", 272 }, 273 } 274 STRINGSLICERawStringSliceDoc.Fields = make([]encoder.Doc, 0) 275 276 SEVERITYHolderDoc.Type = "severity.Holder" 277 SEVERITYHolderDoc.Comments[encoder.LineComment] = " Holder holds a Severity type. Required for un/marshalling purposes" 278 SEVERITYHolderDoc.Description = "Holder holds a Severity type. Required for un/marshalling purposes" 279 SEVERITYHolderDoc.AppearsIn = []encoder.Appearance{ 280 { 281 TypeName: "model.Info", 282 FieldName: "severity", 283 }, 284 } 285 SEVERITYHolderDoc.Fields = make([]encoder.Doc, 1) 286 SEVERITYHolderDoc.Fields[0].Name = "" 287 SEVERITYHolderDoc.Fields[0].Type = "Severity" 288 SEVERITYHolderDoc.Fields[0].Note = "" 289 SEVERITYHolderDoc.Fields[0].Description = "" 290 SEVERITYHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 291 SEVERITYHolderDoc.Fields[0].EnumFields = []string{ 292 "undefined", 293 "info", 294 "low", 295 "medium", 296 "high", 297 "critical", 298 "unknown", 299 } 300 301 MODELClassificationDoc.Type = "model.Classification" 302 MODELClassificationDoc.Comments[encoder.LineComment] = "" 303 MODELClassificationDoc.Description = "" 304 MODELClassificationDoc.AppearsIn = []encoder.Appearance{ 305 { 306 TypeName: "model.Info", 307 FieldName: "classification", 308 }, 309 } 310 MODELClassificationDoc.Fields = make([]encoder.Doc, 7) 311 MODELClassificationDoc.Fields[0].Name = "cve-id" 312 MODELClassificationDoc.Fields[0].Type = "stringslice.StringSlice" 313 MODELClassificationDoc.Fields[0].Note = "" 314 MODELClassificationDoc.Fields[0].Description = "CVE ID for the template" 315 MODELClassificationDoc.Fields[0].Comments[encoder.LineComment] = "CVE ID for the template" 316 317 MODELClassificationDoc.Fields[0].AddExample("", "CVE-2020-14420") 318 MODELClassificationDoc.Fields[1].Name = "cwe-id" 319 MODELClassificationDoc.Fields[1].Type = "stringslice.StringSlice" 320 MODELClassificationDoc.Fields[1].Note = "" 321 MODELClassificationDoc.Fields[1].Description = "CWE ID for the template." 322 MODELClassificationDoc.Fields[1].Comments[encoder.LineComment] = "CWE ID for the template." 323 324 MODELClassificationDoc.Fields[1].AddExample("", "CWE-22") 325 MODELClassificationDoc.Fields[2].Name = "cvss-metrics" 326 MODELClassificationDoc.Fields[2].Type = "string" 327 MODELClassificationDoc.Fields[2].Note = "" 328 MODELClassificationDoc.Fields[2].Description = "CVSS Metrics for the template." 329 MODELClassificationDoc.Fields[2].Comments[encoder.LineComment] = "CVSS Metrics for the template." 330 331 MODELClassificationDoc.Fields[2].AddExample("", "3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H") 332 MODELClassificationDoc.Fields[3].Name = "cvss-score" 333 MODELClassificationDoc.Fields[3].Type = "float64" 334 MODELClassificationDoc.Fields[3].Note = "" 335 MODELClassificationDoc.Fields[3].Description = "CVSS Score for the template." 336 MODELClassificationDoc.Fields[3].Comments[encoder.LineComment] = "CVSS Score for the template." 337 338 MODELClassificationDoc.Fields[3].AddExample("", "9.8") 339 MODELClassificationDoc.Fields[4].Name = "epss-score" 340 MODELClassificationDoc.Fields[4].Type = "float64" 341 MODELClassificationDoc.Fields[4].Note = "" 342 MODELClassificationDoc.Fields[4].Description = "EPSS Score for the template." 343 MODELClassificationDoc.Fields[4].Comments[encoder.LineComment] = "EPSS Score for the template." 344 345 MODELClassificationDoc.Fields[4].AddExample("", "0.42509") 346 MODELClassificationDoc.Fields[5].Name = "epss-percentile" 347 MODELClassificationDoc.Fields[5].Type = "float64" 348 MODELClassificationDoc.Fields[5].Note = "" 349 MODELClassificationDoc.Fields[5].Description = "EPSS Percentile for the template." 350 MODELClassificationDoc.Fields[5].Comments[encoder.LineComment] = "EPSS Percentile for the template." 351 352 MODELClassificationDoc.Fields[5].AddExample("", "0.42509") 353 MODELClassificationDoc.Fields[6].Name = "cpe" 354 MODELClassificationDoc.Fields[6].Type = "string" 355 MODELClassificationDoc.Fields[6].Note = "" 356 MODELClassificationDoc.Fields[6].Description = "CPE for the template." 357 MODELClassificationDoc.Fields[6].Comments[encoder.LineComment] = "CPE for the template." 358 359 MODELClassificationDoc.Fields[6].AddExample("", "cpe:/a:vendor:product:version") 360 361 HTTPRequestDoc.Type = "http.Request" 362 HTTPRequestDoc.Comments[encoder.LineComment] = " Request contains a http request to be made from a template" 363 HTTPRequestDoc.Description = "Request contains a http request to be made from a template" 364 365 HTTPRequestDoc.AddExample("", exampleNormalHTTPRequest) 366 HTTPRequestDoc.AppearsIn = []encoder.Appearance{ 367 { 368 TypeName: "Template", 369 FieldName: "requests", 370 }, 371 { 372 TypeName: "Template", 373 FieldName: "http", 374 }, 375 } 376 HTTPRequestDoc.PartDefinitions = []encoder.KeyValue{ 377 { 378 Key: "template-id", 379 Value: "ID of the template executed", 380 }, 381 { 382 Key: "template-info", 383 Value: "Info Block of the template executed", 384 }, 385 { 386 Key: "template-path", 387 Value: "Path of the template executed", 388 }, 389 { 390 Key: "host", 391 Value: "Host is the input to the template", 392 }, 393 { 394 Key: "matched", 395 Value: "Matched is the input which was matched upon", 396 }, 397 { 398 Key: "type", 399 Value: "Type is the type of request made", 400 }, 401 { 402 Key: "request", 403 Value: "HTTP request made from the client", 404 }, 405 { 406 Key: "response", 407 Value: "HTTP response received from server", 408 }, 409 { 410 Key: "status_code", 411 Value: "Status Code received from the Server", 412 }, 413 { 414 Key: "body", 415 Value: "HTTP response body received from server (default)", 416 }, 417 { 418 Key: "content_length", 419 Value: "HTTP Response content length", 420 }, 421 { 422 Key: "header,all_headers", 423 Value: "HTTP response headers", 424 }, 425 { 426 Key: "duration", 427 Value: "HTTP request time duration", 428 }, 429 { 430 Key: "all", 431 Value: "HTTP response body + headers", 432 }, 433 { 434 Key: "cookies_from_response", 435 Value: "HTTP response cookies in name:value format", 436 }, 437 { 438 Key: "headers_from_response", 439 Value: "HTTP response headers in name:value format", 440 }, 441 } 442 HTTPRequestDoc.Fields = make([]encoder.Doc, 31) 443 HTTPRequestDoc.Fields[0].Name = "path" 444 HTTPRequestDoc.Fields[0].Type = "[]string" 445 HTTPRequestDoc.Fields[0].Note = "" 446 HTTPRequestDoc.Fields[0].Description = "Path contains the path/s for the HTTP requests. It supports variables\nas placeholders." 447 HTTPRequestDoc.Fields[0].Comments[encoder.LineComment] = "Path contains the path/s for the HTTP requests. It supports variables" 448 449 HTTPRequestDoc.Fields[0].AddExample("Some example path values", []string{"{{BaseURL}}", "{{BaseURL}}/+CSCOU+/../+CSCOE+/files/file_list.json?path=/sessions"}) 450 HTTPRequestDoc.Fields[1].Name = "raw" 451 HTTPRequestDoc.Fields[1].Type = "[]string" 452 HTTPRequestDoc.Fields[1].Note = "" 453 HTTPRequestDoc.Fields[1].Description = "Raw contains HTTP Requests in Raw format." 454 HTTPRequestDoc.Fields[1].Comments[encoder.LineComment] = "Raw contains HTTP Requests in Raw format." 455 456 HTTPRequestDoc.Fields[1].AddExample("Some example raw requests", []string{"GET /etc/passwd HTTP/1.1\nHost:\nContent-Length: 4", "POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.1\nHost: {{Hostname}}\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0\nContent-Length: 1\nConnection: close\n\necho\necho\ncat /etc/passwd 2>&1"}) 457 HTTPRequestDoc.Fields[2].Name = "id" 458 HTTPRequestDoc.Fields[2].Type = "string" 459 HTTPRequestDoc.Fields[2].Note = "" 460 HTTPRequestDoc.Fields[2].Description = "ID is the optional id of the request" 461 HTTPRequestDoc.Fields[2].Comments[encoder.LineComment] = " ID is the optional id of the request" 462 HTTPRequestDoc.Fields[3].Name = "name" 463 HTTPRequestDoc.Fields[3].Type = "string" 464 HTTPRequestDoc.Fields[3].Note = "" 465 HTTPRequestDoc.Fields[3].Description = "Name is the optional name of the request.\n\nIf a name is specified, all the named request in a template can be matched upon\nin a combined manner allowing multi-request based matchers." 466 HTTPRequestDoc.Fields[3].Comments[encoder.LineComment] = "Name is the optional name of the request." 467 HTTPRequestDoc.Fields[4].Name = "attack" 468 HTTPRequestDoc.Fields[4].Type = "generators.AttackTypeHolder" 469 HTTPRequestDoc.Fields[4].Note = "" 470 HTTPRequestDoc.Fields[4].Description = "Attack is the type of payload combinations to perform.\n\nbatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads." 471 HTTPRequestDoc.Fields[4].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform." 472 HTTPRequestDoc.Fields[4].Values = []string{ 473 "batteringram", 474 "pitchfork", 475 "clusterbomb", 476 } 477 HTTPRequestDoc.Fields[5].Name = "method" 478 HTTPRequestDoc.Fields[5].Type = "HTTPMethodTypeHolder" 479 HTTPRequestDoc.Fields[5].Note = "" 480 HTTPRequestDoc.Fields[5].Description = "Method is the HTTP Request Method." 481 HTTPRequestDoc.Fields[5].Comments[encoder.LineComment] = "Method is the HTTP Request Method." 482 HTTPRequestDoc.Fields[6].Name = "body" 483 HTTPRequestDoc.Fields[6].Type = "string" 484 HTTPRequestDoc.Fields[6].Note = "" 485 HTTPRequestDoc.Fields[6].Description = "Body is an optional parameter which contains HTTP Request body." 486 HTTPRequestDoc.Fields[6].Comments[encoder.LineComment] = "Body is an optional parameter which contains HTTP Request body." 487 488 HTTPRequestDoc.Fields[6].AddExample("Same Body for a Login POST request", "username=test&password=test") 489 HTTPRequestDoc.Fields[7].Name = "payloads" 490 HTTPRequestDoc.Fields[7].Type = "map[string]interface{}" 491 HTTPRequestDoc.Fields[7].Note = "" 492 HTTPRequestDoc.Fields[7].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time." 493 HTTPRequestDoc.Fields[7].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request." 494 HTTPRequestDoc.Fields[8].Name = "headers" 495 HTTPRequestDoc.Fields[8].Type = "map[string]string" 496 HTTPRequestDoc.Fields[8].Note = "" 497 HTTPRequestDoc.Fields[8].Description = "Headers contains HTTP Headers to send with the request." 498 HTTPRequestDoc.Fields[8].Comments[encoder.LineComment] = "Headers contains HTTP Headers to send with the request." 499 500 HTTPRequestDoc.Fields[8].AddExample("", map[string]string{"Content-Type": "application/x-www-form-urlencoded", "Content-Length": "1", "Any-Header": "Any-Value"}) 501 HTTPRequestDoc.Fields[9].Name = "race_count" 502 HTTPRequestDoc.Fields[9].Type = "int" 503 HTTPRequestDoc.Fields[9].Note = "" 504 HTTPRequestDoc.Fields[9].Description = "RaceCount is the number of times to send a request in Race Condition Attack." 505 HTTPRequestDoc.Fields[9].Comments[encoder.LineComment] = "RaceCount is the number of times to send a request in Race Condition Attack." 506 507 HTTPRequestDoc.Fields[9].AddExample("Send a request 5 times", 5) 508 HTTPRequestDoc.Fields[10].Name = "max-redirects" 509 HTTPRequestDoc.Fields[10].Type = "int" 510 HTTPRequestDoc.Fields[10].Note = "" 511 HTTPRequestDoc.Fields[10].Description = "MaxRedirects is the maximum number of redirects that should be followed." 512 HTTPRequestDoc.Fields[10].Comments[encoder.LineComment] = "MaxRedirects is the maximum number of redirects that should be followed." 513 514 HTTPRequestDoc.Fields[10].AddExample("Follow up to 5 redirects", 5) 515 HTTPRequestDoc.Fields[11].Name = "pipeline-concurrent-connections" 516 HTTPRequestDoc.Fields[11].Type = "int" 517 HTTPRequestDoc.Fields[11].Note = "" 518 HTTPRequestDoc.Fields[11].Description = "PipelineConcurrentConnections is number of connections to create during pipelining." 519 HTTPRequestDoc.Fields[11].Comments[encoder.LineComment] = "PipelineConcurrentConnections is number of connections to create during pipelining." 520 521 HTTPRequestDoc.Fields[11].AddExample("Create 40 concurrent connections", 40) 522 HTTPRequestDoc.Fields[12].Name = "pipeline-requests-per-connection" 523 HTTPRequestDoc.Fields[12].Type = "int" 524 HTTPRequestDoc.Fields[12].Note = "" 525 HTTPRequestDoc.Fields[12].Description = "PipelineRequestsPerConnection is number of requests to send per connection when pipelining." 526 HTTPRequestDoc.Fields[12].Comments[encoder.LineComment] = "PipelineRequestsPerConnection is number of requests to send per connection when pipelining." 527 528 HTTPRequestDoc.Fields[12].AddExample("Send 100 requests per pipeline connection", 100) 529 HTTPRequestDoc.Fields[13].Name = "threads" 530 HTTPRequestDoc.Fields[13].Type = "int" 531 HTTPRequestDoc.Fields[13].Note = "" 532 HTTPRequestDoc.Fields[13].Description = "Threads specifies number of threads to use sending requests. This enables Connection Pooling.\n\nConnection: Close attribute must not be used in request while using threads flag, otherwise\npooling will fail and engine will continue to close connections after requests." 533 HTTPRequestDoc.Fields[13].Comments[encoder.LineComment] = "Threads specifies number of threads to use sending requests. This enables Connection Pooling." 534 535 HTTPRequestDoc.Fields[13].AddExample("Send requests using 10 concurrent threads", 10) 536 HTTPRequestDoc.Fields[14].Name = "max-size" 537 HTTPRequestDoc.Fields[14].Type = "int" 538 HTTPRequestDoc.Fields[14].Note = "" 539 HTTPRequestDoc.Fields[14].Description = "MaxSize is the maximum size of http response body to read in bytes." 540 HTTPRequestDoc.Fields[14].Comments[encoder.LineComment] = "MaxSize is the maximum size of http response body to read in bytes." 541 542 HTTPRequestDoc.Fields[14].AddExample("Read max 2048 bytes of the response", 2048) 543 HTTPRequestDoc.Fields[15].Name = "fuzzing" 544 HTTPRequestDoc.Fields[15].Type = "[]fuzz.Rule" 545 HTTPRequestDoc.Fields[15].Note = "" 546 HTTPRequestDoc.Fields[15].Description = "Fuzzing describes schema to fuzz http requests" 547 HTTPRequestDoc.Fields[15].Comments[encoder.LineComment] = " Fuzzing describes schema to fuzz http requests" 548 HTTPRequestDoc.Fields[16].Name = "signature" 549 HTTPRequestDoc.Fields[16].Type = "SignatureTypeHolder" 550 HTTPRequestDoc.Fields[16].Note = "" 551 HTTPRequestDoc.Fields[16].Description = "Signature is the request signature method" 552 HTTPRequestDoc.Fields[16].Comments[encoder.LineComment] = "Signature is the request signature method" 553 HTTPRequestDoc.Fields[16].Values = []string{ 554 "AWS", 555 } 556 HTTPRequestDoc.Fields[17].Name = "cookie-reuse" 557 HTTPRequestDoc.Fields[17].Type = "bool" 558 HTTPRequestDoc.Fields[17].Note = "" 559 HTTPRequestDoc.Fields[17].Description = "CookieReuse is an optional setting that enables cookie reuse for\nall requests defined in raw section." 560 HTTPRequestDoc.Fields[17].Comments[encoder.LineComment] = "CookieReuse is an optional setting that enables cookie reuse for" 561 HTTPRequestDoc.Fields[18].Name = "read-all" 562 HTTPRequestDoc.Fields[18].Type = "bool" 563 HTTPRequestDoc.Fields[18].Note = "" 564 HTTPRequestDoc.Fields[18].Description = "Enables force reading of the entire raw unsafe request body ignoring\nany specified content length headers." 565 HTTPRequestDoc.Fields[18].Comments[encoder.LineComment] = "Enables force reading of the entire raw unsafe request body ignoring" 566 HTTPRequestDoc.Fields[19].Name = "redirects" 567 HTTPRequestDoc.Fields[19].Type = "bool" 568 HTTPRequestDoc.Fields[19].Note = "" 569 HTTPRequestDoc.Fields[19].Description = "Redirects specifies whether redirects should be followed by the HTTP Client.\n\nThis can be used in conjunction with `max-redirects` to control the HTTP request redirects." 570 HTTPRequestDoc.Fields[19].Comments[encoder.LineComment] = "Redirects specifies whether redirects should be followed by the HTTP Client." 571 HTTPRequestDoc.Fields[20].Name = "host-redirects" 572 HTTPRequestDoc.Fields[20].Type = "bool" 573 HTTPRequestDoc.Fields[20].Note = "" 574 HTTPRequestDoc.Fields[20].Description = "Redirects specifies whether only redirects to the same host should be followed by the HTTP Client.\n\nThis can be used in conjunction with `max-redirects` to control the HTTP request redirects." 575 HTTPRequestDoc.Fields[20].Comments[encoder.LineComment] = "Redirects specifies whether only redirects to the same host should be followed by the HTTP Client." 576 HTTPRequestDoc.Fields[21].Name = "pipeline" 577 HTTPRequestDoc.Fields[21].Type = "bool" 578 HTTPRequestDoc.Fields[21].Note = "" 579 HTTPRequestDoc.Fields[21].Description = "Pipeline defines if the attack should be performed with HTTP 1.1 Pipelining\n\nAll requests must be idempotent (GET/POST). This can be used for race conditions/billions requests." 580 HTTPRequestDoc.Fields[21].Comments[encoder.LineComment] = "Pipeline defines if the attack should be performed with HTTP 1.1 Pipelining" 581 HTTPRequestDoc.Fields[22].Name = "unsafe" 582 HTTPRequestDoc.Fields[22].Type = "bool" 583 HTTPRequestDoc.Fields[22].Note = "" 584 HTTPRequestDoc.Fields[22].Description = "Unsafe specifies whether to use rawhttp engine for sending Non RFC-Compliant requests.\n\nThis uses the [rawhttp](https://github.com/projectdiscovery/rawhttp) engine to achieve complete\ncontrol over the request, with no normalization performed by the client." 585 HTTPRequestDoc.Fields[22].Comments[encoder.LineComment] = "Unsafe specifies whether to use rawhttp engine for sending Non RFC-Compliant requests." 586 HTTPRequestDoc.Fields[23].Name = "race" 587 HTTPRequestDoc.Fields[23].Type = "bool" 588 HTTPRequestDoc.Fields[23].Note = "" 589 HTTPRequestDoc.Fields[23].Description = "Race determines if all the request have to be attempted at the same time (Race Condition)\n\nThe actual number of requests that will be sent is determined by the `race_count` field." 590 HTTPRequestDoc.Fields[23].Comments[encoder.LineComment] = "Race determines if all the request have to be attempted at the same time (Race Condition)" 591 HTTPRequestDoc.Fields[24].Name = "req-condition" 592 HTTPRequestDoc.Fields[24].Type = "bool" 593 HTTPRequestDoc.Fields[24].Note = "" 594 HTTPRequestDoc.Fields[24].Description = "ReqCondition automatically assigns numbers to requests and preserves their history.\n\nThis allows matching on them later for multi-request conditions." 595 HTTPRequestDoc.Fields[24].Comments[encoder.LineComment] = "ReqCondition automatically assigns numbers to requests and preserves their history." 596 HTTPRequestDoc.Fields[25].Name = "stop-at-first-match" 597 HTTPRequestDoc.Fields[25].Type = "bool" 598 HTTPRequestDoc.Fields[25].Note = "" 599 HTTPRequestDoc.Fields[25].Description = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found." 600 HTTPRequestDoc.Fields[25].Comments[encoder.LineComment] = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found." 601 HTTPRequestDoc.Fields[26].Name = "skip-variables-check" 602 HTTPRequestDoc.Fields[26].Type = "bool" 603 HTTPRequestDoc.Fields[26].Note = "" 604 HTTPRequestDoc.Fields[26].Description = "SkipVariablesCheck skips the check for unresolved variables in request" 605 HTTPRequestDoc.Fields[26].Comments[encoder.LineComment] = "SkipVariablesCheck skips the check for unresolved variables in request" 606 HTTPRequestDoc.Fields[27].Name = "iterate-all" 607 HTTPRequestDoc.Fields[27].Type = "bool" 608 HTTPRequestDoc.Fields[27].Note = "" 609 HTTPRequestDoc.Fields[27].Description = "IterateAll iterates all the values extracted from internal extractors" 610 HTTPRequestDoc.Fields[27].Comments[encoder.LineComment] = "IterateAll iterates all the values extracted from internal extractors" 611 HTTPRequestDoc.Fields[28].Name = "digest-username" 612 HTTPRequestDoc.Fields[28].Type = "string" 613 HTTPRequestDoc.Fields[28].Note = "" 614 HTTPRequestDoc.Fields[28].Description = "DigestAuthUsername specifies the username for digest authentication" 615 HTTPRequestDoc.Fields[28].Comments[encoder.LineComment] = "DigestAuthUsername specifies the username for digest authentication" 616 HTTPRequestDoc.Fields[29].Name = "digest-password" 617 HTTPRequestDoc.Fields[29].Type = "string" 618 HTTPRequestDoc.Fields[29].Note = "" 619 HTTPRequestDoc.Fields[29].Description = "DigestAuthPassword specifies the password for digest authentication" 620 HTTPRequestDoc.Fields[29].Comments[encoder.LineComment] = "DigestAuthPassword specifies the password for digest authentication" 621 HTTPRequestDoc.Fields[30].Name = "disable-path-automerge" 622 HTTPRequestDoc.Fields[30].Type = "bool" 623 HTTPRequestDoc.Fields[30].Note = "" 624 HTTPRequestDoc.Fields[30].Description = "DisablePathAutomerge disables merging target url path with raw request path" 625 HTTPRequestDoc.Fields[30].Comments[encoder.LineComment] = "DisablePathAutomerge disables merging target url path with raw request path" 626 627 GENERATORSAttackTypeHolderDoc.Type = "generators.AttackTypeHolder" 628 GENERATORSAttackTypeHolderDoc.Comments[encoder.LineComment] = " AttackTypeHolder is used to hold internal type of the protocol" 629 GENERATORSAttackTypeHolderDoc.Description = "AttackTypeHolder is used to hold internal type of the protocol" 630 GENERATORSAttackTypeHolderDoc.AppearsIn = []encoder.Appearance{ 631 { 632 TypeName: "http.Request", 633 FieldName: "attack", 634 }, 635 { 636 TypeName: "dns.Request", 637 FieldName: "attack", 638 }, 639 { 640 TypeName: "network.Request", 641 FieldName: "attack", 642 }, 643 { 644 TypeName: "headless.Request", 645 FieldName: "attack", 646 }, 647 { 648 TypeName: "websocket.Request", 649 FieldName: "attack", 650 }, 651 } 652 GENERATORSAttackTypeHolderDoc.Fields = make([]encoder.Doc, 1) 653 GENERATORSAttackTypeHolderDoc.Fields[0].Name = "" 654 GENERATORSAttackTypeHolderDoc.Fields[0].Type = "AttackType" 655 GENERATORSAttackTypeHolderDoc.Fields[0].Note = "" 656 GENERATORSAttackTypeHolderDoc.Fields[0].Description = "" 657 GENERATORSAttackTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 658 GENERATORSAttackTypeHolderDoc.Fields[0].EnumFields = []string{ 659 "batteringram", 660 "pitchfork", 661 "clusterbomb", 662 } 663 664 HTTPMethodTypeHolderDoc.Type = "HTTPMethodTypeHolder" 665 HTTPMethodTypeHolderDoc.Comments[encoder.LineComment] = " HTTPMethodTypeHolder is used to hold internal type of the HTTP Method" 666 HTTPMethodTypeHolderDoc.Description = "HTTPMethodTypeHolder is used to hold internal type of the HTTP Method" 667 HTTPMethodTypeHolderDoc.AppearsIn = []encoder.Appearance{ 668 { 669 TypeName: "http.Request", 670 FieldName: "method", 671 }, 672 } 673 HTTPMethodTypeHolderDoc.Fields = make([]encoder.Doc, 1) 674 HTTPMethodTypeHolderDoc.Fields[0].Name = "" 675 HTTPMethodTypeHolderDoc.Fields[0].Type = "HTTPMethodType" 676 HTTPMethodTypeHolderDoc.Fields[0].Note = "" 677 HTTPMethodTypeHolderDoc.Fields[0].Description = "" 678 HTTPMethodTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 679 HTTPMethodTypeHolderDoc.Fields[0].EnumFields = []string{ 680 "GET", 681 "HEAD", 682 "POST", 683 "PUT", 684 "DELETE", 685 "CONNECT", 686 "OPTIONS", 687 "TRACE", 688 "PATCH", 689 "PURGE", 690 "Debug", 691 } 692 693 FUZZRuleDoc.Type = "fuzz.Rule" 694 FUZZRuleDoc.Comments[encoder.LineComment] = " Rule is a single rule which describes how to fuzz the request" 695 FUZZRuleDoc.Description = "Rule is a single rule which describes how to fuzz the request" 696 FUZZRuleDoc.AppearsIn = []encoder.Appearance{ 697 { 698 TypeName: "http.Request", 699 FieldName: "fuzzing", 700 }, 701 { 702 TypeName: "headless.Request", 703 FieldName: "fuzzing", 704 }, 705 } 706 FUZZRuleDoc.Fields = make([]encoder.Doc, 7) 707 FUZZRuleDoc.Fields[0].Name = "type" 708 FUZZRuleDoc.Fields[0].Type = "string" 709 FUZZRuleDoc.Fields[0].Note = "" 710 FUZZRuleDoc.Fields[0].Description = "Type is the type of fuzzing rule to perform.\n\nreplace replaces the values entirely. prefix prefixes the value. postfix postfixes the value\nand infix places between the values." 711 FUZZRuleDoc.Fields[0].Comments[encoder.LineComment] = "Type is the type of fuzzing rule to perform." 712 FUZZRuleDoc.Fields[0].Values = []string{ 713 "replace", 714 "prefix", 715 "postfix", 716 "infix", 717 } 718 FUZZRuleDoc.Fields[1].Name = "part" 719 FUZZRuleDoc.Fields[1].Type = "string" 720 FUZZRuleDoc.Fields[1].Note = "" 721 FUZZRuleDoc.Fields[1].Description = "Part is the part of request to fuzz.\n\nquery fuzzes the query part of url. More parts will be added later." 722 FUZZRuleDoc.Fields[1].Comments[encoder.LineComment] = "Part is the part of request to fuzz." 723 FUZZRuleDoc.Fields[1].Values = []string{ 724 "query", 725 } 726 FUZZRuleDoc.Fields[2].Name = "mode" 727 FUZZRuleDoc.Fields[2].Type = "string" 728 FUZZRuleDoc.Fields[2].Note = "" 729 FUZZRuleDoc.Fields[2].Description = "Mode is the mode of fuzzing to perform.\n\nsingle fuzzes one value at a time. multiple fuzzes all values at same time." 730 FUZZRuleDoc.Fields[2].Comments[encoder.LineComment] = "Mode is the mode of fuzzing to perform." 731 FUZZRuleDoc.Fields[2].Values = []string{ 732 "single", 733 "multiple", 734 } 735 FUZZRuleDoc.Fields[3].Name = "keys" 736 FUZZRuleDoc.Fields[3].Type = "[]string" 737 FUZZRuleDoc.Fields[3].Note = "" 738 FUZZRuleDoc.Fields[3].Description = "Keys is the optional list of key named parameters to fuzz." 739 FUZZRuleDoc.Fields[3].Comments[encoder.LineComment] = "Keys is the optional list of key named parameters to fuzz." 740 741 FUZZRuleDoc.Fields[3].AddExample("Examples of keys", []string{"url", "file", "host"}) 742 FUZZRuleDoc.Fields[4].Name = "keys-regex" 743 FUZZRuleDoc.Fields[4].Type = "[]string" 744 FUZZRuleDoc.Fields[4].Note = "" 745 FUZZRuleDoc.Fields[4].Description = "KeysRegex is the optional list of regex key parameters to fuzz." 746 FUZZRuleDoc.Fields[4].Comments[encoder.LineComment] = "KeysRegex is the optional list of regex key parameters to fuzz." 747 748 FUZZRuleDoc.Fields[4].AddExample("Examples of key regex", []string{"url.*"}) 749 FUZZRuleDoc.Fields[5].Name = "values" 750 FUZZRuleDoc.Fields[5].Type = "[]string" 751 FUZZRuleDoc.Fields[5].Note = "" 752 FUZZRuleDoc.Fields[5].Description = "Values is the optional list of regex value parameters to fuzz." 753 FUZZRuleDoc.Fields[5].Comments[encoder.LineComment] = "Values is the optional list of regex value parameters to fuzz." 754 755 FUZZRuleDoc.Fields[5].AddExample("Examples of value regex", []string{"https?://.*"}) 756 FUZZRuleDoc.Fields[6].Name = "fuzz" 757 FUZZRuleDoc.Fields[6].Type = "[]string" 758 FUZZRuleDoc.Fields[6].Note = "" 759 FUZZRuleDoc.Fields[6].Description = "Fuzz is the list of payloads to perform substitutions with." 760 FUZZRuleDoc.Fields[6].Comments[encoder.LineComment] = "Fuzz is the list of payloads to perform substitutions with." 761 762 FUZZRuleDoc.Fields[6].AddExample("Examples of fuzz", []string{"{{ssrf}}", "{{interactsh-url}}", "example-value"}) 763 764 SignatureTypeHolderDoc.Type = "SignatureTypeHolder" 765 SignatureTypeHolderDoc.Comments[encoder.LineComment] = " SignatureTypeHolder is used to hold internal type of the signature" 766 SignatureTypeHolderDoc.Description = "SignatureTypeHolder is used to hold internal type of the signature" 767 SignatureTypeHolderDoc.AppearsIn = []encoder.Appearance{ 768 { 769 TypeName: "http.Request", 770 FieldName: "signature", 771 }, 772 } 773 SignatureTypeHolderDoc.Fields = make([]encoder.Doc, 0) 774 775 DNSRequestDoc.Type = "dns.Request" 776 DNSRequestDoc.Comments[encoder.LineComment] = " Request contains a DNS protocol request to be made from a template" 777 DNSRequestDoc.Description = "Request contains a DNS protocol request to be made from a template" 778 779 DNSRequestDoc.AddExample("", exampleNormalDNSRequest) 780 DNSRequestDoc.AppearsIn = []encoder.Appearance{ 781 { 782 TypeName: "Template", 783 FieldName: "dns", 784 }, 785 } 786 DNSRequestDoc.PartDefinitions = []encoder.KeyValue{ 787 { 788 Key: "template-id", 789 Value: "ID of the template executed", 790 }, 791 { 792 Key: "template-info", 793 Value: "Info Block of the template executed", 794 }, 795 { 796 Key: "template-path", 797 Value: "Path of the template executed", 798 }, 799 { 800 Key: "host", 801 Value: "Host is the input to the template", 802 }, 803 { 804 Key: "matched", 805 Value: "Matched is the input which was matched upon", 806 }, 807 { 808 Key: "request", 809 Value: "Request contains the DNS request in text format", 810 }, 811 { 812 Key: "type", 813 Value: "Type is the type of request made", 814 }, 815 { 816 Key: "rcode", 817 Value: "Rcode field returned for the DNS request", 818 }, 819 { 820 Key: "question", 821 Value: "Question contains the DNS question field", 822 }, 823 { 824 Key: "extra", 825 Value: "Extra contains the DNS response extra field", 826 }, 827 { 828 Key: "answer", 829 Value: "Answer contains the DNS response answer field", 830 }, 831 { 832 Key: "ns", 833 Value: "NS contains the DNS response NS field", 834 }, 835 { 836 Key: "raw,body,all", 837 Value: "Raw contains the raw DNS response (default)", 838 }, 839 { 840 Key: "trace", 841 Value: "Trace contains trace data for DNS request if enabled", 842 }, 843 } 844 DNSRequestDoc.Fields = make([]encoder.Doc, 11) 845 DNSRequestDoc.Fields[0].Name = "id" 846 DNSRequestDoc.Fields[0].Type = "string" 847 DNSRequestDoc.Fields[0].Note = "" 848 DNSRequestDoc.Fields[0].Description = "ID is the optional id of the request" 849 DNSRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request" 850 DNSRequestDoc.Fields[1].Name = "name" 851 DNSRequestDoc.Fields[1].Type = "string" 852 DNSRequestDoc.Fields[1].Note = "" 853 DNSRequestDoc.Fields[1].Description = "Name is the Hostname to make DNS request for.\n\nGenerally, it is set to {{FQDN}} which is the domain we get from input." 854 DNSRequestDoc.Fields[1].Comments[encoder.LineComment] = "Name is the Hostname to make DNS request for." 855 856 DNSRequestDoc.Fields[1].AddExample("", "{{FQDN}}") 857 DNSRequestDoc.Fields[2].Name = "type" 858 DNSRequestDoc.Fields[2].Type = "DNSRequestTypeHolder" 859 DNSRequestDoc.Fields[2].Note = "" 860 DNSRequestDoc.Fields[2].Description = "RequestType is the type of DNS request to make." 861 DNSRequestDoc.Fields[2].Comments[encoder.LineComment] = "RequestType is the type of DNS request to make." 862 DNSRequestDoc.Fields[3].Name = "class" 863 DNSRequestDoc.Fields[3].Type = "string" 864 DNSRequestDoc.Fields[3].Note = "" 865 DNSRequestDoc.Fields[3].Description = "Class is the class of the DNS request.\n\nUsually it's enough to just leave it as INET." 866 DNSRequestDoc.Fields[3].Comments[encoder.LineComment] = "Class is the class of the DNS request." 867 DNSRequestDoc.Fields[3].Values = []string{ 868 "inet", 869 "csnet", 870 "chaos", 871 "hesiod", 872 "none", 873 "any", 874 } 875 DNSRequestDoc.Fields[4].Name = "retries" 876 DNSRequestDoc.Fields[4].Type = "int" 877 DNSRequestDoc.Fields[4].Note = "" 878 DNSRequestDoc.Fields[4].Description = "Retries is the number of retries for the DNS request" 879 DNSRequestDoc.Fields[4].Comments[encoder.LineComment] = "Retries is the number of retries for the DNS request" 880 881 DNSRequestDoc.Fields[4].AddExample("Use a retry of 3 to 5 generally", 5) 882 DNSRequestDoc.Fields[5].Name = "trace" 883 DNSRequestDoc.Fields[5].Type = "bool" 884 DNSRequestDoc.Fields[5].Note = "" 885 DNSRequestDoc.Fields[5].Description = "Trace performs a trace operation for the target." 886 DNSRequestDoc.Fields[5].Comments[encoder.LineComment] = "Trace performs a trace operation for the target." 887 DNSRequestDoc.Fields[6].Name = "trace-max-recursion" 888 DNSRequestDoc.Fields[6].Type = "int" 889 DNSRequestDoc.Fields[6].Note = "" 890 DNSRequestDoc.Fields[6].Description = "TraceMaxRecursion is the number of max recursion allowed for trace operations" 891 DNSRequestDoc.Fields[6].Comments[encoder.LineComment] = "TraceMaxRecursion is the number of max recursion allowed for trace operations" 892 893 DNSRequestDoc.Fields[6].AddExample("Use a retry of 100 to 150 generally", 100) 894 DNSRequestDoc.Fields[7].Name = "attack" 895 DNSRequestDoc.Fields[7].Type = "generators.AttackTypeHolder" 896 DNSRequestDoc.Fields[7].Note = "" 897 DNSRequestDoc.Fields[7].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads." 898 DNSRequestDoc.Fields[7].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform." 899 DNSRequestDoc.Fields[8].Name = "payloads" 900 DNSRequestDoc.Fields[8].Type = "map[string]interface{}" 901 DNSRequestDoc.Fields[8].Note = "" 902 DNSRequestDoc.Fields[8].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time." 903 DNSRequestDoc.Fields[8].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request." 904 DNSRequestDoc.Fields[9].Name = "recursion" 905 DNSRequestDoc.Fields[9].Type = "dns.bool" 906 DNSRequestDoc.Fields[9].Note = "" 907 DNSRequestDoc.Fields[9].Description = "Recursion determines if resolver should recurse all records to get fresh results." 908 DNSRequestDoc.Fields[9].Comments[encoder.LineComment] = "Recursion determines if resolver should recurse all records to get fresh results." 909 DNSRequestDoc.Fields[10].Name = "resolvers" 910 DNSRequestDoc.Fields[10].Type = "[]string" 911 DNSRequestDoc.Fields[10].Note = "" 912 DNSRequestDoc.Fields[10].Description = "Resolvers to use for the dns requests" 913 DNSRequestDoc.Fields[10].Comments[encoder.LineComment] = " Resolvers to use for the dns requests" 914 915 DNSRequestTypeHolderDoc.Type = "DNSRequestTypeHolder" 916 DNSRequestTypeHolderDoc.Comments[encoder.LineComment] = " DNSRequestTypeHolder is used to hold internal type of the DNS type" 917 DNSRequestTypeHolderDoc.Description = "DNSRequestTypeHolder is used to hold internal type of the DNS type" 918 DNSRequestTypeHolderDoc.AppearsIn = []encoder.Appearance{ 919 { 920 TypeName: "dns.Request", 921 FieldName: "type", 922 }, 923 } 924 DNSRequestTypeHolderDoc.Fields = make([]encoder.Doc, 1) 925 DNSRequestTypeHolderDoc.Fields[0].Name = "" 926 DNSRequestTypeHolderDoc.Fields[0].Type = "DNSRequestType" 927 DNSRequestTypeHolderDoc.Fields[0].Note = "" 928 DNSRequestTypeHolderDoc.Fields[0].Description = "" 929 DNSRequestTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 930 DNSRequestTypeHolderDoc.Fields[0].EnumFields = []string{ 931 "A", 932 "NS", 933 "DS", 934 "CNAME", 935 "SOA", 936 "PTR", 937 "MX", 938 "TXT", 939 "AAAA", 940 "CAA", 941 "TLSA", 942 "ANY", 943 } 944 945 FILERequestDoc.Type = "file.Request" 946 FILERequestDoc.Comments[encoder.LineComment] = " Request contains a File matching mechanism for local disk operations." 947 FILERequestDoc.Description = "Request contains a File matching mechanism for local disk operations." 948 949 FILERequestDoc.AddExample("", exampleNormalFileRequest) 950 FILERequestDoc.AppearsIn = []encoder.Appearance{ 951 { 952 TypeName: "Template", 953 FieldName: "file", 954 }, 955 } 956 FILERequestDoc.PartDefinitions = []encoder.KeyValue{ 957 { 958 Key: "template-id", 959 Value: "ID of the template executed", 960 }, 961 { 962 Key: "template-info", 963 Value: "Info Block of the template executed", 964 }, 965 { 966 Key: "template-path", 967 Value: "Path of the template executed", 968 }, 969 { 970 Key: "matched", 971 Value: "Matched is the input which was matched upon", 972 }, 973 { 974 Key: "path", 975 Value: "Path is the path of file on local filesystem", 976 }, 977 { 978 Key: "type", 979 Value: "Type is the type of request made", 980 }, 981 { 982 Key: "raw,body,all,data", 983 Value: "Raw contains the raw file contents", 984 }, 985 } 986 FILERequestDoc.Fields = make([]encoder.Doc, 7) 987 FILERequestDoc.Fields[0].Name = "extensions" 988 FILERequestDoc.Fields[0].Type = "[]string" 989 FILERequestDoc.Fields[0].Note = "" 990 FILERequestDoc.Fields[0].Description = "Extensions is the list of extensions or mime types to perform matching on." 991 FILERequestDoc.Fields[0].Comments[encoder.LineComment] = "Extensions is the list of extensions or mime types to perform matching on." 992 993 FILERequestDoc.Fields[0].AddExample("", []string{".txt", ".go", ".json"}) 994 FILERequestDoc.Fields[1].Name = "denylist" 995 FILERequestDoc.Fields[1].Type = "[]string" 996 FILERequestDoc.Fields[1].Note = "" 997 FILERequestDoc.Fields[1].Description = "DenyList is the list of file, directories, mime types or extensions to deny during matching.\n\nBy default, it contains some non-interesting extensions that are hardcoded\nin nuclei." 998 FILERequestDoc.Fields[1].Comments[encoder.LineComment] = "DenyList is the list of file, directories, mime types or extensions to deny during matching." 999 1000 FILERequestDoc.Fields[1].AddExample("", []string{".avi", ".mov", ".mp3"}) 1001 FILERequestDoc.Fields[2].Name = "id" 1002 FILERequestDoc.Fields[2].Type = "string" 1003 FILERequestDoc.Fields[2].Note = "" 1004 FILERequestDoc.Fields[2].Description = "ID is the optional id of the request" 1005 FILERequestDoc.Fields[2].Comments[encoder.LineComment] = " ID is the optional id of the request" 1006 FILERequestDoc.Fields[3].Name = "max-size" 1007 FILERequestDoc.Fields[3].Type = "string" 1008 FILERequestDoc.Fields[3].Note = "" 1009 FILERequestDoc.Fields[3].Description = "MaxSize is the maximum size of the file to run request on.\n\nBy default, nuclei will process 1 GB of content and not go more than that.\nIt can be set to much lower or higher depending on use.\nIf set to \"no\" then all content will be processed" 1010 FILERequestDoc.Fields[3].Comments[encoder.LineComment] = "MaxSize is the maximum size of the file to run request on." 1011 1012 FILERequestDoc.Fields[3].AddExample("", "5Mb") 1013 FILERequestDoc.Fields[4].Name = "archive" 1014 FILERequestDoc.Fields[4].Type = "bool" 1015 FILERequestDoc.Fields[4].Note = "" 1016 FILERequestDoc.Fields[4].Description = "elaborates archives" 1017 FILERequestDoc.Fields[4].Comments[encoder.LineComment] = "elaborates archives" 1018 FILERequestDoc.Fields[5].Name = "mime-type" 1019 FILERequestDoc.Fields[5].Type = "bool" 1020 FILERequestDoc.Fields[5].Note = "" 1021 FILERequestDoc.Fields[5].Description = "enables mime types check" 1022 FILERequestDoc.Fields[5].Comments[encoder.LineComment] = "enables mime types check" 1023 FILERequestDoc.Fields[6].Name = "no-recursive" 1024 FILERequestDoc.Fields[6].Type = "bool" 1025 FILERequestDoc.Fields[6].Note = "" 1026 FILERequestDoc.Fields[6].Description = "NoRecursive specifies whether to not do recursive checks if folders are provided." 1027 FILERequestDoc.Fields[6].Comments[encoder.LineComment] = "NoRecursive specifies whether to not do recursive checks if folders are provided." 1028 1029 NETWORKRequestDoc.Type = "network.Request" 1030 NETWORKRequestDoc.Comments[encoder.LineComment] = " Request contains a Network protocol request to be made from a template" 1031 NETWORKRequestDoc.Description = "Request contains a Network protocol request to be made from a template" 1032 1033 NETWORKRequestDoc.AddExample("", exampleNormalNetworkRequest) 1034 NETWORKRequestDoc.AppearsIn = []encoder.Appearance{ 1035 { 1036 TypeName: "Template", 1037 FieldName: "network", 1038 }, 1039 { 1040 TypeName: "Template", 1041 FieldName: "tcp", 1042 }, 1043 } 1044 NETWORKRequestDoc.PartDefinitions = []encoder.KeyValue{ 1045 { 1046 Key: "template-id", 1047 Value: "ID of the template executed", 1048 }, 1049 { 1050 Key: "template-info", 1051 Value: "Info Block of the template executed", 1052 }, 1053 { 1054 Key: "template-path", 1055 Value: "Path of the template executed", 1056 }, 1057 { 1058 Key: "host", 1059 Value: "Host is the input to the template", 1060 }, 1061 { 1062 Key: "matched", 1063 Value: "Matched is the input which was matched upon", 1064 }, 1065 { 1066 Key: "type", 1067 Value: "Type is the type of request made", 1068 }, 1069 { 1070 Key: "request", 1071 Value: "Network request made from the client", 1072 }, 1073 { 1074 Key: "body,all,data", 1075 Value: "Network response received from server (default)", 1076 }, 1077 { 1078 Key: "raw", 1079 Value: "Full Network protocol data", 1080 }, 1081 } 1082 NETWORKRequestDoc.Fields = make([]encoder.Doc, 9) 1083 NETWORKRequestDoc.Fields[0].Name = "id" 1084 NETWORKRequestDoc.Fields[0].Type = "string" 1085 NETWORKRequestDoc.Fields[0].Note = "" 1086 NETWORKRequestDoc.Fields[0].Description = "ID is the optional id of the request" 1087 NETWORKRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request" 1088 NETWORKRequestDoc.Fields[1].Name = "host" 1089 NETWORKRequestDoc.Fields[1].Type = "[]string" 1090 NETWORKRequestDoc.Fields[1].Note = "" 1091 NETWORKRequestDoc.Fields[1].Description = "Host to send network requests to.\n\nUsually it's set to `{{Hostname}}`. If you want to enable TLS for\nTCP Connection, you can use `tls://{{Hostname}}`." 1092 NETWORKRequestDoc.Fields[1].Comments[encoder.LineComment] = "Host to send network requests to." 1093 1094 NETWORKRequestDoc.Fields[1].AddExample("", []string{"{{Hostname}}"}) 1095 NETWORKRequestDoc.Fields[2].Name = "attack" 1096 NETWORKRequestDoc.Fields[2].Type = "generators.AttackTypeHolder" 1097 NETWORKRequestDoc.Fields[2].Note = "" 1098 NETWORKRequestDoc.Fields[2].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads." 1099 NETWORKRequestDoc.Fields[2].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform." 1100 NETWORKRequestDoc.Fields[3].Name = "payloads" 1101 NETWORKRequestDoc.Fields[3].Type = "map[string]interface{}" 1102 NETWORKRequestDoc.Fields[3].Note = "" 1103 NETWORKRequestDoc.Fields[3].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time." 1104 NETWORKRequestDoc.Fields[3].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request." 1105 NETWORKRequestDoc.Fields[4].Name = "inputs" 1106 NETWORKRequestDoc.Fields[4].Type = "[]network.Input" 1107 NETWORKRequestDoc.Fields[4].Note = "" 1108 NETWORKRequestDoc.Fields[4].Description = "Inputs contains inputs for the network socket" 1109 NETWORKRequestDoc.Fields[4].Comments[encoder.LineComment] = "Inputs contains inputs for the network socket" 1110 NETWORKRequestDoc.Fields[5].Name = "port" 1111 NETWORKRequestDoc.Fields[5].Type = "string" 1112 NETWORKRequestDoc.Fields[5].Note = "" 1113 NETWORKRequestDoc.Fields[5].Description = "description: |\n Port is the port to send network requests to. this acts as default port but is overriden if target/input contains\n non-http(s) ports like 80,8080,8081 etc" 1114 NETWORKRequestDoc.Fields[5].Comments[encoder.LineComment] = " description: |" 1115 NETWORKRequestDoc.Fields[6].Name = "exclude-ports" 1116 NETWORKRequestDoc.Fields[6].Type = "string" 1117 NETWORKRequestDoc.Fields[6].Note = "" 1118 NETWORKRequestDoc.Fields[6].Description = "description: |\n ExcludePorts is the list of ports to exclude from being scanned . It is intended to be used with `Port` field and contains a list of ports which are ignored/skipped" 1119 NETWORKRequestDoc.Fields[6].Comments[encoder.LineComment] = " description: |" 1120 NETWORKRequestDoc.Fields[7].Name = "read-size" 1121 NETWORKRequestDoc.Fields[7].Type = "int" 1122 NETWORKRequestDoc.Fields[7].Note = "" 1123 NETWORKRequestDoc.Fields[7].Description = "ReadSize is the size of response to read at the end\n\nDefault value for read-size is 1024." 1124 NETWORKRequestDoc.Fields[7].Comments[encoder.LineComment] = "ReadSize is the size of response to read at the end" 1125 1126 NETWORKRequestDoc.Fields[7].AddExample("", 2048) 1127 NETWORKRequestDoc.Fields[8].Name = "read-all" 1128 NETWORKRequestDoc.Fields[8].Type = "bool" 1129 NETWORKRequestDoc.Fields[8].Note = "" 1130 NETWORKRequestDoc.Fields[8].Description = "ReadAll determines if the data stream should be read till the end regardless of the size\n\nDefault value for read-all is false." 1131 NETWORKRequestDoc.Fields[8].Comments[encoder.LineComment] = "ReadAll determines if the data stream should be read till the end regardless of the size" 1132 1133 NETWORKRequestDoc.Fields[8].AddExample("", false) 1134 1135 NETWORKInputDoc.Type = "network.Input" 1136 NETWORKInputDoc.Comments[encoder.LineComment] = "" 1137 NETWORKInputDoc.Description = "" 1138 NETWORKInputDoc.AppearsIn = []encoder.Appearance{ 1139 { 1140 TypeName: "network.Request", 1141 FieldName: "inputs", 1142 }, 1143 } 1144 NETWORKInputDoc.Fields = make([]encoder.Doc, 4) 1145 NETWORKInputDoc.Fields[0].Name = "data" 1146 NETWORKInputDoc.Fields[0].Type = "string" 1147 NETWORKInputDoc.Fields[0].Note = "" 1148 NETWORKInputDoc.Fields[0].Description = "Data is the data to send as the input.\n\nIt supports DSL Helper Functions as well as normal expressions." 1149 NETWORKInputDoc.Fields[0].Comments[encoder.LineComment] = "Data is the data to send as the input." 1150 1151 NETWORKInputDoc.Fields[0].AddExample("", "TEST") 1152 1153 NETWORKInputDoc.Fields[0].AddExample("", "hex_decode('50494e47')") 1154 NETWORKInputDoc.Fields[1].Name = "type" 1155 NETWORKInputDoc.Fields[1].Type = "NetworkInputTypeHolder" 1156 NETWORKInputDoc.Fields[1].Note = "" 1157 NETWORKInputDoc.Fields[1].Description = "Type is the type of input specified in `data` field.\n\nDefault value is text, but hex can be used for hex formatted data." 1158 NETWORKInputDoc.Fields[1].Comments[encoder.LineComment] = "Type is the type of input specified in `data` field." 1159 NETWORKInputDoc.Fields[1].Values = []string{ 1160 "hex", 1161 "text", 1162 } 1163 NETWORKInputDoc.Fields[2].Name = "read" 1164 NETWORKInputDoc.Fields[2].Type = "int" 1165 NETWORKInputDoc.Fields[2].Note = "" 1166 NETWORKInputDoc.Fields[2].Description = "Read is the number of bytes to read from socket.\n\nThis can be used for protocols which expect an immediate response. You can\nread and write responses one after another and eventually perform matching\non every data captured with `name` attribute.\n\nThe [network docs](https://nuclei.projectdiscovery.io/templating-guide/protocols/network/) highlight more on how to do this." 1167 NETWORKInputDoc.Fields[2].Comments[encoder.LineComment] = "Read is the number of bytes to read from socket." 1168 1169 NETWORKInputDoc.Fields[2].AddExample("", 1024) 1170 NETWORKInputDoc.Fields[3].Name = "name" 1171 NETWORKInputDoc.Fields[3].Type = "string" 1172 NETWORKInputDoc.Fields[3].Note = "" 1173 NETWORKInputDoc.Fields[3].Description = "Name is the optional name of the data read to provide matching on." 1174 NETWORKInputDoc.Fields[3].Comments[encoder.LineComment] = "Name is the optional name of the data read to provide matching on." 1175 1176 NETWORKInputDoc.Fields[3].AddExample("", "prefix") 1177 1178 NetworkInputTypeHolderDoc.Type = "NetworkInputTypeHolder" 1179 NetworkInputTypeHolderDoc.Comments[encoder.LineComment] = " NetworkInputTypeHolder is used to hold internal type of the Network type" 1180 NetworkInputTypeHolderDoc.Description = "NetworkInputTypeHolder is used to hold internal type of the Network type" 1181 NetworkInputTypeHolderDoc.AppearsIn = []encoder.Appearance{ 1182 { 1183 TypeName: "network.Input", 1184 FieldName: "type", 1185 }, 1186 } 1187 NetworkInputTypeHolderDoc.Fields = make([]encoder.Doc, 1) 1188 NetworkInputTypeHolderDoc.Fields[0].Name = "" 1189 NetworkInputTypeHolderDoc.Fields[0].Type = "NetworkInputType" 1190 NetworkInputTypeHolderDoc.Fields[0].Note = "" 1191 NetworkInputTypeHolderDoc.Fields[0].Description = "" 1192 NetworkInputTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 1193 NetworkInputTypeHolderDoc.Fields[0].EnumFields = []string{ 1194 "hex", 1195 "text", 1196 } 1197 1198 HEADLESSRequestDoc.Type = "headless.Request" 1199 HEADLESSRequestDoc.Comments[encoder.LineComment] = " Request contains a Headless protocol request to be made from a template" 1200 HEADLESSRequestDoc.Description = "Request contains a Headless protocol request to be made from a template" 1201 HEADLESSRequestDoc.AppearsIn = []encoder.Appearance{ 1202 { 1203 TypeName: "Template", 1204 FieldName: "headless", 1205 }, 1206 } 1207 HEADLESSRequestDoc.PartDefinitions = []encoder.KeyValue{ 1208 { 1209 Key: "template-id", 1210 Value: "ID of the template executed", 1211 }, 1212 { 1213 Key: "template-info", 1214 Value: "Info Block of the template executed", 1215 }, 1216 { 1217 Key: "template-path", 1218 Value: "Path of the template executed", 1219 }, 1220 { 1221 Key: "host", 1222 Value: "Host is the input to the template", 1223 }, 1224 { 1225 Key: "matched", 1226 Value: "Matched is the input which was matched upon", 1227 }, 1228 { 1229 Key: "type", 1230 Value: "Type is the type of request made", 1231 }, 1232 { 1233 Key: "req", 1234 Value: "Headless request made from the client", 1235 }, 1236 { 1237 Key: "resp,body,data", 1238 Value: "Headless response received from client (default)", 1239 }, 1240 } 1241 HEADLESSRequestDoc.Fields = make([]encoder.Doc, 9) 1242 HEADLESSRequestDoc.Fields[0].Name = "id" 1243 HEADLESSRequestDoc.Fields[0].Type = "string" 1244 HEADLESSRequestDoc.Fields[0].Note = "" 1245 HEADLESSRequestDoc.Fields[0].Description = "ID is the optional id of the request" 1246 HEADLESSRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request" 1247 HEADLESSRequestDoc.Fields[1].Name = "attack" 1248 HEADLESSRequestDoc.Fields[1].Type = "generators.AttackTypeHolder" 1249 HEADLESSRequestDoc.Fields[1].Note = "" 1250 HEADLESSRequestDoc.Fields[1].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads." 1251 HEADLESSRequestDoc.Fields[1].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform." 1252 HEADLESSRequestDoc.Fields[2].Name = "payloads" 1253 HEADLESSRequestDoc.Fields[2].Type = "map[string]interface{}" 1254 HEADLESSRequestDoc.Fields[2].Note = "" 1255 HEADLESSRequestDoc.Fields[2].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time." 1256 HEADLESSRequestDoc.Fields[2].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request." 1257 HEADLESSRequestDoc.Fields[3].Name = "steps" 1258 HEADLESSRequestDoc.Fields[3].Type = "[]engine.Action" 1259 HEADLESSRequestDoc.Fields[3].Note = "" 1260 HEADLESSRequestDoc.Fields[3].Description = "Steps is the list of actions to run for headless request" 1261 HEADLESSRequestDoc.Fields[3].Comments[encoder.LineComment] = "Steps is the list of actions to run for headless request" 1262 HEADLESSRequestDoc.Fields[4].Name = "user_agent" 1263 HEADLESSRequestDoc.Fields[4].Type = "userAgent.UserAgentHolder" 1264 HEADLESSRequestDoc.Fields[4].Note = "" 1265 HEADLESSRequestDoc.Fields[4].Description = "descriptions: |\n User-Agent is the type of user-agent to use for the request." 1266 HEADLESSRequestDoc.Fields[4].Comments[encoder.LineComment] = " descriptions: |" 1267 HEADLESSRequestDoc.Fields[5].Name = "custom_user_agent" 1268 HEADLESSRequestDoc.Fields[5].Type = "string" 1269 HEADLESSRequestDoc.Fields[5].Note = "" 1270 HEADLESSRequestDoc.Fields[5].Description = "description: |\n If UserAgent is set to custom, customUserAgent is the custom user-agent to use for the request." 1271 HEADLESSRequestDoc.Fields[5].Comments[encoder.LineComment] = " description: |" 1272 HEADLESSRequestDoc.Fields[6].Name = "stop-at-first-match" 1273 HEADLESSRequestDoc.Fields[6].Type = "bool" 1274 HEADLESSRequestDoc.Fields[6].Note = "" 1275 HEADLESSRequestDoc.Fields[6].Description = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found." 1276 HEADLESSRequestDoc.Fields[6].Comments[encoder.LineComment] = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found." 1277 HEADLESSRequestDoc.Fields[7].Name = "fuzzing" 1278 HEADLESSRequestDoc.Fields[7].Type = "[]fuzz.Rule" 1279 HEADLESSRequestDoc.Fields[7].Note = "" 1280 HEADLESSRequestDoc.Fields[7].Description = "Fuzzing describes schema to fuzz headless requests" 1281 HEADLESSRequestDoc.Fields[7].Comments[encoder.LineComment] = " Fuzzing describes schema to fuzz headless requests" 1282 HEADLESSRequestDoc.Fields[8].Name = "cookie-reuse" 1283 HEADLESSRequestDoc.Fields[8].Type = "bool" 1284 HEADLESSRequestDoc.Fields[8].Note = "" 1285 HEADLESSRequestDoc.Fields[8].Description = "CookieReuse is an optional setting that enables cookie reuse" 1286 HEADLESSRequestDoc.Fields[8].Comments[encoder.LineComment] = "CookieReuse is an optional setting that enables cookie reuse" 1287 1288 ENGINEActionDoc.Type = "engine.Action" 1289 ENGINEActionDoc.Comments[encoder.LineComment] = " Action is an action taken by the browser to reach a navigation" 1290 ENGINEActionDoc.Description = "Action is an action taken by the browser to reach a navigation\n\n Each step that the browser executes is an action. Most navigations\n usually start from the ActionLoadURL event, and further navigations\n are discovered on the found page. We also keep track and only\n scrape new navigation from pages we haven't crawled yet." 1291 ENGINEActionDoc.AppearsIn = []encoder.Appearance{ 1292 { 1293 TypeName: "headless.Request", 1294 FieldName: "steps", 1295 }, 1296 } 1297 ENGINEActionDoc.Fields = make([]encoder.Doc, 4) 1298 ENGINEActionDoc.Fields[0].Name = "args" 1299 ENGINEActionDoc.Fields[0].Type = "map[string]string" 1300 ENGINEActionDoc.Fields[0].Note = "" 1301 ENGINEActionDoc.Fields[0].Description = "Args contain arguments for the headless action.\nPer action arguments are described in detail [here](https://nuclei.projectdiscovery.io/templating-guide/protocols/headless/)." 1302 ENGINEActionDoc.Fields[0].Comments[encoder.LineComment] = "Args contain arguments for the headless action." 1303 ENGINEActionDoc.Fields[1].Name = "name" 1304 ENGINEActionDoc.Fields[1].Type = "string" 1305 ENGINEActionDoc.Fields[1].Note = "" 1306 ENGINEActionDoc.Fields[1].Description = "Name is the name assigned to the headless action.\n\nThis can be used to execute code, for instance in browser\nDOM using script action, and get the result in a variable\nwhich can be matched upon by nuclei. An Example template [here](https://github.com/projectdiscovery/nuclei-templates/blob/main/headless/prototype-pollution-check.yaml)." 1307 ENGINEActionDoc.Fields[1].Comments[encoder.LineComment] = "Name is the name assigned to the headless action." 1308 ENGINEActionDoc.Fields[2].Name = "description" 1309 ENGINEActionDoc.Fields[2].Type = "string" 1310 ENGINEActionDoc.Fields[2].Note = "" 1311 ENGINEActionDoc.Fields[2].Description = "Description is the optional description of the headless action" 1312 ENGINEActionDoc.Fields[2].Comments[encoder.LineComment] = "Description is the optional description of the headless action" 1313 ENGINEActionDoc.Fields[3].Name = "action" 1314 ENGINEActionDoc.Fields[3].Type = "ActionTypeHolder" 1315 ENGINEActionDoc.Fields[3].Note = "" 1316 ENGINEActionDoc.Fields[3].Description = "Action is the type of the action to perform." 1317 ENGINEActionDoc.Fields[3].Comments[encoder.LineComment] = "Action is the type of the action to perform." 1318 1319 ActionTypeHolderDoc.Type = "ActionTypeHolder" 1320 ActionTypeHolderDoc.Comments[encoder.LineComment] = " ActionTypeHolder is used to hold internal type of the action" 1321 ActionTypeHolderDoc.Description = "ActionTypeHolder is used to hold internal type of the action" 1322 ActionTypeHolderDoc.AppearsIn = []encoder.Appearance{ 1323 { 1324 TypeName: "engine.Action", 1325 FieldName: "action", 1326 }, 1327 } 1328 ActionTypeHolderDoc.Fields = make([]encoder.Doc, 1) 1329 ActionTypeHolderDoc.Fields[0].Name = "" 1330 ActionTypeHolderDoc.Fields[0].Type = "ActionType" 1331 ActionTypeHolderDoc.Fields[0].Note = "" 1332 ActionTypeHolderDoc.Fields[0].Description = "" 1333 ActionTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 1334 ActionTypeHolderDoc.Fields[0].EnumFields = []string{ 1335 "navigate", 1336 "script", 1337 "click", 1338 "rightclick", 1339 "text", 1340 "screenshot", 1341 "time", 1342 "select", 1343 "files", 1344 "waitload", 1345 "getresource", 1346 "extract", 1347 "setmethod", 1348 "addheader", 1349 "setheader", 1350 "deleteheader", 1351 "setbody", 1352 "waitevent", 1353 "keyboard", 1354 "debug", 1355 "sleep", 1356 "waitvisible", 1357 } 1358 1359 USERAGENTUserAgentHolderDoc.Type = "userAgent.UserAgentHolder" 1360 USERAGENTUserAgentHolderDoc.Comments[encoder.LineComment] = " UserAgentHolder holds a UserAgent type. Required for un/marshalling purposes" 1361 USERAGENTUserAgentHolderDoc.Description = "UserAgentHolder holds a UserAgent type. Required for un/marshalling purposes" 1362 USERAGENTUserAgentHolderDoc.AppearsIn = []encoder.Appearance{ 1363 { 1364 TypeName: "headless.Request", 1365 FieldName: "user_agent", 1366 }, 1367 } 1368 USERAGENTUserAgentHolderDoc.Fields = make([]encoder.Doc, 1) 1369 USERAGENTUserAgentHolderDoc.Fields[0].Name = "" 1370 USERAGENTUserAgentHolderDoc.Fields[0].Type = "UserAgent" 1371 USERAGENTUserAgentHolderDoc.Fields[0].Note = "" 1372 USERAGENTUserAgentHolderDoc.Fields[0].Description = "" 1373 USERAGENTUserAgentHolderDoc.Fields[0].Comments[encoder.LineComment] = "" 1374 USERAGENTUserAgentHolderDoc.Fields[0].EnumFields = []string{ 1375 "random", 1376 "off", 1377 "default", 1378 "custom", 1379 } 1380 1381 SSLRequestDoc.Type = "ssl.Request" 1382 SSLRequestDoc.Comments[encoder.LineComment] = " Request is a request for the SSL protocol" 1383 SSLRequestDoc.Description = "Request is a request for the SSL protocol" 1384 SSLRequestDoc.AppearsIn = []encoder.Appearance{ 1385 { 1386 TypeName: "Template", 1387 FieldName: "ssl", 1388 }, 1389 } 1390 SSLRequestDoc.PartDefinitions = []encoder.KeyValue{ 1391 { 1392 Key: "type", 1393 Value: "Type is the type of request made", 1394 }, 1395 { 1396 Key: "response", 1397 Value: "JSON SSL protocol handshake details", 1398 }, 1399 { 1400 Key: "not_after", 1401 Value: "Timestamp after which the remote cert expires", 1402 }, 1403 { 1404 Key: "host", 1405 Value: "Host is the input to the template", 1406 }, 1407 { 1408 Key: "matched", 1409 Value: "Matched is the input which was matched upon", 1410 }, 1411 } 1412 SSLRequestDoc.Fields = make([]encoder.Doc, 5) 1413 SSLRequestDoc.Fields[0].Name = "address" 1414 SSLRequestDoc.Fields[0].Type = "string" 1415 SSLRequestDoc.Fields[0].Note = "" 1416 SSLRequestDoc.Fields[0].Description = "Address contains address for the request" 1417 SSLRequestDoc.Fields[0].Comments[encoder.LineComment] = "Address contains address for the request" 1418 SSLRequestDoc.Fields[1].Name = "min_version" 1419 SSLRequestDoc.Fields[1].Type = "string" 1420 SSLRequestDoc.Fields[1].Note = "" 1421 SSLRequestDoc.Fields[1].Description = "Minimum tls version - auto if not specified." 1422 SSLRequestDoc.Fields[1].Comments[encoder.LineComment] = "Minimum tls version - auto if not specified." 1423 SSLRequestDoc.Fields[1].Values = []string{ 1424 "sslv3", 1425 "tls10", 1426 "tls11", 1427 "tls12", 1428 "tls13", 1429 } 1430 SSLRequestDoc.Fields[2].Name = "max_version" 1431 SSLRequestDoc.Fields[2].Type = "string" 1432 SSLRequestDoc.Fields[2].Note = "" 1433 SSLRequestDoc.Fields[2].Description = "Max tls version - auto if not specified." 1434 SSLRequestDoc.Fields[2].Comments[encoder.LineComment] = "Max tls version - auto if not specified." 1435 SSLRequestDoc.Fields[2].Values = []string{ 1436 "sslv3", 1437 "tls10", 1438 "tls11", 1439 "tls12", 1440 "tls13", 1441 } 1442 SSLRequestDoc.Fields[3].Name = "cipher_suites" 1443 SSLRequestDoc.Fields[3].Type = "[]string" 1444 SSLRequestDoc.Fields[3].Note = "" 1445 SSLRequestDoc.Fields[3].Description = "Client Cipher Suites - auto if not specified." 1446 SSLRequestDoc.Fields[3].Comments[encoder.LineComment] = "Client Cipher Suites - auto if not specified." 1447 SSLRequestDoc.Fields[4].Name = "scan_mode" 1448 SSLRequestDoc.Fields[4].Type = "string" 1449 SSLRequestDoc.Fields[4].Note = "" 1450 SSLRequestDoc.Fields[4].Description = "description: |\n Tls Scan Mode - auto if not specified\n values:\n - \"ctls\"\n - \"ztls\"\n - \"auto\"\n - \"openssl\" # reverts to \"auto\" is openssl is not installed" 1451 SSLRequestDoc.Fields[4].Comments[encoder.LineComment] = " description: |" 1452 1453 WEBSOCKETRequestDoc.Type = "websocket.Request" 1454 WEBSOCKETRequestDoc.Comments[encoder.LineComment] = " Request is a request for the Websocket protocol" 1455 WEBSOCKETRequestDoc.Description = "Request is a request for the Websocket protocol" 1456 WEBSOCKETRequestDoc.AppearsIn = []encoder.Appearance{ 1457 { 1458 TypeName: "Template", 1459 FieldName: "websocket", 1460 }, 1461 } 1462 WEBSOCKETRequestDoc.PartDefinitions = []encoder.KeyValue{ 1463 { 1464 Key: "type", 1465 Value: "Type is the type of request made", 1466 }, 1467 { 1468 Key: "success", 1469 Value: "Success specifies whether websocket connection was successful", 1470 }, 1471 { 1472 Key: "request", 1473 Value: "Websocket request made to the server", 1474 }, 1475 { 1476 Key: "response", 1477 Value: "Websocket response received from the server", 1478 }, 1479 { 1480 Key: "host", 1481 Value: "Host is the input to the template", 1482 }, 1483 { 1484 Key: "matched", 1485 Value: "Matched is the input which was matched upon", 1486 }, 1487 } 1488 WEBSOCKETRequestDoc.Fields = make([]encoder.Doc, 5) 1489 WEBSOCKETRequestDoc.Fields[0].Name = "address" 1490 WEBSOCKETRequestDoc.Fields[0].Type = "string" 1491 WEBSOCKETRequestDoc.Fields[0].Note = "" 1492 WEBSOCKETRequestDoc.Fields[0].Description = "Address contains address for the request" 1493 WEBSOCKETRequestDoc.Fields[0].Comments[encoder.LineComment] = "Address contains address for the request" 1494 WEBSOCKETRequestDoc.Fields[1].Name = "inputs" 1495 WEBSOCKETRequestDoc.Fields[1].Type = "[]websocket.Input" 1496 WEBSOCKETRequestDoc.Fields[1].Note = "" 1497 WEBSOCKETRequestDoc.Fields[1].Description = "Inputs contains inputs for the websocket protocol" 1498 WEBSOCKETRequestDoc.Fields[1].Comments[encoder.LineComment] = "Inputs contains inputs for the websocket protocol" 1499 WEBSOCKETRequestDoc.Fields[2].Name = "headers" 1500 WEBSOCKETRequestDoc.Fields[2].Type = "map[string]string" 1501 WEBSOCKETRequestDoc.Fields[2].Note = "" 1502 WEBSOCKETRequestDoc.Fields[2].Description = "Headers contains headers for the request." 1503 WEBSOCKETRequestDoc.Fields[2].Comments[encoder.LineComment] = "Headers contains headers for the request." 1504 WEBSOCKETRequestDoc.Fields[3].Name = "attack" 1505 WEBSOCKETRequestDoc.Fields[3].Type = "generators.AttackTypeHolder" 1506 WEBSOCKETRequestDoc.Fields[3].Note = "" 1507 WEBSOCKETRequestDoc.Fields[3].Description = "Attack is the type of payload combinations to perform.\n\nSniper is each payload once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads." 1508 WEBSOCKETRequestDoc.Fields[3].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform." 1509 WEBSOCKETRequestDoc.Fields[4].Name = "payloads" 1510 WEBSOCKETRequestDoc.Fields[4].Type = "map[string]interface{}" 1511 WEBSOCKETRequestDoc.Fields[4].Note = "" 1512 WEBSOCKETRequestDoc.Fields[4].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time." 1513 WEBSOCKETRequestDoc.Fields[4].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request." 1514 1515 WEBSOCKETInputDoc.Type = "websocket.Input" 1516 WEBSOCKETInputDoc.Comments[encoder.LineComment] = "" 1517 WEBSOCKETInputDoc.Description = "" 1518 WEBSOCKETInputDoc.AppearsIn = []encoder.Appearance{ 1519 { 1520 TypeName: "websocket.Request", 1521 FieldName: "inputs", 1522 }, 1523 } 1524 WEBSOCKETInputDoc.Fields = make([]encoder.Doc, 2) 1525 WEBSOCKETInputDoc.Fields[0].Name = "data" 1526 WEBSOCKETInputDoc.Fields[0].Type = "string" 1527 WEBSOCKETInputDoc.Fields[0].Note = "" 1528 WEBSOCKETInputDoc.Fields[0].Description = "Data is the data to send as the input.\n\nIt supports DSL Helper Functions as well as normal expressions." 1529 WEBSOCKETInputDoc.Fields[0].Comments[encoder.LineComment] = "Data is the data to send as the input." 1530 1531 WEBSOCKETInputDoc.Fields[0].AddExample("", "TEST") 1532 1533 WEBSOCKETInputDoc.Fields[0].AddExample("", "hex_decode('50494e47')") 1534 WEBSOCKETInputDoc.Fields[1].Name = "name" 1535 WEBSOCKETInputDoc.Fields[1].Type = "string" 1536 WEBSOCKETInputDoc.Fields[1].Note = "" 1537 WEBSOCKETInputDoc.Fields[1].Description = "Name is the optional name of the data read to provide matching on." 1538 WEBSOCKETInputDoc.Fields[1].Comments[encoder.LineComment] = "Name is the optional name of the data read to provide matching on." 1539 1540 WEBSOCKETInputDoc.Fields[1].AddExample("", "prefix") 1541 1542 WHOISRequestDoc.Type = "whois.Request" 1543 WHOISRequestDoc.Comments[encoder.LineComment] = " Request is a request for the WHOIS protocol" 1544 WHOISRequestDoc.Description = "Request is a request for the WHOIS protocol" 1545 WHOISRequestDoc.AppearsIn = []encoder.Appearance{ 1546 { 1547 TypeName: "Template", 1548 FieldName: "whois", 1549 }, 1550 } 1551 WHOISRequestDoc.Fields = make([]encoder.Doc, 2) 1552 WHOISRequestDoc.Fields[0].Name = "query" 1553 WHOISRequestDoc.Fields[0].Type = "string" 1554 WHOISRequestDoc.Fields[0].Note = "" 1555 WHOISRequestDoc.Fields[0].Description = "Query contains query for the request" 1556 WHOISRequestDoc.Fields[0].Comments[encoder.LineComment] = "Query contains query for the request" 1557 WHOISRequestDoc.Fields[1].Name = "server" 1558 WHOISRequestDoc.Fields[1].Type = "string" 1559 WHOISRequestDoc.Fields[1].Note = "" 1560 WHOISRequestDoc.Fields[1].Description = "description: |\n Optional WHOIS server URL.\n\n If present, specifies the WHOIS server to execute the Request on.\n Otherwise, nil enables bootstrapping" 1561 WHOISRequestDoc.Fields[1].Comments[encoder.LineComment] = " description: |" 1562 1563 HTTPSignatureTypeHolderDoc.Type = "http.SignatureTypeHolder" 1564 HTTPSignatureTypeHolderDoc.Comments[encoder.LineComment] = " SignatureTypeHolder is used to hold internal type of the signature" 1565 HTTPSignatureTypeHolderDoc.Description = "SignatureTypeHolder is used to hold internal type of the signature" 1566 HTTPSignatureTypeHolderDoc.AppearsIn = []encoder.Appearance{ 1567 { 1568 TypeName: "Template", 1569 FieldName: "signature", 1570 }, 1571 } 1572 HTTPSignatureTypeHolderDoc.Fields = make([]encoder.Doc, 0) 1573 1574 VARIABLESVariableDoc.Type = "variables.Variable" 1575 VARIABLESVariableDoc.Comments[encoder.LineComment] = " Variable is a key-value pair of strings that can be used" 1576 VARIABLESVariableDoc.Description = "Variable is a key-value pair of strings that can be used\n throughout template." 1577 VARIABLESVariableDoc.AppearsIn = []encoder.Appearance{ 1578 { 1579 TypeName: "Template", 1580 FieldName: "variables", 1581 }, 1582 } 1583 VARIABLESVariableDoc.Fields = make([]encoder.Doc, 0) 1584 } 1585 1586 // GetTemplateDoc returns documentation for the file templates_doc.go. 1587 func GetTemplateDoc() *encoder.FileDoc { 1588 return &encoder.FileDoc{ 1589 Name: "Template", 1590 Description: "", 1591 Structs: []*encoder.Doc{ 1592 &TemplateDoc, 1593 &MODELInfoDoc, 1594 &STRINGSLICEStringSliceDoc, 1595 &STRINGSLICERawStringSliceDoc, 1596 &SEVERITYHolderDoc, 1597 &MODELClassificationDoc, 1598 &HTTPRequestDoc, 1599 &GENERATORSAttackTypeHolderDoc, 1600 &HTTPMethodTypeHolderDoc, 1601 &FUZZRuleDoc, 1602 &SignatureTypeHolderDoc, 1603 &DNSRequestDoc, 1604 &DNSRequestTypeHolderDoc, 1605 &FILERequestDoc, 1606 &NETWORKRequestDoc, 1607 &NETWORKInputDoc, 1608 &NetworkInputTypeHolderDoc, 1609 &HEADLESSRequestDoc, 1610 &ENGINEActionDoc, 1611 &ActionTypeHolderDoc, 1612 &USERAGENTUserAgentHolderDoc, 1613 &SSLRequestDoc, 1614 &WEBSOCKETRequestDoc, 1615 &WEBSOCKETInputDoc, 1616 &WHOISRequestDoc, 1617 &HTTPSignatureTypeHolderDoc, 1618 &VARIABLESVariableDoc, 1619 }, 1620 } 1621 }