patches an issue where PGP would fail (issue #179), also patches an issue where the connection refused error would not do the fix it is suppose to do (issue #180)

This commit is contained in:
ekultek 2017-11-29 09:58:16 -06:00
parent 542eacab02
commit b12982a958
6 changed files with 56 additions and 74 deletions

View file

@ -70,17 +70,17 @@ d41d8cd98f00b204e9800998ecf8427e ./lib/attacks/__init__.py
d2846e039fefee741db24dd64f7bd50e ./lib/attacks/whois_lookup/whois.py
d2846e039fefee741db24dd64f7bd50e ./lib/attacks/admin_panel_finder/__init__.py
b5cd5e913cc62112776153bdf0f60fa4 ./lib/attacks/xss_scan/__init__.py
63c45495ec1ed2e98946bef514d8805e ./lib/attacks/nmap_scan/__init__.py
353dc2653372e78962bd0398df9a2f5f ./lib/attacks/nmap_scan/__init__.py
216999fa0e84866d5c1d96d5676034e4 ./lib/attacks/nmap_scan/nmap_opts.py
6f5d4adc7777b6696d4b290367364a38 ./lib/header_check/__init__.py
777fef12812b6363a21b244f775dced1 ./lib/core/common.py
39221756c132732dbdc2b14772dcab11 ./lib/core/common.py
1faa2b5dfad6eb538bbfe42942d2a9da ./lib/core/errors.py
d41d8cd98f00b204e9800998ecf8427e ./lib/core/__init__.py
c7ef2ee7fa1280432e21b9c90c542b58 ./lib/core/settings.py
571cc38c0e47f4395d34a749e92d42a7 ./lib/core/settings.py
4b507b34677b414b8338475fea2c012a ./lib/core/cache.py
9a02e5b913d210350545ac26510a63c9 ./var/search/__init__.py
1c11255dbb09c0889dd0aa739a437f95 ./var/search/selenium_search.py
63ba132381a0cc2d7629852bd5e4aa17 ./var/search/pgp_search.py
0545ee54ade186681b25d157fb32f350 ./var/search/selenium_search.py
8f8a7e791f91f0ef3544f2ed8364ab56 ./var/search/pgp_search.py
d41d8cd98f00b204e9800998ecf8427e ./var/__init__.py
d41d8cd98f00b204e9800998ecf8427e ./var/auto_issue/__init__.py
0c11c16126baf789388a661bbbefb149 ./var/auto_issue/github.py

View file

@ -1,7 +1,5 @@
import json
import socket
import shlex
import subprocess
import nmap
@ -140,17 +138,8 @@ def perform_port_scan(url, scanner=NmapHook, **kwargs):
lib.core.settings.logger.fatal(lib.core.settings.set_color(
"nmap was not found on your system...", level=50
))
question = lib.core.common.prompt(
"would you like to automatically install it", opts="yN"
lib.core.common.run_fix(
"would you like to automatically install it",
"sudo sh {}".format(lib.core.settings.NMAP_INSTALLER_TOOL),
"nmap is not installed, please install it in order to continue..."
)
if question.lower().startswith("y"):
install_nmap_command = shlex.split("sudo sh {}".format(lib.core.settings.NMAP_INSTALLER_TOOL))
subprocess.call(install_nmap_command)
lib.core.settings.logger.info(lib.core.settings.set_color(
"nmap has been successfully installed, re-running...", level=25
))
perform_port_scan(url, verbose=verbose, opts=opts)
else:
lib.core.settings.logger.fatal(lib.core.settings.set_color(
"nmap is not installed, please install it in order to continue...", level=50
))

View file

@ -2,6 +2,8 @@ import os
import re
import json
import time
import shlex
import subprocess
try:
from urllib import ( # python 2
unquote
@ -244,3 +246,23 @@ def pause():
return prompt(
message, paused=True
)
def run_fix(message, command, fail_message, exit_process=False):
"""
run the fix script for the program
"""
do_fix = prompt(
message, opts="yN"
)
if do_fix.lower().startswith("y"):
cmd = shlex.split(command)
subprocess.call(cmd)
if exit_process:
lib.core.settings.logger.info(lib.core.settings.set_color(
"command completed successfully, should be safe to re-run Zeus..."
))
else:
lib.core.settings.logger.fatal(lib.core.settings.set_color(
fail_message, level=50
))

View file

@ -46,7 +46,7 @@ CLONE = "https://github.com/ekultek/zeus-scanner.git"
ISSUE_LINK = "https://github.com/ekultek/zeus-scanner/issues"
# current version <major.minor.commit.patch ID>
VERSION = "1.3.3".format(PATCH_ID)
VERSION = "1.3.4.{}".format(PATCH_ID)
# colors to output depending on the version
VERSION_TYPE_COLORS = {"dev": 33, "stable": 92, "other": 30}

View file

@ -165,9 +165,9 @@ def pgp_main(query, verbose=False):
html = obtain_html(
lib.core.settings.AUTHORIZED_SEARCH_ENGINES["pgp"], query, agent=lib.core.settings.DEFAULT_USER_AGENT
)
except ReadTimeout:
except (Exception, ReadTimeout):
lib.core.settings.logger.warning(lib.core.settings.set_color(
"connection timed out, assuming no PGP keys...", level=30
"connection failed, assuming no PGP keys...", level=30
))
html = None
if html is not None:

View file

@ -1,7 +1,5 @@
import os
import time
import shlex
import subprocess
try:
from urllib import ( # python 2
@ -29,7 +27,8 @@ from lib.core.common import (
HTTP_HEADER,
URLParser,
shutdown,
prompt
prompt,
run_fix
)
from lib.core.settings import (
logger,
@ -271,49 +270,28 @@ def parse_search_results(query, url_to_search, verbose=False, **kwargs):
"check your installation and make sure it is in /usr/lib, if you "
"find it there, restart your system and try again...", level=50
))
elif "connection refused" in str(e):
elif "connection refused" in str(e).lower():
logger.fatal(set_color(
"there are to many sessions of firefox opened and selenium cannot "
"create a new one...", level=50
))
do_autoclean = prompt(
"would you like to attempt to auto clean the open sessions", opts="yN"
run_fix(
"would you like to attempt to auto clean the open sessions",
"sudo sh {}".format(CLEANUP_TOOL_PATH),
"kill off the open sessions of firefox and re-run Zeus...",
exit_process=True
)
if do_autoclean.lower().startswith("y"):
logger.warning(set_color(
"this will kill all instances of the firefox web browser...", level=30
))
auto_clean_command = shlex.split("sudo sh {}".format(CLEANUP_TOOL_PATH))
subprocess.call(auto_clean_command)
logger.info(set_color(
"all open sessions of firefox killed, it should be safe to re-run "
"Zeus..."
))
else:
logger.warning(set_color(
"kill off the open sessions of firefox and re-run Zeus...", level=30
))
shutdown()
elif "Program install error!" in str(e):
do_fix = prompt(
logger.error(set_color(
"seems the program is having some trouble installing would you like "
"to try and automatically fix this issue", opts="yN"
"to try and automatically fix this issue", level=40
))
run_fix(
"would you like to attempt to fix this issue automatically",
"sudo sh {}".format(FIX_PROGRAM_INSTALL_PATH),
"you can manually try and re-install Xvfb to fix the problem...",
exit_process=True
)
if do_fix.lower().startswith("y"):
logger.info(set_color(
"attempting to reinstall failing dependency..."
))
do_fix_command = shlex.split("sudo sh {}".format(FIX_PROGRAM_INSTALL_PATH))
subprocess.call(do_fix_command)
logger.info(set_color(
"successfully installed, you should be good to re-run Zeus..."
))
shutdown()
else:
logger.info(set_color(
"you can automatically try and re-install Xvfb to fix the problem..."
))
shutdown()
elif "Message: Reached error page:" in str(e):
logger.fatal(set_color(
"geckodriver has hit an error that usually means it needs to be reinstalled...", level=50
@ -338,20 +316,13 @@ def parse_search_results(query, url_to_search, verbose=False, **kwargs):
logger.fatal(set_color(
"it appears that firefox, selenium, and geckodriver are not playing nice with one another...", level=50
))
question = prompt(
"would you like to attempt to resolve this issue automatically", opts="yN"
run_fix(
"would you like to attempt to resolve this issue automatically",
"sudo sh {}".format(REINSTALL_TOOL),
("you will need to reinstall firefox to a later version, update selenium, and reinstall the "
"geckodriver to continue using Zeus..."),
exit_process=True
)
if question.lower().startswith("y"):
reinstall_command = shlex.split("sudo sh {}".format(REINSTALL_TOOL))
subprocess.call(reinstall_command)
rewrite_all_paths()
shutdown()
else:
logger.fatal(set_color(
"you will need to reinstall firefox to a later version, update selenium, and reinstall the "
"geckodriver to continue using Zeus...", level=50
))
shutdown()
else:
logger.exception(set_color(
"{} failed to gather the URL from search engine, caught exception '{}' "