[典型漏洞分享]Insert型SQL注入的发现和利用,篡改订单金额

本例中的SQL注入和其它发现的SQL注入的主要区别:1、生成订单接口是一次性的,反复提交无效,因此,此类型的SQL注入比较难通过扫描器发现,需要人工提取和手动测试。2、Insert类型的SQL注入,不经常见。在本例中,我们成功的通过该漏洞篡改订单金额。

YS 电商生成订单接口存在INSERTSQL注入漏洞,可修改订单金额数据【中】

问题描述:

         YS MALL在生成订单时会往数据库插入数据,但此处使用了动态查询语句的方式进行插入,通过注入数据可以达到篡改订单数据的目的。

测试步骤:

1、  登录YS MALL,选择需要购买的设备C1(此处C1价格为880,优惠券优惠额度为100RMB),并进入购物车提交订单,如图所示:

clip_image002

2、  提交订单并拦截生成订单请求,转入burp repeater,在” delivery[shipping_id]”参数输入非法参数,通过返回的错误信息可以看到存在INSERT型的SQL注入,同时清除地看到相关表格和字段信息,如图所示:

clip_image004

3、  通过delivery[shipping_id]参数注入payload可以修改运费和汇率等字段的数据::

image

4、  生成订单成功后查看支付信息如下:

clip_image008

问题扩展:

         但实际支付时只有运费字段的数据会对实际支付造成影响,故技术影响面大,但业务影响面比较小,故整体风险为中。

解决建议:

         使用参数化查询语句防止SQL注入。

原文地址:https://www.cnblogs.com/fishou/p/4202028.html