> For the complete documentation index, see [llms.txt](https://ppn.snovvcra.sh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ppn.snovvcra.sh/pentest/infrastructure/devops/hashicorp-vault.md).

# HashiCorp Vault

## Basic API Examples

{% tabs %}
{% tab title="Auth" %}
{% code title="vault\_auth.sh" %}

```bash
#!/usr/bin/env bash
VAULT_ADDR="https://vault.megacorp.local"
ROLE_ID="00000000-0000-0000-0000-000000000000"
SECRET_ID="ffffffff-ffff-ffff-ffff-ffffffffffff"

TOKEN=$(curl -sX POST "${VAULT_ADDR}/v1/auth/approle/login" \
    --data "{\"role_id\": \"${ROLE_ID}\", \"secret_id\": \"${SECRET_ID}\"}" | jq -r .auth.client_token)

echo "[+] Vault Token: $TOKEN"
```

{% endcode %}
{% endtab %}

{% tab title="List Mounts (Engines)" %}
{% code title="vault\_list\_mounts.sh" %}

```bash
#!/usr/bin/env bash
VAULT_ADDR="https://vault.megacorp.local"
TOKEN="<X_VAULT_TOKEN>"

curl -sH "X-Vault-Token: ${TOKEN}" -X GET "${VAULT_ADDR}/v1/sys/mounts" | jq
```

{% endcode %}
{% endtab %}

{% tab title="List Path" %}
{% code title="vault\_list\_path.sh" %}

```bash
#!/usr/bin/env bash
VAULT_ADDR="https://vault.megacorp.local"
TOKEN="<X_VAULT_TOKEN>"

curl -sH "X-Vault-Token: ${TOKEN}" -X LIST "${VAULT_ADDR}/v1/${1}/metadata/" | jq
```

{% endcode %}
{% endtab %}

{% tab title="Get Secret" %}
{% code title="vault\_get\_secret.sh" %}

```bash
#!/usr/bin/env bash
VAULT_ADDR="https://vault.megacorp.local"
TOKEN="<X_VAULT_TOKEN>"

curl -sH "X-Vault-Token: ${TOKEN}" -X GET "${VAULT_ADDR}/v1/${1}/data/${2}" | jq
```

{% endcode %}
{% endtab %}

{% tab title="Revert Token" %}
{% code title="vault\_revert\_token.sh" %}

```bash
#!/usr/bin/env bash
VAULT_ADDR="https://vault.megacorp.local"
TOKEN="<X_VAULT_TOKEN>"

curl -sH "X-Vault-Token: ${TOKEN}" -X POST "${VAULT_ADDR}/v1/auth/token/revoke-self"
```

{% endcode %}
{% endtab %}
{% endtabs %}
