hunt-cicd

Detect and validate CI/CD pipeline vulnerabilities across Jenkins, GitHub Actions, GitLab CI, and Terraform state.

1|Updated Aug 21, 2026
One-click install
npx skills add https://github.com/marcboggs/BMAD-AppSec-Orchestrator --skill hunt-cicd-marcboggs
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hunt-cicd
Source: https://github.com/marcboggs/BMAD-AppSec-Orchestrator/tree/main/.claude/skills/hunt-cicd
Command: npx skills add https://github.com/marcboggs/BMAD-AppSec-Orchestrator --skill hunt-cicd-marcboggs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Security testers often over-report CI/CD findings because exposed dashboards and workflows look exploitable but are not. This Skill provides a structured methodology to find real CI/CD vulnerabilities — Jenkins script console RCE, GitHub Actions pull_request_target injection, self-hosted runner poisoning, OIDC trust-policy abuse, and Terraform state leakage — and prove each one with concrete validation before reporting. ## Core Features & Use Cases - Jenkins Exploitation & Validation: Fingerprint versions via X-Jenkins headers, test unauthenticated script consoles, exploit CVE-2024-23897 CLI file read, and dump the credential store with Groovy. - GitHub Actions Attack Paths: Identify Pwnrequest (pull_request_target) injection, ${{ }}-into-shell template injection, self-hosted runner poisoning, OIDC trust-policy abuse, and cache poisoning, with recon via gh CLI, actionlint, and zizmor. - Secrets & State Leakage: Hunt secrets in pipeline logs, artifacts, Docker image layers (trufflehog --only-verified), and public Terraform state files with jq-based live-credential confirmation. - Use Case: During a bug bounty engagement against an org with a public GitHub presence and an exposed Jenkins instance, use this Skill to enumerate dangerous workflows, confirm an injectable sink with an out-of-band Collaborator callback, and produce a validated Critical finding instead of a false positive. ## Quick Start Use the hunt-cicd skill to assess the target organization's GitHub workflows and exposed Jenkins instance for exploitable CI/CD vulnerabilities, validating each finding before reporting.

Frequently Asked Questions about hunt-cicd

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test GitHub Actions for pull_request_target injection?▼

Enumerate workflows using pull_request_target or workflow_run triggers, then check whether untrusted github.event data flows into a shell run step or whether the workflow checks out the PR head and runs build scripts. Confirm blind injection with a Burp Collaborator or interactsh callback before reporting.

How do I exploit Jenkins script console for RCE?▼

Probe /script and /scriptText endpoints, then POST a Groovy script such as println "id".execute().text. Only a response returning your command output proves unauthenticated RCE; a login or 403 page is not a finding.

What is CVE-2024-23897 and how do I validate it?▼

CVE-2024-23897 is a pre-auth arbitrary file read in Jenkins CLI (versions up to 2.441 / LTS 2.426.2) via args4j @-file expansion. Validate by reading /etc/passwd through jenkins-cli.jar and confirming real file content appears in the error response.

Does a public Terraform state file count as a vulnerability?▼

Not automatically. A tfstate HTTP 200 is only a finding if parsing it with jq reveals at least one live credential such as a password, private key, or access key. State containing only resource IDs and ARNs is not a secret leak.

Why do CI/CD findings get rejected as false positives?▼

Common false positives include Jenkins login pages reported as unauth RCE, pull_request_target workflows where untrusted input never reaches a sink, and unverified trufflehog hits on expired keys. Each finding needs demonstrated impact, such as a Collaborator callback or an authenticated API call.

Can I detect GitHub Actions misconfigurations statically?▼

Yes. Run actionlint or zizmor against .github/workflows to flag template-injection and dangerous-checkout patterns before opening any test PR. This triages candidates so dynamic testing focuses on genuinely exploitable workflows.