TravisCI Security

Support HackTricks

What is TravisCI

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

Basic TravisCI Information

Attacks

Triggers

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

Cron Jobs

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

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

Third Party PR

TravisCI는 기본적으로 타사에서 오는 PR과 환경 변수를 공유하지 않도록 설정되어 있지만, 누군가 이를 활성화하면 PR을 생성하여 비밀을 유출할 수 있습니다:

Dumping Secrets

기본 정보 페이지에서 설명한 것처럼, 두 가지 유형의 비밀이 있습니다. 환경 변수 비밀(웹 페이지에 나열됨)과 사용자 정의 암호화 비밀(base64로 .travis.yml 파일에 저장됨)이 있습니다. (두 가지 모두 암호화되어 최종 머신에서는 환경 변수로 끝납니다).

  • 환경 변수로 구성된 비밀을 열거하려면 프로젝트설정으로 이동하여 목록을 확인하세요. 그러나 여기 설정된 모든 프로젝트 환경 변수는 빌드를 트리거할 때 나타납니다.

  • 사용자 정의 암호화 비밀을 열거하려면 .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 Enterprise

공격자가 TravisCI enterprise를 사용하는 환경에 도달하면 (더 많은 정보는 기본 정보에서 확인 가능), Worker에서 빌드를 트리거할 수 있습니다. 이는 공격자가 해당 서버로 측면 이동할 수 있음을 의미하며, 이를 통해 다음을 수행할 수 있습니다:

  • 호스트로 탈출?

  • 쿠버네티스 손상?

  • 동일 네트워크에서 실행 중인 다른 머신 손상?

  • 새로운 클라우드 자격 증명 손상?

References

Support HackTricks

Last updated