created three new tamper scripts and added warnings to other ones

This commit is contained in:
ekultek 2017-10-02 12:10:34 -05:00
parent c618647eeb
commit d813942c55
2 changed files with 27 additions and 38 deletions

View file

@ -5,16 +5,11 @@ try:
except ImportError:
import urllib.parse as urlparse # python 3
import tempfile
import importlib
import requests
from lib.errors import InvalidTamperProvided
from lib.attacks.tamper_scripts import (
unicode_encode,
base64_encode,
hex_encode,
url_encode
)
from lib.settings import (
logger,
set_color,
@ -22,23 +17,11 @@ from lib.settings import (
proxy_string_to_dict,
DBMS_ERRORS,
create_tree,
prompt
prompt,
shutdown
)
def __tamper_warnings(script):
warn_msg = ""
if script == "hex":
warn_msg += "hex tamper script may increase risk of false positives..."
elif script == " base64":
warn_msg += "base64 tamper script may increase risk of not finding a vulnerability..."
else:
pass
logger.warning(set_color(
warn_msg, level=30
))
def list_tamper_scripts(path="{}/lib/attacks/tamper_scripts"):
retval = set()
exclude = ["__init__.py", ".pyc"]
@ -50,23 +33,14 @@ def list_tamper_scripts(path="{}/lib/attacks/tamper_scripts"):
return retval
def __tamper_payload(payload, tamper_type):
def __tamper_payload(payload, tamper_type, warning=True, **kwargs):
acceptable = list_tamper_scripts()
tamper_name = "lib.attacks.tamper_scripts.{}_encode"
if tamper_type in acceptable:
if tamper_type == "unicode":
return unicode_encode.tamper(payload)
elif tamper_type == "hex":
return hex_encode.tamper(payload)
elif tamper_type == "url":
return url_encode.tamper(payload)
else:
return base64_encode.tamper(payload)
tamper_script = importlib.import_module(tamper_name.format(tamper_type))
return tamper_script.tamper(payload, warning=warning)
else:
raise InvalidTamperProvided(
"sent tamper type '{}' is not a valid type, acceptable are {}...".format(
tamper_type, ", ".join(list(acceptable))
)
)
raise InvalidTamperProvided()
def __load_payloads(filename="{}/etc/xss_payloads.txt"):
@ -77,9 +51,20 @@ def create_urls(url, payload_list, tamper=None):
tf = tempfile.NamedTemporaryFile(delete=False)
tf_name = tf.name
with tf as tmp:
for payload in payload_list:
for i, payload in enumerate(payload_list):
if tamper:
payload = __tamper_payload(payload, tamper_type=tamper)
try:
if i < 1:
payload = __tamper_payload(payload, tamper_type=tamper, warning=True)
else:
payload = __tamper_payload(payload, tamper_type=tamper, warning=False)
except InvalidTamperProvided:
logger.error(set_color(
"you provided and invalid tamper script, acceptable tamper scripts are: {}...".format(
" | ".join(list_tamper_scripts()), level=40
)
))
shutdown()
loaded_url = "{}{}\n".format(url.strip(), payload.strip())
tmp.write(loaded_url)
return tf_name
@ -114,7 +99,6 @@ def main_xss(start_url, verbose=False, proxy=None, agent=None, tamper=None):
logger.info(set_color(
"tampering payloads with '{}'...".format(tamper)
))
__tamper_warnings(tamper)
find_xss_script(start_url)
logger.info(set_color(
"loading payloads..."
@ -162,6 +146,11 @@ def main_xss(start_url, verbose=False, proxy=None, agent=None, tamper=None):
url, result[1]
), level=40
))
else:
if verbose:
logger.error(set_color(
"SQL error discovered...", level=40
))
else:
if verbose:
logger.debug(set_color(

View file

@ -22,7 +22,7 @@ except NameError:
# clone link
CLONE = "https://github.com/ekultek/zeus-scanner.git"
# current version <major.minor.commit.patch ID>
VERSION = "1.0.25.fe911"
VERSION = "1.0.26"
# colors to output depending on the version
VERSION_TYPE_COLORS = {"dev": 33, "stable": 92, "other": 30}
# version string formatting