есть ли лучший способ прочитать результаты подпроцесса? без сохранения в файле журнала и его повторного чтения - PullRequest
0 голосов
/ 08 мая 2020

У меня есть этот метод, в котором я автоматизирую xss-атаку с помощью инструмента XSSsrtike (https://github.com/s0md3v/XSStrike/wiki/Usage), есть ли лучший способ проверить результаты инструмента? в настоящее время я делаю это на основе размера файла журнала, если размер файла журнала равен 0, в противном случае тестовый проход не выполняется. это генерирует много файлов журнала, когда я устанавливаю URL-адреса для проверки xss-атаки.

есть ли способ использовать вывод инструмента для проверки результатов? Я фильтрую вывод консоли, задавая этот параметр

--console-log-level VULN 

, поэтому инструмент печатает в консоли только при наличии результатов vuln, иначе ничего не печатает

tooloutput = subprocess.getoutput(command)
                    print("INFO: XSSStrike TOOL FULL RESULTS: " + tooloutput)

полный метод

  def run_xss_strike_tool(self, data, tool_path):
        for value in data:
            if not value["ignore"]:
                clean_list = list(set(self.form_urls))
                for url in clean_list:
                    print("INFO : running XSS Injection on paths: " + url)
                    jsonName = datetime.now()
                    jsonNamewithoutSpace = str(jsonName).replace(" ", "")
                    jsonNamewithoutdots = str(jsonNamewithoutSpace).replace(".", "-")
                    formatName = str(jsonNamewithoutdots).replace(":", "-")

                    depth = value["crawl-depth"]
                    if self.cookie == '':
                        command = "cd " + tool_path + " && python xsstrike.py -u " + url + " --params --crawl -l " + depth + " --skip --blind --file-log-level VULN --console-log-level VULN --log-file " + formatName
                    else:
                        cookie_para = f'"cookie:{self.cookie}"'
                        command = "cd " + tool_path + " && python xsstrike.py -u " + url + " --header " + cookie_para + " --params --crawl -l " + depth + " --skip --blind --file-log-level VULN --console-log-level VULN --log-file " + formatName
                        print(command)

                    tooloutput = subprocess.getoutput(command)
                    print("INFO: XSSStrike TOOL FULL RESULTS: " + tooloutput)
                    fullpath = tool_path + formatName
                    filesize = os.stat(fullpath).st_size
                    print(fullpath + " has size of " + str(filesize))

                    if filesize == 0:
                        print('XSS injection check : \' results:\'   \'' "None" '\'' + \
                              ' ... [ ' + self.OKGREEN + 'OK' + self.endColor + ' ]')
                    if filesize > 0:
                        self.nm_of_fails += 1
                        print(
                            'XSS injection check : \' results:\'   \''" found vulnerable pages to xss injection "  '\'' + \
                            ' ... [ ' + self.WARNING + 'WARN' + self.endColor + ' ]')
                        print(tooloutput)
                    # todo remove logfile
            else:
                print("INFO : XSS Injection is skipped!")

1 Ответ

0 голосов
/ 08 мая 2020

У вас есть уровни журнала file и console, оба установлены на VULN - это означает, что они оба должны получать один и тот же вывод.

Если вы опустите аргументы --log-file для xsstrike, тогда он будет регистрироваться только в консоли. Вы собираете это в переменной tooloutput и должны иметь возможность просто смотреть на длину переменной вместо файла.

...