代码审计 | 某商城系统

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

本文分析了某商城系统的代码漏洞,重点在环境搭建和漏洞审计。审计发现Fastjson、Log4j和Mybatis存在反序列化、远程代码执行和SQL注入等漏洞。通过代码追踪,确认了漏洞触发点,并提出了相应的安全隐患。

🎯

关键要点

  • 本文分析了某商城系统的代码漏洞,重点在环境搭建和漏洞审计。

  • 审计发现Fastjson、Log4j和Mybatis存在反序列化、远程代码执行和SQL注入等漏洞。

  • 环境搭建部分使用idea导入启动环境,下载源码。

  • 通过审计pom.xml文件,确认引入的第三方组件及其版本。

  • Fastjson版本1.2.58存在反序列化漏洞,触发点在ProductController.java文件的JSON.parseObject()方法。

  • Log4j版本2.10.0存在远程代码执行漏洞,触发点在AccountController.java文件的logger.info()方法。

  • Mybatis版本3.5.1未开启二级缓存,因此不存在远程代码执行漏洞。

  • 针对功能单点代码审计,发现SQL注入漏洞,使用$拼接SQL语句的情况存在。

  • XSS漏洞审计发现filter层没有防护XSS的代码,且使用的前端框架未提供防护机制。

  • 管理员头像上传功能存在任意文件上传漏洞的风险,需审计文件上传功能的实现。

  • 文章提供的技术信息仅供参考,读者需自行判断信息的时效性和适用性。

延伸问答

某商城系统中存在哪些主要的代码漏洞?

该系统中主要存在Fastjson的反序列化漏洞、Log4j的远程代码执行漏洞和Mybatis的SQL注入漏洞。

如何搭建某商城系统的审计环境?

环境搭建需要下载源码并使用IDEA导入启动环境,审计pom.xml文件以确认引入的第三方组件及其版本。

Fastjson的反序列化漏洞是如何触发的?

该漏洞通过ProductController.java文件中的JSON.parseObject()方法触发,具体是反序列化propertyJson参数。

Log4j的远程代码执行漏洞是如何被利用的?

攻击者可以通过修改管理员头像上传功能中的文件名,触发AccountController.java文件中logger.info()方法的漏洞。

Mybatis的SQL注入漏洞是如何存在的?

该漏洞存在于使用$拼接SQL语句的情况,具体在UserMapper.xml文件中发现了相关问题。

如何防护XSS漏洞?

防护XSS漏洞通常需要在filter层进行统一过滤,或使用前端框架自带的防护机制,但该项目未实现相关防护。

➡️

继续阅读