逻辑漏洞之支付逻辑漏洞

逻辑漏洞之支付逻辑漏洞

产生原因:开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修
改成任意即可。

练习地址:http://120.27.61.239:8080/vulnlab/logic/damicms/index.php

修改购买数量

随便找一个商品,点击购买,抓个包看看。

image-20200924230526031

可以看到,数据包里面包含了商品数量、价格、id等等信息。

image-20200924230753512

如果将qyt改为100是否就是用6000买100个这样的商品呢。这里试一试。

image-20200924231213051

可以看到,这里修改了商品数量100之后,订单总价没有出错。那如果将数量改为0.1,总价会不会就会变成600呢。

image-20200924231438694

可以看到,总价会变成600。这就可能会提交订单后,由于商家是自动发货,会直接发了一个完整的商品过来,而用的只是600。数量改为0.01或者0.001等等都有可能。再思考一个方向,假设我们将购买数量改为负数的话,会不会给我们的账户反加钱。。。

image-20200924232307434

可以看到,订单总价变成-18000,提交订单后,发现账户里的钱反倒加了18000

image-20200924232405582

修改购买价格

image-20200924232513650

可以看到,和修改购买数量是一样的效果。与上面一样,不过多阐述。

修改支付对应商品

先抓一个“大米CMS手机开发专版”购买包,发现有一个id=69.

再抓一个大米测试产品,id=127。

image-20200924233414694

将购买大米cms手机开发专版提交的数据包中的id改成127,看看结果如何。

image-20200924233913945

结果还是没变。再看看,id后面还有一个name,将name也换成是大米测试产品的name,看看结果如何。

&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81

image-20200924234225978

这就存在用低价格的商品的价格购买高价格商品的可能性。