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 +14 -0
- package/THIRD-PARTY-NOTICES.md +8 -0
- package/dist/index.js +25 -0
- package/intelligence/bypass_techniques.json +6 -5
- package/intelligence/wstg_map.json +113 -0
- package/package.json +1 -1
- package/skills/bs-web-hunting.md +4 -0
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
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -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": "
|
|
35
|
-
{"id": "
|
|
36
|
-
{"id": "
|
|
37
|
-
{"id": "
|
|
38
|
-
{"id": "param", "name": "Parameter override", "how": "Override auth via a second
|
|
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.
|
|
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": {
|
package/skills/bs-web-hunting.md
CHANGED
|
@@ -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
|
|