TravisCI Security
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Travis CI는 여러 다양한 git 플랫폼에 호스팅된 소프트웨어 프로젝트를 빌드하고 테스트하는 데 사용되는 호스팅 또는 온프레미스 지속적 통합 서비스입니다.
Basic TravisCI Information공격을 시작하려면 먼저 빌드를 트리거하는 방법을 알아야 합니다. 기본적으로 TravisCI는 푸시 및 풀 리퀘스트에서 빌드를 트리거합니다:
웹 애플리케이션에 접근할 수 있다면 빌드를 실행할 크론을 설정할 수 있습니다. 이는 지속성을 위해 유용하거나 빌드를 트리거하는 데 사용할 수 있습니다:
이 내용에 따르면 .travis.yml
내에서 크론을 설정하는 것은 불가능한 것 같습니다.
TravisCI는 기본적으로 제3자에서 오는 PR과 환경 변수를 공유하는 것을 비활성화하지만, 누군가 이를 활성화하면 리포에 PR을 생성하고 비밀을 유출할 수 있습니다:
기본 정보 페이지에서 설명한 바와 같이, 비밀에는 2가지 유형이 있습니다. 환경 변수 비밀(웹 페이지에 나열됨)과 사용자 정의 암호화된 비밀이 있으며, 이는 .travis.yml
파일 내에 base64로 저장됩니다(두 가지 모두 암호화되어 저장되면 최종 머신의 환경 변수로 끝납니다).
환경 변수로 구성된 비밀을 나열하려면 프로젝트의 설정으로 가서 목록을 확인하세요. 그러나 여기에서 설정된 모든 프로젝트 환경 변수는 빌드를 트리거할 때 나타납니다.
사용자 정의 암호화된 비밀을 나열하려면 .travis.yml
파일을 확인하는 것이 최선입니다.
암호화된 파일을 나열하려면 리포에서 .enc
파일을 확인하거나, 구성 파일에서 openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
와 유사한 줄을 찾거나, 환경 변수에서 암호화된 iv 및 키를 확인할 수 있습니다:
Windows/Mac/Linux에서 리버스 셸이 실행되는 예제 빌드
로그에 base64로 인코딩된 환경 변수를 유출하는 예제 빌드
공격자가 TravisCI 엔터프라이즈를 사용하는 환경에 도달하면(이것에 대한 더 많은 정보는 기본 정보에서 확인), 그는 Worker에서 빌드를 트리거할 수 있습니다. 이는 공격자가 해당 서버로 수평 이동할 수 있음을 의미하며, 그로부터 다음을 수행할 수 있습니다:
호스트로 탈출할 수 있습니까?
쿠버네티스를 타격할 수 있습니까?
동일 네트워크에서 실행 중인 다른 머신을 타격할 수 있습니까?
새로운 클라우드 자격 증명을 타격할 수 있습니까?
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)