目录
0 简介
商业中的数据安全不仅指存储在后台、数据库中的数据是否会被非法窃取或修改,还指传输过程中的数据是否会被非法窃取或修改。
1 产品支付金额篡改测试
概述:电商网站需要在整个业务流程中保护业务数据的完整性(不可篡改)和一致性(一致性),尤其需要保证用户客户端与服务、业务系统接口之间数据传输的一致性。通常在订购交易数据过程中,服务端容易出现无法对用户提交的业务数据进行强制验证而过度信任客户端提交的业务数据,从而产生商品金额篡改漏洞。
方法:商品金额篡改测试是通过抓包,修改业务过程中的交易金额等字段,检测是否存在金额篡改漏洞。
目的:本次测试主要针对订单生成环节中,对产品支付金额验证不完整导致的业务安全风险点,通常会导致攻击者以远低于订单支付金额的实际支付金额订购产品而产生的业务逻辑漏洞。
示例:在支付页面,抓取请求中商品的金额字段,修改为任意金额后提交,看看修改后的金额数据能否改善业务流程。例如,花一分钱买一台冰箱。
2 前端JS限制绕过测试
概述:促销活动中很多商品对用户的购买次数有限制,如果服务端只通过页面的JS脚本来限制购买次数,而没有在服务端对用户提交的次数进行验证,则存在通过抓取客户端发送的请求包来修改JS端生成并处理的交易数据的业务漏洞。(其他一些查询服务可能会限制时间段,也可能存在类似漏洞)
方法:将请求中的商品数量修改为大于最大显示数量的值,在业务交易数据异常的情况下检查业务流程是否能够完成。
目的:本次测试主要针对由于电商平台交易约束机制不严、不完善导致的一些业务逻辑问题。
3 商业能力测试
概述:业务限制测试主要针对一些电商应用在业务处理过程中,对用户提交的查询范围、订单数量、金额等数据没有进行严格验证而导致的一些业务逻辑漏洞。
方式:通常在业务流程中,通过向服务器提交高于或低于预期金额的数据来验证服务器提交的数据是否符合预期。存在此类漏洞的应用程序通常表现为查询超出预期的信息、订购或兑换超出预期范围的商品等。
目的:该测试主要确定应用程序是否正确响应预期业务范围之外的业务请求。
4. 篡改订单商品数量
概述:商品数量篡改测试是通过在业务过程中抓包修改订购商品数量等字段来判断服务器是否存在商品订单数量篡改漏洞。
方法:将申请中的商品数量修改为任意非预期金额、负数等并提交,检查业务系统是否可以以修改后的数量完成业务流程。
目的:本次测试主要针对商品订购过程中,由于服务器缺乏对异常交易数据处理的风险控制机制而导致的相关业务逻辑漏洞。
例:.4 以网上商城为例,请参考文章《商城业务逻辑漏洞-交易数据被篡改》。
5 请求重放测试
概述:请求重放漏洞是一种常见的电商平台业务逻辑设计缺陷导致的漏洞,通常引发的安全问题是在首次购买商品成功后,引用订购该商品的正常流程请求,进行完全模拟正常订购业务流程的重放操作,从而达到“一次购买,多次收货”等违反正常业务逻辑的结果。
目的:本次测试主要针对电商平台订货兑换业务流程中,缺乏有效的机制确定每笔交易请求唯一性的业务逻辑问题,通过本次测试验证交易过程中随机数、时间戳等数据的生成机制是否正常。
6 篡改产品订单数量示例 6.1 实验目的
(1)加深对业务数据安全重要性的认识;
(2)了解测试业务数据的方法,了解交易数据是否存在被篡改的漏洞。
6.2 实验环境6.2.1 实验目标
实验目标机-虚拟机:本节实验目标机是在系统上搭建的一个简单的网站,安装过程可以参考《【语言环境】WAMP环境部署与优化-作为操作系统》,网站搭建过程可以参考《【(SQL+HTML+PHP)综合】一个简单论坛网站综合开发案例(含用户注册、登录、注销、修改信息、留言等功能)》。
攻击者:真实机器。注意目标和攻击者在同一个局域网内。
6.2.2 搭建射击场—V5.4
搭建V5.4射击场步骤如下
(1)下载V5.4版本的CMS电子商务商店代码。
(2)解压后将文件夹复制到目标机器的网站根目录下,不同版本软件安装时生成的目录可能不一样,本文中的路径如下。

(3)在真机浏览器输入172.16.1.1/.4进行访问(因为还没安装,所以需要先按照下面的步骤安装CMS),滚动到页面底部,勾选后点击继续。
(4)点击“继续”。
(5)填写信息:
(8)点击右上角进入登录页面,尝试登录刚才使用的账号,登录成功。
6.3 实验步骤
(1)使用真机浏览器访问172.16.1.1/.4,登录同一账号,登录成功,返回如下页面。
(2)点击“网上存款”→“我要提现”,可以看到当前账户余额为0。
(3)进入商品展示→选择商品。
(4)在页面上将数量改为-1,然后点击立即购买。
(5)填写必填信息,选择现场扣款作为支付方式,点击提交订单。
(6)再次进入网站右上角的会员中心,再次查看账户余额,会发现多出了6000,也就是你刚才输入的-1金额,账户里又增加了钱,这是商业漏洞。
7 结论
(1)了解哪些位置或流程带来业务数据安全风险;
(2)掌握不同风险点的检测方法。
(3)深化对业务逻辑漏洞的理解。
(4)了解篡改交易数据的业务逻辑漏洞的测试方法。