forked from Key20/VulScanner
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mongoScan_MultiThreads1.py
95 lines (71 loc) · 2.31 KB
/
mongoScan_MultiThreads1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python
from pymongo import MongoClient
import sys,re
import threading
from termcolor import colored
result = []
def loop(ip):
try:
#print "[-] Scan %s ......"%ip
client = MongoClient(ip,27017,connectTimeoutMS=1000,socketTimeoutMS=1000,waitQueueTimeoutMS=1000)
serverInfo = client.server_info()
try:
serverInfo = client.server_info()
print ip + "\n"
for keys in serverInfo:
print "[-]"+(keys)+":"+str(serverInfo[keys])
#print "\n"
#print colored("[-] %s Auth Succeeded"%ip,'red')
#print "[-] Get %s Server Information Succeeded!"%ip
try:
dbList = client.database_names()
print ip + "\n"
for i in dbList:
print "[-] "+i
#print "\n"
#print "[-] Find: %s Auth Succeeded!"%ip
#print
result.append(ip)
except:
pass
except:
pass
client.close()
#print str(ip)+" Congratulations, NO auth needed!"
except KeyboardInterrupt:
print "[-] Interrupted by user. Exiting..."
exit()
except:
#print str(ip)+" Connection Failed :<"
pass
def doThreads(subIPs):
threads = []
count = len(subIPs)
for i in xrange(count):
ip = str(subIPs[i])
t = threading.Thread(target=loop,args=(ip,))
threads.append(t)
for i in xrange(len(threads)):
threads[i].start()
for i in xrange(len(threads)):
threads[i].join()
def main():
if not len(sys.argv) == 3:
print "[-] Usage: %s NumberOfThreads IpListFile"%(sys.argv[0])
exit()
threadNum = int(sys.argv[1])
fp = open(sys.argv[2])
lines = fp.read()
fp.close()
ips = re.findall(r'[0-9]+(?:\.[0-9]+){3}',lines)
ips = list(set(ips))
ipCount=len(ips)
#print "%d IPs to scan. Estimated time of finish: %ds\n"%(ipCount,ipCount/threadNum+1)
sublist = lambda lst, sz: [lst[i:i+sz] for i in range(0, len(lst), sz)]
for subIPs in sublist(ips,threadNum):
doThreads(subIPs)
# raw_input("Scan finished. Press ENTER to exit...")
print "[-] Result:"
print result
if __name__ == '__main__':
main()