近日,白帽汇安全研究院发现网络上出现针对Apache Solr服务器的远程代码执行漏洞。
该漏洞是在受影响的版本中,默认情况下配置文件solr.in.sh的配置选项ENABLE_REMOTE_JMX_OPTS字段值是“true”,这会启用JMX监视服务并会在公网中监听一个18983的RMI端口,没有任何认证。也就是说在无需身份验证情况下,攻击者结合使用JMX RMI就会造成远程代码攻击。
概况
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。
目前FOFA系统最新数据(一年内数据)显示全球范围内共有9147个Solr服务对外开放。美国使用数量最多,共有3431个,中国第二,共有1427个,德国第三,共有866个,爱尔兰第四,共有450台,法国第五,共有312个。
全球范围内Solr服务分布情况如下(仅为分布情况,非漏洞影响情况)
中国大陆地区浙江省使用数量最多,共有739个,北京市第二,共有264个,广东省第三,共有63个,江苏省第四,共有41个,上海市第五,共有28个。
危害等级
严重
漏洞原理
在开放的端口上,利用 javax.management.loading.MLet的getMBeansFromURL 方法来加载一个远端恶意的 MBean,就可以造成远程代码执行了。
漏洞复现
JMX远程连接,需要注意的是,在配置文件solr.in.sh中取消注释SOLR_HOST="ip地址",ip地址是可以远程访问。
如下命令是指:在本地8081端口开放web服务,其中恶意的html文件是MBean内容,内容中有指定下载的jar包。在JMX服务连接到攻击者的Web服务后就可以下载安装MBean了,默认密码为super_secret。
在上面命令成功执行后(上面的响应结果),可以借助下面命令执行系统命令。
漏洞影响
适用于Linux的Solr 8.1.1和8.2.0
CVE编号
CVE-2019-12409
修复建议
配置文件solr.in.sh的配置选项ENABLE_REMOTE_JMX_OPTS值改为“false“,然后重启。
该配置文件在docker中的存放位置:/etc/defaults
参考
[1] https://lucene.apache.org/solr/news.html
[2] https://nvd.nist.gov/vuln/detail/CVE-2019-12409
[3] https://www.mail-archive.com/solr-user@lucene.apache.org/msg148446.html
[4] https://www.n0tr00t.com/2015/04/17/JMX-RMI-Exploit-Demo.html
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。