漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0135544
漏洞标题:七夕我是如何一分钱看电影的(微影时代客户端缺陷)
相关厂商:wepiao.com
漏洞作者: 路人甲
提交时间:2015-08-20 11:46
修复时间:2015-11-23 11:49
公开时间:2015-11-23 11:49
漏洞类型:设计错误/逻辑缺陷
危害等级:高
自评Rank:20
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-08-20: 细节已通知厂商并且等待厂商处理中
2015-08-25: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-10-19: 细节向核心白帽子及相关领域专家公开
2015-10-29: 细节向普通白帽子公开
2015-11-08: 细节向实习白帽子公开
2015-11-23: 细节向公众公开
简要描述:
七夕到了,晚上去电影院看个电影,万一太晚回不去了呢
详细说明:
其实这是一类问题。
app开发者为了开发方便,经常会把一些用来对敏感信息签名验证的私钥硬编码在客户端里。这样通过简单的逆向就能拿到这些私钥和签名算法,来伪造一些敏感的行为。
这里以微票儿安卓客户端中的微信支付为例,展示下这种漏洞的危害。
主要存在的问题是,在用微信支付时,订单信息由客户端生成,服务端并没有对支付的价格做验证,因此可以更改为任意价格,一分钱包场。
下好订单后选微信支付,burp抓包。
发现在提交的json中的package里有total_fee这个字段。
这里有两个签名需要过掉,一是package里的sign=xxx这个签名,另外一个是json里app_signature这个签名。
逆向可知,第一个签名是加一个&key=6aa3048fd034778fbba75e342bb4d2c2后md5,第二个签名是把json转成url的形式进行sha1。
写脚本模拟这个过程,详情请见测试代码部分。
将python输出的结果替换掉原请求包中的内容即可对任意订单一分钱支付。
漏洞证明:
修复方案:
将订单生成等敏感逻辑放在服务端。
不要过分相信客户端的数据,即便已经进行签名验证。
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2015-11-23 11:49
厂商回复:
漏洞Rank:15 (WooYun评价)
最新状态:
2015-08-25:漏洞已经修复