freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

JAVA代码审计1 · pb-cms(瀑布内容管理系统)
2023-09-13 15:48:01

0x01 CMS概况

pb-cms瀑布内容管理系统,采用SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 实现的内容管理系统(附带权限管理),是搭建博客、网站的不二之选,官方预览地址 https://www.puboot.com ,下载地址 https://gitee.com/LinZhaoguan/pb-cms 。

文章中审计的为该CMS早期的1.0版本,文章中的漏洞在2.0的版本中已修复。

0x02 Thymeleaf模板注入漏洞

查看配置文件和pom文件,系统使用的模板引擎为thymeleaf,在spring-boot-starter-thymeleaf 2.2.6.RELEASE版本中存在模板注入漏洞,在代码中全局搜索,BlogWebController.java中存在可以利用的漏洞点,thymeleaf模板注入的原理请自行百度。

1694586196_65015554951d2acb00d26.png!small?1694586197621

在bizThemeService.selectCurrent().getName()方法中追溯,功能为查找数据库内biz_theme表中的name字段,字段值为系统内正在使用的主题名称。

1694586502_65015686c2115040db7d3.png!small?1694586503743

后台主题信息中将主题的名称修改为

__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("calc").getInputStream()).next()}__::.x

1694586573_650156cd05f39ccf8d0da.png!small?1694586574202

填写payload后未能成功执行命令,调试发现此漏洞利用存在两处限制。

一、系统使用的redis缓存,需要删除其中的主题信息缓存,系统才会重新在数据库内读取新的值。

1694586801_650157b1a9d86787cbca2.png!small?1694586803622

二、biz_theme表中name字段的最大值为50字符,payload的字符数远大于50,为了漏洞触发需要将字符数调整为200 。

1694586898_6501581298dfe89131208.png!small?1694586899820

调整后重新访问主页,成功触发命令执行。

1694586951_650158475545eef9af113.png!small?1694586952998

0x03 shiro权限绕过漏洞

CMS使用的权限控制框架为shiro1.4.1,此版本中存在多个权限绕过cve,本次利用的漏洞为CVE-2020-1957,漏

# 漏洞 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录