JetBrains TeamCity 遠程命令執行分析

JetBrains TeamCity 是JetBrains開發的一款持續集成工具。在2020年1月9號公開了2018.2.4版本一個RCE漏洞的POC。CVE編號為CVE-2019-15039,根據POC分析出漏洞原理是teamcity 的rmi遠程對象可從smb服務器或者本地路徑訪問maven項目的pom.xml文件,採用mvn的exec:exec參數進行代碼執行。

一 原理分析

1、環境搭建

Smb服務器 \\\\192.168.105.135\\share\\pom.xml

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

目標機 192.168.105.140

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

Nmap掃描結果

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

可以看到54470端口的rmi服務綁定了teamcity-mavenServer對象

2、漏洞復現

從teamcity安裝目錄下引入需要的jar包

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

發送payload

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

通過wireshark抓包可以看到服務器已經向我們含有惡意pom.xml文件的smb服務器發送請求,然後讀取到本地,執行mvn 命令完成導入maven倉庫的任務。不過pom.xml文件是我們惡意構造的,所以是可以通過mvn exec:exec命令實現任意代碼執行

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

在任務管理器中可以看到起了一個system權限的calc進程,代表服務器已經成功執行了我們的命令

3、poc分析

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

進入execute方法

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

可以看到這裡利用反射獲得了maven類的doExecute方法,然後對方法進行了invoke,這裡就傳入了MavenExecutionRequest對象,其中的file就是我們的惡意pom.xml文件,goals就是maven的 exec:exec參數

繼續跟進doExecute方法

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

169行對request進行處理

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析
CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析

這裡就是從smb服務器獲取pom.xml的代碼,後面再對pom.xml文件進行解析,然後執行部署,漏洞也就發生在部署中,maven可以通過exec:exec實現執行命令。

二 總結

漏洞成因是teamcity將一個存在危險行為的對象綁定在了rmi端口,以至於攻擊者可以使用該對象對服務器發起攻擊。同時也知道了maven項目中pom.xml文件可控是可能導致代碼執行的。

三 修復意見

更新官方補丁或阻止匿名ip請求rmi端口。

參考地址:https://cxsecurity.com/issue/WLB-2020010067

本文僅限技術研究與討論,嚴禁用於非法用途。由於傳播、利用此文所提供的信息而造成的任何直接或者間接的後果及損失,均由使用者本人負責,安恆信息以及文章作者不為此承擔任何責任。安恆信息擁有對此文章的修改和解釋權,未經允許不得修改、增減內容,不得以任何方式將其用於商業目的。

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析
  • “智慧城市”正在崛起 網安威脅也隨之而來!

  • 新型惡意軟件JhoneRAT現身 頻繁針對中東地區

  • FBI要求蘋果解鎖槍擊案嫌疑人手機 特朗普呼籲蘋果應配合調查

  • 西澳大利亞州P&N銀行發生數據洩露 用戶信息被暴露

  • Facebook頁面中發現嚴重漏洞 可暴露網頁賬戶信息

CVE-2019-15039 | JetBrains TeamCity 远程命令执行分析


分享到:


相關文章: