blitzstrike 1.0.98 → 1.0.99

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 CHANGED
@@ -5,6 +5,20 @@ All notable changes to Blitz Strike are documented here.
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
+ ## [1.0.99] — 2026-09-13
9
+
10
+ ### Added — WSTG + HackTricks enrichment (interconnected doctrine)
11
+
12
+ - New `wstg_map` MCP tool + `intelligence/wstg_map.json`: maps every OWASP
13
+ WSTG category (12) to the Blitz Strike skill/phase/tools/data that covers it,
14
+ including the high-value advanced tests (smuggling, SSRF, SSTI, deserialization,
15
+ prototype pollution, mass assignment, path confusion, GraphQL, WebSockets).
16
+ - `bypass_techniques.json` auth category enriched with concrete 401/403 bypass
17
+ techniques (verb fuzzing, proxy-header spoofing, path normalization, API
18
+ version confusion, JSON parameter pollution, protocol/host confusion).
19
+ - `bs-web-hunting` SSRF ladder gained DNS-rebinding-vs-safe-url-checks note.
20
+ - THIRD-PARTY-NOTICES: added OWASP WSTG (CC BY-SA 4.0).
21
+
8
22
  ## [1.0.98] — 2026-09-13
9
23
 
10
24
  ### Added — interconnected doctrine map
@@ -48,6 +48,14 @@ satisfies the attribution requirements of those licenses.
48
48
  - **License:** MIT
49
49
  - **Used for:** ~11.9k YAML detection templates (`templates/`).
50
50
 
51
+ ## OWASP Web Security Testing Guide (WSTG)
52
+
53
+ - **Source:** https://github.com/OWASP/wstg
54
+ - **License:** CC BY-SA 4.0
55
+ - **Used for:** the WSTG category/test taxonomy in `intelligence/wstg_map.json`
56
+ (category identifiers WSTG-INFO/CONF/IDNT/ATHN/ATHZ/SESS/INPV/ERRH/CRYP/
57
+ BUSL/CLNT/APIT and their test names).
58
+
51
59
  ---
52
60
 
53
61
  All other code, chains, and data in this project are written by shinthink
package/dist/index.js CHANGED
@@ -31750,6 +31750,22 @@ function doctrineMap(part) {
31750
31750
  suggestions: ["cross_cutting", ...data.phases.map((p) => String(p.phase))]
31751
31751
  };
31752
31752
  }
31753
+ function wstgMap(category) {
31754
+ const data = loadJson("wstg_map");
31755
+ if (!data)
31756
+ return { found: false, error: "wstg_map.json not found" };
31757
+ if (!category) {
31758
+ return {
31759
+ found: true,
31760
+ categories: data.categories.map((c) => ({ wstg: c.wstg, name: c.name, phase: c.phase, skill: c.skill }))
31761
+ };
31762
+ }
31763
+ const q = category.toUpperCase();
31764
+ const c = data.categories.find((x) => String(x.wstg).toUpperCase() === q || String(x.name).toLowerCase().includes(category.toLowerCase()) || String(x.wstg).toUpperCase().includes(q));
31765
+ if (c)
31766
+ return { found: true, ...c };
31767
+ return { found: false, category, suggestions: data.categories.map((x) => String(x.wstg)) };
31768
+ }
31753
31769
 
31754
31770
  // src/active.ts
31755
31771
  var TIMEOUT_MS2 = 20000;
@@ -54234,6 +54250,15 @@ ${statusLine}` : statusLine },
54234
54250
  }, async ({ part }) => {
54235
54251
  return { content: [{ type: "text", text: JSON.stringify(doctrineMap(part)) }] };
54236
54252
  });
54253
+ server.registerTool("wstg_map", {
54254
+ title: "OWASP WSTG -> Blitz coverage map",
54255
+ description: "INTEL: map an OWASP WSTG category (WSTG-INFO, WSTG-INPV, WSTG-BUSL, WSTG-CLNT, WSTG-APIT, ...) to the Blitz Strike skill, phase, tools, and data that covers it, including the high-value advanced tests where Blitz has a specific deterministic capability. Use to ground the engagement in the official framework.",
54256
+ inputSchema: {
54257
+ category: string2().optional().describe("Optional WSTG category id (e.g. WSTG-INPV) or name (e.g. 'Input Validation').")
54258
+ }
54259
+ }, async ({ category }) => {
54260
+ return { content: [{ type: "text", text: JSON.stringify(wstgMap(category)) }] };
54261
+ });
54237
54262
  server.registerTool("engagement_start", {
54238
54263
  title: "Start an engagement",
54239
54264
  description: "ORCHESTRATION: open an engagement and track its state. Call at the start of a full audit so subsequent engagement_phase / engagement_track / engagement_status calls have a state to update. The LLM is the brain; this is the deterministic bookkeeping hand.",
@@ -31,11 +31,12 @@
31
31
  "id": "auth",
32
32
  "defense": "Authentication / authorization (401/403)",
33
33
  "techniques": [
34
- {"id": "path_traversal", "name": "Path normalization", "how": "Bypass path-based ACL with traversal or encoding.", "example": "/admin/../admin, /admin%2f, /admin/.;/"},
35
- {"id": "verb", "name": "HTTP verb tampering", "how": "Switch the method (GET->POST, add X-HTTP-Method-Override).", "example": "GET /admin -> POST /admin"},
36
- {"id": "header", "name": "Header spoofing", "how": "Spoof X-Forwarded-For / X-Real-IP / X-Original-URL to appear internal.", "example": "X-Original-URL: /admin"},
37
- {"id": "case_path", "name": "Case / suffix", "how": "Vary case or append suffix to dodge exact-match rules.", "example": "/Admin, /admin/.json, /admin/."},
38
- {"id": "param", "name": "Parameter override", "how": "Override auth via a second parameter or body field the backend trusts.", "example": "user=guest&user=admin"}
34
+ {"id": "verb", "name": "HTTP verb tampering", "how": "Switch the method (GET->POST) or fuzz uncommon verbs (TRACE, HEAD, OPTIONS, PATCH, INVENTED, HACK) + X-HTTP-Method-Override.", "example": "GET /admin -> POST /admin; X-HTTP-Method-Override: PUT"},
35
+ {"id": "header", "name": "Proxy header spoofing", "how": "Spoof a proxy-origin header to appear internal/localhost; each proxy honors a different one.", "example": "X-Originating-IP, X-Forwarded-For, X-Forwarded, Forwarded-For, X-Remote-IP, X-Remote-Addr, X-ProxyUser-Ip, Client-IP, True-Client-IP, Cluster-Client-IP, Host: localhost, X-Original-URL: /admin, X-Rewrite-URL: /admin"},
36
+ {"id": "path_normalize", "name": "Path normalization", "how": "Bypass path-based ACL with traversal, encoding, case, suffix, or separator tricks.", "example": "/%2e/admin, /%252e/admin, //admin//, /./admin/.., /;/admin, /.;/admin, /Admin, /admin/., /admin.json, /admin%ef%bc%8f"},
37
+ {"id": "api_version", "name": "API version confusion", "how": "Hit a legacy or different API version that lacks the authorization check.", "example": "/v3/users/1234 -> /v1/users/1234"},
38
+ {"id": "param", "name": "Parameter override / pollution", "how": "Override auth via a second param, or pollute a JSON field with a duplicate key.", "example": "user=guest&user=admin; {\"user_id\":\"legit\",\"user_id\":\"victim\"}; id=111 -> id=[111] -> id={\"id\":111}"},
39
+ {"id": "proto", "name": "Protocol / host confusion", "how": "Switch http<->https, drop the Host header, or contact the origin IP/CNAME directly.", "example": "https://host -> http://host; remove Host header; resolve CNAME to origin"}
39
40
  ]
40
41
  },
41
42
  {
@@ -0,0 +1,113 @@
1
+ {
2
+ "_comment": "OWASP WSTG -> Blitz Strike coverage map. Each WSTG category maps to the Blitz skill/phase/tools/data that covers it; 'advanced' lists the high-value tests where Blitz has a specific deterministic or doctrine capability (the moat).",
3
+ "categories": [
4
+ {
5
+ "wstg": "WSTG-INFO",
6
+ "name": "Information Gathering",
7
+ "phase": "recon",
8
+ "skill": "web-hunting (live) / source-audit (source)",
9
+ "tools": ["live_recon", "list_attack_vectors", "detect_framework", "blitz_scan"],
10
+ "data": ["attack_vectors", "port_correlations", "tech_correlations"],
11
+ "advanced": ["Fingerprint Web Server/App/Framework", "Attack Surface Identification", "Map Application Architecture"]
12
+ },
13
+ {
14
+ "wstg": "WSTG-CONF",
15
+ "name": "Configuration & Deployment Management",
16
+ "phase": "recon",
17
+ "skill": "web-hunting",
18
+ "tools": ["live_recon", "active_scan"],
19
+ "data": [],
20
+ "advanced": ["Subdomain Takeover", "Cloud Storage", "Path Confusion", "Old Backup & Unreferenced Files", "Content Security Policy"]
21
+ },
22
+ {
23
+ "wstg": "WSTG-IDNT",
24
+ "name": "Identity Management",
25
+ "phase": "analyze",
26
+ "skill": "web-hunting",
27
+ "tools": ["active_scan"],
28
+ "data": ["payloads"],
29
+ "advanced": ["Account Enumeration & Guessable User Account"]
30
+ },
31
+ {
32
+ "wstg": "WSTG-ATHN",
33
+ "name": "Authentication",
34
+ "phase": "analyze",
35
+ "skill": "web-hunting",
36
+ "tools": ["active_scan", "bypass_lookup"],
37
+ "data": ["bypass_techniques", "payloads"],
38
+ "advanced": ["Bypassing Authentication Schema", "Weak Password Change/Reset", "Multi-Factor Authentication"]
39
+ },
40
+ {
41
+ "wstg": "WSTG-ATHZ",
42
+ "name": "Authorization",
43
+ "phase": "analyze",
44
+ "skill": "web-hunting + ap-idor-exploitation",
45
+ "tools": ["active_scan", "browser_validate"],
46
+ "data": [],
47
+ "advanced": ["Insecure Direct Object References", "Privilege Escalation", "OAuth Weaknesses", "Directory Traversal / File Include"]
48
+ },
49
+ {
50
+ "wstg": "WSTG-SESS",
51
+ "name": "Session Management",
52
+ "phase": "analyze",
53
+ "skill": "web-hunting",
54
+ "tools": ["active_scan"],
55
+ "data": ["payloads"],
56
+ "advanced": ["JSON Web Tokens", "Session Fixation", "Session Puzzling", "Cross-Site Request Forgery"]
57
+ },
58
+ {
59
+ "wstg": "WSTG-INPV",
60
+ "name": "Input Validation / Injection",
61
+ "phase": "analyze + deep",
62
+ "skill": "source-audit (taint) + web-hunting (advanced)",
63
+ "tools": ["eagle_eye2", "taint_file", "complex_scan", "active_scan"],
64
+ "data": ["chains", "chain_links", "payloads", "bypass_techniques"],
65
+ "advanced": ["HTTP Request Smuggling", "Host Header Injection", "Server-Side Template Injection", "Server-Side Request Forgery", "Mass Assignment", "CSV Injection", "Prototype Pollution", "Insecure Deserialization", "SQL/LDAP/XPath/SSI/XML/Command/Code Injection", "HTTP Response Splitting"]
66
+ },
67
+ {
68
+ "wstg": "WSTG-ERRH",
69
+ "name": "Error Handling",
70
+ "phase": "analyze",
71
+ "skill": "web-hunting",
72
+ "tools": ["active_scan"],
73
+ "data": [],
74
+ "advanced": ["Improper Error Handling", "Stack Traces"]
75
+ },
76
+ {
77
+ "wstg": "WSTG-CRYP",
78
+ "name": "Cryptography",
79
+ "phase": "analyze",
80
+ "skill": "hp-tls-transport + ap-client-side-crypto-forgery",
81
+ "tools": ["active_scan"],
82
+ "data": [],
83
+ "advanced": ["Weak Transport Layer Security", "Padding Oracle", "Weak Cryptographic Primitives"]
84
+ },
85
+ {
86
+ "wstg": "WSTG-BUSL",
87
+ "name": "Business Logic",
88
+ "phase": "deep",
89
+ "skill": "hp-business-logic-fuzzing + complex_scan",
90
+ "tools": ["complex_scan", "route_scan"],
91
+ "data": ["chains", "chain_links"],
92
+ "advanced": ["Circumvention of Work Flows", "Process Timing (race conditions)", "Payment Functionality", "Number of Times a Function Can Be Used"]
93
+ },
94
+ {
95
+ "wstg": "WSTG-CLNT",
96
+ "name": "Client-side",
97
+ "phase": "deep",
98
+ "skill": "web-hunting + ap-stored-xss-admin-bot",
99
+ "tools": ["browser_validate", "active_scan"],
100
+ "data": ["payloads"],
101
+ "advanced": ["DOM-based XSS", "Cross-Origin Resource Sharing", "Clickjacking", "Browser Storage", "Reverse Tabnabbing", "Client-Side Template Injection", "Web Messaging"]
102
+ },
103
+ {
104
+ "wstg": "WSTG-APIT",
105
+ "name": "API Testing",
106
+ "phase": "analyze + deep",
107
+ "skill": "web-hunting + hp-api-security",
108
+ "tools": ["active_scan", "browser_validate"],
109
+ "data": [],
110
+ "advanced": ["Broken Object/Function Level Authorization", "Excessive Data Exposure", "GraphQL", "WebSockets"]
111
+ }
112
+ ]
113
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blitzstrike",
3
- "version": "1.0.98",
3
+ "version": "1.0.99",
4
4
  "description": "Blitz Strike — a universal MCP security-audit toolbelt. BLITZ sweeps the attack surface, EAGLE-EYE traces source-to-sink, STRIKE verifies live. 57 attack chains, 130-tool catalog, intelligence data layer. One server, every agent.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -61,6 +61,10 @@ the ones basic scanners miss. Hunt those.
61
61
  `127.0.0.1.nip.io`, DNS rebinding, `http://127.0.0.1:80@evil/`, double-URL-encode.
62
62
  - Scheme tricks: `gopher://`, `dict://`, `file://`, `http://` to internal ports.
63
63
  - Redirect bypass: an allow-listed host that 302s to an internal address.
64
+ - DNS-rebinding vs safe-url checks: a "safe" wrapper that resolves the hostname
65
+ once to validate and again to connect (e.g. `wp_safe_remote_*`) is rebinding-
66
+ bypassable — the name resolves to an allowed IP at check time and an internal
67
+ IP at request time.
64
68
  - The prize: cloud metadata (`169.254.169.254`), Redis/Postgres, internal admin.
65
69
  `ap-ssrf-cloud-metadata` skill has the metadata endpoints.
66
70