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

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

缺陷编号:wooyun-2015-0145359

漏洞标题:如何用微信运动在朋友圈占据第一名

相关厂商:腾讯

漏洞作者: 路人甲

提交时间:2015-10-10 10:59

修复时间:2015-10-13 17:02

公开时间:2015-10-13 17:02

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

危害等级:低

自评Rank:1

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-10: 细节已通知厂商并且等待厂商处理中
2015-10-13: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

两个多月前,朋友圈的同学们每天都“高谈阔步”,一走就是“几万里”。抱着学习的态度,萌生了这个bug。
PS:没什么技术含量,大牛勿喷,纯属娱乐。

详细说明:

当使用第三方数据源向微信运动提交数据的时候,其实微信运动并没有校验数据的真实性,直接update到db。
所以在提交数据的时候,我们抓个包,修改数据的steps,再提交给微信运动。
这样微信运动里的steps就可以达到程序定义的max
需要一个第三方app:乐动力
将手机和电脑设置在同一vlan下,用电脑抓取乐动力手动提交给微信运动的数据包,修改steps,重新send。
Response中"status": "OK"表示提交成功。

1.jpg


Request的请求数据:

POST /xq/io.ashx HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.0.2; MI 2 MIUI/5.7.16)
Host: pl.api.ledongli.cn
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 262
action=profile&pc=867064010207023&cmd=updatedaily&uid=2836992&list=%5B%7B%22date%22%3A1443369600%2C%22calories%22%3A0%2C%22activeValue%22%3A108%2C%22steps%22%3A99999%2C%22pm2d5%22%3A0%2C%22duration%22%3A0%2C%22distance%22%3A0%2C%22report%22%3A%22%5B%5D%22%7D%5D


写了个python脚本,自己验证通过,其他人验证还不清楚。
在运行脚本之前,需要先在脚本中编辑两个变量。
steps
uid(uid在乐动力app的界面上)

#coding: utf-8
#date: 2015年9月29日01:50:37
#usage: edit steps and ledongli's uid(u need to download this app) .That would be ok .Good luck. ^_^
import requests
import sys
import json
import datetime
import time
def isnum(value):
try:
temp = int(value)
except Exception, e:
return False
else:
return True
# like 2015-09-25 00:00:00 converts to unix time stamp
def formatDate():
nowtime = datetime.datetime.now()
date = time.strftime('%Y-%m-%d')
strtemp_date = date + ' 00:00:00'
ledongli_date = time.strptime(strtemp_date, '%Y-%m-%d %H:%M:%S')
finaldate = time.mktime(ledongli_date) # rusult is 1443456000.0(float type), but still need to format to 1443456000
finaldate = int(finaldate)
return finaldate
def main(steps, uid):
if not isnum(steps):
print 'param error. steps must be an integer.'
url = 'http://pl.api.ledongli.cn/xq/io.ashx'
fake_headers = {
'User-Agent' : 'Dalvik/2.1.0 (Linux; U; Android 5.0.2; MI 2 MIUI/5.7.16)',
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept-Encoding': 'gzip'
}
keycontentjson = [
{
"date": formatDate(),
"calories": 0,
"activeValue": 108,
"steps": steps,
"pm2d5": 0,
"duration": 0,
"distance": 0,
"report": "[]"
}
]
# key is a str type
# key must be a json data convert to string
key = json.dumps(keycontentjson)
param = {
'action': 'profile',
'pc': '867064010207023',
'cmd': 'updatedaily',
'uid': uid,
'list': key
}
r = requests.post(url, data = param, headers = fake_headers)
print r.text
print '_kazakhsoft曰:装逼成功'
if __name__ == '__main__':
steps = 6666
uid = '34452077'
main(steps, uid)

漏洞证明:

2.png

修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-10-13 17:02

厂商回复:

非常感谢您的反馈,经评估报告中反馈的漏洞并不属于腾讯业务漏洞,请反馈给相关厂商处理。

最新状态:

暂无