Apache Solr 远程命令执行漏洞复现
Apache Solr 远程命令执行漏洞
2019 年 8 月 1 日,Apache Solr 官方发布了 CVE-2019-0193 漏洞预警,漏洞危害评级为严重。
此次漏洞出现在 Apache Solr 的 DataImportHandler ,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的 DIH 配置都可以通过外部请求的 dataConfig 参数来设置。由于 DIH 配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。
360CERT 判断漏洞等级为高,建议 Apache Solr 用户及时升级以防止攻击者攻击。
POC
|
|
漏洞成因
该漏洞的产生是由于两方面的原因:
- 用户在
solrconfig.xml
文件中设置了DataImportHandler
,开启了DataImport
功能。 DataImportHandler
模块允许用户自己包含脚本,来进行配置。
攻击者可以通过构造恶意的脚本交由转换器进行解析,在Solr解析的过程中并未对用户的输入做检查,可导致攻击者远程在Solr服务器上执行命令。
环境搭建
solr部署
本环境采用docker部署
拉取镜像:docker pull solr: 8.1.1
启动容器:docker run –name solr -d -p 8983:8983 -t solr:8.1.1
访问 http://IP:8983/
,apache solr 框架部署完毕
开启DataImportHandler插件
新建core:
点击Add Core,solr系统报错。
然后执行:docker exec -it –user root solr /bin/bash,进入 solr 容器。
进入容器后,执行:
|
|
DataImportHandler 插件配置
将下面的 XML 添加到solrconfig.xml
中
|
|
注
:XML 的格式一定按照上述格式,否则会报错!
执行vim data-config.xml
,并将下面 XML 保存至该文件:
|
|
然后将 mysql-connector-java-5.1.48.jar
放入 /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
文件夹下
重启 solr
然后重启 solr:./opt/solr/bin/solr restart
至此,漏洞环境搭建完毕,搭建成功的截图如下:
漏洞测试
访问管理页面
浏览器访问:http://IP:8983/
开启 Debug 模式
将 poc 复制到 Configuration 中:
可在标注的地方更换受害机执行的命令,本文以反弹shell
为例。
开启监听
nc -lp 4567
执行命令
点击 Execute with this Configuration
执行成功可以发现shell已经成功反弹:
影响范围
- Apache Solr < 8.2.0
修复建议
- 将Apache Solr 升级至 8.2.0 或之后的版本