CVE-2023-42793
해당 취약점은 JetBrains TeamCity에서 사용하는 인증 예외처리 과정에서 발생한 인증 우회 취약점을 통해 원격명령실행(Remote Code Execution)이 가능한 취약점으로 예외 처리된 부분 중 경로가 와일드카드(/**)로 작성되어 의도하지 않은 경로까지 접근이 허용된 점을 이용하고 REST API를 활용하여 인증 우회 및 명령을 실행할 수 있습니다.
취약점이 발견된 JetBrains TeamCity는 Spring Framwork기반으로 제작되었으며 워크플로, 공동 작업이 가능한 프로그램으로 버전 관리와 이슈 트래킹이 가능한 통합 개발 환경을 제공합니다.
공격자는 특정 버전 이하의 JetBrains TeamCity가 설치된 경우 REST API를 사용하여 와일드카드로 예외 처리된 특정 경로에 접근함으로써 인증 우회 및 명령 실행이 가능합니다.
JetBrains TeamCity-2023-05.3이하
OS : Windows 10
Application : JetBrains TeamCity-2023.05.3
파이썬 코드를 통해 JetBrains TeamCity에 REST API로 작성된 Payload를 POST패킷으로 보내고, 취약한 모듈을 통해 피해 서버에서 명령을 실행하도록 합니다.
[CVE-2023-42793 POC – Python 코드 실행]
Python 코드 POC는 [서버IP]:8111 /app/rest/users/id:1/tokens/RPC2 경로에 접근하여 관리자 권한을 가진 토큰을 생성합니다. id가 1번인 이유는 초기 설치 시 관리자 id가 1번으로 설정되기 때문입니다. 그리고 /admin/dataDir.html?action=edit&fileName=config/internal.properties&content=에 접근하여 디버그 설정을 활성화 한 후 /app/rest/debug/processs?exePath=”[명령어]” Payload를 전달하여 명령을 실행합니다. 명령 실행 이후 공격에 사용된 토큰은 삭제합니다.
CVE-2023-42793 취약점 공격을 확인할 수 있는 로그는 TeamCity 설치 경로의 Log\teamcity-activities.log 파일에서 확인이 가능합니다. RCE 명령 사용 시 config\internal.properties 접근해서 설정을 변경하고 명령어를 사용하므로, 필터 값으로 config\internal.properties 값이 변경되고 ‘Command line: [명령어]’ 로그가 발견되면 CVE-2023-42793 취약점 공격으로 의심해볼 수 있습니다.
[teamcity-activities - 설정 변경 및 명령 실행 흔적]
[REST API - POST 패킷을 통해 토큰 생성]
[REST API - POST 패킷을 통해 디버깅 설정 변경]
[REST API - POST 패킷을 통해 명령어 전달]
[REST API – DELETE 패킷을 통해 생성한 토큰 삭제]
CVE-2023-42793 취약점은 REST API를 활용하여 쉽게 권한 상승 및 원격 명령 실행이 가능한 취약점입니다. 또한 로그인 페이지에서 버전 확인이 가능하여 낮은 버전인지 확인 후 바로 악용이 가능하기 때문에 공격자들이 활용할 가능성이 높은 취약점입니다. 따라서 낮은 버전의 TeamCity를 사용하고 있다면 취약점이 해결된 2023.5.4 버전으로 패치해야합니다.
취약점 공격 흔적 탐지 방안 정리
[출처]
https://nvd.nist.gov/vuln/detail/CVE-2023-42793
https://blog.jetbrains.com/teamcity/2023/09/cve-2023-42793-vulnerability-post-mortem
https://github.com/Zenmovie/CVE-2023-42793