首页 > 其他分享 >新锋管理商城系统

新锋管理商城系统

时间:2024-09-03 22:21:54浏览次数:10  
标签:goods admin request 路径 系统 pageUtil 跳转 新锋 商城

ewbee-mall是一套电商系统,包括基础版本(Spring Boot+Thymeleaf)、前后端分离版本(Spring Boot+Vue 3+Element-Plus+Vue-Router 4+Pinia+Vant 4) 、秒杀版本、Go语言版本、微服务版本(Spring Cloud Alibaba+Nacos+Sentinel+Seata+Spring Cloud Gateway+OpenFeign+ELK)。 前台商城系统包含首页门户、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。 后台管理系统包含数据面板、轮播图管理、商品管理、订单管理、会员管理、分类管理、设置等模块。

pom.xml

![](/i/ll/?i=img_convert/3841d60a542abcd50a889c43be037754.png)

有用的基本就这个 mybatis容易存在SQL注入漏洞

SQL注入

使用mybatis的依赖

直接搜索 ${

<select id="findNewBeeMallGoodsList" parameterType="Map" resultMap="BaseResultMap">
  select
  <include refid="Base_Column_List"/>
  from tb_newbee_mall_goods_info
  <where>
    <if test="goodsName!=null and goodsName!=''">
      and goods_name like CONCAT('%','${goodsName}','%')
    </if>
    <if test="goodsSellStatus!=null and goodsSellStatus!=''">
      and goods_sell_status = #{goodsSellStatus}
    </if>
    <if test="startTime != null and startTime.trim() != ''">
      and create_time &gt; #{startTime}
    </if>
    <if test="endTime != null and endTime.trim() != ''">
      and create_time &lt; #{endTime}
    </if>
  </where>
  order by goods_id desc
  

跳转到NewBeeMallGoodsMapper.xml

参数 goodName

点击绿色小箭头

跳转到这里 点击 java文件

@Override
public PageResult getNewBeeMallGoodsPage(PageQueryUtil pageUtil) {
List<NewBeeMallGoods> goodsList = goodsMapper.findNewBeeMallGoodsList(pageUtil);
int total = goodsMapper.getTotalNewBeeMallGoods(pageUtil);
PageResult pageResult = new PageResult(goodsList, total, pageUtil.getLimit(), pageUtil.getPage());
return pageResult;
}

点击 getNewBeeMallGoodsPage 跳转

跳转到 controller 层 admin后台管理

先登录后台

在商品管理处找到接口

但是这里要自己添加参数上去

goodsName

/admin/goods/list?_search=false&nd=1725359475161&limit=20&page=1&sidx=&order=asc&goodsName=1

单引号报错

闭合正常

交给sqlmap

存在sql注入

权限绕过

后台系统身份验证拦截器 AdminLoginInterceptor.java 存在权限绕过漏洞。

漏洞代码位于:src/main/java/ltd/newbee/mall/interceptor/AdminLoginInterceptor.java

@Component
public class AdminLoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        String uri = request.getRequestURI();
        if (uri.startsWith("/admin") && null == request.getSession().getAttribute("loginUser")) {
            request.getSession().setAttribute("errorMsg", "请登陆");
            response.sendRedirect(request.getContextPath() + "/admin/login");
            return false;
        } else {
            request.getSession().removeAttribute("errorMsg");
            return true;
        }
    }

关键点是第 23 行,使用了 request.getRequestURI() 方法获取路径。如果使用该方法获取的路径进行权限判断是极易出现权限绕过漏洞的

<font style="color:#DF2A3F;">getRequestURI</font> 方法返回的路径是未经过服务器端处理的原始路径,可能包含特殊字符或路径跳转,从而绕过服务器端的安全控制。

第 24 行使用了 uri.startsWith(“/admin”) 判断 Uri 路径中是否以 /admin 开头,以及获取并判断 Session 中的 loginUser 属性是否为 null,两个条件&&在一起结果为 True 的话进入条件代码,提示需要登录并跳转到后台登录页面中。

既然这样,我们知道 a && b 需要两者都为 True 整体则为 True 才会进入条件判断代码中,如果另其中一个条件为 False 则整体就为 False,就不会进入条件判断中去了。

找一些特殊字符绕过路径判断,并且不影响整体接口

/1/../
//
/;/
URL编码

删除cookie之后就是直接从后台sql注入变成了前台sql注入

还有一个前台sql注入 也是一样的 。

标签:goods,admin,request,路径,系统,pageUtil,跳转,新锋,商城
From: https://blog.csdn.net/qq_52579508/article/details/141869587

相关文章

  • RBAC管理系统代码审计
    基于SpringBoot+SpringSecurity的RBAC管理系统项目地址:GitHub-witmy/my-springsecurity-plus:☕基于SpringBoot+SpringSecurity的RBAC管理系统,易读易懂......
  • 基于Java Springboot幼儿园管理系统
    一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse数据库:MySQL5.7数据库管理工具:Navicat10以上版本环境......
  • 基于Java Springboot药店管理系统
    一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse数据库:MySQL5.7数据库管理工具:Navicat10以上版本环境......
  • 达梦数据库的系统视图v$ifun_arg
    达梦数据库的系统视图v$ifun_arg在达梦数据库(DMDatabase)中,V$IFUN_ARG系统视图提供了关于存储函数(或存储过程)参数的详细信息。它是与函数参数相关的系统表,可以帮助数据库管理员和开发人员查看和管理数据库中所有函数参数的信息。使用场景参数管理:查看数据库中所有存......
  • 【读书笔记-《30天自制操作系统》-14】Day15
    本篇内容开始讲解多任务。本篇内容结构很简单,先讲解任务切换的原理,再讲解任务切换的代码实践。但是涉及到的知识不少,理解上也有些难度。1.任务切换与多任务原理1.1多任务与任务切换所谓多任务,指的是操作系统同时运行多个任务。但是这种说法实际上是不准确的。如果只有......
  • 基于协同过滤的电影推荐系统
    推荐系统已经成为当今互联网平台不可或缺的一部分,尤其是在电影、音乐和电子商务等领域。本文将带您深入探讨如何利用协同过滤算法,构建一个功能齐全的电影推荐系统。我们将结合Python、Django框架以及协同过滤算法,逐步实现这一目标。完整项目:基于协同过滤的电影推荐系统目......
  • 基于springboot高校毕业与学位资格审核系统(11174)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发......
  • 基于Java的小区物业管理系统设计与实现(11183)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 数据库系统 第33节 复杂查询优化
    复杂查询优化是数据库管理系统的优化器负责的一项关键任务,它涉及如何有效地处理那些包含多个表联接、子查询以及聚合函数的SQL语句。优化器的工作是生成一个执行计划,该计划尽可能高效地完成查询请求。下面我将简要介绍一些优化技巧及其背后的原理。索引使用索引可以极大地......
  • 数据库系统 第34节 数据库压缩
    数据库压缩是一种优化技术,它通过压缩数据库中的数据来减少所需的存储空间,并且可以加速数据的读取和写入操作(尤其是在带宽受限的情况下)。压缩通常是在数据写入磁盘之前执行,并在数据被读取到内存中之前解压。数据库管理系统(DBMS)通常提供不同的压缩选项,包括行级压缩和列级压缩......