AWS Codebuild - Token Leakage
Github/Bitbucket 구성된 토큰 복구
먼저, 누출할 수 있는 소스 자격 증명이 구성되어 있는지 확인하세요:
도커 이미지를 통해
만약 권한 부여가 예를 들어 Github에 설정되어 있다면, 프로젝트의 빌드를 실행하기 위해 Codebuild가 특정 도커 이미지를 사용하도록 설정하여 해당 **액세스(GH 토큰 또는 OAuth 토큰)**를 유출할 수 있습니다.
이를 위해 새로운 Codebuild 프로젝트를 생성하거나 기존 프로젝트의 환경을 변경하여 도커 이미지를 설정할 수 있습니다.
사용할 수 있는 도커 이미지는 https://github.com/carlospolop/docker-mitm입니다. 이는 https_proxy
, http_proxy
, SSL_CERT_FILE
환경 변수를 설정하는 매우 기본적인 도커 이미지입니다. 이를 통해 https_proxy
및 **http_proxy
**에 지정된 호스트의 대부분의 트래픽을 가로챌 수 있으며 **SSL_CERT_FILE
**에 지정된 SSL CERT를 신뢰할 수 있습니다.
자체 Docker MitM 이미지 생성 및 업로드
저장소 지침을 따라 프록시 IP 주소를 설정하고 SSL 인증서를 설정하고 도커 이미지를 빌드합니다.
메타데이터 엔드포인트로의 요청을 가로채지 않도록
http_proxy
를 설정하지 마십시오.호스트에 프록시를 설정하기 위해
ngrok tcp 4444
와 같은 **ngrok
**을 사용할 수 있습니다.도커 이미지를 빌드한 후, 해당 이미지를 공개 저장소(Dockerhub, ECR...)에 업로드합니다.
환경 설정
새로운 Codebuild 프로젝트를 생성하거나 기존 프로젝트의 환경을 수정합니다.
프로젝트가 이전에 생성된 도커 이미지를 사용하도록 설정합니다.
호스트에서 MitM 프록시 설정
Github 저장소에서 제안된대로 다음과 같은 것을 사용할 수 있습니다:
mitmproxy 버전은 9.0.1을 사용했으며, 버전 10에서는 작동하지 않을 수 있다고 보고되었습니다.
빌드를 실행하고 자격 증명을 캡처합니다
Authorization 헤더에서 토큰을 볼 수 있습니다:
이 작업은 aws cli에서도 다음과 같이 수행할 수 있습니다
HTTP 프로토콜을 통해
이 취약점은 2023년 2월 20일 주간 중 어딘가에서 AWS에 의해 수정되었습니다 (아마도 금요일에). 따라서 공격자는 더 이상 악용할 수 없습니다 :)
CodeBuild에서 권한이 상승된 공격자는 구성된 Github/Bitbucket 토큰을 유출할 수 있거나 권한이 OAuth를 통해 구성된 경우 코드에 액세스하는 데 사용된 임시 OAuth 토큰을 유출할 수 있습니다.
공격자는 CodeBuild 프로젝트에 환경 변수 http_proxy 및 https_proxy를 추가하여 자신의 기기를 가리키도록 할 수 있습니다 (예:
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의 기본 예제를 실행합니다.
마지막으로 프로젝트 빌드를 클릭하면 자격 증명이 mitm 포트로 평문으로 전송됩니다 (base64):
이제 공격자는 자신의 기기에서 토큰을 사용하여 모든 권한을 나열하고 CodeBuild 서비스를 직접 사용하는 것보다 쉽게 (남용)할 수 있습니다.
最終更新