Find and loot exposed container registries — image pull/push, secrets baked in layers, and registry misconfig. Load on exposed Docker registry (port 5000, /v2/), a registry URL, harbor/ECR/ GCR/ACR references, or "container registry". Signals: /v2/_catalog, registry:2, unauth pull/push.
Pro shows the line behind each finding and how to fix it
Scanned 9/22/2026
npx -y skills add NoorQureshi/SploitAgent --skill cloud-docker-registry --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cloud Docker Registry?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/noorqureshi-cloud-docker-registry)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: cloud-docker-registry
description: >
Find and loot exposed container registries — image pull/push, secrets baked in layers, and
registry misconfig. Load on exposed Docker registry (port 5000, /v2/), a registry URL, harbor/ECR/
GCR/ACR references, or "container registry". Signals: /v2/_catalog, registry:2, unauth pull/push.
domain: cloud
type: technique
stability: learning
modes: [bugbounty, pentest]
severity: high
owasp: [A05:2021-Security-Misconfiguration]
cwe: [CWE-522, CWE-306]
mitre: [T1525, T1552.001]
tools: [docker, crane, curl, trufflehog]
schema_version: 1
---
# Exposed container registry
## When it applies
A Docker/OCI registry is reachable — a self-hosted registry (`:5000`, `/v2/`), or a cloud one
(ECR/GCR/ACR/Harbor) with weak auth. Images are goldmines: source, configs, and baked-in secrets.
## Why it works
Registries are often deployed without auth ("internal only") or with over-broad pull access. Image
layers preserve everything added at build time — `.env` files, cloud keys, private source,
tokens — even if a later layer deletes them, earlier layers keep them.
## Method
1. **Detect & enumerate**: `curl -s https://registry:5000/v2/_catalog` (repo list) and
`.../v2/<repo>/tags/list`. `registry:2` banner / an unauth `/v2/` = exposed.
2. **Pull images**: `docker pull registry:5000/<repo>:<tag>` or `crane pull` (no docker daemon).
Anonymous pull of private images is the finding.
3. **Mine layers for secrets**: `crane export`/`docker save` then scan with `trufflehog filesystem`
/ grep for keys, `.env`, kubeconfig, cloud creds (→ validate with `code-review-secrets-detection`).
4. **Push (critical)**: if anonymous/weak push works, you can poison images (supply-chain) — prove
with a harmless tag, don't tamper real images.
5. **Cloud registries**: test misconfigured ECR/GCR/ACR policies; leaked registry creds → pull private images.
## Gotchas
- Scan *all* layers/history, not just the final image — secrets hide in intermediate layers.
- Anonymous **push** is critical (supply-chain); anonymous **pull** of private images is high — rate accordingly.
- Only pull what proves the issue; images can be large and contain real data — handle carefully.
## Verify success
Anonymous/unauthorized pull of a private image, a live secret extracted from its layers, or a
successful (harmless) push proving write access.
## References
Docker registry API docs; crane/trufflehog; "hacking Docker registries" write-ups.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!