文章总结: 本文对Fastcmsv0.1.5进行了代码审计,发现两个主要安全问题:一是在使用MyBatis框架时,通过全局搜索定位到项目在orderby语句中直接拼接用户输入的orderBy参数,导致SQL注入漏洞,攻击路径为/fastcms/api/client/article/list;二是在文件上传功能中,服务器仅校验了目录名(dirName),而文件名(file.getOriginalFilename())未经任何过滤直接拼接,这允许攻击者通过构造包含…/的恶意文件名来突破目录限制,将文件上传至任意目录。 综合评分: 85 文章分类: 代码审计,WEB安全,渗透测试,应用安全,安全大事件
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代码审计》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论