
TeamCity IntelliJ IDEA 플러그인 자격 증명 가로채기
개념 증명 보고서 | 작업 흐름 분석 | 서버 스크립트
이것은 가짜 XML-RPC TeamCity 엔드포인트를 구축하여 CVE-2020-35667을 재현한 것입니다.
CVE-2020-35667은 IntelliJ IDE용 JetBrains TeamCity 플러그인의 SSRF 취약점입니다.
이전 TeamCity IntelliJ 플러그인은 서버에 공개 키를 요청하고, 이를 사용해 비밀번호를 암호화한 후 다시 보냅니다.
서버가 공격자에 의해 제어되므로, 공격자는 평문 자격 증명을 복호화하여 로그에 기록합니다.
이 취약점은 Jonathan Leitschuh가 보고했습니다. (https://blog.jetbrains.com/blog/2021/02/03/jetbrains-security-bulletin-q4-2020/).
이 취약점을 악용하면 플러그인 로그인 과정에서 공격자가 제어하는 XML-RPC 엔드포인트를 통해 평문 사용자 자격 증명이 가로채집니다.
이 문제를 재현하기 위한 제 환경은 다음과 같습니다:
IntelliJ IDEA Community Edition 2018.1.8
TeamCity 2020.2.1 (build 85633)
취약한 TeamCity IntelliJ 플러그인
TeamCity-IDEAplugin.zip;98aaaea4276f718c6c9cf3cb5383da1be6af9daa29e5b17fda8fa70d6bc1342fOS: Windows 10
Python 버전: 3.12.7
Python 요구 사항은 cve2020-35667/requirements.txt에 있습니다.
pip install -r requirements.txt
python poc_server.py
# Server listens on http://127.0.0.1:8888
http://127.0.0.1:8888을 입력하세요.예상 결과(취약한 경우): 사용자 자격 증명이 서버 콘솔에 기록됩니다.
안전한 경우의 예상 동작: 클라이언트가 서버 ID와 키의 진위를 검증하므로, 스푸핑된 엔드포인트에 자격 증명이 노출되지 않습니다.