TravisCI Security

HackTricks 지원하기

TravisCI란 무엇인가

Travis CI는 여러 다양한 git 플랫폼에 호스팅된 소프트웨어 프로젝트를 빌드하고 테스트하는 데 사용되는 호스팅 또는 온프레미스 지속적 통합 서비스입니다.

Basic TravisCI Information

공격

트리거

공격을 시작하려면 먼저 빌드를 트리거하는 방법을 알아야 합니다. 기본적으로 TravisCI는 푸시 및 풀 리퀘스트에서 빌드를 트리거합니다:

크론 작업

웹 애플리케이션에 접근할 수 있다면 빌드를 실행할 크론을 설정할 수 있습니다, 이는 지속성을 위해 유용하거나 빌드를 트리거하는 데 사용할 수 있습니다:

내용에 따르면 .travis.yml 내에서 크론을 설정하는 것은 불가능한 것 같습니다.

제3자 PR

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 및 키를 확인할 수 있습니다:

TODO:

  • Windows/Mac/Linux에서 리버스 셸이 실행되는 예제 빌드

  • 로그에 base64로 인코딩된 환경 변수를 유출하는 예제 빌드

TravisCI 엔터프라이즈

공격자가 TravisCI 엔터프라이즈를 사용하는 환경에 도달하면(이것에 대한 더 많은 정보는 기본 정보에서 확인), 그는 Worker에서 빌드를 트리거할 수 있습니다. 이는 공격자가 해당 서버로 수평 이동할 수 있음을 의미하며, 그로부터 다음을 수행할 수 있습니다:

  • 호스트로 탈출할 수 있습니까?

  • 쿠버네티스를 타격할 수 있습니까?

  • 동일한 네트워크에서 실행 중인 다른 머신을 타격할 수 있습니까?

  • 새로운 클라우드 자격 증명을 타격할 수 있습니까?

참고 문헌

HackTricks 지원하기

Last updated