@waftester/cli 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +80 -0
  2. package/LICENSE-COMMUNITY +28 -0
  3. package/README.md +121 -0
  4. package/bin/cli.js +152 -0
  5. package/package.json +52 -0
  6. package/payloads/community/README.md +45 -0
  7. package/payloads/community/ai/ml-poisoning.json +173 -0
  8. package/payloads/community/ai/prompt-injection.json +247 -0
  9. package/payloads/community/ai/workflow-abuse.json +222 -0
  10. package/payloads/community/auth/jwt.json +855 -0
  11. package/payloads/community/auth/login-bypass.json +623 -0
  12. package/payloads/community/auth/mfa.json +402 -0
  13. package/payloads/community/auth/oauth.json +421 -0
  14. package/payloads/community/auth/open-redirect.json +1028 -0
  15. package/payloads/community/auth/session.json +404 -0
  16. package/payloads/community/cache/deception.json +402 -0
  17. package/payloads/community/cache/poisoning.json +403 -0
  18. package/payloads/community/deserialization/gadget.json +375 -0
  19. package/payloads/community/deserialization/prototype.json +370 -0
  20. package/payloads/community/fuzz/content-type.json +397 -0
  21. package/payloads/community/fuzz/headers.json +401 -0
  22. package/payloads/community/fuzz/methods.json +397 -0
  23. package/payloads/community/fuzz/obfuscation.json +362 -0
  24. package/payloads/community/fuzz/special-chars.json +740 -0
  25. package/payloads/community/fuzz/waf-bypass.json +452 -0
  26. package/payloads/community/graphql/batching-abuse.json +271 -0
  27. package/payloads/community/graphql/depth-limit.json +271 -0
  28. package/payloads/community/graphql/introspection.json +267 -0
  29. package/payloads/community/injection/crlf.json +569 -0
  30. package/payloads/community/injection/ldap.json +357 -0
  31. package/payloads/community/injection/nosqli.json +529 -0
  32. package/payloads/community/injection/oscmd.json +662 -0
  33. package/payloads/community/injection/rce-polyglots.json +452 -0
  34. package/payloads/community/injection/sqli.json +681 -0
  35. package/payloads/community/injection/ssti.json +584 -0
  36. package/payloads/community/injection/upload-attacks.json +632 -0
  37. package/payloads/community/injection/xpath.json +357 -0
  38. package/payloads/community/injection/xxe.json +716 -0
  39. package/payloads/community/logic/forced-browsing.json +405 -0
  40. package/payloads/community/logic/idor.json +1026 -0
  41. package/payloads/community/logic/privilege.json +337 -0
  42. package/payloads/community/media/exif-injection.json +225 -0
  43. package/payloads/community/media/metadata-poison.json +239 -0
  44. package/payloads/community/protocol/http-smuggling.json +798 -0
  45. package/payloads/community/protocol/http2-attacks.json +382 -0
  46. package/payloads/community/protocol/websocket-abuse.json +375 -0
  47. package/payloads/community/rate-limit/burst-simulation.json +286 -0
  48. package/payloads/community/rate-limit/bypass-attempts.json +326 -0
  49. package/payloads/community/rate-limit/zone-tests.json +332 -0
  50. package/payloads/community/services/authentik.json +415 -0
  51. package/payloads/community/services/immich.json +423 -0
  52. package/payloads/community/services/n8n.json +366 -0
  53. package/payloads/community/sqli-basic.json +182 -0
  54. package/payloads/community/ssrf/cloud-metadata.json +999 -0
  55. package/payloads/community/ssrf/dns-rebinding.json +503 -0
  56. package/payloads/community/ssrf/internal-networks.json +627 -0
  57. package/payloads/community/ssrf/protocol-smuggling.json +350 -0
  58. package/payloads/community/ssti/multi-language-templates.json +191 -0
  59. package/payloads/community/ssti/python-templates.json +200 -0
  60. package/payloads/community/traversal/basic.json +675 -0
  61. package/payloads/community/traversal/cloud-credentials.json +107 -0
  62. package/payloads/community/traversal/config-files.json +193 -0
  63. package/payloads/community/traversal/encoding.json +558 -0
  64. package/payloads/community/traversal/null-byte.json +105 -0
  65. package/payloads/community/traversal/symlink.json +93 -0
  66. package/payloads/community/traversal/unicode.json +134 -0
  67. package/payloads/community/traversal/unix-advanced.json +195 -0
  68. package/payloads/community/traversal/windows-advanced.json +195 -0
  69. package/payloads/community/waf-bypass/cloudflare-bypass.json +102 -0
  70. package/payloads/community/waf-bypass/encoding-bypass.json +120 -0
  71. package/payloads/community/waf-bypass/evasion-techniques.json +164 -0
  72. package/payloads/community/waf-bypass/hpp-bypass.json +92 -0
  73. package/payloads/community/waf-bypass/modsecurity-crs.json +220 -0
  74. package/payloads/community/waf-bypass/protocol-attacks.json +101 -0
  75. package/payloads/community/waf-bypass/sqlmap-tamper.json +252 -0
  76. package/payloads/community/waf-bypass/unicode-charset.json +152 -0
  77. package/payloads/community/waf-bypass/vendor-bypasses.json +72 -0
  78. package/payloads/community/waf-validation/README.md +172 -0
  79. package/payloads/community/waf-validation/bypass-techniques.json +272 -0
  80. package/payloads/community/waf-validation/custom-rules.json +952 -0
  81. package/payloads/community/waf-validation/evasion-techniques.json +272 -0
  82. package/payloads/community/waf-validation/modsecurity-core.json +151 -0
  83. package/payloads/community/waf-validation/owasp-top10.json +236 -0
  84. package/payloads/community/waf-validation/regression-tests.json +227 -0
  85. package/payloads/community/xss/csp-bypass.json +431 -0
  86. package/payloads/community/xss/dom.json +389 -0
  87. package/payloads/community/xss/filter-bypass.json +1242 -0
  88. package/payloads/community/xss/mutation.json +263 -0
  89. package/payloads/community/xss/polyglots.json +371 -0
  90. package/payloads/community/xss/reflected.json +187 -0
  91. package/payloads/community/xss/stored.json +330 -0
  92. package/payloads/crlf-injection.json +182 -0
  93. package/payloads/ids-map.json +155 -0
  94. package/payloads/ldap-injection.json +182 -0
  95. package/payloads/nosql-injection.json +227 -0
  96. package/payloads/prototype-pollution.json +182 -0
  97. package/payloads/request-smuggling.json +182 -0
  98. package/payloads/version.json +28 -0
  99. package/payloads/xss-advanced.json +227 -0
  100. package/templates/README.md +221 -0
  101. package/templates/nuclei/http/waf-bypass/crlf-bypass.yaml +146 -0
  102. package/templates/nuclei/http/waf-bypass/lfi-bypass.yaml +152 -0
  103. package/templates/nuclei/http/waf-bypass/nosqli-bypass.yaml +166 -0
  104. package/templates/nuclei/http/waf-bypass/rce-bypass.yaml +171 -0
  105. package/templates/nuclei/http/waf-bypass/sqli-basic.yaml +142 -0
  106. package/templates/nuclei/http/waf-bypass/sqli-evasion.yaml +192 -0
  107. package/templates/nuclei/http/waf-bypass/ssrf-bypass.yaml +130 -0
  108. package/templates/nuclei/http/waf-bypass/ssti-bypass.yaml +147 -0
  109. package/templates/nuclei/http/waf-bypass/xss-basic.yaml +163 -0
  110. package/templates/nuclei/http/waf-bypass/xss-evasion.yaml +217 -0
  111. package/templates/nuclei/http/waf-bypass/xxe-bypass.yaml +204 -0
  112. package/templates/nuclei/http/waf-detection/akamai-detect.yaml +105 -0
  113. package/templates/nuclei/http/waf-detection/aws-waf-detect.yaml +115 -0
  114. package/templates/nuclei/http/waf-detection/azure-waf-detect.yaml +114 -0
  115. package/templates/nuclei/http/waf-detection/cloudflare-detect.yaml +121 -0
  116. package/templates/nuclei/http/waf-detection/modsecurity-detect.yaml +129 -0
  117. package/templates/nuclei/workflows/waf-assessment-workflow.yaml +71 -0
  118. package/templates/output/asff.tmpl +61 -0
  119. package/templates/output/csv.tmpl +4 -0
  120. package/templates/output/junit.tmpl +34 -0
  121. package/templates/output/markdown-report.tmpl +92 -0
  122. package/templates/output/slack-notification.tmpl +95 -0
  123. package/templates/output/text-summary.tmpl +56 -0
  124. package/templates/overrides/api-only.yaml +130 -0
  125. package/templates/overrides/crs-tuning.yaml +204 -0
  126. package/templates/overrides/false-positive-suppression.yaml +159 -0
  127. package/templates/policies/owasp-top10.yaml +152 -0
  128. package/templates/policies/pci-dss.yaml +124 -0
  129. package/templates/policies/permissive.yaml +40 -0
  130. package/templates/policies/standard.yaml +57 -0
  131. package/templates/policies/strict.yaml +72 -0
  132. package/templates/report-configs/compliance.yaml +173 -0
  133. package/templates/report-configs/dark.yaml +136 -0
  134. package/templates/report-configs/enterprise.yaml +175 -0
  135. package/templates/report-configs/minimal.yaml +84 -0
  136. package/templates/report-configs/print.yaml +139 -0
  137. package/templates/workflows/api-scan.yaml +132 -0
  138. package/templates/workflows/ci-gate.yaml +129 -0
  139. package/templates/workflows/full-scan.yaml +133 -0
  140. package/templates/workflows/quick-probe.yaml +80 -0
  141. package/templates/workflows/waf-detection.yaml +89 -0
@@ -0,0 +1,139 @@
1
+ # WAFtester Print-Optimized Report Configuration
2
+ # Designed for physical printing and PDF export
3
+ # Clean black-and-white with high readability
4
+
5
+ name: print
6
+ description: "Print-optimized report with clean layout for PDF export and physical printing"
7
+ version: "2.0.0"
8
+
9
+ branding:
10
+ title: "WAF Security Assessment Report"
11
+ subtitle: ""
12
+ logo: ""
13
+ company: ""
14
+ footer: "Generated by WAFtester"
15
+
16
+ layout:
17
+ max_width: 900
18
+ orientation: portrait
19
+ page_size: A4
20
+ compact: false
21
+ table_of_contents: true
22
+ page_numbers: true
23
+ page_breaks_between_sections: true
24
+
25
+ sections:
26
+ - id: cover_page
27
+ title: "Cover"
28
+ enabled: true
29
+ fields:
30
+ - title
31
+ - target
32
+ - timestamp
33
+ - company
34
+
35
+ - id: executive_summary
36
+ title: "Executive Summary"
37
+ enabled: true
38
+ fields:
39
+ - target
40
+ - timestamp
41
+ - duration
42
+ - total_tests
43
+ - blocked
44
+ - bypassed
45
+ - errors
46
+ - effectiveness
47
+ - grade
48
+ - highest_severity
49
+
50
+ - id: severity_chart
51
+ title: "Severity Distribution"
52
+ enabled: true
53
+ chart_type: "bar"
54
+
55
+ - id: category_breakdown
56
+ title: "Category Results"
57
+ enabled: true
58
+ chart_type: "table"
59
+
60
+ - id: bypasses
61
+ title: "WAF Bypass Findings"
62
+ enabled: true
63
+ max_items: 50
64
+ sort_by: "severity"
65
+ sort_order: "desc"
66
+ fields:
67
+ - id
68
+ - category
69
+ - severity
70
+ - name
71
+ - url
72
+ - method
73
+ - status_code
74
+ - outcome
75
+ - payload
76
+ - owasp_link
77
+ - cwe_link
78
+
79
+ - id: recommendations
80
+ title: "Remediation Recommendations"
81
+ enabled: true
82
+ priority_order: true
83
+
84
+ - id: detailed_results
85
+ title: "Complete Test Results"
86
+ enabled: true
87
+ paginate: true
88
+ page_size: 40
89
+
90
+ - id: appendix
91
+ title: "Appendix"
92
+ enabled: true
93
+ include_raw_payloads: false
94
+ include_methodology: true
95
+
96
+ styling:
97
+ theme: "print"
98
+ font_family: "'Georgia', 'Times New Roman', serif"
99
+ font_size: "11pt"
100
+ heading_font: "'Arial', 'Helvetica', sans-serif"
101
+ code_font: "'Courier New', 'Courier', monospace"
102
+ line_height: "1.6"
103
+ colors:
104
+ primary: "#000000"
105
+ secondary: "#333333"
106
+ success: "#000000"
107
+ warning: "#000000"
108
+ danger: "#000000"
109
+ background: "#ffffff"
110
+ text: "#000000"
111
+ border: "#666666"
112
+ header_bg: "#f0f0f0"
113
+ alt_row: "#f9f9f9"
114
+ severity_markers:
115
+ critical: "[!!!]"
116
+ high: "[!!]"
117
+ medium: "[!]"
118
+ low: "[.]"
119
+ info: "[-]"
120
+
121
+ charts:
122
+ enabled: true
123
+ renderer: "svg"
124
+ width: 450
125
+ height: 300
126
+ grayscale: true
127
+ types:
128
+ - severity_bar
129
+ - category_table
130
+
131
+ export:
132
+ formats:
133
+ - pdf
134
+ - html
135
+ include_raw_data: false
136
+ compress: false
137
+ embed_images: true
138
+ grayscale_images: true
139
+ max_file_size_mb: 20
@@ -0,0 +1,132 @@
1
+ # WAFtester API Security Scan Workflow
2
+ # Comprehensive API security testing with OpenAPI/Swagger support
3
+ #
4
+ # Usage:
5
+ # waf-tester workflow run templates/workflows/api-scan.yaml \
6
+ # --input target=https://api.example.com \
7
+ # --input openapi_spec=./openapi.yaml \
8
+ # --input auth_header="Bearer eyJ..."
9
+
10
+ name: api-scan
11
+ description: "API-focused security assessment with OpenAPI schema discovery and auth-aware scanning"
12
+ version: "2.0.0"
13
+ tags:
14
+ - api
15
+ - openapi
16
+ - swagger
17
+ - rest
18
+ - security
19
+
20
+ inputs:
21
+ - name: target
22
+ description: API base URL
23
+ required: true
24
+ - name: openapi_spec
25
+ description: Path to OpenAPI/Swagger specification
26
+ required: false
27
+ - name: auth_header
28
+ description: Authorization header value (e.g., Bearer token)
29
+ required: false
30
+ - name: output_dir
31
+ description: Output directory
32
+ default: "./results"
33
+ - name: rate_limit
34
+ description: Requests per second limit
35
+ default: "20"
36
+ - name: concurrency
37
+ description: Number of concurrent workers
38
+ default: "10"
39
+ - name: scan_types
40
+ description: Security categories to test
41
+ default: "sqli,nosqli,xss,ssrf,idor,massassignment,bola,bfla"
42
+
43
+ steps:
44
+ - id: detect
45
+ name: Detect WAF on API endpoint
46
+ command: wafdetect
47
+ args:
48
+ - "-u"
49
+ - "{{.target}}"
50
+ - "-o"
51
+ - "{{.output_dir}}/api-waf-detection.json"
52
+ - "--json"
53
+
54
+ - id: fingerprint
55
+ name: Fingerprint WAF and API gateway
56
+ command: waffprint
57
+ args:
58
+ - "-u"
59
+ - "{{.target}}"
60
+ - "-o"
61
+ - "{{.output_dir}}/api-fingerprint.json"
62
+ - "--json"
63
+
64
+ - id: discover
65
+ name: Discover API endpoints
66
+ command: discover
67
+ args:
68
+ - "-u"
69
+ - "{{.target}}"
70
+ - "--openapi"
71
+ - "{{.openapi_spec}}"
72
+ - "-o"
73
+ - "{{.output_dir}}/api-endpoints.json"
74
+
75
+ - id: calibrate
76
+ name: Calibrate scanner to API responses
77
+ command: calibrate
78
+ args:
79
+ - "-u"
80
+ - "{{.target}}"
81
+ - "-o"
82
+ - "{{.output_dir}}/api-calibration.json"
83
+ condition: "steps.detect.success"
84
+
85
+ - id: scan
86
+ name: Run API security tests
87
+ command: run
88
+ args:
89
+ - "-u"
90
+ - "{{.target}}"
91
+ - "-s"
92
+ - "{{.scan_types}}"
93
+ - "-c"
94
+ - "{{.concurrency}}"
95
+ - "--rate-limit"
96
+ - "{{.rate_limit}}"
97
+ - "--header"
98
+ - "Authorization: {{.auth_header}}"
99
+ - "--header"
100
+ - "Content-Type: application/json"
101
+ - "--overrides"
102
+ - "templates/overrides/api-only.yaml"
103
+ - "-o"
104
+ - "json"
105
+ - "--output-file"
106
+ - "{{.output_dir}}/api-results.json"
107
+ condition: "steps.detect.success"
108
+
109
+ - id: report_json
110
+ name: Generate JSON report
111
+ command: report
112
+ args:
113
+ - "-i"
114
+ - "{{.output_dir}}/api-results.json"
115
+ - "-o"
116
+ - "{{.output_dir}}/api-report.json"
117
+ - "-f"
118
+ - "json"
119
+
120
+ - id: report_html
121
+ name: Generate HTML report
122
+ command: report
123
+ args:
124
+ - "-i"
125
+ - "{{.output_dir}}/api-results.json"
126
+ - "-o"
127
+ - "{{.output_dir}}/api-report.html"
128
+ - "-f"
129
+ - "html"
130
+ - "--template-config"
131
+ - "templates/report-configs/enterprise.yaml"
132
+ condition: "steps.scan.success"
@@ -0,0 +1,129 @@
1
+ # WAFtester CI/CD Gate Workflow
2
+ # Automated security gate for CI/CD pipelines with pass/fail verdict
3
+ # Outputs SARIF for GitHub Advanced Security and JUnit for CI integration
4
+ #
5
+ # Usage:
6
+ # waf-tester workflow run templates/workflows/ci-gate.yaml \
7
+ # --input target=https://staging.example.com \
8
+ # --input policy=templates/policies/strict.yaml
9
+
10
+ name: ci-gate
11
+ description: "CI/CD security gate with dual SARIF+JUnit output, policy enforcement, and pass/fail exit code"
12
+ version: "2.0.0"
13
+ tags:
14
+ - ci
15
+ - cd
16
+ - pipeline
17
+ - gate
18
+ - automation
19
+ - sarif
20
+ - junit
21
+
22
+ inputs:
23
+ - name: target
24
+ description: Target URL to test (typically a staging environment)
25
+ required: true
26
+ - name: policy
27
+ description: Security policy to enforce
28
+ default: "templates/policies/standard.yaml"
29
+ - name: output_dir
30
+ description: Output directory for reports
31
+ default: "./security-results"
32
+ - name: output_format
33
+ description: Primary output format (sarif, junit, json)
34
+ default: "sarif"
35
+ - name: concurrency
36
+ description: Number of concurrent workers
37
+ default: "20"
38
+ - name: rate_limit
39
+ description: Requests per second limit
40
+ default: "50"
41
+ - name: scan_types
42
+ description: Security scan categories
43
+ default: "sqli,xss,rce,ssrf,lfi,ssti"
44
+ - name: fail_on_bypass
45
+ description: Fail pipeline on any bypass found
46
+ default: "true"
47
+ - name: severity_threshold
48
+ description: Minimum severity to trigger failure (critical, high, medium, low)
49
+ default: "high"
50
+
51
+ steps:
52
+ - id: detect
53
+ name: Detect WAF presence
54
+ command: wafdetect
55
+ args:
56
+ - "-u"
57
+ - "{{.target}}"
58
+ - "-o"
59
+ - "{{.output_dir}}/waf-detection.json"
60
+ - "--json"
61
+
62
+ - id: calibrate
63
+ name: Calibrate scanner
64
+ command: calibrate
65
+ args:
66
+ - "-u"
67
+ - "{{.target}}"
68
+ - "-o"
69
+ - "{{.output_dir}}/calibration.json"
70
+ condition: "steps.detect.success"
71
+
72
+ - id: scan
73
+ name: Run security scan
74
+ command: run
75
+ args:
76
+ - "-u"
77
+ - "{{.target}}"
78
+ - "-s"
79
+ - "{{.scan_types}}"
80
+ - "-c"
81
+ - "{{.concurrency}}"
82
+ - "--rate-limit"
83
+ - "{{.rate_limit}}"
84
+ - "--policy"
85
+ - "{{.policy}}"
86
+ - "--severity"
87
+ - "{{.severity_threshold}}"
88
+ - "-o"
89
+ - "json"
90
+ - "--output-file"
91
+ - "{{.output_dir}}/scan-results.json"
92
+ condition: "steps.detect.success"
93
+
94
+ - id: report_sarif
95
+ name: Generate SARIF report for GitHub Advanced Security
96
+ command: report
97
+ args:
98
+ - "-i"
99
+ - "{{.output_dir}}/scan-results.json"
100
+ - "-o"
101
+ - "{{.output_dir}}/results.sarif"
102
+ - "-f"
103
+ - "sarif"
104
+
105
+ - id: report_junit
106
+ name: Generate JUnit report for CI dashboard
107
+ command: report
108
+ args:
109
+ - "-i"
110
+ - "{{.output_dir}}/scan-results.json"
111
+ - "-o"
112
+ - "{{.output_dir}}/results.xml"
113
+ - "-f"
114
+ - "junit"
115
+
116
+ - id: gate
117
+ name: Evaluate security policy pass/fail
118
+ command: evaluate
119
+ args:
120
+ - "-i"
121
+ - "{{.output_dir}}/scan-results.json"
122
+ - "--policy"
123
+ - "{{.policy}}"
124
+ - "--fail-on-bypass"
125
+ - "{{.fail_on_bypass}}"
126
+ - "--severity"
127
+ - "{{.severity_threshold}}"
128
+ - "--exit-code"
129
+ condition: "steps.scan.success"
@@ -0,0 +1,133 @@
1
+ # WAFtester Full Security Scan Workflow
2
+ # Complete security assessment: detect > learn > calibrate > scan > report
3
+ #
4
+ # Usage:
5
+ # waf-tester workflow run templates/workflows/full-scan.yaml --input target=https://example.com
6
+
7
+ name: full-scan
8
+ description: "Complete security scan: discover > learn > calibrate > scan > report"
9
+ version: "2.0.0"
10
+ tags:
11
+ - security
12
+ - complete
13
+ - production
14
+ - enterprise
15
+
16
+ inputs:
17
+ - name: target
18
+ description: Target URL to scan
19
+ required: true
20
+ - name: output_dir
21
+ description: Output directory for results
22
+ default: "./results"
23
+ - name: concurrency
24
+ description: Number of concurrent requests
25
+ default: "50"
26
+ - name: rate_limit
27
+ description: Requests per second limit
28
+ default: "10"
29
+ - name: policy
30
+ description: Policy file for pass/fail evaluation
31
+ default: "templates/policies/standard.yaml"
32
+ - name: scan_types
33
+ description: "Comma-separated scan types (sqli,xss,rce,ssrf,lfi,ssti,xxe,cmdi,nosqli,crlf or all)"
34
+ default: "all"
35
+
36
+ steps:
37
+ - id: detect
38
+ name: Detect WAF presence and vendor
39
+ command: wafdetect
40
+ args:
41
+ - "-u"
42
+ - "{{.target}}"
43
+ - "-o"
44
+ - "{{.output_dir}}/waf-detection.json"
45
+ - "--json"
46
+
47
+ - id: fingerprint
48
+ name: Fingerprint WAF technology stack
49
+ command: waffprint
50
+ args:
51
+ - "-u"
52
+ - "{{.target}}"
53
+ - "-o"
54
+ - "{{.output_dir}}/waf-fingerprint.json"
55
+ - "--json"
56
+
57
+ - id: learn
58
+ name: Learn WAF behavior patterns
59
+ command: learn
60
+ args:
61
+ - "-u"
62
+ - "{{.target}}"
63
+ - "-o"
64
+ - "{{.output_dir}}/waf-profile.json"
65
+ condition: "steps.detect.success"
66
+
67
+ - id: calibrate
68
+ name: Calibrate scan for WAF thresholds
69
+ command: calibrate
70
+ args:
71
+ - "-u"
72
+ - "{{.target}}"
73
+ - "--profile"
74
+ - "{{.output_dir}}/waf-profile.json"
75
+ condition: "steps.learn.success"
76
+
77
+ - id: scan
78
+ name: Run full security scan
79
+ command: run
80
+ args:
81
+ - "-u"
82
+ - "{{.target}}"
83
+ - "-s"
84
+ - "{{.scan_types}}"
85
+ - "-c"
86
+ - "{{.concurrency}}"
87
+ - "--rate-limit"
88
+ - "{{.rate_limit}}"
89
+ - "-o"
90
+ - "json"
91
+ - "--output-file"
92
+ - "{{.output_dir}}/scan-results.json"
93
+ - "--policy"
94
+ - "{{.policy}}"
95
+ condition: "steps.detect.success"
96
+
97
+ - id: report_html
98
+ name: Generate HTML enterprise report
99
+ command: report
100
+ args:
101
+ - "-i"
102
+ - "{{.output_dir}}/scan-results.json"
103
+ - "-o"
104
+ - "{{.output_dir}}/report.html"
105
+ - "-f"
106
+ - "html"
107
+ - "--template-config"
108
+ - "templates/report-configs/enterprise.yaml"
109
+ condition: "steps.scan.success"
110
+
111
+ - id: report_sarif
112
+ name: Generate SARIF report for IDE integration
113
+ command: report
114
+ args:
115
+ - "-i"
116
+ - "{{.output_dir}}/scan-results.json"
117
+ - "-o"
118
+ - "{{.output_dir}}/report.sarif"
119
+ - "-f"
120
+ - "sarif"
121
+ condition: "steps.scan.success"
122
+
123
+ - id: report_json
124
+ name: Generate JSON summary report
125
+ command: report
126
+ args:
127
+ - "-i"
128
+ - "{{.output_dir}}/scan-results.json"
129
+ - "-o"
130
+ - "{{.output_dir}}/summary.json"
131
+ - "-f"
132
+ - "json"
133
+ condition: "steps.scan.success"
@@ -0,0 +1,80 @@
1
+ # WAFtester Quick Probe Workflow
2
+ # Fast target enumeration and WAF detection with minimal footprint
3
+ #
4
+ # Usage:
5
+ # waf-tester workflow run templates/workflows/quick-probe.yaml --input target=https://example.com
6
+
7
+ name: quick-probe
8
+ description: "Quick WAF detection, fingerprinting, and critical-only vulnerability probe"
9
+ version: "2.0.0"
10
+ tags:
11
+ - probe
12
+ - quick
13
+ - assessment
14
+ - recon
15
+
16
+ inputs:
17
+ - name: target
18
+ description: Target URL to probe
19
+ required: true
20
+ - name: output_dir
21
+ description: Output directory
22
+ default: "./results"
23
+ - name: rate_limit
24
+ description: Requests per second limit (low for stealth)
25
+ default: "5"
26
+
27
+ steps:
28
+ - id: detect
29
+ name: Detect WAF presence
30
+ command: wafdetect
31
+ args:
32
+ - "-u"
33
+ - "{{.target}}"
34
+ - "-o"
35
+ - "{{.output_dir}}/waf-detection.json"
36
+ - "--json"
37
+
38
+ - id: fingerprint
39
+ name: Fingerprint WAF technology
40
+ command: waffprint
41
+ args:
42
+ - "-u"
43
+ - "{{.target}}"
44
+ - "-o"
45
+ - "{{.output_dir}}/waf-fingerprint.json"
46
+ - "--json"
47
+
48
+ - id: quick_scan
49
+ name: Run quick scan (critical + high only)
50
+ command: run
51
+ args:
52
+ - "-u"
53
+ - "{{.target}}"
54
+ - "-s"
55
+ - "sqli,xss,rce,ssrf"
56
+ - "-c"
57
+ - "10"
58
+ - "--rate-limit"
59
+ - "{{.rate_limit}}"
60
+ - "--severity"
61
+ - "critical,high"
62
+ - "-o"
63
+ - "json"
64
+ - "--output-file"
65
+ - "{{.output_dir}}/quick-results.json"
66
+ condition: "steps.detect.success"
67
+
68
+ - id: report
69
+ name: Generate quick summary
70
+ command: report
71
+ args:
72
+ - "-i"
73
+ - "{{.output_dir}}/quick-results.json"
74
+ - "-o"
75
+ - "{{.output_dir}}/quick-report.html"
76
+ - "-f"
77
+ - "html"
78
+ - "--template-config"
79
+ - "templates/report-configs/minimal.yaml"
80
+ condition: "steps.quick_scan.success"
@@ -0,0 +1,89 @@
1
+ # WAFtester WAF Detection Workflow
2
+ # Comprehensive WAF identification, fingerprinting, and behavior profiling
3
+ #
4
+ # Usage:
5
+ # waf-tester workflow run templates/workflows/waf-detection.yaml --input target=https://example.com
6
+
7
+ name: waf-detection
8
+ description: "Detect, fingerprint, and profile WAF technology stack"
9
+ version: "2.0.0"
10
+ tags:
11
+ - waf
12
+ - detection
13
+ - fingerprint
14
+ - recon
15
+ - profiling
16
+
17
+ inputs:
18
+ - name: target
19
+ description: Target URL
20
+ required: true
21
+ - name: output_dir
22
+ description: Output directory
23
+ default: "./results"
24
+ - name: rate_limit
25
+ description: Requests per second limit
26
+ default: "3"
27
+
28
+ steps:
29
+ - id: detect
30
+ name: Detect WAF presence
31
+ command: wafdetect
32
+ args:
33
+ - "-u"
34
+ - "{{.target}}"
35
+ - "-o"
36
+ - "{{.output_dir}}/waf-detection.json"
37
+ - "--json"
38
+
39
+ - id: fingerprint
40
+ name: Fingerprint WAF vendor and version
41
+ command: waffprint
42
+ args:
43
+ - "-u"
44
+ - "{{.target}}"
45
+ - "-o"
46
+ - "{{.output_dir}}/waf-fingerprint.json"
47
+ - "--json"
48
+
49
+ - id: probe_behavior
50
+ name: Probe WAF blocking behavior with common attacks
51
+ command: run
52
+ args:
53
+ - "-u"
54
+ - "{{.target}}"
55
+ - "-s"
56
+ - "sqli,xss,rce,lfi"
57
+ - "-c"
58
+ - "5"
59
+ - "--rate-limit"
60
+ - "{{.rate_limit}}"
61
+ - "-o"
62
+ - "json"
63
+ - "--output-file"
64
+ - "{{.output_dir}}/probe-results.json"
65
+ condition: "steps.detect.success"
66
+
67
+ - id: learn
68
+ name: Learn WAF response patterns
69
+ command: learn
70
+ args:
71
+ - "-u"
72
+ - "{{.target}}"
73
+ - "-o"
74
+ - "{{.output_dir}}/waf-profile.json"
75
+ condition: "steps.detect.success"
76
+
77
+ - id: report
78
+ name: Generate WAF detection report
79
+ command: report
80
+ args:
81
+ - "-i"
82
+ - "{{.output_dir}}/probe-results.json"
83
+ - "-o"
84
+ - "{{.output_dir}}/waf-report.html"
85
+ - "-f"
86
+ - "html"
87
+ - "--template-config"
88
+ - "templates/report-configs/minimal.yaml"
89
+ condition: "steps.probe_behavior.success"