AWS Codebuild - Token Leakage
Github/Bitbucket에 구성된 토큰 복구
먼저, 유출할 수 있는 소스 자격 증명이 구성되어 있는지 확인하십시오:
Via Docker Image
만약 계정에 Github에 대한 인증이 설정되어 있다면, Codebuild가 프로젝트 빌드를 실행하기 위해 특정 도커 이미지를 사용하도록 하여 엑스필트레이트할 수 있습니다 액세스 (GH 토큰 또는 OAuth 토큰).
이를 위해 새 Codebuild 프로젝트를 생성하거나 기존 프로젝트의 환경을 변경하여 Docker 이미지를 설정할 수 있습니다.
사용할 수 있는 Docker 이미지는 https://github.com/carlospolop/docker-mitm입니다. 이는 env 변수 https_proxy
, http_proxy
및 **SSL_CERT_FILE
**을 설정하는 매우 기본적인 Docker 이미지입니다. 이를 통해 https_proxy
및 **http_proxy
**에 지정된 호스트의 대부분의 트래픽을 가로챌 수 있으며, **SSL_CERT_FILE
**에 지정된 SSL CERT를 신뢰할 수 있습니다.
자신의 Docker MitM 이미지를 생성하고 업로드
리포지토리의 지침에 따라 프록시 IP 주소를 설정하고 SSL 인증서를 설정한 후 도커 이미지를 빌드합니다.
메타데이터 엔드포인트에 대한 요청을 가로채지 않도록
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을 HTTPS 대신 HTTP를 사용하도록 변경합니다. 예: **http://**github.com/carlospolop-forks/TestActions
그런 다음, 프록시 변수(http_proxy 및 https_proxy)가 가리키는 포트에서 https://github.com/synchronizing/mitm의 기본 예제를 실행합니다.
마지막으로 Build the project를 클릭하면 credentials가 mitm 포트로 명확한 텍스트(base64)로 전송됩니다:
이제 공격자는 자신의 머신에서 토큰을 사용하여 모든 권한을 나열하고 CodeBuild 서비스를 직접 사용하는 것보다 더 쉽게 (악용)할 수 있습니다.
Last updated