微同商城小程序越权漏洞分析

文章详细描述了微同商城开源微信小程序的越权漏洞,漏洞出现在confirmOrder方法中,允许用户修改不属于自己的订单状态。作者提供了复现步骤和修复建议,强调了在处理用户订单操作时进行权限验证的重要性。
摘要由CSDN通过智能技术生成

微同商城小程序越权漏洞分析

去年八月份挖的,已获得CNVD编号,近期准备跳槽决定拿出来水一下。

项目介绍

微同商城是Gitee平台上建站系统中排名第一的开源微信小程序商城(前后端开源:uniapp+Java),拼团、秒杀、优惠券、积分购物、直播卖货、分销等功能。

项目地址

http://fly2you.cn/
https://gitee.com/fuyang_lipengjun/platform

环境搭建:

部署方案1:后台:http://doc.fly2you.cn/start
部署方案2:微信小程序+后台:https://mp.weixin.qq.com/s/leAe8mYv46AcUU8Bcn_ULg

部署+测试工具:
后台:idea+mysql+redis+tomcat
前台:微信官方开发者工具+postman

注意事项:
运行小程序需要配置platform-admin\src\main\resources\dev/platform.properties文件中的wx.appId、wx.secret、wx.mchId(支付功能需要)
涉及小程序测试账号的申请参考:https://mp.weixin.qq.com/

漏洞复现

缺陷代码位置:platform-api\src\main\java\com\platform\api\ApiOrderController
缺陷方法:confirmOrder
代码审计过程中,发现微信小程序中用户确认收货方法confirmOrder存在越权漏洞。越权漏洞源于用户确认收货的方法中涉及订单的主键orderId传递到了前台并且可控,缺陷代码如下:
在这里插入图片描述

跟进orderService.queryObject和orderService.update方法,发现未校验传入的orderId是否属于当前登录用户本身,因此存在越权漏洞。
在这里插入图片描述

1、使用微信开发者工具运行小程序,开启调试器。
在这里插入图片描述

2、进入 我的—>订单列表
在这里插入图片描述

3、点击待收货的订单,进入订单详情页面,再点击确认收货
在这里插入图片描述

4、刚才提到开启了调试器,可获取到确认收货方法的请求confirmOrder,如下
在这里插入图片描述

5、点击confirmOrder,右键选择 Copy - Copy as cURL (bash)
在这里插入图片描述

6、打开Postman(测试工具),在Postman 中选择 File—>Import —>Paste Raw Text,将复制的 cURL bash 命令粘贴进去,点击Continue再点击import完成导入。
在这里插入图片描述

7、选择Body,修改orderId的VALUE为20(非当前登录用户的)

备注1:当前小程序登录用户为测试员1号,为了证明越权漏洞的存在,将orderId的值替换为其他用户的,若执行成功,则证明漏洞存在。
备注2:本项目数据库nideshop_order表中默认只有一条id为20的数据,下图测试员1号的数据需要自己添加进去。
在这里插入图片描述
在这里插入图片描述

8、点击Send,Response返回确认收货成功。
在这里插入图片描述

9、登录后台管理系统,发现发货状态为已收货,越权漏洞复现完成!

在这里插入图片描述

修复建议

增加权限校验,即判断confirmOrder方法中传递的orderId是否属于当前登录用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微同商城是一个以Java进行开发的微信小程序商城源码。 减少重复造轮子,开源微信小程序商城(前后端开源:uniapp+Java),秒杀、优惠券、多商户、直播卖货、分销等功能。快速搭建一个属于自己的微信小程序商城。 实现功能: 一、会员管理 a、会员管理 b、会员等级 c、收货地址管理 d、会员优惠劵 e、会员收藏 f、会员足迹 g、搜索历史 h、购物车 二、商城配置 a、区域配置 b、商品属性种类 c、品牌制造商 d、商品规格 e、订单管理 f、商品类型 g、渠道管理 h、商品问答 i、反馈 j、关键词 三、商品编辑 a、所有商品 b、用户评论 c、产品设置 d、商品规格 e、商品回收站 四、推广管理 a、广告列表 b、广告位置 c、优惠劵管理 d、专题管理 e、专题分类 五、订单管理 a、所有订单管理 六、系统管理 a、管理员列表 b、角色管理 c、菜单管理 d、SQL监控 e、定时任务 f、参数管理 g、代码生成器 h、系统日志 i、文件上传 j、通用字典表 七、短信服务平台 a、配置短信平台账户信息 b、向外提供发送短信接口: 项目结构: platform |--platform-admin 后台管理 |--platform-api 微信小程序商城api接口 |--platform-common 公共模块 |--platform-framework 系统WEB合并,请打包发布此项目 |--platform-gen 代码生成 |--platform-mp 微信公众号模块 |--platform-schedule 定时任务 |--platform-shop 商城后台管理 |--uni-mall uniapp版商城 |--wx-mall 微信小程序原生商城 安装教程: 配置环境(推荐jdk1.8、maven3.3、tomcat8、mysql5.7、redis4.0.1) 创建数据库 依次初始化sql脚本 /_sql/platform.sql /_sql/sys_region.sql 导入项目到IDE中 导入支付证书至/platform-shop/src/main/resources/cert/目录下(申请商户号、开通微信支付、下载支付证书) 修改配置文件 /platform-admin/src/main/resources/dev/platform.properties jdbc.url jdbc.username jdbc.password wx.appId wx.secret wx.mchId wx.paySignKey wx.notifyUrl sms.validIp mp.appId mp.secret mp.token mp.aesKey 修改配置文件 /platform-admin/src/main/resources/j2cache.properties redis.hosts redis.password 启动redis服务 启动后台项目(参照开发文档) 打开微信开发者工具 导入 /wx-mall填写appId 修改 /wx-mall/config/api.js里API_BASE_URL的值 使用eclipse启动项目后默认访问路径 http://localhost:8080/platform-framework 使用idea启动项目后默认访问路径 http://localhost:8080 使用须知: 允许 个人学习使用 允许用于学习、毕设等 允许进行商业使用,请自觉遵守使用协议,如需要商业使用推荐购买商业版(进群联系群主) 请遵守、Apache、License2.0、协议,再次开源请注明出处   微同商城 v1.0.0 更新日志: 使用uniapp重构小程序端所有页面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值