AWS Codebuild - Token Leakage
Recover Github/Bitbucket Configured Tokens
まず、漏洩する可能性のあるソースクレデンシャルが設定されているか確認します:
Dockerイメージを介して
例えばGithubへの認証がアカウントに設定されている場合、Codebuildを使用してプロジェクトのビルドを実行するための特定のDockerイメージを使用することで、そのアクセス(GHトークンまたはOAuthトークン)を流出させることができます。
この目的のために、新しい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からも以下のように実行できます
Via HTTP protocol
この脆弱性は2023年2月20日の週(おそらく金曜日)にAWSによって修正されました。そのため、攻撃者はもうこれを悪用できません :)
攻撃者がCodeBuild上で昇格された権限を持っている場合、設定されたGithub/Bitbucketトークンや、OAuthを介して権限が設定されている場合はコードにアクセスするために使用される一時的なOAuthトークンを漏洩させることができます。
攻撃者は環境変数http_proxyとhttps_proxyをCodeBuildプロジェクトに追加し、自分のマシンを指すように設定できます(例:
http://5.tcp.eu.ngrok.io:14972
)。
次に、githubリポジトリのURLをHTTPSではなくHTTPを使用するように変更します。例:**http://**github.com/carlospolop-forks/TestActions
その後、https://github.com/synchronizing/mitmの基本的な例を、プロキシ変数(http_proxyおよびhttps_proxy)で指定されたポートで実行します。
最後に、Build the projectをクリックすると、credentialsがクリアテキスト(base64)でmitmポートに送信されます:
これで攻撃者は自分のマシンからトークンを使用し、その特権をすべてリストし、CodeBuildサービスを直接使用するよりも簡単に(悪)用することができます。
Last updated