迷你天猫商城漏洞审计
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
一、项目简介
迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。作为迷你天猫商城的核心组成部分之一,天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。
二、项目搭建
1、环境要求
1、Windows 10系统。
2、Java版本为1.8.0_261。
3、Mysql版本为5.7。我用的是PHPstudy集成的。
4、IDEA版本随意。
2、项目部署流程
然后使用source命令导入数据库。
然后启动环境。
三、代码审计:
1、第三方组件漏洞
本项目是基于Maven构建的。对于Maven项目,我们首先从pom.xml文件开始审计引入的第三方组件是否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。
本项目引入的组件以及组件版本整理如下。
2、组件漏洞
通过查看pom.xml文件中引入的第三方插件,且经过搜索查询,发现Fastjson、Log4j、Mybatis引入存在漏洞的版本,我们进一步验证是否存在漏洞。
3、Fastjson命令执行漏洞
本项目引入的Fastjson版本为1.2.58,该版本存在反序列化漏洞。
fastjson简介:
Fastjson是一个Java语言编写的高性能JSON处理器和序列化/反序列化库。它支持Java对象到JSON字符串的转换,以及JSON字符串到Java对象的转换。Fastjson具有以下特点:
高性能:Fastjson采用了一系列优化策略,如缓存、预编译等,使得它在JSON处理方面具有非常高的性能表现。
功能丰富:Fastjson支持多种JSON数据格式,如JSON对象、JSON数组、JSON字符串等。同时,它还支持自定义序列化和反序列化器,可以满足各种复杂的业务需求。
易用性:Fastjson的API设计简洁明了,易于使用。用户可以通过简单的几行代码就可以完成JSON数据的序列化和反序列化操作。
安全性:Fastjson采用了一系列安全策略,如防止JSON注入攻击等,保证了数据的安全性。
总之,Fastjson是一个功能强大、性能优异、易于使用的JSON处理器和序列化/反序列化库。
3.1 Fastjson反序列化简述:
Fastjson反序列化漏洞简单来说是出现在将JSON数据反序列化过程中出现的漏洞。
攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行。
寻找漏洞触发点
全局搜索两个关键字JSON.parseObject()和JSON.parse(),发现本项目存在JSON.parseObject()。
进入ProductController.java这个文件。
找到了问题代码,发现使用JSON.parseObject()方法反序列化了
propertyJson参数。
接着我们向上追踪propertyJson参数。
3.2 漏洞复现:
进入于所有产品-添加一件产品。
然后使用dnslog进行验证。
发现收到了回显。
也可以使用burp自带的dnslog进行验证。
4、Log4j命令执行漏洞
本项目引入的Log4j版本为2.10.0,该版本存在远程代码执行漏洞。
4.1 Log4j简述
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
4.2 漏洞简述:
由于Apache Log4j2某些功能存在递归解析,攻击者可在未经身份验证的情况下构造发送带有攻击语句的数据请求包,最终造成在目标服务器上执行任意代码。
其中涉及到的lookup的主要功能就是提供另外一种方式以添加某些特殊的值到日志中,以最大化松散耦合地提供可配置属性供使用者以约定的格式进行调用。
该组件漏洞主要发生在引入的log4j-core,log4j-api是不存在该问题的。log4j-core是源码,log4j-api是接口。
pom.xml文件引入Log4j组件情况如下图所示,引入了log4j-core,以及版本为2.10.0。
由于SprinBoot默认自带日志记录框架,一般不需要引入。
寻找漏洞触发点
全局搜索关键字logger。
进入
srcmainjavacomxqtmallcontrolleradminAccountController.java。该代码文件位于Controller层。
4.3 漏洞复现:
同样也可以使用burpsuite的dnslog进行漏洞验证。
也可以使用JDNI反弹shell。
5、Mybatis漏洞代码审计
本项目引入的Mybatis版本为3.5.1,该版本存在远程命令执行漏洞。
Mybatis < 3.5.6存在远程代码执行漏洞,CVE编号为CVE-2020-26945。
在满足以下三个条件的时候,攻击者可以触发远程代码执行:
1、用户启用了内置的二级缓存(默认不开启,需手动配置) 2、用户未设置JEP-290过滤器 3、攻击者找到了一种修改私有Map字段条目的方法,即修改org.apache.ibatis.cache.impl.PerpetualCache.cache有效的缓存密钥
所谓二级缓存,也就是将查询结果放到缓存中,下次查询时结果相同的话直接从缓存中获取结果。
经过探索srcmainresourcesmybatis下面的配置文件,本项目并未开启二级缓存。
Mybatis开启二级缓存语句
- 上一篇:实战 | 记一次不寻常的403绕过
- 下一篇:记一次校内站点的漏洞挖掘测试