深入解析HashiCorp Vault中的身份验证漏洞
发布时间:2022-08-04 11:26:17 所属栏目:安全 来源:互联网
导读:在上一篇文章中,我们为读者介绍了Vault的身份验证架构,以及冒用调用方身份的方法,在本文中,我们将继续为读者介绍冒用调用方身份以及利用Vault-on-GCP的漏洞的过程。 使用有效签名的JWT向该操作发送请求,将返回SubjectFromWebIdentityToken字段中的令牌
![]() 在上一篇文章中,我们为读者介绍了Vault的身份验证架构,以及冒用调用方身份的方法,在本文中,我们将继续为读者介绍冒用调用方身份以及利用Vault-on-GCP的漏洞的过程。 使用有效签名的JWT向该操作发送请求,将返回SubjectFromWebIdentityToken字段中的令牌的sub字段。 当然,一个正常的OIDC供应商是不会在主题字段中给带有XML有效载荷的JWT进行签名的。不过,攻击者只要直接创建自己的OIDC身份供应商(IdP),并将其注册到自己的AWS账户上,然后就可以用自己的密钥对任意的令牌进行签名了。 让我们把这一切放在一起,就可以搞定整个攻击过程: 创建一个OIDC IdP。实际上,就是生成一个RSA密钥对,创建一个OIDC discovery.json和key.json文档,并将json文件托管在Web服务器上(参见这里,这是使用S3的设置示例)。 使用自己的AWS账户注册一个OID IdP -> AWS IAM角色映射。需要注意的是,这里的AWS账户不需要与我们的目标有任何关系。 现在,就可以使用我们的OIDP给一个JWT进行签名了,其中可以放入任意的GetCallerIdentityResponse,只要将其作为主题声明的一部分即可。解码后的示例令牌可能是这样的:iss、azp和aud与步骤2中指定的细节是完全匹配的。其中,sub中包含我们的伪造的响应,从而将我们识别为AWS IAM账户arn:aws:iam::superprivileged-aws-account。 复制 {'iss': 'https://oidc-test-wrbvvljkzwtfpiikylvpckxgafdkxfba.s3.amazonaws.com/', 'azp': 'abcdef', 'aud': 'abcdef', 'sub': '', 'exp': 1595120834, 'iat': 1594207895} 我们可以使用步骤3中的(已经签名的)令牌和步骤2中使用的RoleArn直接向STS AssumeRoleWithWebIdentity操作发送请求,以测试所有设置是否正确: 复制 curl -H "Accept: application/json" 如果一切按计划进行,STS将把令牌主题反映为其JSON编码响应的一部分。如上所述,Go XML解码器将跳过GetCallerIdentityResponse对象前后的所有内容,从而使Vault认为这是一个有效的STS CallerIdentity响应。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |