实战解析:三大电商系统业务逻辑支付漏洞靶场复现(dami、niushop、cmseasy)

张开发
2026/4/13 23:50:12 15 分钟阅读

分享文章

实战解析:三大电商系统业务逻辑支付漏洞靶场复现(dami、niushop、cmseasy)
1. 电商支付漏洞实战背景最近在测试dami、niushop、cmseasy这三个电商系统时发现了几个有意思的业务逻辑漏洞。这些漏洞看似简单但危害性不小攻击者能轻松实现0元购甚至反向提现。我花了三天时间在本地靶场复现了这些漏洞下面就把详细过程和防御建议分享给大家。业务逻辑漏洞不同于SQL注入、XSS这些传统漏洞它往往是由于系统设计时的逻辑缺陷导致的。比如商品数量可以输入负数、价格能被前端随意修改等。这类漏洞在渗透测试中很容易被忽视但造成的损失可能比传统漏洞更直接。2. dami系统漏洞复现2.1 环境准备首先从提供的网盘链接下载dami_5.4的安装包解压后部署到本地PHP环境。我用的PHP版本是7.4MySQL是5.7。安装过程很常规按提示配置数据库就行。注册一个测试账号后我发现了两个高危漏洞2.2 直接修改商品数量随便点开一个商品详情页在购买数量输入框里把默认的1改成-1神奇的事情发生了 - 订单总金额显示为-6000元随便填个收货地址选择站内扣款提交订单到在线充值-我要提现页面一看账户余额真的多了6000元这个漏洞的原理是系统没有对商品数量做负值校验导致负负得正的异常情况。更严重的是系统允许负金额订单使用站内余额支付形成了完整的攻击链条。2.3 BurpSuite抓包修改用新注册的账号测试第二种攻击方式用BurpSuite拦截购买请求尝试修改price[]参数为1系统提示余额不足看来价格校验是有的转而修改商品数量为-10放行数据包后订单成功生成检查账户余额竟然增加了60000元这个案例告诉我们仅校验价格是不够的关键业务参数都需要做完整性校验。dami系统的问题在于前端输入框没有限制负数后端没有对关键参数做二次校验支付逻辑存在设计缺陷3. niushop系统漏洞分析3.1 环境配置niushop的安装包解压后需要先访问127.0.0.1/niushop/admin进入后台。默认管理员账号admin/123456记得安装后要修改。我在测试时发现了更离谱的漏洞3.2 0元购实现前台注册普通用户并登录后台添加测试商品价格设为100元前台选择商品点击立即购买用BurpSuite拦截请求将数量改为-1放行数据包后订单金额神奇地变成0元成功完成0元购niushop的问题在于订单金额计算完全依赖前端参数后端没有对负数量做校验没有金额下限检查4. cmseasy系统测试4.1 安装注意事项cmseasy对环境要求较高我测试时发现必须用PHP5.6版本需要开启curl扩展安装过程会提示配置数据库信息4.2 数量篡改漏洞用admin登录后测试第一种攻击选择任意商品直接在购买页面将数量改为-10点击购买后账户余额异常增加4.3 抓包攻击进阶第二种攻击方式更隐蔽拦截正常购买请求修改num参数为-2放包后订单金额变为0元账户余额不变实现真正的0元购cmseasy的特别之处在于管理员账号也能触发漏洞系统对余额变动有不同处理逻辑漏洞利用方式更灵活5. 漏洞防御方案在复现这些漏洞后我总结了几个关键防御点输入校验对所有用户输入进行严格校验特别是商品数量必须为正整数价格参数必须与后端一致关键参数要做签名验证业务逻辑校验订单金额必须大于0支付金额必须与实际金额二次核对重要操作要有日志记录系统设计建议前后端分离的项目要特别注意参数校验支付流程要加入中间状态校验定期做业务逻辑漏洞扫描在实际开发中建议使用成熟的支付SDK不要自己从头实现支付逻辑。我在项目中就遇到过因为自己实现优惠券逻辑导致的类似漏洞后来改用支付宝官方SDK后问题就解决了。6. 测试经验分享在复现这些漏洞时有几个实用技巧值得分享测试数据准备建议创建专用测试商品价格设为整数便于计算流量分析技巧除了BurpSuiteWireshark有时能发现意外惊喜测试账号管理为每种测试场景创建独立账号方便追踪问题环境快照使用Docker保存测试环境状态能快速回滚特别要注意的是这些测试一定要在授权环境下进行。我有次在客户生产环境做测试不小心触发了一个逻辑漏洞导致生成了大量异常订单还好及时停止了测试。从那以后我都会先在本地完全复现环境再测试。

更多文章