blitzstrike 1.1.1 → 1.1.4
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 +38 -0
- package/THIRD-PARTY-NOTICES.md +21 -0
- package/dist/index.js +91 -1
- package/intelligence/api_top10.json +15 -0
- package/intelligence/asvs.json +19 -0
- package/intelligence/cwe_map.json +56 -0
- package/intelligence/doctrine_map.json +3 -1
- package/intelligence/owasp_top10.json +15 -0
- package/intelligence/resources.json +35 -0
- package/package.json +1 -1
- package/skills/bs-web-hunting.md +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,44 @@ 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.1.4] — 2026-09-13
|
|
9
|
+
|
|
10
|
+
### Added — OWASP Web Top 10 + ASVS (complete taxonomy)
|
|
11
|
+
|
|
12
|
+
- `taxonomy` tool now serves four standards: OWASP Top 10 2021 (web), OWASP API
|
|
13
|
+
Security Top 10 2023 (api), CWE mapping (cwe), and ASVS verification chapters
|
|
14
|
+
(asvs) — each mapped to Blitz Strike coverage.
|
|
15
|
+
- New `intelligence/owasp_top10.json` (A01–A10) + `intelligence/asvs.json`
|
|
16
|
+
(V1–V14).
|
|
17
|
+
- doctrine_map cross_cutting + RESOURCE MAP + `bs-web-hunting` now reach
|
|
18
|
+
`taxonomy` and `resource_lookup` for full no-babysitting interconnection.
|
|
19
|
+
- THIRD-PARTY-NOTICES: OWASP Top 10 + ASVS (CC BY-SA 4.0).
|
|
20
|
+
|
|
21
|
+
## [1.1.3] — 2026-09-13
|
|
22
|
+
|
|
23
|
+
### Added — standard taxonomy (OWASP API Top 10 + CWE)
|
|
24
|
+
|
|
25
|
+
- New `taxonomy` MCP tool + `intelligence/api_top10.json` + `cwe_map.json`:
|
|
26
|
+
- `taxonomy(api)` → OWASP API Security Top 10 (2023) risks mapped to Blitz
|
|
27
|
+
coverage (BOLA, broken auth, BOPLA, resource consumption, BFLA, business
|
|
28
|
+
flows, SSRF, misconfiguration, inventory, unsafe consumption).
|
|
29
|
+
- `taxonomy(cwe, query)` → CWE ID + name for any technique class (52 mapped),
|
|
30
|
+
for grounding findings in standard IDs during reporting.
|
|
31
|
+
- THIRD-PARTY-NOTICES: OWASP API Security (CC BY-SA 4.0) + MITRE CWE.
|
|
32
|
+
|
|
33
|
+
## [1.1.2] — 2026-09-13
|
|
34
|
+
|
|
35
|
+
### Added — curated security resource index
|
|
36
|
+
|
|
37
|
+
- New `resource_lookup` MCP tool + `intelligence/resources.json`: 30 curated
|
|
38
|
+
domain-specific security resources (from the community Awesome-Hacking
|
|
39
|
+
meta-list, filtered to web/pentest relevance) — each tagged with use_when
|
|
40
|
+
(which phase/context it serves). Search by category (web, pentest, bug_bounty,
|
|
41
|
+
api, recon, payload, cve, privesc, source, fuzzing, llm, framework, osint,
|
|
42
|
+
rev, cracking, forensics, malware, ir, intel, cicd, knowledge, labs) or
|
|
43
|
+
keyword. Lets the LLM find the best domain-specific tools/knowledge when
|
|
44
|
+
Blitz Strike's own data doesn't cover a domain.
|
|
45
|
+
|
|
8
46
|
## [1.1.1] — 2026-09-13
|
|
9
47
|
|
|
10
48
|
### Added — HackTricks full enrichment (52 classes + 16 frameworks)
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -56,6 +56,27 @@ satisfies the attribution requirements of those licenses.
|
|
|
56
56
|
(category identifiers WSTG-INFO/CONF/IDNT/ATHN/ATHZ/SESS/INPV/ERRH/CRYP/
|
|
57
57
|
BUSL/CLNT/APIT and their test names).
|
|
58
58
|
|
|
59
|
+
## OWASP API Security Top 10
|
|
60
|
+
|
|
61
|
+
- **Source:** https://github.com/OWASP/API-Security
|
|
62
|
+
- **License:** CC BY-SA 4.0
|
|
63
|
+
- **Used for:** the 2023 risk taxonomy in `intelligence/api_top10.json`
|
|
64
|
+
(API1–API10 identifiers and risk names).
|
|
65
|
+
|
|
66
|
+
## OWASP Top 10 + ASVS
|
|
67
|
+
|
|
68
|
+
- **Sources:** https://github.com/OWASP/Top10 · https://github.com/OWASP/ASVS
|
|
69
|
+
- **License:** CC BY-SA 4.0
|
|
70
|
+
- **Used for:** the 2021 web risk taxonomy in `intelligence/owasp_top10.json`
|
|
71
|
+
(A01–A10 identifiers) and the ASVS verification-area names in
|
|
72
|
+
`intelligence/asvs.json` (V1–V14).
|
|
73
|
+
|
|
74
|
+
## MITRE CWE (Common Weakness Enumeration)
|
|
75
|
+
|
|
76
|
+
- **Source:** https://cwe.mitre.org
|
|
77
|
+
- **Used for:** standard weakness identifiers + names in `intelligence/cwe_map.json`
|
|
78
|
+
(CWE IDs are MITRE's taxonomy; the technique→CWE mapping is our own).
|
|
79
|
+
|
|
59
80
|
---
|
|
60
81
|
|
|
61
82
|
All other code, chains, and data in this project are written by shinthink
|
package/dist/index.js
CHANGED
|
@@ -31795,6 +31795,77 @@ function frameworkTricks(framework) {
|
|
|
31795
31795
|
return { found: true, ...f };
|
|
31796
31796
|
return { found: false, framework, suggestions: data.frameworks.map((x) => String(x.framework)) };
|
|
31797
31797
|
}
|
|
31798
|
+
function resourceLookup(category) {
|
|
31799
|
+
const data = loadJson("resources");
|
|
31800
|
+
if (!data)
|
|
31801
|
+
return { found: false, error: "resources.json not found" };
|
|
31802
|
+
if (!category) {
|
|
31803
|
+
return {
|
|
31804
|
+
found: true,
|
|
31805
|
+
resources: data.resources.map((r) => ({ id: r.id, name: r.name, category: r.category, use_when: r.use_when }))
|
|
31806
|
+
};
|
|
31807
|
+
}
|
|
31808
|
+
const q = category.toLowerCase();
|
|
31809
|
+
const matches = data.resources.filter((r) => String(r.category).toLowerCase() === q || String(r.id).toLowerCase().includes(q) || String(r.name).toLowerCase().includes(q) || String(r.use_when).toLowerCase().includes(q));
|
|
31810
|
+
if (matches.length > 0)
|
|
31811
|
+
return { found: true, matches };
|
|
31812
|
+
return { found: false, category, suggestions: [...new Set(data.resources.map((r) => String(r.category)))] };
|
|
31813
|
+
}
|
|
31814
|
+
function taxonomy(kind, query) {
|
|
31815
|
+
if (kind === "api" || kind === "api_top10" || kind === "owasp-api") {
|
|
31816
|
+
const data = loadJson("api_top10");
|
|
31817
|
+
if (!data)
|
|
31818
|
+
return { found: false, error: "api_top10.json not found" };
|
|
31819
|
+
if (!query)
|
|
31820
|
+
return { found: true, risks: data.risks };
|
|
31821
|
+
const q = query.toLowerCase();
|
|
31822
|
+
const r = data.risks.find((x) => String(x.id).toLowerCase() === q || String(x.name).toLowerCase().includes(q));
|
|
31823
|
+
if (r)
|
|
31824
|
+
return { found: true, ...r };
|
|
31825
|
+
return { found: false, query, suggestions: data.risks.map((x) => String(x.id)) };
|
|
31826
|
+
}
|
|
31827
|
+
if (kind === "cwe" || kind === "weakness") {
|
|
31828
|
+
const data = loadJson("cwe_map");
|
|
31829
|
+
if (!data)
|
|
31830
|
+
return { found: false, error: "cwe_map.json not found" };
|
|
31831
|
+
if (!query)
|
|
31832
|
+
return { found: true, mapping: data.mapping };
|
|
31833
|
+
const q = query.toLowerCase();
|
|
31834
|
+
const m = data.mapping.filter((x) => String(x.id).toLowerCase().includes(q) || String(x.cwe).toLowerCase() === q || String(x.name).toLowerCase().includes(q));
|
|
31835
|
+
if (m.length > 0)
|
|
31836
|
+
return { found: true, matches: m };
|
|
31837
|
+
return { found: false, query, suggestions: data.mapping.map((x) => String(x.id)) };
|
|
31838
|
+
}
|
|
31839
|
+
if (kind === "web" || kind === "owasp" || kind === "top10" || kind === "web_top10") {
|
|
31840
|
+
const data = loadJson("owasp_top10");
|
|
31841
|
+
if (!data)
|
|
31842
|
+
return { found: false, error: "owasp_top10.json not found" };
|
|
31843
|
+
if (!query)
|
|
31844
|
+
return { found: true, risks: data.risks };
|
|
31845
|
+
const q = query.toLowerCase();
|
|
31846
|
+
const r = data.risks.find((x) => String(x.id).toLowerCase() === q || String(x.name).toLowerCase().includes(q));
|
|
31847
|
+
if (r)
|
|
31848
|
+
return { found: true, ...r };
|
|
31849
|
+
return { found: false, query, suggestions: data.risks.map((x) => String(x.id)) };
|
|
31850
|
+
}
|
|
31851
|
+
if (kind === "asvs" || kind === "verification") {
|
|
31852
|
+
const data = loadJson("asvs");
|
|
31853
|
+
if (!data)
|
|
31854
|
+
return { found: false, error: "asvs.json not found" };
|
|
31855
|
+
if (!query)
|
|
31856
|
+
return { found: true, chapters: data.chapters };
|
|
31857
|
+
const q = query.toLowerCase();
|
|
31858
|
+
const c = data.chapters.find((x) => String(x.id).toLowerCase() === q || String(x.name).toLowerCase().includes(q));
|
|
31859
|
+
if (c)
|
|
31860
|
+
return { found: true, ...c };
|
|
31861
|
+
return { found: false, query, suggestions: data.chapters.map((x) => String(x.id)) };
|
|
31862
|
+
}
|
|
31863
|
+
return {
|
|
31864
|
+
found: false,
|
|
31865
|
+
error: "unknown taxonomy kind",
|
|
31866
|
+
usage: "taxonomy(kind='web'|'api'|'cwe'|'asvs', query?)"
|
|
31867
|
+
};
|
|
31868
|
+
}
|
|
31798
31869
|
|
|
31799
31870
|
// src/active.ts
|
|
31800
31871
|
var TIMEOUT_MS2 = 20000;
|
|
@@ -53741,7 +53812,7 @@ function createServer() {
|
|
|
53741
53812
|
name: "blitzstrike",
|
|
53742
53813
|
version: "1.0.0"
|
|
53743
53814
|
}, {
|
|
53744
|
-
instructions: "Blitz Strike is a universal penetration-testing toolbelt with three tiers — " + "BLITZ (reconnaissance / attack-surface mapping), EAGLE-EYE (source-to-sink " + "analysis), STRIKE (live validation) — plus a canonical evidence-first finding " + "engine and a multi-language taint engine.\\n\\n" + "CORE MENTAL MODEL:\\n" + "- A scanner hit is a HYPOTHESIS, not a finding. Live verification (or data-flow " + " proof) is the verdict. Never report an unverified hit as a vulnerability.\\n" + "- Distinguish REACHABLE from mere PRESENT: a sink is only a finding when tainted " + " input reaches it AND it is not neutralized by a sanitizer and not guarded by an " + " auth gate.\\n\\n" + "HOW TO RUN AN AUDIT (start here):\\n" + "0. ROUTE BY TARGET. Classify automatically - no need to ask. A URL - with or " + " without http/https - is LIVE (live_recon + the " + " web-hunting doctrine + strike_verify). A filesystem path (exists on disk, " + " or a code extension) is SOURCE audit (source-audit doctrine: blitz_scan + " + " eagle_eye2 + complex_scan/route_scan). TWO DOCTRINES - never mix: live " + " web/API -> web-hunting skill; source tree -> source-audit skill.\\n" + "1. RECORD SCOPE. scope_check classifies the target (intel for the report) - " + " it does NOT gate the engagement. No authorization gate: the repo disclaimer " + " places responsibility on the user. Hunt the target you are given.\\n" + "2. MAP THE SURFACE (BLITZ). For a source tree use blitz_scan (tree) or blitz_file " + " (single file) then enrich_scan to match sinks to escalation chains. For a live " + " URL use live_recon for a full pass (fingerprint/WAF/tech/version/crawler/params/" + " subdomains/API endpoints/intel correlation) — it returns next_steps. active_scan " + " is the lighter alternative. Both record scope internally.\\n" + "3. TRACE REACHABILITY (EAGLE-EYE). For every sink, determine whether attacker " + " input actually reaches it:\\n" + " - PHP/JS/TS/Python/Java source: taint_file (auto-detects language) or " + " taint_scan/taint_tree (PHP AST). list_languages shows what's supported.\\n" + " - Any language: trace_data_flow (window heuristic) and eagle_eye/eagle_grep " + " (function-scoped view of sinks + auth gates). Beyond taint: route_scan (route confusion / dispatch abuse / batch forwarding) and complex_scan (deserialization->POP, type juggling, mass assignment, prototype pollution, CRLF/header injection, path confusion) catch classes plain taint misses.\\n" + " A sink counts only if tainted input reaches it unsanitized and unguarded.\\n" + "4. VALIDATE (STRIKE). Confirm live with strike_verify using a MARKER plus a " + " NEGATIVE CONTROL plus a BASELINE. The verdict is deterministic: marker " + " reflected AND control inert = confirmed; both reflected = false_positive; " + " marker not reflected = unconfirmed. Feed the verdict to strike_resolve to " + " advance the finding lifecycle (hypothesis->validating->confirmed). Use " + " read_tool_manual for the exploit tool's manual, payload_lookup for payloads, " + " detect_waf/tech_correlation for context.\\n" + "5. RECORD + REPORT. Create a canonical finding with finding_create, advance it " + " through the lifecycle with finding_transition, attach confidence_score, and " + " redact any secrets before persisting. Only report findings that survived " + " verification.\\n\\n" + "SUPPORTING LAYERS:\\n" + "- run_engagement: ONE call does the whole audit (no babysitting). Source path -> " + " full static pipeline + inline report (markdown/JSON/SARIF). URL target -> " + " autonomous live marker sweep + confirmed findings + report. Prefer this first.\\n" + "- list_chains: 57 escalation chains (source -> sink -> impact).\\n" + "- list_languages / taint_file: multi-language taint (PHP, JS/TS, Python, Java).\\n" + "- tool_lookup / ensure_tool / list_tools: 130-tool catalog, auto-install.\\n" + "- read_playbook / list_playbooks: 17 engagement playbooks (web-app, api-security, " + " source-code-audit, active-directory, mobile, external-attack-surface, ...).\\n" + "- skill_lookup / read_skill / list_skills: 39 skills (7 bs-* agent doctrine: " + " orchestrate, scope, source-audit, web-hunting, verify, review, report; + " + " technique playbooks: WP/PHP 0-day, AD, malware, mobile, cloud).\\n" + "- read_tool_manual / list_manuals: 317 tool manuals (sqlmap, nmap, commix, ...).\\n" + "- payload_lookup / read_payload: 66 payload collections (sqli, xss, ssti, xxe, lfi).\\n" + "- detect_waf / tech_correlation / cve_correlation / port_correlation: signature " + " + correlation intelligence.\\n" + "- nvd_lookup / fofa_search: CVE lookup + asset reconnaissance (FOFA needs env creds).\\n" + "- remember / memory_lookup / memory_list: persist + recall verified knowledge.\\n\\n" + "RESOURCE MAP (know what to reach for):\\n" + "- ORCHESTRATION = the engagement framework. orchestration() returns the " + " lifecycle (scope->recon->analyze->deep->verify->report, each with " + " entry/exit criteria) + sub-agent team + handoff contract + termination " + " criteria. Load it at engagement start.\\n" + "- TOOL = acts (scan, taint, verify, record, correlate). Call it to DO something.\\n" + "- PLAYBOOK = campaign plan for a target TYPE. read_playbook(web-application) " + " BEFORE a full engagement of that type.\\n" + "- SKILL = procedure doctrine. Load the bs-* skill for the phase you are on " + " (orchestrate, scope, web-hunting for LIVE, source-audit for SOURCE, verify, " + " review, report); load a technique skill for the specific technique.\\n" + "- MANUAL = deep reference for ONE tool. read_tool_manual right before using it.\\n" + "- CATALOG = external tools (130: sqlmap, nmap, nuclei, ffuf, ysoserial, ...). " + " Blitz Strike's OWN tools find + verify; the catalog is for deeper EXTERNAL " + " exploitation/enumeration. After your own analysis confirms a finding, run " + " tool_lookup -> ensure_tool (auto-install) -> read_tool_manual to drive the " + " external tool that demonstrates impact.\\n" + "- PAYLOAD = attack payloads for a class. payload_lookup before crafting a probe.\\n" + "- INTELLIGENCE = knowledge. list_attack_vectors (34 categories) maps the " + " full surface during RECON; list_chains (57) turns a finding into impact; " + " chain_links composes chains for complex bugs; bypass_lookup when blocked; " + " payload_lookup when crafting a probe. technique_lookup(cls) returns the " + " DETAILED methodology + tricks for a vulnerability class (ssrf, ssti, " + " jwt, deserialization, ...) - load before testing a class. wstg_map maps " + " an OWASP category to coverage; doctrine_map shows how everything links.\\n\\n" + "NO-BABYSITTING (while scanning + testing):\\n" + "- Scan the WHOLE surface before reporting - every file, entry point, and sink. " + " Do not stop after the first hit to ask; keep enumerating the full tree.\\n" + "- Test every hypothesis through its full verification cycle - vary probes on " + " failure, apply bypasses when blocked, keep going. Do not pause to ask.\\n" + "- Persist through partial results: a scan that surfaces few sinks is NOT done - " + " widen the surface, escalate detectors, dig into each reachable sink.\\n" + "- Only surface to the user when: the target is genuinely ambiguous, a " + " destructive or DoS action needs explicit consent, or the engagement is complete.\\n\\n" + "PERSISTENCE (complex bugs - do not give up):\\n" + "- On any failure (empty output, blocked probe, failed sub-agent/model), call " + " retry_guidance(signal) for concrete recovery actions before giving up.\\n" + "- On a model/sub-agent error (rate-limit, quota, timeout, 5xx, auth, " + " unavailable), model_fallback(signal) classifies it and returns the exact " + " recovery (retry+backoff / fall back / shrink scope / fix credentials / " + " abort). Do not fall back blindly - the class decides.\\n" + "- One failed probe != not vulnerable. Vary: alternative sinks, other params, " + " encoding/case/whitespace bypasses, different injection context.\\n" + "- Empty output != no findings. Re-run (server may be stale after an upgrade - " + " /reload-mcp), or escalate to route_scan / complex_scan for classes taint " + " misses (POP chains, type juggling, mass assignment, route confusion).\\n" + "- A 'sanitized' sink may not be safe. Challenge the sanitizer: loose == vs ===, " + " missing EXTR_SKIP, int cast truncation, weak regex.\\n" + "- An unconfirmed hypothesis is KEPT as hypothesis - try alternate verification, " + " then let adversarial review decide.\\n" + "- Complex chains (deserialization->POP, LFI->RCE) need the FULL chain traced, " + ` not just the first sink.\\n
|
|
53815
|
+
instructions: "Blitz Strike is a universal penetration-testing toolbelt with three tiers — " + "BLITZ (reconnaissance / attack-surface mapping), EAGLE-EYE (source-to-sink " + "analysis), STRIKE (live validation) — plus a canonical evidence-first finding " + "engine and a multi-language taint engine.\\n\\n" + "CORE MENTAL MODEL:\\n" + "- A scanner hit is a HYPOTHESIS, not a finding. Live verification (or data-flow " + " proof) is the verdict. Never report an unverified hit as a vulnerability.\\n" + "- Distinguish REACHABLE from mere PRESENT: a sink is only a finding when tainted " + " input reaches it AND it is not neutralized by a sanitizer and not guarded by an " + " auth gate.\\n\\n" + "HOW TO RUN AN AUDIT (start here):\\n" + "0. ROUTE BY TARGET. Classify automatically - no need to ask. A URL - with or " + " without http/https - is LIVE (live_recon + the " + " web-hunting doctrine + strike_verify). A filesystem path (exists on disk, " + " or a code extension) is SOURCE audit (source-audit doctrine: blitz_scan + " + " eagle_eye2 + complex_scan/route_scan). TWO DOCTRINES - never mix: live " + " web/API -> web-hunting skill; source tree -> source-audit skill.\\n" + "1. RECORD SCOPE. scope_check classifies the target (intel for the report) - " + " it does NOT gate the engagement. No authorization gate: the repo disclaimer " + " places responsibility on the user. Hunt the target you are given.\\n" + "2. MAP THE SURFACE (BLITZ). For a source tree use blitz_scan (tree) or blitz_file " + " (single file) then enrich_scan to match sinks to escalation chains. For a live " + " URL use live_recon for a full pass (fingerprint/WAF/tech/version/crawler/params/" + " subdomains/API endpoints/intel correlation) — it returns next_steps. active_scan " + " is the lighter alternative. Both record scope internally.\\n" + "3. TRACE REACHABILITY (EAGLE-EYE). For every sink, determine whether attacker " + " input actually reaches it:\\n" + " - PHP/JS/TS/Python/Java source: taint_file (auto-detects language) or " + " taint_scan/taint_tree (PHP AST). list_languages shows what's supported.\\n" + " - Any language: trace_data_flow (window heuristic) and eagle_eye/eagle_grep " + " (function-scoped view of sinks + auth gates). Beyond taint: route_scan (route confusion / dispatch abuse / batch forwarding) and complex_scan (deserialization->POP, type juggling, mass assignment, prototype pollution, CRLF/header injection, path confusion) catch classes plain taint misses.\\n" + " A sink counts only if tainted input reaches it unsanitized and unguarded.\\n" + "4. VALIDATE (STRIKE). Confirm live with strike_verify using a MARKER plus a " + " NEGATIVE CONTROL plus a BASELINE. The verdict is deterministic: marker " + " reflected AND control inert = confirmed; both reflected = false_positive; " + " marker not reflected = unconfirmed. Feed the verdict to strike_resolve to " + " advance the finding lifecycle (hypothesis->validating->confirmed). Use " + " read_tool_manual for the exploit tool's manual, payload_lookup for payloads, " + " detect_waf/tech_correlation for context.\\n" + "5. RECORD + REPORT. Create a canonical finding with finding_create, advance it " + " through the lifecycle with finding_transition, attach confidence_score, and " + " redact any secrets before persisting. Only report findings that survived " + " verification.\\n\\n" + "SUPPORTING LAYERS:\\n" + "- run_engagement: ONE call does the whole audit (no babysitting). Source path -> " + " full static pipeline + inline report (markdown/JSON/SARIF). URL target -> " + " autonomous live marker sweep + confirmed findings + report. Prefer this first.\\n" + "- list_chains: 57 escalation chains (source -> sink -> impact).\\n" + "- list_languages / taint_file: multi-language taint (PHP, JS/TS, Python, Java).\\n" + "- tool_lookup / ensure_tool / list_tools: 130-tool catalog, auto-install.\\n" + "- read_playbook / list_playbooks: 17 engagement playbooks (web-app, api-security, " + " source-code-audit, active-directory, mobile, external-attack-surface, ...).\\n" + "- skill_lookup / read_skill / list_skills: 39 skills (7 bs-* agent doctrine: " + " orchestrate, scope, source-audit, web-hunting, verify, review, report; + " + " technique playbooks: WP/PHP 0-day, AD, malware, mobile, cloud).\\n" + "- read_tool_manual / list_manuals: 317 tool manuals (sqlmap, nmap, commix, ...).\\n" + "- payload_lookup / read_payload: 66 payload collections (sqli, xss, ssti, xxe, lfi).\\n" + "- detect_waf / tech_correlation / cve_correlation / port_correlation: signature " + " + correlation intelligence.\\n" + "- nvd_lookup / fofa_search: CVE lookup + asset reconnaissance (FOFA needs env creds).\\n" + "- remember / memory_lookup / memory_list: persist + recall verified knowledge.\\n\\n" + "RESOURCE MAP (know what to reach for):\\n" + "- ORCHESTRATION = the engagement framework. orchestration() returns the " + " lifecycle (scope->recon->analyze->deep->verify->report, each with " + " entry/exit criteria) + sub-agent team + handoff contract + termination " + " criteria. Load it at engagement start.\\n" + "- TOOL = acts (scan, taint, verify, record, correlate). Call it to DO something.\\n" + "- PLAYBOOK = campaign plan for a target TYPE. read_playbook(web-application) " + " BEFORE a full engagement of that type.\\n" + "- SKILL = procedure doctrine. Load the bs-* skill for the phase you are on " + " (orchestrate, scope, web-hunting for LIVE, source-audit for SOURCE, verify, " + " review, report); load a technique skill for the specific technique.\\n" + "- MANUAL = deep reference for ONE tool. read_tool_manual right before using it.\\n" + "- CATALOG = external tools (130: sqlmap, nmap, nuclei, ffuf, ysoserial, ...). " + " Blitz Strike's OWN tools find + verify; the catalog is for deeper EXTERNAL " + " exploitation/enumeration. After your own analysis confirms a finding, run " + " tool_lookup -> ensure_tool (auto-install) -> read_tool_manual to drive the " + " external tool that demonstrates impact.\\n" + "- PAYLOAD = attack payloads for a class. payload_lookup before crafting a probe.\\n" + "- INTELLIGENCE = knowledge. list_attack_vectors (34 categories) maps the " + " full surface during RECON; list_chains (57) turns a finding into impact; " + " chain_links composes chains for complex bugs; bypass_lookup when blocked; " + " payload_lookup when crafting a probe. technique_lookup(cls) returns the " + " DETAILED methodology + tricks for a vulnerability class (ssrf, ssti, " + " jwt, deserialization, ...) - load before testing a class. wstg_map maps " + " an OWASP category to coverage; taxonomy maps findings to standard IDs " + " (OWASP Top 10 / API Top 10 / CWE / ASVS); doctrine_map shows how everything links.\\n\\n" + "NO-BABYSITTING (while scanning + testing):\\n" + "- Scan the WHOLE surface before reporting - every file, entry point, and sink. " + " Do not stop after the first hit to ask; keep enumerating the full tree.\\n" + "- Test every hypothesis through its full verification cycle - vary probes on " + " failure, apply bypasses when blocked, keep going. Do not pause to ask.\\n" + "- Persist through partial results: a scan that surfaces few sinks is NOT done - " + " widen the surface, escalate detectors, dig into each reachable sink.\\n" + "- Only surface to the user when: the target is genuinely ambiguous, a " + " destructive or DoS action needs explicit consent, or the engagement is complete.\\n\\n" + "PERSISTENCE (complex bugs - do not give up):\\n" + "- On any failure (empty output, blocked probe, failed sub-agent/model), call " + " retry_guidance(signal) for concrete recovery actions before giving up.\\n" + "- On a model/sub-agent error (rate-limit, quota, timeout, 5xx, auth, " + " unavailable), model_fallback(signal) classifies it and returns the exact " + " recovery (retry+backoff / fall back / shrink scope / fix credentials / " + " abort). Do not fall back blindly - the class decides.\\n" + "- One failed probe != not vulnerable. Vary: alternative sinks, other params, " + " encoding/case/whitespace bypasses, different injection context.\\n" + "- Empty output != no findings. Re-run (server may be stale after an upgrade - " + " /reload-mcp), or escalate to route_scan / complex_scan for classes taint " + " misses (POP chains, type juggling, mass assignment, route confusion).\\n" + "- A 'sanitized' sink may not be safe. Challenge the sanitizer: loose == vs ===, " + " missing EXTR_SKIP, int cast truncation, weak regex.\\n" + "- An unconfirmed hypothesis is KEPT as hypothesis - try alternate verification, " + " then let adversarial review decide.\\n" + "- Complex chains (deserialization->POP, LFI->RCE) need the FULL chain traced, " + ` not just the first sink.\\n
|
|
53745
53816
|
` + "- When a probe is BLOCKED by a WAF/filter/sanitizer, call bypass_lookup(defense) " + " for concrete techniques (encoding, case, comment insertion, chunked, null byte, " + " double-encoding, verb tampering, header spoofing) and apply them - do not give up.\\n" + "- CHAIN findings: a low-severity finding may escalate — do not assume it is the " + " end of the story. list_chains / chain_links show whether it composes into a " + " multi-stage chain (e.g. SSRF->metadata, SQLi->RCE, LFI->RCE, upload->shell). " + " Check before concluding, and do not overclaim an escalation that is not there.\\n\\n" + "- Complex bugs chain ACROSS chains: after confirming one chain, chain_links " + " shows what follows (SSRF->metadata then default-creds->pivot via stolen IAM). " + " Trace the full composition, not just a single chain.\\n\\n" + "HYPOTHESIS EXPANSION (from each finding, enumerate + verify every follow-up):\\n" + "- A confirmed finding is the START, not the end. From each one, enumerate " + " the follow-ups: ESCALATE (list_chains + chain_links), CHAIN (chain_links " + " from->to), BYPASS (bypass_lookup), PIVOT (new endpoints/sinks now reachable).\\n" + "- Every follow-up (this might happen, this could chain, maybe bypassable) is " + " a HYPOTHESIS, not a finding. Verify EACH via strike_verify (marker + negative " + " control) before it enters the report.\\n" + "- Never report speculation: might / could / possibly live in the " + " hypothesis list, never in the report. Every report line is a verified fact.\\n\\n" + "PROFESSIONAL JUDGMENT (act like a senior tester, not a checklist runner):\\n" + "- PRIORITIZE by severity, computed deterministically with cvss_score (impact x " + " exploitability) and weighted by escalation potential (chain_links). Do NOT rank " + " by bug class - a critical stored XSS that yields account takeover outranks an " + " unreachable blind RCE. Weight by the engagement context (which asset/data is " + " most sensitive for THIS target).\\n" + "- Recognize dead ends: if a branch yields nothing after a few varied probes, " + " note it and move on. Do not tunnel-vision one sink at the expense of the rest.\\n" + "- Live-test with care: respect rate limits, do not lock accounts, do not " + " trigger DoS. Test non-destructively and prove impact with the smallest payload.\\n" + "- Know when done: stop when the termination criteria are met, not when you feel " + " tired. A thorough audit over a rushed one, every time.\\n\\n" + "IRON RULES:\\n" + "- No authorization gate - the repo disclaimer places responsibility on the " + " user. Hunt the target you are given (like nmap/sqlmap/Burp, which do not " + " ask). The one hard stop: malicious/third-party infra (cari pelaku) - hold/static.\\n" + " need finer control."
|
|
53746
53817
|
});
|
|
53747
53818
|
server.registerTool("blitz_scan", {
|
|
@@ -54306,6 +54377,25 @@ ${statusLine}` : statusLine },
|
|
|
54306
54377
|
}, async ({ framework }) => {
|
|
54307
54378
|
return { content: [{ type: "text", text: JSON.stringify(frameworkTricks(framework)) }] };
|
|
54308
54379
|
});
|
|
54380
|
+
server.registerTool("resource_lookup", {
|
|
54381
|
+
title: "Curated security resource index",
|
|
54382
|
+
description: "INTEL: return curated domain-specific security resources (the community Awesome-Hacking index, filtered to web/pentest relevance) — each with name, URL, description, and use_when (which phase/context it serves). Search by category (web, pentest, bug_bounty, api, recon, payload, cve, privesc, source, fuzzing, llm, framework, osint, rev, cracking, forensics, malware, ir, intel, cicd, knowledge, labs) or keyword. Use to find the best domain-specific tools/knowledge when Blitz Strike's own data doesn't cover it.",
|
|
54383
|
+
inputSchema: {
|
|
54384
|
+
category: string2().optional().describe("Optional category id or keyword (e.g. 'web', 'payload', 'recon', 'privesc').")
|
|
54385
|
+
}
|
|
54386
|
+
}, async ({ category }) => {
|
|
54387
|
+
return { content: [{ type: "text", text: JSON.stringify(resourceLookup(category)) }] };
|
|
54388
|
+
});
|
|
54389
|
+
server.registerTool("taxonomy", {
|
|
54390
|
+
title: "OWASP Top 10 / API Top 10 / CWE / ASVS taxonomy",
|
|
54391
|
+
description: "INTEL: return standard taxonomy for grounding + professional reporting. taxonomy(web) = OWASP Top 10 (2021); taxonomy(api) = OWASP API Security Top 10 (2023); taxonomy(cwe, query) = CWE ID for a technique class; taxonomy(asvs) = ASVS verification chapters. Each maps to Blitz Strike coverage. Use to map findings to standard IDs (A01, API1, CWE-79, V4, ...).",
|
|
54392
|
+
inputSchema: {
|
|
54393
|
+
kind: string2().optional().describe("'web' (OWASP Top 10), 'api' (API Top 10), 'cwe' (CWE mapping), or 'asvs' (ASVS chapters)."),
|
|
54394
|
+
query: string2().optional().describe("Optional query: a technique class id (for cwe) or a risk/chapter id (for web/api/asvs).")
|
|
54395
|
+
}
|
|
54396
|
+
}, async ({ kind, query }) => {
|
|
54397
|
+
return { content: [{ type: "text", text: JSON.stringify(taxonomy(kind, query)) }] };
|
|
54398
|
+
});
|
|
54309
54399
|
server.registerTool("engagement_start", {
|
|
54310
54400
|
title: "Start an engagement",
|
|
54311
54401
|
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.",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "OWASP API Security Top 10 (2023) mapped to Blitz Strike coverage. Each risk has its id, name, and the Blitz technique/tool that hunts it.",
|
|
3
|
+
"risks": [
|
|
4
|
+
{"id": "API1", "name": "Broken Object Level Authorization (BOLA)", "cwe": ["CWE-639"], "desc": "Accessing another user's object by tampering the object id without an authorization check.", "blitz": "technique_lookup(idor) + active_scan", "data": []},
|
|
5
|
+
{"id": "API2", "name": "Broken Authentication", "cwe": ["CWE-287", "CWE-384"], "desc": "Weak or bypassable authentication (JWT, OAuth, token, credential flaws).", "blitz": "technique_lookup(jwt) + technique_lookup(oauth) + bypass_lookup(auth)", "data": []},
|
|
6
|
+
{"id": "API3", "name": "Broken Object Property Level Authorization (BOPLA)", "cwe": ["CWE-915", "CWE-639"], "desc": "Mass assignment / excessive data exposure of object properties.", "blitz": "technique_lookup(mass_assignment) + complex_scan", "data": []},
|
|
7
|
+
{"id": "API4", "name": "Unrestricted Resource Consumption", "cwe": ["CWE-400", "CWE-770"], "desc": "DoS via missing rate limits, deep recursion, or resource exhaustion.", "blitz": "technique_lookup(rate_limit_bypass) + technique_lookup(race_condition)", "data": []},
|
|
8
|
+
{"id": "API5", "name": "Broken Function Level Authorization (BFLA)", "cwe": ["CWE-862", "CWE-285"], "desc": "Invoking admin-only functions without the right role.", "blitz": "technique_lookup(idor) + route_scan", "data": []},
|
|
9
|
+
{"id": "API6", "name": "Unrestricted Access to Sensitive Business Flows", "cwe": ["CWE-841"], "desc": "Abusing a legitimate business flow (purchase, redeem) without authorization.", "blitz": "technique_lookup(bypass_payment) + hp-business-logic-fuzzing", "data": []},
|
|
10
|
+
{"id": "API7", "name": "Server Side Request Forgery", "cwe": ["CWE-918"], "desc": "The API fetches an attacker-influenced URL to reach internal services.", "blitz": "technique_lookup(ssrf) + ap-ssrf-cloud-metadata", "data": ["chains"]},
|
|
11
|
+
{"id": "API8", "name": "Security Misconfiguration", "cwe": ["CWE-16"], "desc": "Verbose errors, exposed debug/admin endpoints, missing headers, CORS misconfig.", "blitz": "technique_lookup(cors) + live_recon + web-hunting (exposed config)", "data": []},
|
|
12
|
+
{"id": "API9", "name": "Improper Inventory Management", "cwe": ["CWE-1057"], "desc": "Orphaned/legacy API versions or endpoints left undocumented and unprotected.", "blitz": "live_recon (versioned APIs) + web-hunting (recon)", "data": []},
|
|
13
|
+
{"id": "API10", "name": "Unsafe Consumption of APIs", "cwe": ["CWE-20", "CWE-502"], "desc": "Trusting third-party API responses that are then processed unsafely.", "blitz": "technique_lookup(deserialization) + technique_lookup(command_injection)", "data": []}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "OWASP ASVS (Application Security Verification Standard) — the 14 verification areas, condensed. Each maps to what Blitz Strike verifies for it.",
|
|
3
|
+
"chapters": [
|
|
4
|
+
{"id": "V1", "name": "Architecture, Design and Threat Modeling", "focus": "Design + threat model", "blitz": "blitz_scan (attack surface) + list_attack_vectors"},
|
|
5
|
+
{"id": "V2", "name": "Authentication", "focus": "Password, MFA, credential, OAuth/JWT", "blitz": "technique_lookup(jwt|oauth|two_fa_bypass|account_takeover)"},
|
|
6
|
+
{"id": "V3", "name": "Session Management", "focus": "Session tokens, cookies, logout, fixation", "blitz": "technique_lookup(cookie_hacking) + hp-auth-session"},
|
|
7
|
+
{"id": "V4", "name": "Access Control", "focus": "IDOR, forced browsing, privilege escalation", "blitz": "technique_lookup(idor) + route_scan + technique_lookup(mass_assignment)"},
|
|
8
|
+
{"id": "V5", "name": "Validation, Sanitization and Encoding", "focus": "Injection + XSS + encoding", "blitz": "source-audit (taint) + technique_lookup(sql_injection|xss|command_injection|ssti)"},
|
|
9
|
+
{"id": "V6", "name": "Stored Cryptography", "focus": "Password storage, key management", "blitz": "hp-tls-transport + ap-client-side-crypto-forgery"},
|
|
10
|
+
{"id": "V7", "name": "Error Handling and Logging", "focus": "Verbose errors, stack traces", "blitz": "web-hunting (info leak) + technique_lookup(ssi_injection)"},
|
|
11
|
+
{"id": "V8", "name": "Data Protection", "focus": "PII exposure, cache, client-side storage", "blitz": "technique_lookup(xssi) + technique_lookup(cache_poisoning) + hp-secrets-scan"},
|
|
12
|
+
{"id": "V9", "name": "Communications", "focus": "TLS, HSTS, downgrade", "blitz": "hp-tls-transport"},
|
|
13
|
+
{"id": "V10", "name": "Malicious Code", "focus": "CI/CD, dependency integrity", "blitz": "hp-dependency-audit + ap-gitea-ci-injection"},
|
|
14
|
+
{"id": "V11", "name": "Business Logic", "focus": "Workflow abuse, limits, races", "blitz": "hp-business-logic-fuzzing + technique_lookup(race_condition|bypass_payment)"},
|
|
15
|
+
{"id": "V12", "name": "Files and Resources", "focus": "Upload, path traversal, LFI", "blitz": "technique_lookup(file_upload|path_traversal_lfi) + complex_scan"},
|
|
16
|
+
{"id": "V13", "name": "API and Web Service", "focus": "REST/GraphQL/WebSocket security", "blitz": "technique_lookup(graphql|websocket) + taxonomy(api) + hp-api-security"},
|
|
17
|
+
{"id": "V14", "name": "Configuration", "focus": "Headers, CORS, CSP, cloud", "blitz": "technique_lookup(cors) + web-hunting (config) + hp-iac-cloud-posture"}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Technique class -> CWE mapping (standard weakness IDs, for grounding + professional reporting). Each entry maps a techniques.json class id to its CWE ID(s) and name.",
|
|
3
|
+
"mapping": [
|
|
4
|
+
{"id": "ssrf", "cwe": "CWE-918", "name": "Server-Side Request Forgery (SSRF)"},
|
|
5
|
+
{"id": "request_smuggling", "cwe": "CWE-444", "name": "Inconsistent Interpretation of HTTP Requests (Request Smuggling)"},
|
|
6
|
+
{"id": "cache_poisoning", "cwe": "CWE-524", "name": "Use of Cache Containing Sensitive Information"},
|
|
7
|
+
{"id": "race_condition", "cwe": "CWE-362", "name": "Concurrent Execution using Shared Resource (TOCTOU)"},
|
|
8
|
+
{"id": "ssti", "cwe": "CWE-1336", "name": "Improper Neutralization of Special Elements Used in a Template Engine (SSTI)"},
|
|
9
|
+
{"id": "deserialization", "cwe": "CWE-502", "name": "Deserialization of Untrusted Data"},
|
|
10
|
+
{"id": "prototype_pollution", "cwe": "CWE-1321", "name": "Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution)"},
|
|
11
|
+
{"id": "mass_assignment", "cwe": "CWE-915", "name": "Improperly Controlled Modification of Dynamically-Determined Object Attributes"},
|
|
12
|
+
{"id": "sql_injection", "cwe": "CWE-89", "name": "SQL Injection"},
|
|
13
|
+
{"id": "nosql_injection", "cwe": "CWE-943", "name": "Improper Neutralization of Special Elements in Data Query Logic (NoSQL Injection)"},
|
|
14
|
+
{"id": "xss", "cwe": "CWE-79", "name": "Cross-site Scripting"},
|
|
15
|
+
{"id": "cors", "cwe": "CWE-942", "name": "Permissive Cross-domain Policy with Untrusted Domains (CORS)"},
|
|
16
|
+
{"id": "csrf", "cwe": "CWE-352", "name": "Cross-Site Request Forgery"},
|
|
17
|
+
{"id": "jwt", "cwe": "CWE-347", "name": "Improper Verification of Cryptographic Signature"},
|
|
18
|
+
{"id": "oauth", "cwe": "CWE-287", "name": "Improper Authentication"},
|
|
19
|
+
{"id": "host_header", "cwe": "CWE-644", "name": "Improper Neutralization of HTTP Headers for Scripting Syntax (Host Header)"},
|
|
20
|
+
{"id": "open_redirect", "cwe": "CWE-601", "name": "URL Redirection to Untrusted Site (Open Redirect)"},
|
|
21
|
+
{"id": "subdomain_takeover", "cwe": "CWE-350", "name": "Reliance on Reverse DNS Resolution for a Security-Critical Action"},
|
|
22
|
+
{"id": "idor", "cwe": "CWE-639", "name": "Authorization Bypass Through User-Controlled Key (IDOR/BOLA)"},
|
|
23
|
+
{"id": "graphql", "cwe": "CWE-862", "name": "Missing Authorization"},
|
|
24
|
+
{"id": "websocket", "cwe": "CWE-345", "name": "Insufficient Verification of Data Authenticity (WebSocket Hijacking)"},
|
|
25
|
+
{"id": "file_upload", "cwe": "CWE-434", "name": "Unrestricted Upload of File with Dangerous Type"},
|
|
26
|
+
{"id": "path_traversal_lfi", "cwe": "CWE-22", "name": "Improper Limitation of a Pathname to a Restricted Directory (Path Traversal)"},
|
|
27
|
+
{"id": "command_injection", "cwe": "CWE-78", "name": "OS Command Injection"},
|
|
28
|
+
{"id": "xxe", "cwe": "CWE-611", "name": "Improper Restriction of XML External Entity Reference (XXE)"},
|
|
29
|
+
{"id": "crlf_injection", "cwe": "CWE-93", "name": "Improper Neutralization of CRLF Sequences (CRLF Injection)"},
|
|
30
|
+
{"id": "ldap_injection", "cwe": "CWE-90", "name": "Improper Neutralization of Special Elements in LDAP Queries"},
|
|
31
|
+
{"id": "xpath_injection", "cwe": "CWE-643", "name": "Improper Neutralization of Data within XPath Expressions"},
|
|
32
|
+
{"id": "xslt_injection", "cwe": "CWE-91", "name": "XML Injection (XSLT)"},
|
|
33
|
+
{"id": "ssi_injection", "cwe": "CWE-97", "name": "Improper Neutralization of Server-Side Includes (SSI)"},
|
|
34
|
+
{"id": "xssi", "cwe": "CWE-200", "name": "Exposure of Sensitive Information to an Unauthorized Actor (XSSI)"},
|
|
35
|
+
{"id": "email_injection", "cwe": "CWE-74", "name": "Improper Neutralization of Special Elements in Output (Email Header Injection)"},
|
|
36
|
+
{"id": "formula_csv_injection", "cwe": "CWE-1236", "name": "Improper Neutralization of Formula Elements in a CSV File"},
|
|
37
|
+
{"id": "orm_injection", "cwe": "CWE-89", "name": "SQL Injection (via ORM)"},
|
|
38
|
+
{"id": "rsql_injection", "cwe": "CWE-89", "name": "SQL Injection (RSQL/FIQL)"},
|
|
39
|
+
{"id": "unicode_injection", "cwe": "CWE-180", "name": "Incorrect Behavior Order: Validate Before Canonicalize"},
|
|
40
|
+
{"id": "dangling_markup", "cwe": "CWE-79", "name": "Cross-site Scripting (Dangling Markup)"},
|
|
41
|
+
{"id": "account_takeover", "cwe": "CWE-287", "name": "Improper Authentication (Account Takeover)"},
|
|
42
|
+
{"id": "two_fa_bypass", "cwe": "CWE-308", "name": "Use of Single-factor Authentication"},
|
|
43
|
+
{"id": "rate_limit_bypass", "cwe": "CWE-799", "name": "Improper Control of Interaction Frequency (Rate Limit)"},
|
|
44
|
+
{"id": "password_reset_bypass", "cwe": "CWE-640", "name": "Weak Password Recovery Mechanism for Forgotten Password"},
|
|
45
|
+
{"id": "captcha_bypass", "cwe": "CWE-804", "name": "Guessable CAPTCHA"},
|
|
46
|
+
{"id": "registration_vulnerabilities", "cwe": "CWE-799", "name": "Improper Control of Interaction Frequency"},
|
|
47
|
+
{"id": "payment_bypass", "cwe": "CWE-841", "name": "Improper Enforcement of Behavioral Workflow (Business Logic)"},
|
|
48
|
+
{"id": "timing_attacks", "cwe": "CWE-208", "name": "Observable Timing Discrepancy"},
|
|
49
|
+
{"id": "uuid_insecurities", "cwe": "CWE-330", "name": "Use of Insufficiently Random Values"},
|
|
50
|
+
{"id": "reverse_tab_nabbing", "cwe": "CWE-1022", "name": "Use of Web Link to Untrusted Target with window.opener Access (Reverse Tabnabbing)"},
|
|
51
|
+
{"id": "iframe_traps", "cwe": "CWE-1021", "name": "Improper Restriction of Rendered UI Layers or Frames (Clickjacking)"},
|
|
52
|
+
{"id": "cookie_hacking", "cwe": "CWE-565", "name": "Reliance on Cookies without Validation and Integrity Checking"},
|
|
53
|
+
{"id": "postmessage_vulnerabilities", "cwe": "CWE-345", "name": "Insufficient Verification of Data Authenticity (postMessage)"},
|
|
54
|
+
{"id": "web_vulnerabilities_methodology", "cwe": "CWE-1057", "name": "Improper Inventory / Methodology"}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -57,6 +57,8 @@
|
|
|
57
57
|
{"moment": "model/sub-agent failed", "reach": ["model_fallback", "retry_guidance"]},
|
|
58
58
|
{"moment": "am I done?", "reach": ["engagement_status"]},
|
|
59
59
|
{"moment": "need to run an external exploit tool", "reach": ["tool_lookup", "ensure_tool", "read_tool_manual"]},
|
|
60
|
-
{"moment": "need the campaign plan for this target type", "reach": ["read_playbook"]}
|
|
60
|
+
{"moment": "need the campaign plan for this target type", "reach": ["read_playbook"]},
|
|
61
|
+
{"moment": "map a finding to a standard ID for the report", "reach": ["taxonomy"]},
|
|
62
|
+
{"moment": "need domain-specific tools beyond Blitz's own data", "reach": ["resource_lookup"]}
|
|
61
63
|
]
|
|
62
64
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "OWASP Top 10 (2021) — the fundamental web risk taxonomy — mapped to CWE and Blitz Strike coverage.",
|
|
3
|
+
"risks": [
|
|
4
|
+
{"id": "A01", "name": "Broken Access Control", "cwe": ["CWE-200", "CWE-284", "CWE-285", "CWE-639", "CWE-862", "CWE-863"], "desc": "Missing/weak authorization on object, function, or property access.", "blitz": "technique_lookup(idor) + technique_lookup(mass_assignment) + route_scan"},
|
|
5
|
+
{"id": "A02", "name": "Cryptographic Failures", "cwe": ["CWE-259", "CWE-327", "CWE-328", "CWE-331"], "desc": "Weak/absent encryption, hardcoded keys, weak randomness.", "blitz": "hp-tls-transport + ap-client-side-crypto-forgery + technique_lookup(uuid_insecurities)"},
|
|
6
|
+
{"id": "A03", "name": "Injection", "cwe": ["CWE-79", "CWE-89", "CWE-94"], "desc": "SQL/NoSQL/OS/LDAP/XPath/XSS/SSI/XSLT/SSTI injection from unsanitized input.", "blitz": "source-audit (taint) + technique_lookup(sql_injection|xss|command_injection|ssti|ldap_injection|xpath_injection) + payload_lookup"},
|
|
7
|
+
{"id": "A04", "name": "Insecure Design", "cwe": ["CWE-209", "CWE-256", "CWE-501", "CWE-522"], "desc": "Design flaws (missing rate-limit, weak reset, flawed business logic).", "blitz": "hp-business-logic-fuzzing + technique_lookup(rate_limit_bypass|password_reset_bypass|bypass_payment)"},
|
|
8
|
+
{"id": "A05", "name": "Security Misconfiguration", "cwe": ["CWE-16", "CWE-611", "CWE-1004"], "desc": "Exposed debug/admin, verbose errors, missing headers, CORS, XXE-enabled parsers.", "blitz": "web-hunting (exposed config) + technique_lookup(cors|xxe) + live_recon"},
|
|
9
|
+
{"id": "A06", "name": "Vulnerable and Outdated Components", "cwe": ["CWE-1104"], "desc": "Known-vulnerable libraries/frameworks/components.", "blitz": "hp-dependency-audit + cve_correlation + nvd_lookup + framework_tricks"},
|
|
10
|
+
{"id": "A07", "name": "Identification and Authentication Failures", "cwe": ["CWE-287", "CWE-384", "CWE-798"], "desc": "Weak auth, session fixation, credential stuffing, weak JWT/OAuth.", "blitz": "technique_lookup(jwt|oauth|two_fa_bypass|account_takeover) + bypass_lookup(auth)"},
|
|
11
|
+
{"id": "A08", "name": "Software and Data Integrity Failures", "cwe": ["CWE-502", "CWE-494", "CWE-829"], "desc": "Insecure deserialization, unverified updates/plugins, CI/CD tampering.", "blitz": "technique_lookup(deserialization) + complex_scan + ap-gitea-ci-injection"},
|
|
12
|
+
{"id": "A09", "name": "Security Logging and Monitoring Failures", "cwe": ["CWE-778"], "desc": "Missing logging/detection (a monitoring gap, not an exploit).", "blitz": "report as a gap — note the absence of detection in the report"},
|
|
13
|
+
{"id": "A10", "name": "Server-Side Request Forgery", "cwe": ["CWE-918"], "desc": "The server fetches an attacker-influenced URL.", "blitz": "technique_lookup(ssrf) + ap-ssrf-cloud-metadata + bypass_lookup"}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Curated security resource index (from the community 'Awesome Hacking' meta-list, filtered to what matters for web/pentest bug hunting). The LLM uses this to find the best domain-specific tools/knowledge. use_when maps each resource to a Blitz Strike phase/context.",
|
|
3
|
+
"resources": [
|
|
4
|
+
{"id": "web_hacking", "name": "awesome-web-hacking", "category": "web", "url": "https://github.com/infoslack/awesome-web-hacking", "desc": "Web application security tools and techniques.", "use_when": "live web app testing — the master web list"},
|
|
5
|
+
{"id": "web_security", "name": "awesome-web-security", "category": "web", "url": "https://github.com/qazbnm456/awesome-web-security", "desc": "Web security materials and resources.", "use_when": "web security research + writeups"},
|
|
6
|
+
{"id": "pentest", "name": "awesome-pentest", "category": "pentest", "url": "https://github.com/enaqx/awesome-pentest", "desc": "Penetration testing resources, tools, and references.", "use_when": "broad pentest tooling + methodology"},
|
|
7
|
+
{"id": "bug_bounty", "name": "awesome-bug-bounty", "category": "bug_bounty", "url": "https://github.com/djadmin/awesome-bug-bounty", "desc": "Bug bounty programs and hunter write-ups.", "use_when": "bug bounty target selection + report style"},
|
|
8
|
+
{"id": "bug_bounty_reference", "name": "bug-bounty-reference", "category": "bug_bounty", "url": "https://github.com/ngalongc/bug-bounty-reference", "desc": "Write-ups categorized by bug nature.", "use_when": "seeing how a bug class was exploited in the wild"},
|
|
9
|
+
{"id": "api_checklist", "name": "API-Security-Checklist", "category": "api", "url": "https://github.com/shieldfy/API-Security-Checklist", "desc": "API security countermeasures checklist.", "use_when": "API/GraphQL security testing"},
|
|
10
|
+
{"id": "asset_discovery", "name": "Awesome-Asset-Discovery", "category": "recon", "url": "https://github.com/redhuntlabs/Awesome-Asset-Discovery", "desc": "Asset discovery / attack-surface enumeration resources.", "use_when": "recon — mapping the full attack surface"},
|
|
11
|
+
{"id": "payloads_foospidy", "name": "payloads", "category": "payload", "url": "https://github.com/foospidy/payloads", "desc": "Web attack payloads collection.", "use_when": "crafting probes"},
|
|
12
|
+
{"id": "payloads_all_the_things", "name": "PayloadsAllTheThings", "category": "payload", "url": "https://github.com/swisskyrepo/PayloadsAllTheThings", "desc": "Payloads + bypass for web app pentest/CTF (already vendored as payloads/).", "use_when": "crafting probes"},
|
|
13
|
+
{"id": "seclists", "name": "SecLists", "category": "payload", "url": "https://github.com/danielmiessler/SecLists", "desc": "Wordlists + fuzz lists for security assessments.", "use_when": "fuzzing + brute-force lists"},
|
|
14
|
+
{"id": "cve_poc", "name": "trickest/cve", "category": "cve", "url": "https://github.com/trickest/cve", "desc": "CVE Proof-of-Concepts updated daily.", "use_when": "finding a PoC for a known CVE"},
|
|
15
|
+
{"id": "gtfobins", "name": "GTFOBins", "category": "privesc", "url": "https://gtfobins.github.io", "desc": "Unix binaries exploitable to bypass local restrictions.", "use_when": "Linux privilege escalation"},
|
|
16
|
+
{"id": "static_analysis", "name": "static-analysis", "category": "source", "url": "https://github.com/analysis-tools-dev/static-analysis", "desc": "Static analysis tools, linters, and checkers per language.", "use_when": "source-code audit tool selection"},
|
|
17
|
+
{"id": "fuzzing", "name": "Awesome-Fuzzing", "category": "fuzzing", "url": "https://github.com/secfigo/Awesome-Fuzzing", "desc": "Fuzzing resources + exploit-development learning.", "use_when": "input fuzzing / crash analysis"},
|
|
18
|
+
{"id": "prompt_injection", "name": "awesome-prompt-injection", "category": "llm", "url": "https://github.com/Joe-B-Security/awesome-prompt-injection", "desc": "Prompt-injection vulnerabilities targeting AI/LLM systems.", "use_when": "testing LLM/AI-integrated targets"},
|
|
19
|
+
{"id": "nodejs_security", "name": "awesome-nodejs-security", "category": "framework", "url": "https://github.com/lirantal/awesome-nodejs-security", "desc": "Node.js security tools + incidents.", "use_when": "Node/Express target"},
|
|
20
|
+
{"id": "php_security", "name": "awesome-php#security", "category": "framework", "url": "https://github.com/ziadoz/awesome-php#security", "desc": "PHP security libraries + scanners.", "use_when": "PHP target"},
|
|
21
|
+
{"id": "osint", "name": "awesome-osint", "category": "recon", "url": "https://github.com/jivoi/awesome-osint", "desc": "OSINT tools and resources.", "use_when": "OSINT / passive recon"},
|
|
22
|
+
{"id": "reversing", "name": "awesome-reversing", "category": "rev", "url": "https://github.com/HACKE-RC/awesome-reversing", "desc": "Reverse engineering learning resources.", "use_when": "binary RE"},
|
|
23
|
+
{"id": "password_cracking", "name": "awesome-password-cracking", "category": "cracking", "url": "https://github.com/n0kovo/awesome-password-cracking", "desc": "Password recovery tools + resources.", "use_when": "hash cracking"},
|
|
24
|
+
{"id": "forensics", "name": "awesome-forensics", "category": "forensics", "url": "https://github.com/Cugu/awesome-forensics", "desc": "Forensic analysis tools.", "use_when": "forensics / incident analysis"},
|
|
25
|
+
{"id": "malware_analysis", "name": "awesome-malware-analysis", "category": "malware", "url": "https://github.com/rshipp/awesome-malware-analysis", "desc": "Malware analysis tools.", "use_when": "malware triage (static + IOC)"},
|
|
26
|
+
{"id": "incident_response", "name": "awesome-incident-response", "category": "ir", "url": "https://github.com/meirwah/awesome-incident-response", "desc": "Incident response tools.", "use_when": "incident response"},
|
|
27
|
+
{"id": "threat_intel", "name": "awesome-threat-intelligence", "category": "intel", "url": "https://github.com/hslatman/awesome-threat-intelligence", "desc": "Threat intelligence resources.", "use_when": "attribution / threat research"},
|
|
28
|
+
{"id": "ci_cd_attacks", "name": "awesome-cicd-attacks", "category": "cicd", "url": "https://github.com/TupleType/awesome-cicd-attacks", "desc": "CI/CD pipeline offensive research.", "use_when": "CI/CD + deployment-process testing"},
|
|
29
|
+
{"id": "pentest_wiki", "name": "pentest-wiki", "category": "knowledge", "url": "https://github.com/nixawk/pentest-wiki", "desc": "Free online security knowledge library.", "use_when": "technique reference"},
|
|
30
|
+
{"id": "infosec_reference", "name": "Infosec_Reference", "category": "knowledge", "url": "https://github.com/rmusser01/Infosec_Reference", "desc": "Information security reference that doesn't suck.", "use_when": "broad infosec reference"},
|
|
31
|
+
{"id": "cheatsheets", "name": "OWASP CheatSheetSeries", "category": "knowledge", "url": "https://github.com/OWASP/CheatSheetSeries", "desc": "OWASP cheat sheets for app security.", "use_when": "defensive/context reference"},
|
|
32
|
+
{"id": "vulhub", "name": "vulhub", "category": "labs", "url": "https://github.com/vulhub/vulhub", "desc": "Pre-built vulnerable Docker environments.", "use_when": "spinning up a vulnerable lab to reproduce a bug"},
|
|
33
|
+
{"id": "ai_security", "name": "Awesome-AI-Security", "category": "llm", "url": "https://github.com/DeepSpaceHarbor/Awesome-AI-Security", "desc": "AI security resources.", "use_when": "AI/LLM system security"}
|
|
34
|
+
]
|
|
35
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
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
|
@@ -178,5 +178,7 @@ into the next follow-up.
|
|
|
178
178
|
- **Framework-specific tricks** → `framework_tricks(laravel|django|...)` after
|
|
179
179
|
`detect_framework` (signals + known vulns/CVEs + attack tricks).
|
|
180
180
|
- **Need to run an external exploit tool** → `tool_lookup` → `ensure_tool` → `read_tool_manual`.
|
|
181
|
+
- **Need domain-specific resources beyond Blitz's own data** → `resource_lookup(web|recon|payload|privesc|...)` for the curated index.
|
|
182
|
+
- **Ground a finding in standard IDs for the report** → `taxonomy(web|api|cwe|asvs, ...)`.
|
|
181
183
|
- **Verification** → `verify-finding` skill. **Review** → `adversarial-review`.
|
|
182
184
|
- **The full map** → `doctrine_map` (phase → skill → tools → data).
|