看到iwebshop在2015.01.26又更新了(v3.0.15011000),看了看更新说明,说已经修改了wooyun上的漏洞,就下下来研究一下。
问题点:POST /index.php?controller=ucenter&action=payment_balance 用户在支付自己的订单时(预存款 支付),抓包修改价格,但是有一个数据校验,下面看看是如何突破检验的。
文件在/controllers/ucenter.php的payment_balance()方法中
用来做数据校验的$sign由客户端发到服务器,因此,这里我们可以修改,校验字段的生成方法如下
当$sign= md5($urlStr)时,即可绕过校验,由上面的代码可知,只要知道$pkey、$user_id以及自己的输入(通过抓包可获得),就可以得到 md5($urlStr)了。
$pkey一直是空,$user_id在post的包中可以获得(具体见下图)
下图为初始用户信息
下图为支付完成后的图,只用了1分钱就完成了支付