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