又拍网旗下的又拍图片管家(v.yupoo.com)在支付处理环节存在一个典型的逻辑漏洞:既未采用SSL加密传输,也未对购买时间设置任何边界限制。这一漏洞导致了一个令人惊讶的结果——当用户将续费时间修改为负数时,系统不仅不会扣款,反而会向账户内“充值”。
下面以续费VIP服务为例,演示具体操作过程。同时建议厂商对其它支付接口也进行自查。
====================================================选择续费套餐后,点击提交按钮,并使用Fiddler工具拦截发出的数据包。

可以发现,请求中的 renewals_period 字段用于表示续费时长。将其修改为负数后,再放行数据继续传输。

接下来就是见证“奇迹”的时刻——应付金额显示为 ¥ -15,840.00。此时无需犹豫,直接确认支付即可。

系统自动跳转回首页。查看账户情况如下:
- VIP使用期限:2012-05-02 至 1923-05-02(功能仍可正常使用)
- 账户余额:¥ 16,020.00(原余额为180元)

修复方案
- 支付页面必须启用SSL加密传输,以防止数据被中间人篡改。
- 对购买时间字段进行严格的范围限制,设定合理的最小值和最大值,拒绝负数或其它异常数值。
—— imlonghao
