fastcms-v0.1.5代码审计

admin 2026-03-27 03:29:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文对Fastcmsv0.1.5进行了代码审计,发现两个主要安全问题:一是在使用MyBatis框架时,通过全局搜索定位到项目在orderby语句中直接拼接用户输入的orderBy参数,导致SQL注入漏洞,攻击路径为/fastcms/api/client/article/list;二是在文件上传功能中,服务器仅校验了目录名(dirName),而文件名(file.getOriginalFilename())未经任何过滤直接拼接,这允许攻击者通过构造包含…/的恶意文件名来突破目录限制,将文件上传至任意目录。 综合评分: 85 文章分类: 代码审计,WEB安全,渗透测试,应用安全,安全大事件


cover_image

fastcms-v0.1.5代码审计

信通云服 信通云服

信通云服

2026年3月18日 17:38 海南

Fastcms是一款基于SpringBoot前后端分离架构打造的插件化CMS系统,凭借高度模块化的设计实现了优秀的可扩展性与可维护性,可高效完成网站搭建与微信小程序开发,是构建微信营销类插件的理想底层平台。

一、SQL注入

查看项目加载的依赖、项目说明文档、全局搜索可以判断项目使用了MyBatis

当使用MyBatis框架时,在使用like、in、order by时不能使用预编译,可能就会使用${}直接拼接,全局搜索${定位可能存在漏洞的地方

分析存在sql直接拼接的情况,${ew.customSqlSegment}直接拼接到sql语句中

找到应用程序中调用pageArticle的地方,orderBy为可控参数,由于order by语句无法使用参数化查询,直接拼接用户输入会导致SQL注入

然后分析接口路由规则并定位目标路径,完整的路径为/fastcms/api/client/article/list

或者看注释信息,大概是与文章相关的功能点

添加orderBy参数,构造POC进行测试

二、文件上传

审计上传模板文件的源码发现,代码只对dirName做了路径校验

由于没有用户对上传的文件名进行校验,直接用file.getOriginalFilename()拼接文件保存路径

导致可以通过构造包含../的文件名,可以突破目录限制,将文件上传到任意目录


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:信通云服 信通云服 信通云服《fastcms-v0.1.5代码审计》

评论:0   参与:  0