『代码审计』记一次对某 CMS 代码审计

admin 2024年5月24日22:09:50评论17 views字数 1105阅读3分41秒阅读模式

点击蓝字 关注我们

日期:2024/05/24
作者:Corl7
介绍:对某cms开源版本代码审计。

0x00 前言

本次审计的是该cms是开源版本的,不是付费版本的。该cms采用Spring-boot+Freemarker+Shiro框架,由于该博客也是3年左右没有更新了,因此也是存在较多问题。

0x01 H2 JNDI注入漏洞

通过查看pom.xml,发现引入了h2

『代码审计』记一次对某 CMS 代码审计

并且在resource/application-h2.yml文件中开启了web显示,路径为/console

『代码审计』记一次对某 CMS 代码审计

使用JNDI-Injection生成一个ping dnslog的链子。

『代码审计』记一次对某 CMS 代码审计

复制1.8ldap的,粘贴进JDBC URL框中,Saved Settings选择Generic JNDI Data Source,并点击测试连接。

『代码审计』记一次对某 CMS 代码审计

dnslog成功接收到请求。

『代码审计』记一次对某 CMS 代码审计

0x02 Freemarker 模板注入漏洞

ThemeController中发现了一个上传接口,首先判断文件是否为空,然后判断后缀是否是.zip,如果都不满足,则调用BlogUtils.uploadTheme方法进行处理。

『代码审计』记一次对某 CMS 代码审计

按住Ctrl,使用鼠标左键点击uploadTheme,查看此方法。该方法首先获取系统所在路径,然后再获取模板上传路径,如果路径不存在的话进行创建,然后再判断上传的文件是否存在,如果不存在则进行解压,并删除压缩包。由此过程可以看出,并没有对压缩包内容进行校验,也没有对上传文件内容进行校验,因此可以上传一个恶意的zip文件。

『代码审计』记一次对某 CMS 代码审计

该接口位于主题管理的上传主题处。

『代码审计』记一次对某 CMS 代码审计

在源码中复制一个主题,并在index.ftl文件中,添加一个弹计算器的payload,并将全部文件进行压缩。

『代码审计』记一次对某 CMS 代码审计

点击上传主题,上传制作的zip文件,并启用该主题,访问博客首页,成功弹出计算器。

『代码审计』记一次对某 CMS 代码审计

0x03 Shiro权限绕过

查看pom.xml文件,发现引入了shiro1.4.0版本,该版本是存在Shiro721反序列化的,但是使用padding oracle攻击跑了好长时间都没有跑出来,于是没再继续跑。除了存在Shiro721反序列化漏洞,也是存在Shiro权限绕过漏洞的。

『代码审计』记一次对某 CMS 代码审计

抓取添加栏目功能的数据包,将cookie删除后,发送数据包后跳转到登录页面。

『代码审计』记一次对某 CMS 代码审计

直接在请求路径最后面添加/,直接绕过了权限认证请求成功,页面并没有发生跳转。

『代码审计』记一次对某 CMS 代码审计

返回页面查看,数据添加成功。

『代码审计』记一次对某 CMS 代码审计

0x04 总结

通过审计该cms,发现的主要问题都是一些组件存在的漏洞,而并非代码层面出现的问题。代码层面写的确实不错,很多地方都做了限制以及校验。

『代码审计』记一次对某 CMS 代码审计

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

点此亲启

原文始发于微信公众号(宸极实验室):『代码审计』记一次对某 CMS 代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月24日22:09:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『代码审计』记一次对某 CMS 代码审计http://cn-sec.com/archives/2774665.html

发表评论

匿名网友 填写信息