def __init__(self, projectTag, options): self.projectTag = projectTag self.path = "" self.name = "" self.option = "" self.api_id = "" self.from_js = "" self.error = 0 self.boolen = 0 self.time = 0 self.options = options self.header = "" self.log = creatLog().get_logger() self.proxy_data = { 'http': self.options.proxy, 'https': self.options.proxy } self.UserAgent = [ "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)" ]
def __init__(self, projectTag): self.projectTag = projectTag self.info_Test = readConfig.ReadConfig().getValue('infoTest', 'info')[0] self.log = creatLog().get_logger() self.info_filters = readConfig.ReadConfig().getValue( 'infoTest', 'infoFilter')[0]
def __init__(self, projectTag, url, options): warnings.filterwarnings('ignore') #不显示警告,后期可以优化为全局的 self.url = url self.jsPaths = [] self.jsRealPaths = [] self.jsPathList = [] self.projectTag = projectTag self.options = options self.proxy_data = { 'http': self.options.proxy, 'https': self.options.proxy } if self.options.cookie != None: self.header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0", "Cookie": options.cookie, self.options.head.split(':')[0]: self.options.head.split(':')[1], } else: self.header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0", self.options.head.split(':')[0]: self.options.head.split(':')[1] } DatabaseType(self.projectTag).createProjectDatabase(self.url, 1, "0") self.log = creatLog().get_logger()
def __init__(self, mode, urls, options): self.log = creatLog().get_logger() self.UserAgent = [ "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)" ] self.texts = [] # 保存返回数据包里面的数据 self.responses = [] # 保存返回包的响应头 self.mode = int(mode) # 模式选择 self.res = {} # self.codes = [] self.codes = {} self.urls = urls self.options = options self.proxy_data = { 'http': self.options.proxy, 'https': self.options.proxy }
def __init__(self, jsRealPaths, options): # 传入的js文件的路径 warnings.filterwarnings('ignore') self.jsRealPaths = jsRealPaths self.blacklist_domains = readConfig.ReadConfig().getValue( 'blacklist', 'domain')[0] self.blacklistFilenames = readConfig.ReadConfig().getValue( 'blacklist', 'filename')[0] self.options = options self.proxy_data = { 'http': self.options.proxy, 'https': self.options.proxy } self.UserAgent = [ "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)" ] self.log = creatLog().get_logger()
def __init__(self, projectTag): self.projectTag = projectTag self.blacklist_param = readConfig.ReadConfig().getValue( 'FuzzerParam', 'param')[0] self.default_judges = readConfig.ReadConfig().getValue( 'FuzzerParam', 'default')[0] self.log = creatLog().get_logger()
def __init__(self,projectTag,options): self.projectTag = projectTag self.get_results = [] self.post_data_results = [] self.post_json_results = [] self.options = options self.path = "" self.log = creatLog().get_logger()
def __init__(self, projectTag): self.projectTag = projectTag self.api_UnAuth_result = [] self.resultFilters = readConfig.ReadConfig().getValue( 'vulnTest', 'resultFilter')[0] self.unauth_not_sure = readConfig.ReadConfig().getValue( 'vulnTest', 'unauth_not_sure')[0] self.log = creatLog().get_logger()
def __init__(self,projectTag): self.projectTag = projectTag self.passwordtest_list = readConfig.ReadConfig().getValue('vuln', 'passwordtest_list')[0] self.passworduser_list = readConfig.ReadConfig().getValue('vuln', 'passworduser_list')[0] self.passwordpass_list = readConfig.ReadConfig().getValue('vuln', 'passwordpass_list')[0] self.postdatas = [] self.getdatas = [] self.jsonposts = [] self.log = creatLog().get_logger() self.path = ""
def __init__(self, projectTag, options): self.name_list = [] self.remotePaths = [] self.jsFileNames = [] self.localFileNames = [] self.remoteFileURLs = [] self.js_compile_results = [] self.projectTag = projectTag self.options = options self.log = creatLog().get_logger()
def __init__(self, urls, options): self.log = creatLog().get_logger() self.urls = urls self.divide = [ self.urls[i:i + 20] for i in range(0, len(self.urls), 20) ] self.res = [] self.UserAgent = [ "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)" ] self.options = options self.proxy_data = { 'http': self.options.proxy, 'https': self.options.proxy } if self.options.cookie != None: self.header = { 'User-Agent': random.choice(self.UserAgent), 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Cookie': options.cookie, self.options.head.split(':')[0]: self.options.head.split(':')[1] } else: self.header = { 'User-Agent': random.choice(self.UserAgent), 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', self.options.head.split(':')[0]: self.options.head.split(':')[1] }
def __init__(self, projectTag): self.projectTag = projectTag self.regxs = [r'\w\.get\(\"(.*?)\"\,', r'\w\.post\(\"(.*?)\"\,', r'\w\.post\(\"(.*?)\"', r'\w\.get\(\"(.*?)\"', r'\w\+\"(.*?)\"\,'] self.baseUrlRegxs = [r'url.?\s?\:\s?\"(.*?)\"', r'url.?\s?\+\s?\"(.*?)\"', r'url.?\s?\=\s?\"(.*?)\"', r'host\s?\:\s?\"(.*?)\"', ] self.baseUrlPaths = [] self.apiPaths = [] self.completeUrls = [] self.apiExts = readConfig.ReadConfig().getValue('blacklist', 'apiExts')[0] self.log = creatLog().get_logger()
def baseUrlDevelop(self): # print(", ".join(output)) 要改进压缩在一起并输入在log内 if CommandLines().cmd().baseurl == None: if len(self.baseUrlPaths) > 3: if self.options.silent != None: self.baseUrlPaths = self.baseUrlPaths[:2] else: if len(self.baseUrlPaths) > 7: self.baseUrlPaths = self.baseUrlPaths[:7] creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{base_dir_list}")) print(", ".join(self.baseUrlPaths)) creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{api_top5_list}")) output = [] for api in self.apiPaths[:5]: if "§§§" in api: api = api.split("§§§")[0] output.append(api) else: output.append(api) print(", ".join(output)) baseurls = input("[!] " + Utils().getMyWord("{new_base_dir}")) if "," in baseurls: base = baseurls.split(",") else: base = baseurls self.baseUrlPaths.clear() #直接清除重置 for baseurl in base: if baseurl not in self.baseUrlPaths: self.baseUrlPaths.append(baseurl) elif len(self.baseUrlPaths) < 3: creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{base_dir_list}")) print(", ".join(self.baseUrlPaths)) creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{api_top5_list}")) output = [] for api in self.apiPaths[:5]: if "§§§" in api: api = api.split("§§§")[0] output.append(api) else: output.append(api) print(", ".join(output))
def __init__(self, projectTag): self.projectTag = projectTag self.creat_num = 1 self.creat_num1 = 1 self.log = creatLog().get_logger()
def __init__(self, project_tag): self.projectTag = project_tag self.log = creatLog().get_logger()
def parseStart(self): projectTag = logs if self.options.silent != None: print("[TAG]" + projectTag) DatabaseType(projectTag).createDatabase() ParseJs(projectTag, self.url, self.options).parseJsStart() path_log = os.path.abspath(log_name) path_db = os.path.abspath( DatabaseType(projectTag).getPathfromDB() + projectTag + ".db") creatLog().get_logger().info("[!] " + Utils().getMyWord("{db_path}") + path_db) #显示数据库文件路径 creatLog().get_logger().info("[!] " + Utils().getMyWord("{log_path}") + path_log) #显示log文件路径 checkResult = CheckPacker(projectTag, self.url, self.options).checkStart() if checkResult == 1 or checkResult == 777: #打包器检测模块 if checkResult != 777: #确保检测报错也能运行 creatLog().get_logger().info( "[!] " + Utils().getMyWord("{check_pack_s}")) RecoverSpilt(projectTag, self.options).recoverStart() else: creatLog().get_logger().info("[!] " + Utils().getMyWord("{check_pack_f}")) Apicollect(projectTag, self.options).apireCoverStart() apis = DatabaseType(projectTag).apiPathFromDB() # 从数据库中提取出来的api self.codes = ApiResponse(apis, self.options).run() DatabaseType(projectTag).insertResultFrom(self.codes) getPaths = DatabaseType(projectTag).sucesssPathFromDB() # 获取get请求的path getTexts = ApiText(getPaths, self.options).run() # 对get请求进行一个获取返回包 postMethod = DatabaseType( projectTag).wrongMethodFromDB() # 获取post请求的path if len(postMethod) != 0: postText = PostApiText(postMethod, self.options).run() DatabaseType(projectTag).insertTextFromDB(postText) DatabaseType(projectTag).insertTextFromDB(getTexts) if self.options.type == "adv": creatLog().get_logger().info("[!] " + Utils().getMyWord("{adv_start}")) creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{beauty_js}")) BeautyJs(projectTag).rewrite_js() creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{fuzzer_param}")) FuzzerParam(projectTag).FuzzerCollect() creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{response_end}")) vulnTest(projectTag, self.options).testStart(self.url) if self.options.type == "adv": vulnTest(projectTag, self.options).advtestStart(self.options) if self.options.ext == "on": creatLog().get_logger().info("[+] " + Utils().getMyWord("{ext_start}")) loadExtensions(projectTag, self.options).runExt() creatLog().get_logger().info("[-] " + Utils().getMyWord("{ext_end}")) vuln_num = Docx_replace(projectTag).vuln_judge() co_vuln_num = vuln_num[1] + vuln_num[2] + vuln_num[3] creatLog().get_logger().info( "[!] " + Utils().getMyWord("{co_discovery}") + str(co_vuln_num) + Utils().getMyWord("{effective_vuln}") + ": " + Utils().getMyWord("{r_l_h}") + str(vuln_num[1]) + Utils().getMyWord("{ge}") + ", " + Utils().getMyWord("{r_l_m}") + str(vuln_num[2]) + Utils().getMyWord("{ge}") + ", " + Utils().getMyWord("{r_l_l}") + str(vuln_num[3]) + Utils().getMyWord("{ge}")) CreateReport(projectTag).create_repoter() creatLog().get_logger().info("[-] " + Utils().getMyWord("{all_end}"))
def __init__(self,projectTag): docLang = Utils().getMyWord("{lang}") self.projectTag = projectTag self.tmp_filepath = "doc" + os.sep + "template" + os.sep + docLang + ".docx" self.new_filepath = "reports" + os.sep + "tmp_" + self.projectTag + ".docx" self.log = creatLog().get_logger()
def parseStart(self): projectTag = Utils().creatTag(6) if self.options.silent != None: print("[TAG]" + projectTag) DatabaseType(projectTag).createDatabase() ParseJs(projectTag, self.url, self.options).parseJsStart() checkResult = CheckPacker(projectTag, self.url, self.options).checkStart() if checkResult == 1 or checkResult == 777: #打包器检测模块 if checkResult != 777: #确保检测报错也能运行 creatLog().get_logger().info( "[!] " + Utils().getMyWord("{check_pack_s}")) RecoverSpilt(projectTag, self.options).recoverStart() else: creatLog().get_logger().info("[!] " + Utils().getMyWord("{check_pack_f}")) Apicollect(projectTag, self.options).apireCoverStart() apis = DatabaseType(projectTag).apiPathFromDB() # 从数据库中提取出来的api self.codes = ApiResponse(apis, self.options).run() DatabaseType(projectTag).insertResultFrom(self.codes) getPaths = DatabaseType(projectTag).sucesssPathFromDB() # 获取get请求的path getTexts = ApiText(getPaths, self.options).run() # 对get请求进行一个获取返回包 postMethod = DatabaseType( projectTag).wrongMethodFromDB() # 获取post请求的path if len(postMethod) != 0: postText = PostApiText(postMethod, self.options).run() DatabaseType(projectTag).insertTextFromDB(postText) DatabaseType(projectTag).insertTextFromDB(getTexts) if self.options.type == "adv": creatLog().get_logger().info("[!] " + Utils().getMyWord("{adv_start}")) creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{beauty_js}")) BeautyJs(projectTag).rewrite_js() creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{fuzzer_param}")) FuzzerParam(projectTag).FuzzerCollect() creatLog().get_logger().info(Utils().tellTime() + Utils().getMyWord("{response_end}")) vulnTest(projectTag, self.options).testStart(self.url) if self.options.type == "adv": vulnTest(projectTag, self.options).advtestStart(self.options) if self.options.ext == "on": creatLog().get_logger().info("[+] " + Utils().getMyWord("{ext_start}")) loadExtensions(projectTag, self.options).runExt() creatLog().get_logger().info("[-] " + Utils().getMyWord("{ext_end}")) CreateReport(projectTag).create_repoter() creatLog().get_logger().info("[-] " + Utils().getMyWord("{all_end}"))
def __init__(self, projectTag, nameTxt): self.new_filepath = "reports" + os.sep + "tmp_" + projectTag + ".docx" self.txt_filepath = nameTxt self.log = creatLog().get_logger()
def __init__(self, projectTag, options): self.projectTag = projectTag self.options = options self.log = creatLog().get_logger()