AWS Codebuild - Token Leakage
恢复 Github/Bitbucket 配置的令牌
首先,检查是否配置了任何源凭据,以便您可以泄露:
通过 Docker 镜像
如果你发现例如 Github 的认证已在账户中设置,你可以通过让 Codebuild 使用特定的 docker 镜像 来运行项目的构建,从而 提取 该 访问 (GH token 或 OAuth token)。
为此,你可以 创建一个新的 Codebuild 项目 或更改现有项目的 环境 以设置 Docker 镜像。
你可以使用的 Docker 镜像是 https://github.com/carlospolop/docker-mitm。这是一个非常基础的 Docker 镜像,它将设置 环境变量 https_proxy
、http_proxy
和 SSL_CERT_FILE
。这将允许你拦截在 https_proxy
和 http_proxy
中指示的主机的大部分流量,并信任在 SSL_CERT_FILE
中指示的 SSL 证书。
创建并上传你自己的 Docker MitM 镜像
按照仓库的说明设置你的代理 IP 地址并设置你的 SSL 证书,然后 构建 docker 镜像。
不要设置
http_proxy
以避免拦截对元数据端点的请求。你可以使用
ngrok
,例如ngrok tcp 4444
来将代理设置为你的主机。一旦你构建了 Docker 镜像,将其上传到公共仓库(Dockerhub, ECR...)。
设置环境
创建一个 新的 Codebuild 项目 或 修改 现有项目的环境。
设置项目使用 之前生成的 Docker 镜像。
在你的主机上设置 MitM 代理
如 Github 仓库 中所示,你可以使用类似的命令:
使用的 mitmproxy 版本是 9.0.1,据报告,版本 10 可能无法正常工作。
运行构建并捕获凭证
您可以在 Authorization 头中看到令牌:
这也可以通过 aws cli 以类似的方式完成
通过HTTP协议
此漏洞在2023年2月20日那一周的某个时候被AWS修复(我认为是在星期五)。因此攻击者无法再利用它了 :)
具有在CodeBuild中提升权限的攻击者可能会泄露配置的Github/Bitbucket令牌,或者如果权限是通过OAuth配置的,则用于访问代码的临时OAuth令牌。
攻击者可以将环境变量http_proxy和https_proxy添加到指向其机器的CodeBuild项目中(例如
http://5.tcp.eu.ngrok.io:14972
)。
然后,将github仓库的URL更改为使用HTTP而不是HTTPS,例如:**http://**github.com/carlospolop-forks/TestActions
然后,在代理变量(http_proxy和https_proxy)指向的端口上运行https://github.com/synchronizing/mitm中的基本示例。
最后,点击 Build the project,凭证将以 明文(base64)发送到 mitm 端口:
现在攻击者将能够从他的机器上使用令牌,列出它拥有的所有权限,并且比直接使用 CodeBuild 服务更容易(滥用)。
Last updated