@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,202 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# semgrep — Usage Guide for AIRecon
|
|
4
|
+
|
|
5
|
+
semgrep is a static analysis tool that finds patterns in source code. It is fundamentally different
|
|
6
|
+
from network scanners — it reads code files and reports where specific patterns appear. This means
|
|
7
|
+
it is only useful when you have actual source code or client-side files to analyze. Running semgrep
|
|
8
|
+
on an empty directory or before code has been obtained produces nothing useful.
|
|
9
|
+
|
|
10
|
+
semgrep findings are NOT confirmed vulnerabilities. They are leads that require manual reading
|
|
11
|
+
and verification. Every semgrep hit must be manually inspected before any further action is taken.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## MANDATORY PRE-CONDITIONS (All must be true before using semgrep)
|
|
16
|
+
|
|
17
|
+
[ ] You have actual source code, configuration files, or client-side assets to analyze.
|
|
18
|
+
This means you have already obtained one or more of the following:
|
|
19
|
+
- JavaScript bundles extracted from a live web application
|
|
20
|
+
- Source code from an exposed git repository (via git-dumper, GitLab API, etc.)
|
|
21
|
+
- Configuration files discovered during directory enumeration
|
|
22
|
+
- Uploaded or leaked source archives found during OSINT
|
|
23
|
+
[ ] The code is written to disk and accessible — semgrep cannot analyze remote URLs.
|
|
24
|
+
Extracted files must be in the workspace before semgrep can read them.
|
|
25
|
+
[ ] You have a specific hypothesis about what you are looking for.
|
|
26
|
+
State it: "I extracted the JS bundle and want to find hardcoded API keys and secrets"
|
|
27
|
+
or "I have the backend Python source and want to find SQL concatenation patterns."
|
|
28
|
+
NOT: "I will run semgrep to find vulnerabilities" — this is too vague.
|
|
29
|
+
[ ] You have selected a ruleset that matches the programming language of the code you found.
|
|
30
|
+
Running a Java ruleset on JavaScript produces false negatives. Match language precisely.
|
|
31
|
+
|
|
32
|
+
Using semgrep before obtaining source code = produces zero output, wastes time.
|
|
33
|
+
Running semgrep without reading its findings manually = not security testing, it is checkbox theater.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## What semgrep Is Good At (When Code Is Available)
|
|
38
|
+
|
|
39
|
+
STRONG USE CASES:
|
|
40
|
+
- Finding hardcoded secrets, API keys, and tokens in JS bundles or config files
|
|
41
|
+
- Detecting dangerous function calls: eval(), exec(), system(), unserialize(), etc.
|
|
42
|
+
- Identifying SQL string concatenation patterns that suggest injection vulnerability
|
|
43
|
+
- Finding insecure cryptographic usage (MD5, SHA1 for passwords, weak RNG)
|
|
44
|
+
- Spotting prototype pollution sinks in JavaScript (obj[key] = value patterns)
|
|
45
|
+
- Detecting SSTI-prone template rendering calls
|
|
46
|
+
- Mapping all locations where user input touches dangerous sinks (DOM XSS sources/sinks)
|
|
47
|
+
- Finding dangerously misconfigured security headers in framework config files
|
|
48
|
+
|
|
49
|
+
WEAK USE CASES (manual reading is better):
|
|
50
|
+
- Business logic flaws — patterns cannot capture intent
|
|
51
|
+
- Authorization bypass — requires understanding of the full request flow
|
|
52
|
+
- Race conditions — timing-dependent, not findable via static patterns
|
|
53
|
+
- Complex chained vulnerabilities — semgrep sees one file at a time, not the full system
|
|
54
|
+
|
|
55
|
+
semgrep finds WHERE code might be dangerous.
|
|
56
|
+
You must determine IF it actually is dangerous by reading the surrounding context manually.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Source Code Acquisition — Get This First
|
|
61
|
+
|
|
62
|
+
Before semgrep can be used, code must be obtained. Priority order:
|
|
63
|
+
|
|
64
|
+
1. EXPOSED GIT REPOSITORY:
|
|
65
|
+
If /.git/ is accessible: use git-dumper to reconstruct the full source tree.
|
|
66
|
+
If GitLab/GitHub is linked in JS or robots.txt: clone or access the repo directly.
|
|
67
|
+
Output: a full source directory you can analyze.
|
|
68
|
+
|
|
69
|
+
2. JAVASCRIPT BUNDLE EXTRACTION:
|
|
70
|
+
After browser profiling: collect all .js URLs from the page source.
|
|
71
|
+
Download each bundle: curl -s <url> -o output/js/<filename>.js
|
|
72
|
+
De-obfuscate if minified: js-beautify output/js/<filename>.js -o output/js/<filename>_clean.js
|
|
73
|
+
Output: readable JS files for analysis.
|
|
74
|
+
|
|
75
|
+
3. EXPOSED CONFIGURATION FILES:
|
|
76
|
+
If directory enumeration found config files (.env, config.yml, settings.py, web.config, etc.):
|
|
77
|
+
Download them: curl -s <url> -o output/configs/<filename>
|
|
78
|
+
Output: configuration files for secret and misconfiguration analysis.
|
|
79
|
+
|
|
80
|
+
4. SOURCE CODE ARCHIVE:
|
|
81
|
+
If a .zip, .tar.gz, or backup file was found: download and extract it.
|
|
82
|
+
Output: a source tree for analysis.
|
|
83
|
+
|
|
84
|
+
DO NOT run semgrep until at least one of the above has produced files on disk.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Ruleset Selection — Language and Context Must Match
|
|
89
|
+
|
|
90
|
+
JAVASCRIPT / TYPESCRIPT (extracted from web app):
|
|
91
|
+
Detect secrets and dangerous patterns:
|
|
92
|
+
semgrep --config=p/javascript -l javascript output/js/ --json -o output/semgrep_js.json
|
|
93
|
+
Detect prototype pollution and DOM XSS sinks:
|
|
94
|
+
semgrep --config=p/xss output/js/ --json -o output/semgrep_xss.json
|
|
95
|
+
Detect hardcoded secrets:
|
|
96
|
+
semgrep --config=p/secrets output/js/ --json -o output/semgrep_secrets.json
|
|
97
|
+
|
|
98
|
+
PYTHON (backend source if obtained):
|
|
99
|
+
Detect injection patterns and insecure functions:
|
|
100
|
+
semgrep --config=p/python output/src/ --json -o output/semgrep_python.json
|
|
101
|
+
OWASP top 10 patterns:
|
|
102
|
+
semgrep --config=p/owasp-top-ten output/src/ --json -o output/semgrep_owasp.json
|
|
103
|
+
|
|
104
|
+
JAVA (if backend source is available):
|
|
105
|
+
semgrep --config=p/java output/src/ --json -o output/semgrep_java.json
|
|
106
|
+
|
|
107
|
+
PHP (if CMS or backend PHP source obtained):
|
|
108
|
+
semgrep --config=p/php output/src/ --json -o output/semgrep_php.json
|
|
109
|
+
|
|
110
|
+
CONFIGURATION FILES (any language — secret and credential detection):
|
|
111
|
+
semgrep --config=p/secrets output/configs/ --json -o output/semgrep_config_secrets.json
|
|
112
|
+
semgrep --config=p/trailofbits output/ --json -o output/semgrep_tob.json
|
|
113
|
+
|
|
114
|
+
GENERIC PATTERNS (use when language is uncertain or mixed codebase):
|
|
115
|
+
semgrep --config=p/security-audit output/ --json -o output/semgrep_audit.json
|
|
116
|
+
|
|
117
|
+
NEVER use these patterns:
|
|
118
|
+
semgrep --config=auto . (auto config on empty or irrelevant directory)
|
|
119
|
+
semgrep --config=p/java output/js/ (wrong language for the files you have)
|
|
120
|
+
semgrep . --config=r/all (all rules on all files = noise, not signal)
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Interpreting Results — Every Finding Requires Manual Reading
|
|
125
|
+
|
|
126
|
+
semgrep output is a list of pattern matches, not a list of vulnerabilities.
|
|
127
|
+
|
|
128
|
+
After semgrep completes, for EVERY finding:
|
|
129
|
+
|
|
130
|
+
STEP 1: Open the flagged file at the flagged line.
|
|
131
|
+
Read the surrounding 20-30 lines. Understand what the code is doing.
|
|
132
|
+
Ask: "Is this actually dangerous in this specific context?"
|
|
133
|
+
|
|
134
|
+
STEP 2: Trace the data flow.
|
|
135
|
+
For injection findings: where does the input come from? Is it user-controlled?
|
|
136
|
+
For secret findings: is this a real credential or a placeholder/example?
|
|
137
|
+
For dangerous function findings: what data is passed to this function?
|
|
138
|
+
|
|
139
|
+
STEP 3: Determine exploitability.
|
|
140
|
+
Can you construct a request that reaches this code path with malicious input?
|
|
141
|
+
If yes: manually craft the proof-of-concept. Test it.
|
|
142
|
+
If no: discard the finding. Do not report unverified semgrep hits.
|
|
143
|
+
|
|
144
|
+
STEP 4: Classify severity based on actual impact, not semgrep's severity label.
|
|
145
|
+
semgrep's severity is based on the rule, not your specific target's context.
|
|
146
|
+
A "HIGH" semgrep finding on dead code is not a vulnerability.
|
|
147
|
+
A "LOW" semgrep finding on a critical authentication path may be critical.
|
|
148
|
+
|
|
149
|
+
A semgrep finding is NOT a vulnerability report.
|
|
150
|
+
Only call create_vulnerability_report after manual exploitation confirmation.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Common High-Value Findings to Prioritize
|
|
155
|
+
|
|
156
|
+
When reading semgrep output, prioritize investigating these first:
|
|
157
|
+
|
|
158
|
+
SECRETS (immediate action required):
|
|
159
|
+
API keys, tokens, passwords, private keys found in code
|
|
160
|
+
→ Try to use them: verify they are real and active
|
|
161
|
+
→ Check scope: is the key for a service within the target's infrastructure?
|
|
162
|
+
|
|
163
|
+
SQL CONCATENATION:
|
|
164
|
+
String concatenation in database query construction
|
|
165
|
+
→ Trace the input source manually
|
|
166
|
+
→ Test the specific endpoint with manual injection probes first
|
|
167
|
+
|
|
168
|
+
EVAL / EXEC PATTERNS:
|
|
169
|
+
eval(), exec(), system(), shell_exec(), subprocess.call() with variable input
|
|
170
|
+
→ Trace what reaches these functions
|
|
171
|
+
→ Is it truly user-controlled? Which endpoint?
|
|
172
|
+
|
|
173
|
+
DANGEROUS DESERIALIZATION:
|
|
174
|
+
unserialize(), ObjectInputStream, pickle.loads() on untrusted data
|
|
175
|
+
→ Confirm the data source is user-controlled
|
|
176
|
+
→ Identify the deserialization library for gadget chain selection
|
|
177
|
+
|
|
178
|
+
PROTOTYPE POLLUTION SINKS:
|
|
179
|
+
obj[key] = value, Object.assign() with user input
|
|
180
|
+
→ Confirm which client-side functionality is affected
|
|
181
|
+
→ Verify if this leads to XSS or logic bypass
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Workflow Integration (Where semgrep Fits)
|
|
186
|
+
|
|
187
|
+
Phase 1 STEP 4 (Front-End & API Schema Extraction):
|
|
188
|
+
After JS bundle download and de-obfuscation: run semgrep on the cleaned JS files.
|
|
189
|
+
Purpose: find hidden endpoints, secrets, and dangerous patterns in client-side code.
|
|
190
|
+
|
|
191
|
+
Phase 2 (Attack Surface Expansion):
|
|
192
|
+
After git repository exposure is confirmed: run semgrep on the extracted source.
|
|
193
|
+
Purpose: map all injection sinks, dangerous function calls, and hardcoded credentials.
|
|
194
|
+
|
|
195
|
+
Phase 3+ (Vulnerability Testing):
|
|
196
|
+
semgrep findings from earlier phases guide which endpoints and parameters to test manually.
|
|
197
|
+
The finding tells you WHERE to look. Manual testing tells you IF it is exploitable.
|
|
198
|
+
|
|
199
|
+
NEVER:
|
|
200
|
+
Run semgrep before any source code has been obtained.
|
|
201
|
+
Report semgrep findings without manual verification.
|
|
202
|
+
Run semgrep with a ruleset that does not match the language of the files you have.
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# source_audit — Source Code Security Analysis Guide
|
|
4
|
+
|
|
5
|
+
This skill covers how to find real security vulnerabilities in source code provided
|
|
6
|
+
via @/path references. It applies to any engagement where you have actual source files.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## WHEN THIS SKILL APPLIES
|
|
11
|
+
|
|
12
|
+
Load and follow this skill when:
|
|
13
|
+
- User provides source code via @/path (e.g. "find bug in @/home/user/project/")
|
|
14
|
+
- User asks to "audit", "review", "find bugs in", or "analyze" source code
|
|
15
|
+
- [FILE REFERENCE — DIRECTORY] or [FILE REFERENCE — TEXT] blocks appear in context
|
|
16
|
+
- User mentions a framework + source code (e.g. "find vulns in this Django app")
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## STEP 0 — READ THE INJECTED CONTEXT FIRST (MANDATORY)
|
|
21
|
+
|
|
22
|
+
When a user attaches files/directories with @/path, the content is already injected into
|
|
23
|
+
your context. BEFORE running any tool:
|
|
24
|
+
|
|
25
|
+
1. Read the [FILE REFERENCE] block(s) in the conversation context
|
|
26
|
+
2. Identify the project language(s) from file extensions and imports
|
|
27
|
+
3. Note the Docker path (shown in the FILE REFERENCE block) — use it for execute commands
|
|
28
|
+
4. Map the overall project structure: entry points, routes, DB queries, auth logic, parsers
|
|
29
|
+
|
|
30
|
+
DO NOT run scanners blindly before reading the code. Static analysis confirms WHERE patterns
|
|
31
|
+
exist. Reading tells you IF they are exploitable.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## STEP 1 — LANGUAGE DETECTION
|
|
36
|
+
|
|
37
|
+
Determine the primary language from file extensions in the directory tree:
|
|
38
|
+
|
|
39
|
+
.py → Python
|
|
40
|
+
.js / .ts → JavaScript / TypeScript
|
|
41
|
+
.go → Go
|
|
42
|
+
.php → PHP
|
|
43
|
+
.rb → Ruby
|
|
44
|
+
.java → Java
|
|
45
|
+
.cs → C# / .NET
|
|
46
|
+
.c / .cpp → C / C++
|
|
47
|
+
Gemfile → Ruby (Rails likely)
|
|
48
|
+
pom.xml → Java (Maven)
|
|
49
|
+
build.gradle → Java / Kotlin (Gradle)
|
|
50
|
+
composer.json → PHP
|
|
51
|
+
package.json → Node.js (JavaScript / TypeScript)
|
|
52
|
+
go.mod → Go
|
|
53
|
+
Cargo.toml → Rust
|
|
54
|
+
requirements.txt / pyproject.toml → Python
|
|
55
|
+
|
|
56
|
+
Mixed codebases: run appropriate scanner for EACH language found.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## STEP 2 — STATIC ANALYSIS BY LANGUAGE
|
|
61
|
+
|
|
62
|
+
Run the correct scanner for the detected language. All scanners write output to
|
|
63
|
+
/workspace/<target>/output/. Replace <src_path> with the actual Docker path from the
|
|
64
|
+
FILE REFERENCE block.
|
|
65
|
+
|
|
66
|
+
### PYTHON
|
|
67
|
+
# Bandit — SAST for common security flaws (injection, hardcoded secrets, weak crypto)
|
|
68
|
+
bandit -r <src_path> -f json -o /workspace/<target>/output/bandit.json -ll
|
|
69
|
+
# Semgrep — OWASP patterns + Python-specific rules
|
|
70
|
+
semgrep --config=p/python --config=p/owasp-top-ten <src_path> --json -o /workspace/<target>/output/semgrep_py.json
|
|
71
|
+
# Secrets
|
|
72
|
+
semgrep --config=p/secrets <src_path> --json -o /workspace/<target>/output/semgrep_secrets.json
|
|
73
|
+
# Trufflehog (git history secrets — only if .git exists)
|
|
74
|
+
trufflehog filesystem <src_path> --json > /workspace/<target>/output/trufflehog.json 2>/dev/null
|
|
75
|
+
|
|
76
|
+
### JAVASCRIPT / TYPESCRIPT
|
|
77
|
+
# Semgrep JS/TS
|
|
78
|
+
semgrep --config=p/javascript --config=p/typescript <src_path> --json -o /workspace/<target>/output/semgrep_js.json
|
|
79
|
+
# XSS sinks
|
|
80
|
+
semgrep --config=p/xss <src_path> --json -o /workspace/<target>/output/semgrep_xss.json
|
|
81
|
+
# Secrets in JS
|
|
82
|
+
semgrep --config=p/secrets <src_path> --json -o /workspace/<target>/output/semgrep_secrets.json
|
|
83
|
+
# npm audit (if package-lock.json exists)
|
|
84
|
+
cd <src_path> && npm audit --json > /workspace/<target>/output/npm_audit.json 2>/dev/null
|
|
85
|
+
|
|
86
|
+
### GO
|
|
87
|
+
# Gosec — Go security checker
|
|
88
|
+
which gosec || go install github.com/securego/gosec/v2/cmd/gosec@latest
|
|
89
|
+
gosec -fmt json -out /workspace/<target>/output/gosec.json ./... 2>/dev/null # run from src dir
|
|
90
|
+
# Semgrep Go
|
|
91
|
+
semgrep --config=p/golang <src_path> --json -o /workspace/<target>/output/semgrep_go.json
|
|
92
|
+
|
|
93
|
+
### PHP
|
|
94
|
+
# Semgrep PHP
|
|
95
|
+
semgrep --config=p/php <src_path> --json -o /workspace/<target>/output/semgrep_php.json
|
|
96
|
+
# Semgrep secrets
|
|
97
|
+
semgrep --config=p/secrets <src_path> --json -o /workspace/<target>/output/semgrep_secrets.json
|
|
98
|
+
|
|
99
|
+
### RUBY / RAILS
|
|
100
|
+
# Brakeman — Rails-specific SAST
|
|
101
|
+
which brakeman || gem install brakeman
|
|
102
|
+
brakeman <src_path> -f json -o /workspace/<target>/output/brakeman.json --no-pager 2>/dev/null
|
|
103
|
+
# Semgrep Ruby
|
|
104
|
+
semgrep --config=p/ruby <src_path> --json -o /workspace/<target>/output/semgrep_rb.json
|
|
105
|
+
|
|
106
|
+
### JAVA
|
|
107
|
+
# Semgrep Java
|
|
108
|
+
semgrep --config=p/java --config=p/owasp-top-ten <src_path> --json -o /workspace/<target>/output/semgrep_java.json
|
|
109
|
+
# Secrets
|
|
110
|
+
semgrep --config=p/secrets <src_path> --json -o /workspace/<target>/output/semgrep_secrets.json
|
|
111
|
+
|
|
112
|
+
### C# / .NET
|
|
113
|
+
# Semgrep C#
|
|
114
|
+
semgrep --config=p/csharp <src_path> --json -o /workspace/<target>/output/semgrep_cs.json
|
|
115
|
+
|
|
116
|
+
### C / C++
|
|
117
|
+
# Flawfinder — C/C++ vulnerability scanner
|
|
118
|
+
which flawfinder || pip3 install flawfinder --break-system-packages
|
|
119
|
+
flawfinder --dataonly <src_path> > /workspace/<target>/output/flawfinder.txt
|
|
120
|
+
# Semgrep C/C++
|
|
121
|
+
semgrep --config=p/c <src_path> --json -o /workspace/<target>/output/semgrep_c.json
|
|
122
|
+
|
|
123
|
+
### GENERIC (any language, secrets focus)
|
|
124
|
+
semgrep --config=p/secrets <src_path> --json -o /workspace/<target>/output/semgrep_secrets.json
|
|
125
|
+
semgrep --config=p/security-audit <src_path> --json -o /workspace/<target>/output/semgrep_audit.json
|
|
126
|
+
trufflehog filesystem <src_path> --json > /workspace/<target>/output/trufflehog.json 2>/dev/null
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## STEP 3 — TRIAGE FINDINGS (MANDATORY — do not skip)
|
|
131
|
+
|
|
132
|
+
After scanners complete, parse and triage the output. Start with:
|
|
133
|
+
|
|
134
|
+
python3 -c "
|
|
135
|
+
import json, sys
|
|
136
|
+
with open('/workspace/<target>/output/bandit.json') as f:
|
|
137
|
+
d = json.load(f)
|
|
138
|
+
findings = d.get('results', [])
|
|
139
|
+
high = [r for r in findings if r['issue_severity'] in ('HIGH', 'MEDIUM')]
|
|
140
|
+
for r in sorted(high, key=lambda x: x['issue_severity'])[:20]:
|
|
141
|
+
print(f\"{r['issue_severity']:8} | {r['test_id']:20} | {r['filename']}:{r['line_number']} | {r['issue_text'][:80]}\")
|
|
142
|
+
"
|
|
143
|
+
|
|
144
|
+
For semgrep JSON output:
|
|
145
|
+
python3 -c "
|
|
146
|
+
import json
|
|
147
|
+
with open('/workspace/<target>/output/semgrep_py.json') as f:
|
|
148
|
+
d = json.load(f)
|
|
149
|
+
for r in d.get('results', [])[:30]:
|
|
150
|
+
sev = r.get('extra', {}).get('severity', '?')
|
|
151
|
+
msg = r.get('extra', {}).get('message', '')[:80]
|
|
152
|
+
path = r['path']
|
|
153
|
+
line = r['start']['line']
|
|
154
|
+
print(f'{sev:8} | {path}:{line} | {msg}')
|
|
155
|
+
"
|
|
156
|
+
|
|
157
|
+
PRIORITIZE (investigate first):
|
|
158
|
+
1. Hardcoded secrets / API keys / passwords (immediate active credential test)
|
|
159
|
+
2. SQL string concatenation → trace to user input → test endpoint
|
|
160
|
+
3. eval() / exec() / system() / shell_exec() / subprocess with user input
|
|
161
|
+
4. Unserialize / pickle.loads() / ObjectInputStream on untrusted data
|
|
162
|
+
5. Path traversal: open() / file() with user-controlled path (no sanitization)
|
|
163
|
+
6. SSRF: requests.get(user_input) / urllib.urlopen(user_input) patterns
|
|
164
|
+
7. JWT without algorithm verification / weak secret
|
|
165
|
+
8. Insecure cryptography: MD5/SHA1 for passwords, weak RNG
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## STEP 4 — MANUAL CODE REVIEW (CRITICAL STEP)
|
|
170
|
+
|
|
171
|
+
For every high-priority finding from Step 3:
|
|
172
|
+
|
|
173
|
+
1. Open the file at the flagged line: use read_file tool with the Docker path
|
|
174
|
+
2. Read 30-50 lines around the finding
|
|
175
|
+
3. Trace the data flow:
|
|
176
|
+
- Where does the input ORIGINATE? (HTTP request parameter, file upload, environment var?)
|
|
177
|
+
- Does it pass through any sanitization / validation? (Is it bypassable?)
|
|
178
|
+
- Does it reach the dangerous sink UNMODIFIED?
|
|
179
|
+
4. Identify the triggering HTTP endpoint or function call
|
|
180
|
+
5. Determine exploitability: can you craft a payload that reaches this sink?
|
|
181
|
+
|
|
182
|
+
For web apps — find the routes file first:
|
|
183
|
+
Python/Flask: app.py, routes.py, views.py, blueprints/
|
|
184
|
+
Django: urls.py, views.py
|
|
185
|
+
Express: routes/, app.js, index.js, server.js
|
|
186
|
+
Rails: config/routes.rb, app/controllers/
|
|
187
|
+
Laravel: routes/web.php, routes/api.php, app/Http/Controllers/
|
|
188
|
+
Spring Boot: @RequestMapping / @GetMapping / @PostMapping annotations
|
|
189
|
+
|
|
190
|
+
For each dangerous function: grep for all callers to map the full attack surface:
|
|
191
|
+
grep -rn "eval\|exec\|system\|shell_exec\|subprocess" <src_path> --include="*.py"
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## STEP 5 — VULNERABILITY CLASSES TO PRIORITIZE IN SOURCE CODE
|
|
196
|
+
|
|
197
|
+
When reading code manually, look for these HIGH-IMPACT patterns:
|
|
198
|
+
|
|
199
|
+
INJECTION VULNERABILITIES:
|
|
200
|
+
SQL: "SELECT ... " + user_input OR f"SELECT ... {var}" (no parameterization)
|
|
201
|
+
CMD: subprocess.call(f"cmd {input}", shell=True) OR os.system(user_input)
|
|
202
|
+
SSTI: render_template_string(user_input) OR env.from_string(user_input)
|
|
203
|
+
XXE: ElementTree.parse() without defusedxml, lxml etree without resolve_entities=False
|
|
204
|
+
LDAP: ldap.search_s() with unsanitized user input
|
|
205
|
+
|
|
206
|
+
AUTHENTICATION & AUTHORIZATION:
|
|
207
|
+
Hardcoded credentials in source or config files
|
|
208
|
+
JWT: "algorithm": "none" OR jwt.decode() without algorithm verification
|
|
209
|
+
Session tokens: predictable / non-random (time-based, sequential)
|
|
210
|
+
IDOR: queries filtered only by user-supplied ID (no ownership check)
|
|
211
|
+
Mass Assignment: Model(**request.json) with no field filtering
|
|
212
|
+
|
|
213
|
+
DESERIALIZATION:
|
|
214
|
+
Python: pickle.loads(user_data) OR yaml.load(data, Loader=Loader) (not SafeLoader)
|
|
215
|
+
PHP: unserialize($_GET['data'])
|
|
216
|
+
Java: ObjectInputStream.readObject() OR XStream.fromXML() on untrusted data
|
|
217
|
+
Ruby: Marshal.load(user_data)
|
|
218
|
+
|
|
219
|
+
PATH TRAVERSAL:
|
|
220
|
+
open(user_input) without normalization and containment check
|
|
221
|
+
send_file(user_input) without path sanitization
|
|
222
|
+
os.path.join(base, user_input) when user_input starts with "/"
|
|
223
|
+
|
|
224
|
+
SSRF:
|
|
225
|
+
requests.get(user_input) OR urllib.urlopen(user_input) without URL validation
|
|
226
|
+
Webhooks: storing user-provided URLs and fetching them server-side
|
|
227
|
+
PDF/image generation from user-supplied URLs
|
|
228
|
+
|
|
229
|
+
CRYPTOGRAPHIC FAILURES:
|
|
230
|
+
hashlib.md5(password) OR hashlib.sha1(password) for password storage
|
|
231
|
+
random.random() OR random.randint() for tokens, nonces, reset codes (use secrets.token_hex)
|
|
232
|
+
Hard-coded IV / symmetric keys in source
|
|
233
|
+
|
|
234
|
+
SECRETS IN CODE:
|
|
235
|
+
API_KEY = "sk-..." or PASSWORD = "hunter2" in any source file
|
|
236
|
+
.env files committed to repo (check git log --all -p -- .env)
|
|
237
|
+
AWS credentials, private keys, tokens in comments or config
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## STEP 6 — CONFIRM AND EXPLOIT
|
|
242
|
+
|
|
243
|
+
A finding is only a vulnerability when exploited with evidence. For each confirmed path:
|
|
244
|
+
|
|
245
|
+
[ ] Craft the minimum payload that reaches the sink
|
|
246
|
+
[ ] Trigger it via the appropriate mechanism (HTTP request, file upload, CLI argument)
|
|
247
|
+
[ ] Capture the concrete output (error, data exfiltrated, RCE output, blind timing)
|
|
248
|
+
[ ] Document: vulnerable line → data flow → endpoint → payload → evidence
|
|
249
|
+
|
|
250
|
+
For web app source code: you can start the app in Docker if it is self-contained:
|
|
251
|
+
cd /workspace/<target>
|
|
252
|
+
# Python: pip install -r requirements.txt && python app.py &
|
|
253
|
+
# Node.js: npm install && node server.js &
|
|
254
|
+
# Then test with curl -x http://127.0.0.1:48080 against localhost
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## STEP 7 — REPORT
|
|
259
|
+
|
|
260
|
+
Use create_vulnerability_report for EVERY confirmed, exploitable finding.
|
|
261
|
+
|
|
262
|
+
Required evidence:
|
|
263
|
+
- poc_description: exact payload used + concrete output received
|
|
264
|
+
- poc_script_code: working Python/curl/bash script demonstrating exploitation
|
|
265
|
+
- technical_analysis: exact file path, line number, data flow description
|
|
266
|
+
- suggested_fix: corrected code snippet (parameterized query, safe API, sanitization)
|
|
267
|
+
|
|
268
|
+
DO NOT report:
|
|
269
|
+
- Unverified semgrep/bandit findings without manual confirmation
|
|
270
|
+
- "Potential" or "possible" issues without demonstrated exploitation
|
|
271
|
+
- Informational issues (version disclosure, missing headers) unless specifically requested
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## COMMON MISTAKES — AVOID THESE
|
|
276
|
+
|
|
277
|
+
WRONG: Run semgrep, copy its output as findings → REPORT ALL
|
|
278
|
+
RIGHT: Run semgrep, read flagged lines manually, trace data flow, exploit, then report
|
|
279
|
+
|
|
280
|
+
WRONG: "Found eval() at line 42 — this is RCE"
|
|
281
|
+
RIGHT: "Found eval(user_param) at line 42. user_param = request.args['cmd'].
|
|
282
|
+
Tested GET /?cmd=__import__('os').system('id') → returned 'uid=33(www-data)' in response body"
|
|
283
|
+
|
|
284
|
+
WRONG: Try to open /home/pikpikcu/.../workspace/src/ in execute
|
|
285
|
+
RIGHT: Use /workspace/<target>/uploads/ path (or whatever the FILE REFERENCE block shows)
|
|
286
|
+
|
|
287
|
+
WRONG: Report every bandit LOW finding
|
|
288
|
+
RIGHT: Focus on HIGH/MEDIUM severity + any hardcoded secrets
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## DEPENDENCY VULNERABILITY SCAN (BONUS — run after main analysis)
|
|
293
|
+
|
|
294
|
+
# Python
|
|
295
|
+
pip-audit -r <src_path>/requirements.txt --format=json > /workspace/<target>/output/pip_audit.json 2>/dev/null
|
|
296
|
+
safety check -r <src_path>/requirements.txt --json > /workspace/<target>/output/safety.json 2>/dev/null
|
|
297
|
+
|
|
298
|
+
# Node.js
|
|
299
|
+
cd <src_path> && npm audit --json > /workspace/<target>/output/npm_audit.json 2>/dev/null
|
|
300
|
+
|
|
301
|
+
# Ruby
|
|
302
|
+
cd <src_path> && bundle-audit check --update > /workspace/<target>/output/bundle_audit.txt 2>/dev/null
|
|
303
|
+
|
|
304
|
+
# Java (Maven)
|
|
305
|
+
cd <src_path> && mvn org.owasp:dependency-check-maven:check 2>/dev/null || true
|
|
306
|
+
|
|
307
|
+
Known CVEs in dependencies are worth reporting if the vulnerable functionality
|
|
308
|
+
is actually used in the codebase — confirm usage before reporting.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# sqlmap & ghauri — Usage Guide for AIRecon
|
|
4
|
+
|
|
5
|
+
sqlmap and ghauri are SQL injection testing tools. They are effective ONLY when pointed at a
|
|
6
|
+
specific, manually-confirmed injectable parameter. Running either against a root URL, an IP address,
|
|
7
|
+
or a randomly chosen endpoint without prior manual analysis is the definition of incompetent testing.
|
|
8
|
+
It produces false negatives, wastes time, and triggers WAF bans.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## MANDATORY PRE-CONDITIONS (All must be true before using sqlmap or ghauri)
|
|
13
|
+
|
|
14
|
+
[ ] You have manually browsed the application and identified a specific feature that interacts
|
|
15
|
+
with a database (e.g., search, login, product lookup, user profile, filter/sort functionality).
|
|
16
|
+
[ ] You have manually confirmed a specific URL and parameter (or POST body field) that:
|
|
17
|
+
a. Accepts user-controlled input
|
|
18
|
+
b. Shows evidence of server-side database interaction (e.g., different results for different
|
|
19
|
+
values, error messages mentioning SQL, response time anomalies on numeric inputs)
|
|
20
|
+
[ ] You have manually tested that parameter with at least one basic probe:
|
|
21
|
+
- A single quote: value' — does the response change or error?
|
|
22
|
+
- A boolean: value AND 1=1 vs value AND 1=2 — are responses different?
|
|
23
|
+
- A time probe: value; WAITFOR DELAY '0:0:5'-- or SLEEP(5) — is there a delay?
|
|
24
|
+
[ ] The specific URL+parameter combination is documented in your notes before running the tool.
|
|
25
|
+
[ ] output/host_profiles.json contains an entry for this host with the parameter listed as
|
|
26
|
+
a confirmed input vector.
|
|
27
|
+
|
|
28
|
+
Using sqlmap/ghauri against a bare URL with no parameter identified = TASK FAILURE.
|
|
29
|
+
Using sqlmap/ghauri as the FIRST tool run on a host = TASK FAILURE.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## How to Identify SQL Injection Candidates Manually
|
|
34
|
+
|
|
35
|
+
Before sqlmap touches anything, you must have found a candidate parameter. Methods:
|
|
36
|
+
|
|
37
|
+
1. BROWSER + SOURCE INSPECTION:
|
|
38
|
+
- Navigate the application as a user. Click everything. Fill every form.
|
|
39
|
+
- Look for: search bars, login forms, ID-based URLs (/user?id=5, /item/123),
|
|
40
|
+
filter parameters (?category=electronics&sort=price), report generators.
|
|
41
|
+
- In page source: look for inline SQL fragments, database error messages, numeric IDs
|
|
42
|
+
in hidden form fields or URL params.
|
|
43
|
+
|
|
44
|
+
2. MANUAL PROBE WITH CURL:
|
|
45
|
+
- For a parameter suspected to be SQL-backed, send:
|
|
46
|
+
curl "http://host/search?q=test'" (single quote — syntax error?)
|
|
47
|
+
curl "http://host/search?q=test AND 1=1" (tautology — same result as normal?)
|
|
48
|
+
curl "http://host/search?q=test AND 1=2" (contradiction — different/empty result?)
|
|
49
|
+
- Compare response sizes, content, and timing across these three requests.
|
|
50
|
+
- If behavior differs between AND 1=1 and AND 1=2: strong SQL injection signal.
|
|
51
|
+
|
|
52
|
+
3. HISTORICAL URL ANALYSIS:
|
|
53
|
+
- Parse output/historical_urls.txt for URLs with numeric or ID-style parameters.
|
|
54
|
+
- Prioritize parameters named: id, uid, user_id, product_id, item, page, order, ref,
|
|
55
|
+
category, sort, filter, q, search, query, token, hash.
|
|
56
|
+
|
|
57
|
+
4. CRAWLER OUTPUT FILTERING:
|
|
58
|
+
- Parse output/urls_all_deduped.txt for parameterized URLs.
|
|
59
|
+
- Use pattern matching to extract URLs with parameters before ANY scanner touches them.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Confirmed Candidate — Now Run sqlmap
|
|
64
|
+
|
|
65
|
+
Once you have a specific URL+parameter confirmed through manual probing:
|
|
66
|
+
|
|
67
|
+
Basic detection (start here):
|
|
68
|
+
sqlmap -u "http://host/path?param=VALUE" -p param --batch --level=1 --risk=1 \
|
|
69
|
+
--output-dir output/sqlmap/
|
|
70
|
+
|
|
71
|
+
If basic detection finds nothing, escalate carefully:
|
|
72
|
+
sqlmap -u "http://host/path?param=VALUE" -p param --batch --level=3 --risk=2 \
|
|
73
|
+
--output-dir output/sqlmap/
|
|
74
|
+
|
|
75
|
+
For POST body parameters:
|
|
76
|
+
sqlmap -u "http://host/login" --data "username=admin&password=test" -p username \
|
|
77
|
+
--batch --level=2 --output-dir output/sqlmap/
|
|
78
|
+
|
|
79
|
+
For JSON body parameters:
|
|
80
|
+
sqlmap -u "http://host/api/search" --data '{"query":"test"}' \
|
|
81
|
+
--headers "Content-Type: application/json" -p query --batch --output-dir output/sqlmap/
|
|
82
|
+
|
|
83
|
+
For cookie-based injection:
|
|
84
|
+
sqlmap -u "http://host/profile" --cookie "session=VALUE" -p session \
|
|
85
|
+
--level=2 --batch --output-dir output/sqlmap/
|
|
86
|
+
|
|
87
|
+
After confirming injection exists, extract database info:
|
|
88
|
+
sqlmap -u "<confirmed_injectable_url>" --dbs --batch --output-dir output/sqlmap/
|
|
89
|
+
|
|
90
|
+
ghauri (faster, WAF-evasive alternative — same pre-conditions apply):
|
|
91
|
+
ghauri -u "http://host/path?param=VALUE" --dbs --batch
|
|
92
|
+
|
|
93
|
+
NEVER use these patterns:
|
|
94
|
+
sqlmap -u "http://host/" --dbs (no parameter identified)
|
|
95
|
+
sqlmap -u "http://host:80" --dbs (root URL, no parameter, no evidence)
|
|
96
|
+
sqlmap -l output/live_hosts.txt (list input, no parameter context)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## WAF Evasion (Only After Confirming Injection Exists)
|
|
101
|
+
|
|
102
|
+
If a confirmed injection is being blocked by a WAF:
|
|
103
|
+
|
|
104
|
+
sqlmap -u "<url>" -p param --tamper=space2comment,randomcase --batch
|
|
105
|
+
sqlmap -u "<url>" -p param --tamper=between,charencode --batch
|
|
106
|
+
sqlmap -u "<url>" -p param --random-agent --delay=2 --batch
|
|
107
|
+
|
|
108
|
+
Use web_search "sqlmap tamper <WAF vendor>" to find vendor-specific tamper scripts.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Interpreting Results
|
|
113
|
+
|
|
114
|
+
"parameter appears to be injectable" — VERIFY MANUALLY before reporting.
|
|
115
|
+
Reproduce the detection payload manually with curl. Confirm the behavioral difference.
|
|
116
|
+
|
|
117
|
+
"fetched databases" or actual data returned — this is confirmed exploitation.
|
|
118
|
+
Document the exact injectable URL, parameter, injection type, and database output.
|
|
119
|
+
Write the reproduction curl command. THEN call create_vulnerability_report.
|
|
120
|
+
|
|
121
|
+
Empty results — do NOT escalate blindly. Consider:
|
|
122
|
+
- Is the parameter actually processed server-side (check response variance manually first)?
|
|
123
|
+
- Is there a WAF? Test for WAF with wafw00f before running sqlmap.
|
|
124
|
+
- Is the injection blind (time-based, OOB)? Requires --technique=T or --technique=U flags.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Workflow Integration (Where sqlmap Fits)
|
|
129
|
+
|
|
130
|
+
Phase 1 (Manual Profiling): DO NOT use sqlmap or ghauri.
|
|
131
|
+
Phase 2 (Attack Surface Expansion): DO NOT use sqlmap or ghauri.
|
|
132
|
+
Phase 3 (Business Logic & Auth Testing): sqlmap/ghauri valid ONLY if a specific parameter
|
|
133
|
+
has been manually confirmed as a database-backed SQL input vector during Phase 1-2 analysis.
|
|
134
|
+
Phase 4+ (Vulnerability Chaining): sqlmap/ghauri valid for confirmed candidates.
|
|
135
|
+
|
|
136
|
+
The correct sequence is always: observe -> identify candidate -> manually probe -> confirm -> then tool.
|
|
137
|
+
sqlmap confirms and exploits. It does not discover. Discovery is your job.
|