Пример #1
0
def run_scan(args):
    load_modules()
    scanner = Scanner()

    # Enable groups of methods
    if args.enable_ssl:
        for name in ["ssl2", "ssl3"]:
            scanner.config.set_value(name, True)
    if args.enable_tls:
        for name in ["tls10", "tls11", "tls12"]:
            scanner.config.set_value(name, True)

    args_dict = vars(args)
    opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12"]
    for name in list(opt_names):
        opt_names.append("no-%s" % name)

    for name in opt_names:
        if name not in args_dict:
            continue
        if not args_dict.get(name):
            continue
        logger.debug("Set %s = %s", name, str(args_dict.get(name)))
        scanner.config.set_value(name, True)

    if len(args.scan) == 0:
        logger.error("No scan module specified")
        return 1

    if len(args.report) == 0:
        logger.error("No report module specified")
        return 1

    enabled_ssl_method_found = False
    for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]:
        if scanner.config.get_value(name):
            enabled_ssl_method_found = True
            break
    if not enabled_ssl_method_found:
        logger.error(
            "No SSL/TLS method enabled. "
            "Example: Use --tls10 to enable TLS 1.0"
        )
        return 1

    for module in args.scan:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseScan)
        except ModuleNotFound as e:
            logger.error("Scan module '%s' not found", e.name)
            return 1

    for module in args.report:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseReport)
        except ModuleNotFound as e:
            logger.error("Report module '%s' not found", e.name)
            return 1
        except OptionValueError as e:
            logger.error(
                "An error occurred while setting the value of the configuration"
                " option '{1}' to '{2}' for module '{0}'.".format(
                    name,
                    e.option.name,
                    e.value
                )
            )
            return 1

    for host_uri in args.host_uris:
        module = scanner.load_handler_from_uri(host_uri)
        scanner.set_handler(module)
        scanner.run()

    return 0
Пример #2
0
def run_scan(args):
    load_modules()
    scanner = Scanner()

    # Enable groups of methods
    if args.enable_ssl:
        for name in ["ssl2", "ssl3"]:
            scanner.config.set_value(name, True)
    if args.enable_tls:
        for name in ["tls10", "tls11", "tls12"]:
            scanner.config.set_value(name, True)

    args_dict = vars(args)
    opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12", "dtls10", "dtls12"]
    for name in list(opt_names):
        opt_names.append("no-%s" % name)

    for name in opt_names:
        if name not in args_dict:
            continue
        if not args_dict.get(name):
            continue
        logger.debug("Set %s = %s", name, str(args_dict.get(name)))
        scanner.config.set_value(name, True)

    if len(args.scan) == 0:
        logger.error("No scan module specified")
        return 1

    enabled_ssl_method_found = False
    for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]:
        if scanner.config.get_value(name):
            enabled_ssl_method_found = True
            break

    enabled_dtls_method_found = False
    for name in ["dtls10", "dtls12"]:
        if scanner.config.get_value(name):
            enabled_dtls_method_found = True
            break
    if not enabled_ssl_method_found and not enabled_dtls_method_found:
        logger.error("No SSL/TLS or DTLS method enabled. "
                     "Example: Use --tls10 to enable TLS 1.0")
        return 1

    if enabled_ssl_method_found and enabled_dtls_method_found:
        logger.error("SSL/TLS and DTLS are not compatible.")
        return 1

    for module in args.scan:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseScan)
        except ModuleNotFound as e:
            logger.error("Scan module '%s' not found", e.name)
            return 1
        except ModuleLoadStatus as e:
            status_msg = "unknown"
            if e.module:
                status_msg = STATUS_NAMES.get(e.module.status, status_msg)
            logger.error("Unable to load module '%s' with status '%s'", e.name,
                         status_msg)
            return 1
        except ConfigOptionNotFound as e:
            logger.error(
                "Unrecognised command line option '%s' for scan module '%s'.",
                e.name, name)
            return 1

    reports = args.report
    if len(reports) == 0:
        default_report = "term:rating=builtin.0_5"
        logger.debug("No report module specified. Using: %s" % default_report)
        reports.append(default_report)

    for module in reports:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseReport)
        except ModuleNotFound as e:
            logger.error("Report module '%s' not found", e.name)
            return 1
        except ModuleLoadStatus as e:
            status_msg = "unknown"
            if e.module:
                status_msg = STATUS_NAMES.get(e.module.status, status_msg)
            logger.error("Unable to load module '%s' with status '%s'", e.name,
                         status_msg)
            return 1
        except OptionValueError as e:
            logger.error(
                "An error occurred while setting the value of the configuration"
                " option '{1}' to '{2}' for module '{0}'.".format(
                    name, e.option.name, e.value))
            return 1
        except ConfigOptionNotFound as e:
            logger.error(
                "Unrecognised command line option '%s' for report module '%s'.",
                e.name, name)
            return 1

    for host_uri in args.host_uris:
        module = scanner.load_handler_from_uri(host_uri)
        scanner.set_handler(module)
        scanner.reset_knowledge_base()
        scanner.run()

    return 0
Пример #3
0
def run_scan(args):
    load_modules()
    scanner = Scanner()

    # Enable groups of methods
    if args.enable_ssl:
        for name in ["ssl2", "ssl3"]:
            scanner.config.set_value(name, True)
    if args.enable_tls:
        for name in ["tls10", "tls11", "tls12"]:
            scanner.config.set_value(name, True)

    args_dict = vars(args)
    opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12", "dtls10", "dtls12"]
    for name in list(opt_names):
        opt_names.append("no-%s" % name)

    for name in opt_names:
        if name not in args_dict:
            continue
        if not args_dict.get(name):
            continue
        logger.debug("Set %s = %s", name, str(args_dict.get(name)))
        scanner.config.set_value(name, True)

    if len(args.scan) == 0:
        logger.error("No scan module specified")
        return 1

    enabled_ssl_method_found = False
    for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]:
        if scanner.config.get_value(name):
            enabled_ssl_method_found = True
            break

    enabled_dtls_method_found = False
    for name in ["dtls10", "dtls12"]:
        if scanner.config.get_value(name):
            enabled_dtls_method_found = True
            break
    if not enabled_ssl_method_found and not enabled_dtls_method_found:
        logger.error(
            "No SSL/TLS or DTLS method enabled. "
            "Example: Use --tls10 to enable TLS 1.0"
        )
        return 1

    if enabled_ssl_method_found and enabled_dtls_method_found:
        logger.error(
            "SSL/TLS and DTLS are not compatible."
        )
        return 1

    for module in args.scan:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseScan)
        except ModuleNotFound as e:
            logger.error("Scan module '%s' not found", e.name)
            return 1
        except ModuleLoadStatus as e:
            status_msg = "unknown"
            if e.module:
                status_msg = STATUS_NAMES.get(e.module.status, status_msg)
            logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg)
            return 1
        except ConfigOptionNotFound as e:
            logger.error(
                "Unrecognised command line option '%s' for scan module '%s'.",
                e.name,
                name
            )
            return 1

    reports = args.report
    if len(reports) == 0:
        default_report = "term:rating=builtin.0_5"
        logger.debug(
            "No report module specified. Using: %s" % default_report
        )
        reports.append(default_report)

    for module in reports:
        name, sep, options = module.partition(":")
        try:
            scanner.append_load(name, options, base_class=BaseReport)
        except ModuleNotFound as e:
            logger.error("Report module '%s' not found", e.name)
            return 1
        except ModuleLoadStatus as e:
            status_msg = "unknown"
            if e.module:
                status_msg = STATUS_NAMES.get(e.module.status, status_msg)
            logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg)
            return 1
        except OptionValueError as e:
            logger.error(
                "An error occurred while setting the value of the configuration"
                " option '{1}' to '{2}' for module '{0}'.".format(
                    name,
                    e.option.name,
                    e.value
                )
            )
            return 1
        except ConfigOptionNotFound as e:
            logger.error(
                "Unrecognised command line option '%s' for report module '%s'.",
                e.name,
                name
            )
            return 1

    for host_uri in args.host_uris:
        module = scanner.load_handler_from_uri(host_uri)
        scanner.set_handler(module)
        scanner.reset_knowledge_base()
        scanner.run()

    return 0