Java审计之CMS中的那些反序列化漏洞

Java审计之CMS中的那些反序列化漏洞0x00前言过年这段时间比较无聊,找了一套源码审计了一下,发现几个有意思的点拿出来给分享一下。0x01XStream反序列化漏洞下载源码下来发现并

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java审计之CMS中的那些反序列化漏洞

0x00 前言

过年这段时间比较无聊,找了一套源码审计了一下,发现几个有意思的点拿出来给分享一下。

0x01 XStream 反序列化漏洞

下载源码下来发现并不是源代码,而是一个的文件夹,里面都已经是编译过的一个个class文件。

在一个微信回调的路由位置里面找到通过搜索类名 Serialize关键字找到了一个工具类,并且参数是可控的。

Java审计之CMS中的那些反序列化漏洞

Java审计之CMS中的那些反序列化漏洞

Java审计之CMS中的那些反序列化漏洞

Java审计之CMS中的那些反序列化漏洞

这里调用xstream.fromXML(xml)进行反序列化。

而下面这个看了一下lib文件夹下面的组件其实是有着cc cb等组件,并且这个组件的反序列化漏洞是在版本范围内。

Java审计之CMS中的那些反序列化漏洞

找到路由位置,发现访问页面的时候显示API 什么的错误。POC打过去没有任何响应。这个点弄了比较久没弄出来,暂且留着。

0x02 Shiro反序列化漏洞

上次的点没弄出来后,开始转换思路。再次从web.xml入手

Java审计之CMS中的那些反序列化漏洞

发现这里加载了一下配置文件,从中还发现了shiro的配置文件,前面还真没注意到。

Java审计之CMS中的那些反序列化漏洞

并且在lib的组件找到了这个shiro组件,但是发现这个是1.3版本的。而shiro 550漏洞的版本是在1.2.4,但是问题就来了,不在漏洞版本内就是不能打了嘛?其实不是的。

Shiro 1.2.4及之前的版本中,AES加密的密钥默认硬编码在代码里(SHIRO-550),Shiro 1.2.4以上版本官方移除了代码中的默认密钥,要求开发者自己设置,如果开发者没有设置,则默认动态生成,降低了固定密钥泄漏的风险。

回头再来看看上次分析的shiro550的细节

Java审计之CMS中的那些反序列化漏洞

这里key是定义在代码里面的,定义死的。

Java安全之Shiro 550反序列化漏洞分析

但是只要能找到他配置的密钥就能伪造Shiro的加密流程发送gadget进行反序列化,从而达到命令执行。

这里找到web.xml加载的这个配置文件翻找了一下还真找到了密钥。这里密钥配置的不是随机密钥。

Java审计之CMS中的那些反序列化漏洞

那么这里还需要找的一点是漏洞地址在哪里,也就是shiro作用于哪个地方,一般使用shiro都是将这些东西托管给shiro做权限控制,而在做权限控制的时候同时也需要配置到一些后台的登录地址,这里是从配置文件上方找到了这个地址。

Java审计之CMS中的那些反序列化漏洞

配置对应的key值拿到工具里面跑一下

Java审计之CMS中的那些反序列化漏洞

以上是xml文件的配置方式的审计方法,当然部分cms也会采用一个config类来进行配置。同理还是找到配置类然后看密钥

Java审计之CMS中的那些反序列化漏洞

这里Config配置Shiro的本地没环境,找了一个网上的图。

漏洞修复

其实修复起来也很简单,只需要使用随机密钥就好了。

 <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
        <property name="cipherKey" value="#{T(com.nova.framework.modules.sys.security.GenerateCipherKey).generateNewKey()}"></property>
    </bean>

0x03 结尾

整体的其实还是比较简单,但是在XStream这个洞里面远程调试的环境不知道为啥一直搭不好,不知道是环境问题还是啥,断点停不下来。总的来说其实还是有源代码审起来舒服,环境只要一搭建好就能本地调试下断点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119883.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle恢复几天前的数据,恢复oracle数据到以前的某个时间点

    oracle恢复几天前的数据,恢复oracle数据到以前的某个时间点今天下午发现oracle数据库的参数表不知道被谁执行的语句都没有加条件,所以整个数据都乱了,不能用,查到了一下午,找到了几个解决办法,记录在此。一、执行如下SQL将test_temp表中的数据恢复到2014052811:00:00注意,这里一定要先删除全部数据,否则可能会导致数据重复deletefromtest_tmp;insertintotest_tmpselect*fro…

    2022年7月17日
    16
  • 计算机等级二级java试题(计算机二级考试题库)

    第一章数据结构与算法【考点1】算法的基本概念1、算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。算法不等于程序,也不等于计算方法。2、算法的基本特征:1)确定性,算法中每一步骤都必须有明确定义,不允许有多义性;2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;3)可行性,算法原则上能够精确地执行;4)拥有足够的情报。3、算法的组成…

    2022年4月10日
    92
  • 电商接口测试用例_连连电商跨境

    电商接口测试用例_连连电商跨境按照两种模式进行划分总结:1.按照测试类型2.按照电子商务网站的系统架构1.按照测试类型来划分1.兼容性1.1主要是在浏览器兼容(360浏览器IE6IE8浏览器)12.操作系统,主要体现在操作系统兼容(xpwin2003win2007)2.UI测试2.1检查连接是否正确2.2是否有文字错误信息2.2产品价格是否有显示错误。3.用户体验测试UE3.1首页产品的展示与分类3.2搜索结果页,搜索…

    2022年9月28日
    3
  • 计算机键盘win键,win10键盘win键失灵怎么办_电脑win10win键没反应的解决方法

    计算机键盘win键,win10键盘win键失灵怎么办_电脑win10win键没反应的解决方法最近有朋友问小编win10键盘win键失灵怎么办,对于win10系统win键突然不能用的问题,相信很多朋友遇到过。有的朋友在升级完win10系统之后发现win10键盘win键失灵了,按下win键没反应,那么当我们遇到这种问题应该如何解决呢?别着急,小编这就为大家带来电脑win10win键没反应的解决方法。电脑win10win键没反应的解决方法:1、在Windows10系统桌面,右键点击任务栏的空白…

    2022年6月4日
    43
  • pycharm中文语言包下载不了_pycharm基本使用方法

    pycharm中文语言包下载不了_pycharm基本使用方法本文为原文转载PyCharmproforMac(编程开发软件)​www.mac69.com安装完成后运行,进行基本的配置后会弹出激活窗口,选择「Evaluateforfree」,然后点击「Evaluate」按钮。PyCharmproforMac(编程开发软件)安装完成后运行,进行基本的配置后会弹出激活窗口,选择「Evaluateforfree」,然后点击「Evaluate」按钮…

    2022年8月29日
    2
  • int、long、long long取值范围

    int、long、long long取值范围unsignedint0~4294967295int-2147483648~2147483647unsignedlong0~4294967295long-2147483648~2147483647longlong的最大值:9223372036854775807longlong的最小值:-9223372036854775808unsigned…

    2022年6月6日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号