HashiCorp Vault Pentesting

HashiCorp Vault pentesting techniques for identifying, exploiting secret management services, enumeration, attack vectors and post-exploitation insights.

port 8200

HashiCorp Vault

Default Port: 8200

HashiCorp Vault stores and brokers access to secrets, credentials, certificates, and encryption keys. In pentests, exposed Vault APIs, leaked tokens, weak policies, and unsafe auth methods can lead to large-scale credential exposure.

Connect​

HTTP API​

Unauthenticated endpoints reveal health, seal, and initialization state.

curl http://target.com:8200/v1/sys/health  
curl http://target.com:8200/v1/sys/seal-status  
curl -k https://target.com:8200/v1/sys/health  

Vault CLI​

The CLI validates token scope and normal operator workflows.

export VAULT_ADDR=http://target.com:8200  
vault status  
export VAULT_TOKEN=TOKEN  
vault token lookup  

Token Header​

Use X-Vault-Token to test leaked or provided tokens.

curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/auth/token/lookup-self  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/sys/mounts  

Recon​

Service Detection with Nmap​

Scan the Vault API port and TLS settings.

nmap -p 8200 -sV target.com  
nmap -p 8200 --script http-title,http-headers target.com  
nmap -p 8200 --script ssl-cert,ssl-enum-ciphers target.com  

UI Discovery​

The UI reveals login methods and operational state.

curl -i http://target.com:8200/ui/  
httpx -u http://target.com:8200 -title -tech-detect -status-code  
curl -I http://target.com:8200  

Health Review​

Health status shows whether Vault is active, standby, sealed, or uninitialized.

curl -s http://target.com:8200/v1/sys/health | jq  
curl -s http://target.com:8200/v1/sys/seal-status | jq  

Auth Method Discovery​

Auth methods show how users, apps, and machines authenticate.

curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/sys/auth | jq  
vault auth list  

Enumeration​

Token Lookup​

Token lookup reveals identity, policies, TTL, and orphan status.

vault token lookup  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/auth/token/lookup-self | jq  

Secret Engine Enumeration​

Mounted engines reveal where secrets, PKI, SSH, cloud, and database creds may exist.

vault secrets list  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/sys/mounts | jq  

Policy Enumeration​

Policies define what a token can read, write, or administer.

vault policy list  
vault policy read policy-name  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/sys/policies/acl | jq  

KV Enumeration​

KV engines often store static secrets and application configs.

vault kv list secret/  
vault kv get secret/app/config  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/secret/metadata/?list=true  

Audit Enumeration​

Audit devices show whether secret access is logged.

vault audit list  
curl -H "X-Vault-Token: TOKEN" http://target.com:8200/v1/sys/audit | jq  

Attack Vectors​

Leaked Vault Token​

Vault tokens are commonly found in env files, CI configs, and app configs.

rg -n 'VAULT_TOKEN|X-Vault-Token|vault token|vault_addr|VAULT_ADDR' .  
vault token lookup  

Overbroad Policy​

Policies with broad read, list, sudo, or wildcard paths expose secrets.

vault token capabilities secret/  
vault token capabilities secret/app/config  
vault policy read policy-name  

KV Secret Exposure​

KV paths may contain API keys, database passwords, and cloud credentials.

vault kv list secret/  
vault kv get secret/app/config  
vault kv get -format=json secret/app/config | jq  

AppRole Abuse​

Leaked RoleID and SecretID can authenticate machines or CI jobs.

vault write auth/approle/login role_id=ROLE_ID secret_id=SECRET_ID  
curl -X POST -d '{"role_id":"ROLE_ID","secret_id":"SECRET_ID"}' http://target.com:8200/v1/auth/approle/login  

Cloud Secret Abuse​

Cloud secret engines may generate valid cloud credentials.

vault read aws/creds/role-name  
vault read database/creds/role-name  

PKI Abuse​

PKI engines may issue certificates for sensitive names.

vault write pki/issue/role-name common_name=admin.internal ttl=1h  

Post-Exploitation​

Secret Inventory​

Document accessible mounts, policies, and paths.

vault secrets list > vault-mounts.txt  
vault policy list > vault-policies.txt  
vault token lookup > vault-token.txt  

Credential Review​

Review only scoped secrets and request rotation for exposed credentials.

vault kv get -format=json secret/app/config > vault-secret-sample.json  
grep -Ei 'password|secret|token|apikey|aws|jdbc|private' vault-secret-sample.json  

Audit Check​

Generate controlled reads and confirm they are logged.

vault kv get secret/pentest-log-check  
vault audit list  

Useful Tools​

Tool| Purpose
---|---
vault| Native CLI
curl| API testing
jq| JSON parsing
nmap| Port and TLS checks
httpx| UI fingerprinting
rg| Token searching

Security Misconfigurations​

Misconfiguration| Risk
---|---
Vault exposed broadly| Secret management attack surface
Leaked token| Direct secret access
Overbroad policies| Excessive secret read/write
Weak auth methods| Token issuance abuse
KV secrets unmanaged| Static credential exposure
PKI roles too broad| Unauthorized certificate issuance
Audit disabled| Secret access blind spots
Plain HTTP| Token capture risk