Common: Reorder scan and exploit configuration classes

This commit is contained in:
Mike Salvatore 2022-06-17 08:33:43 -04:00
parent 2c4069ae1b
commit 5845bb73af
3 changed files with 89 additions and 89 deletions

View File

@ -3,16 +3,16 @@ from .agent_configuration import (
PluginConfigurationSchema,
CustomPBAConfiguration,
CustomPBAConfigurationSchema,
ExploitationOptionsConfiguration,
ExploitationOptionsConfigurationSchema,
ExploiterConfiguration,
ExploiterConfigurationSchema,
ExploitationConfiguration,
ExploitationConfigurationSchema,
ICMPScanConfiguration,
ICMPScanConfigurationSchema,
TCPScanConfiguration,
TCPScanConfigurationSchema,
ScanTargetConfiguration,
ScanTargetConfigurationSchema,
ExploitationOptionsConfiguration,
ExploitationOptionsConfigurationSchema,
ExploiterConfiguration,
ExploiterConfigurationSchema,
ExploitationConfiguration,
ExploitationConfigurationSchema,
)

View File

@ -46,48 +46,6 @@ class ExploitationOptionsConfiguration:
http_ports: List[int]
class ExploitationOptionsConfigurationSchema(Schema):
http_ports = fields.List(fields.Int())
@post_load
def _make_exploitation_options_configuration(self, data, **kwargs):
return ExploitationOptionsConfiguration(**data)
@dataclass(frozen=True)
class ExploiterConfiguration:
name: str
options: Dict
supported_os: List[OperatingSystems]
class ExploiterConfigurationSchema(Schema):
name = fields.Str()
options = fields.Mapping()
supported_os = fields.List(EnumField(OperatingSystems))
@post_load
def _make_exploiter_configuration(self, data, **kwargs):
return ExploiterConfiguration(**data)
@dataclass(frozen=True)
class ExploitationConfiguration:
options: ExploitationOptionsConfiguration
brute_force: List[ExploiterConfiguration]
vulnerability: List[ExploiterConfiguration]
class ExploitationConfigurationSchema(Schema):
options = fields.Nested(ExploitationOptionsConfigurationSchema)
brute_force = fields.List(fields.Nested(ExploiterConfigurationSchema))
vulnerability = fields.List(fields.Nested(ExploiterConfigurationSchema))
@post_load
def _make_exploitation_options_configuration(self, data, **kwargs):
return ExploitationConfiguration(**data)
@dataclass(frozen=True)
class ScanTargetConfiguration:
blocked_ips: List[str]
@ -133,3 +91,45 @@ class TCPScanConfigurationSchema(Schema):
@post_load
def _make_tcp_scan_configuration(self, data, **kwargs):
return TCPScanConfiguration(**data)
class ExploitationOptionsConfigurationSchema(Schema):
http_ports = fields.List(fields.Int())
@post_load
def _make_exploitation_options_configuration(self, data, **kwargs):
return ExploitationOptionsConfiguration(**data)
@dataclass(frozen=True)
class ExploiterConfiguration:
name: str
options: Dict
supported_os: List[OperatingSystems]
class ExploiterConfigurationSchema(Schema):
name = fields.Str()
options = fields.Mapping()
supported_os = fields.List(EnumField(OperatingSystems))
@post_load
def _make_exploiter_configuration(self, data, **kwargs):
return ExploiterConfiguration(**data)
@dataclass(frozen=True)
class ExploitationConfiguration:
options: ExploitationOptionsConfiguration
brute_force: List[ExploiterConfiguration]
vulnerability: List[ExploiterConfiguration]
class ExploitationConfigurationSchema(Schema):
options = fields.Nested(ExploitationOptionsConfigurationSchema)
brute_force = fields.List(fields.Nested(ExploiterConfigurationSchema))
vulnerability = fields.List(fields.Nested(ExploiterConfigurationSchema))
@post_load
def _make_exploitation_options_configuration(self, data, **kwargs):
return ExploitationConfiguration(**data)

View File

@ -45,6 +45,47 @@ def test_custom_pba_configuration_schema():
assert config.windows_filename == windows_filename
def test_scan_target_configuration():
blocked_ips = ["10.0.0.1", "192.168.1.1"]
inaccessible_subnets = ["172.0.0.0/24", "172.2.2.0/24", "192.168.56.0/24"]
local_network_scan = True
subnets = ["10.0.0.2", "10.0.0.2/16"]
scan_target_config = {
"blocked_ips": blocked_ips,
"inaccessible_subnets": inaccessible_subnets,
"local_network_scan": local_network_scan,
"subnets": subnets,
}
schema = ScanTargetConfigurationSchema()
config = schema.load(scan_target_config)
assert config.blocked_ips == blocked_ips
assert config.inaccessible_subnets == inaccessible_subnets
assert config.local_network_scan == local_network_scan
assert config.subnets == subnets
def test_icmp_scan_configuration_schema():
timeout_ms = 2525
schema = ICMPScanConfigurationSchema()
config = schema.load({"timeout_ms": timeout_ms})
assert config.timeout_ms == timeout_ms
def test_tcp_scan_configuration_schema():
timeout_ms = 2525
ports = [8080, 443]
schema = TCPScanConfigurationSchema()
config = schema.load({"timeout_ms": timeout_ms, "ports": ports})
assert config.timeout_ms == timeout_ms
assert config.ports == ports
def test_exploitation_options_configuration_schema():
ports = [1, 2, 3]
schema = ExploitationOptionsConfigurationSchema()
@ -98,44 +139,3 @@ def test_exploitation_configuration():
assert isinstance(config, ExploitationConfiguration)
assert config_dict == exploitation_config
def test_scan_target_configuration():
blocked_ips = ["10.0.0.1", "192.168.1.1"]
inaccessible_subnets = ["172.0.0.0/24", "172.2.2.0/24", "192.168.56.0/24"]
local_network_scan = True
subnets = ["10.0.0.2", "10.0.0.2/16"]
scan_target_config = {
"blocked_ips": blocked_ips,
"inaccessible_subnets": inaccessible_subnets,
"local_network_scan": local_network_scan,
"subnets": subnets,
}
schema = ScanTargetConfigurationSchema()
config = schema.load(scan_target_config)
assert config.blocked_ips == blocked_ips
assert config.inaccessible_subnets == inaccessible_subnets
assert config.local_network_scan == local_network_scan
assert config.subnets == subnets
def test_icmp_scan_configuration_schema():
timeout_ms = 2525
schema = ICMPScanConfigurationSchema()
config = schema.load({"timeout_ms": timeout_ms})
assert config.timeout_ms == timeout_ms
def test_tcp_scan_configuration_schema():
timeout_ms = 2525
ports = [8080, 443]
schema = TCPScanConfigurationSchema()
config = schema.load({"timeout_ms": timeout_ms, "ports": ports})
assert config.timeout_ms == timeout_ms
assert config.ports == ports