diff --git a/ScoutSuite/__main__.py b/ScoutSuite/__main__.py index df04aa049..9fdb4234e 100755 --- a/ScoutSuite/__main__.py +++ b/ScoutSuite/__main__.py @@ -19,7 +19,6 @@ from ScoutSuite.providers import get_provider from ScoutSuite.providers.base.authentication_strategy_factory import get_authentication_strategy - def run_from_cli(): parser = ScoutSuiteArgumentParser() args = parser.parse_args() @@ -53,6 +52,8 @@ def run_from_cli(): organization_id=args.get('organization_id'), all_projects=args.get('all_projects'), # Aliyun access_key_id=args.get('access_key_id'), access_key_secret=args.get('access_key_secret'), + # Outscale + access=args.get('access'), # General report_name=args.get('report_name'), report_dir=args.get('report_dir'), timestamp=args.get('timestamp'), @@ -99,6 +100,8 @@ def run(provider, project_id=None, folder_id=None, organization_id=None, all_projects=False, # Aliyun access_key_id=None, access_key_secret=None, + # Outscale + access=None, # General report_name=None, report_dir=None, timestamp=False, @@ -151,6 +154,8 @@ async def _run(provider, project_id, folder_id, organization_id, all_projects, # Aliyun access_key_id, access_key_secret, + # Outscale + access, # General report_name, report_dir, timestamp, @@ -197,6 +202,7 @@ async def _run(provider, client_secret=client_secret, username=username, password=password, + access=access, access_key_id=access_key_id, access_key_secret=access_key_secret) diff --git a/ScoutSuite/core/cli_parser.py b/ScoutSuite/core/cli_parser.py index a6481d3bf..031f3794d 100755 --- a/ScoutSuite/core/cli_parser.py +++ b/ScoutSuite/core/cli_parser.py @@ -23,12 +23,12 @@ def __init__(self): dest="provider") self._init_common_args_parser() - self._init_aws_parser() self._init_gcp_parser() self._init_azure_parser() self._init_aliyun_parser() self._init_oci_parser() + self._init_osc_parser() def _init_aws_parser(self): parser = self.subparsers.add_parser("aws", @@ -372,6 +372,26 @@ def _init_common_args_parser(self): default=8000, help="[EXPERIMENTAL FEATURE] Port on which you want the server to listen. Defaults to 8000.") + def _init_osc_parser(self): + parser = self.subparsers.add_parser("osc", + parents=[self.common_providers_args_parser], + help="Run Scout against an Outsccale account") + + osc_parser = parser.add_argument_group('Authentication modes') + + osc_parser.add_argument('-p', + '--profile', + dest='profile', + default=None, + help='Run with a named profile') + + osc_parser.add_argument('--access', + dest='access', + nargs='+', + default=None, + help='Run with access keys') + + def parse_args(self, args=None): args = self.parser.parse_args(args) diff --git a/ScoutSuite/output/data/html/partials/osc/left_menu_for_region.html b/ScoutSuite/output/data/html/partials/osc/left_menu_for_region.html new file mode 100755 index 000000000..bc7e796c5 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/left_menu_for_region.html @@ -0,0 +1,34 @@ + + + diff --git a/ScoutSuite/output/data/html/partials/osc/left_menu_for_vpc.html b/ScoutSuite/output/data/html/partials/osc/left_menu_for_vpc.html new file mode 100755 index 000000000..98a3e7c74 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/left_menu_for_vpc.html @@ -0,0 +1,40 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.acm.regions.id.certificates.html b/ScoutSuite/output/data/html/partials/osc/services.acm.regions.id.certificates.html new file mode 100755 index 000000000..35e2da561 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.acm.regions.id.certificates.html @@ -0,0 +1,94 @@ + + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.awslambda.regions.id.functions.html b/ScoutSuite/output/data/html/partials/osc/services.awslambda.regions.id.functions.html new file mode 100755 index 000000000..4fe3b8b43 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.awslambda.regions.id.functions.html @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.cloudformation.regions.id.stacks.html b/ScoutSuite/output/data/html/partials/osc/services.cloudformation.regions.id.stacks.html new file mode 100755 index 000000000..35543762e --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.cloudformation.regions.id.stacks.html @@ -0,0 +1,54 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.html b/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.html new file mode 100755 index 000000000..07356891b --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.html @@ -0,0 +1,37 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.id.trails.html b/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.id.trails.html new file mode 100755 index 000000000..802499383 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.cloudtrail.regions.id.trails.html @@ -0,0 +1,46 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.cloudwatch.regions.id.alarms.html b/ScoutSuite/output/data/html/partials/osc/services.cloudwatch.regions.id.alarms.html new file mode 100755 index 000000000..90f7071b8 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.cloudwatch.regions.id.alarms.html @@ -0,0 +1,47 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.config.regions.html b/ScoutSuite/output/data/html/partials/osc/services.config.regions.html new file mode 100755 index 000000000..9c59be20b --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.config.regions.html @@ -0,0 +1,51 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.recorders.html b/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.recorders.html new file mode 100755 index 000000000..6173551b3 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.recorders.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.rules.html b/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.rules.html new file mode 100755 index 000000000..a68a077fc --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.config.regions.id.rules.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.snapshots.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.snapshots.html new file mode 100755 index 000000000..bf03d8966 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.snapshots.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.volumes.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.volumes.html new file mode 100755 index 000000000..c1e6a113c --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.volumes.html @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.images.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.images.html new file mode 100755 index 000000000..5053fe8d5 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.images.html @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.instances.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.instances.html new file mode 100755 index 000000000..1ec325fc5 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.instances.html @@ -0,0 +1,72 @@ + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.security_groups.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.security_groups.html new file mode 100755 index 000000000..903ca2f17 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.id.vpcs.id.security_groups.html @@ -0,0 +1,48 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.resource_list.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.resource_list.html new file mode 100755 index 000000000..a55a94856 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.resource_list.html @@ -0,0 +1,33 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.rule_list.html b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.rule_list.html new file mode 100755 index 000000000..7fc22077a --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ec2.regions.vpcs.security_groups.rule_list.html @@ -0,0 +1,46 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.parameter_groups.html new file mode 100755 index 000000000..90590d477 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.parameter_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.security_groups.html b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.security_groups.html new file mode 100755 index 000000000..d10d0cebb --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.security_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.subnet_groups.html b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.subnet_groups.html new file mode 100755 index 000000000..d362bf2fa --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.subnet_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..f8f176eb1 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elasticache.regions.id.vpcs.id.clusters.html @@ -0,0 +1,15 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.elb_policies.html b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.elb_policies.html new file mode 100755 index 000000000..0cac00d38 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.elb_policies.html @@ -0,0 +1,53 @@ + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.html b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.html new file mode 100755 index 000000000..e197e1978 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.html @@ -0,0 +1,87 @@ + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html new file mode 100755 index 000000000..fb0d63843 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html @@ -0,0 +1,27 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.listener.html b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.listener.html new file mode 100755 index 000000000..800062038 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcs.id.elbs.listener.html @@ -0,0 +1,8 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html new file mode 100755 index 000000000..d6e4ecb47 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.elbv2.regions.id.vpcs.id.lbs.html b/ScoutSuite/output/data/html/partials/osc/services.elbv2.regions.id.vpcs.id.lbs.html new file mode 100755 index 000000000..c13169c71 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.elbv2.regions.id.vpcs.id.lbs.html @@ -0,0 +1,79 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.emr.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/partials/osc/services.emr.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..40fd32370 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.emr.regions.id.vpcs.id.clusters.html @@ -0,0 +1,60 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.credential_reports.html b/ScoutSuite/output/data/html/partials/osc/services.iam.credential_reports.html new file mode 100755 index 000000000..7751382dc --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.credential_reports.html @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.groups.html b/ScoutSuite/output/data/html/partials/osc/services.iam.groups.html new file mode 100755 index 000000000..33cffce72 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.groups.html @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.inline_policies.html b/ScoutSuite/output/data/html/partials/osc/services.iam.inline_policies.html new file mode 100755 index 000000000..1f9168586 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.inline_policies.html @@ -0,0 +1,17 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies.html b/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies.html new file mode 100755 index 000000000..401554aee --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies.html @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies_list.html b/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies_list.html new file mode 100755 index 000000000..9c1387309 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.managed_policies_list.html @@ -0,0 +1,15 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.roles.html b/ScoutSuite/output/data/html/partials/osc/services.iam.roles.html new file mode 100755 index 000000000..685fb67b5 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.roles.html @@ -0,0 +1,51 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.iam.users.html b/ScoutSuite/output/data/html/partials/osc/services.iam.users.html new file mode 100755 index 000000000..f92b7450b --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.iam.users.html @@ -0,0 +1,67 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.kms.regions.id.keys.html b/ScoutSuite/output/data/html/partials/osc/services.kms.regions.id.keys.html new file mode 100755 index 000000000..a6d1cd8e4 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.kms.regions.id.keys.html @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.parameter_groups.html new file mode 100755 index 000000000..4ce74d21d --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.parameter_groups.html @@ -0,0 +1,40 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.security_groups.html b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.security_groups.html new file mode 100755 index 000000000..dae872a30 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.security_groups.html @@ -0,0 +1,28 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.instances.html b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.instances.html new file mode 100755 index 000000000..b94d5945d --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.instances.html @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.snapshots.html b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.snapshots.html new file mode 100755 index 000000000..2a47efa8a --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.snapshots.html @@ -0,0 +1,37 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.subnet_groups.html b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.subnet_groups.html new file mode 100755 index 000000000..48d3f619d --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.rds.regions.id.vpcs.id.subnet_groups.html @@ -0,0 +1,15 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.parameter_groups.html new file mode 100755 index 000000000..db86abf53 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.parameter_groups.html @@ -0,0 +1,27 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..d29ce9e93 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.clusters.html @@ -0,0 +1,51 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.security_groups.html b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.security_groups.html new file mode 100755 index 000000000..1fddd79b8 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.id.vpcs.id.security_groups.html @@ -0,0 +1,35 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.vpcs.cluster_nodes.html b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.vpcs.cluster_nodes.html new file mode 100755 index 000000000..d635a3a2b --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.redshift.regions.vpcs.cluster_nodes.html @@ -0,0 +1,9 @@ + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.domains.html b/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.domains.html new file mode 100755 index 000000000..b07936879 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.domains.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.hosted_zones.html b/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.hosted_zones.html new file mode 100755 index 000000000..52cd2d86e --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.route53.regions.id.hosted_zones.html @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.s3.acls.html b/ScoutSuite/output/data/html/partials/osc/services.s3.acls.html new file mode 100755 index 000000000..5c189875e --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.s3.acls.html @@ -0,0 +1,58 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.s3.bucket_iam_policies.html b/ScoutSuite/output/data/html/partials/osc/services.s3.bucket_iam_policies.html new file mode 100755 index 000000000..ba663aa65 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.s3.bucket_iam_policies.html @@ -0,0 +1,55 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.html b/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.html new file mode 100755 index 000000000..fcd20f393 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.html @@ -0,0 +1,77 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.objects.html b/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.objects.html new file mode 100755 index 000000000..66bd76a30 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.s3.buckets.objects.html @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.s3.public_access_block_configuration.html b/ScoutSuite/output/data/html/partials/osc/services.s3.public_access_block_configuration.html new file mode 100644 index 000000000..df0787325 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.s3.public_access_block_configuration.html @@ -0,0 +1,22 @@ + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.secretsmanager.regions.id.secrets.html b/ScoutSuite/output/data/html/partials/osc/services.secretsmanager.regions.id.secrets.html new file mode 100755 index 000000000..caab24cb8 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.secretsmanager.regions.id.secrets.html @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.ses.regions.id.identities.html b/ScoutSuite/output/data/html/partials/osc/services.ses.regions.id.identities.html new file mode 100755 index 000000000..279e34961 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.ses.regions.id.identities.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.sns.regions.id.topics.html b/ScoutSuite/output/data/html/partials/osc/services.sns.regions.id.topics.html new file mode 100755 index 000000000..08c907ef1 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.sns.regions.id.topics.html @@ -0,0 +1,62 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.sqs.regions.id.queues.html b/ScoutSuite/output/data/html/partials/osc/services.sqs.regions.id.queues.html new file mode 100755 index 000000000..5390681b1 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.sqs.regions.id.queues.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.stackdriverlogging.sinks.html b/ScoutSuite/output/data/html/partials/osc/services.stackdriverlogging.sinks.html new file mode 100755 index 000000000..7ea2a9306 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.stackdriverlogging.sinks.html @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.peering_connections.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.peering_connections.html new file mode 100755 index 000000000..95acfd63e --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.peering_connections.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.html new file mode 100755 index 000000000..023de9a0c --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.html @@ -0,0 +1,66 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.flow_logs.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.flow_logs.html new file mode 100755 index 000000000..12cabd25f --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.flow_logs.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.network_acls.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.network_acls.html new file mode 100755 index 000000000..13aa84089 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.network_acls.html @@ -0,0 +1,65 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.peering_connections.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.peering_connections.html new file mode 100755 index 000000000..b5622fb43 --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.peering_connections.html @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.subnets.html b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.subnets.html new file mode 100755 index 000000000..345b4404c --- /dev/null +++ b/ScoutSuite/output/data/html/partials/osc/services.vpc.regions.id.vpcs.id.subnets.html @@ -0,0 +1,54 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/left_menu_for_region.html b/ScoutSuite/output/data/html/summaries/osc/left_menu_for_region.html new file mode 100755 index 000000000..bc7e796c5 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/left_menu_for_region.html @@ -0,0 +1,34 @@ + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/left_menu_for_vpc.html b/ScoutSuite/output/data/html/summaries/osc/left_menu_for_vpc.html new file mode 100755 index 000000000..98a3e7c74 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/left_menu_for_vpc.html @@ -0,0 +1,40 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.acm.regions.id.certificates.html b/ScoutSuite/output/data/html/summaries/osc/services.acm.regions.id.certificates.html new file mode 100755 index 000000000..35e2da561 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.acm.regions.id.certificates.html @@ -0,0 +1,94 @@ + + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.awslambda.regions.id.functions.html b/ScoutSuite/output/data/html/summaries/osc/services.awslambda.regions.id.functions.html new file mode 100755 index 000000000..4fe3b8b43 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.awslambda.regions.id.functions.html @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.cloudformation.regions.id.stacks.html b/ScoutSuite/output/data/html/summaries/osc/services.cloudformation.regions.id.stacks.html new file mode 100755 index 000000000..35543762e --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.cloudformation.regions.id.stacks.html @@ -0,0 +1,54 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.html b/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.html new file mode 100755 index 000000000..07356891b --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.html @@ -0,0 +1,37 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.id.trails.html b/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.id.trails.html new file mode 100755 index 000000000..802499383 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.cloudtrail.regions.id.trails.html @@ -0,0 +1,46 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.cloudwatch.regions.id.alarms.html b/ScoutSuite/output/data/html/summaries/osc/services.cloudwatch.regions.id.alarms.html new file mode 100755 index 000000000..90f7071b8 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.cloudwatch.regions.id.alarms.html @@ -0,0 +1,47 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.config.regions.html b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.html new file mode 100755 index 000000000..9c59be20b --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.html @@ -0,0 +1,51 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.recorders.html b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.recorders.html new file mode 100755 index 000000000..6173551b3 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.recorders.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.rules.html b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.rules.html new file mode 100755 index 000000000..a68a077fc --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.config.regions.id.rules.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.snapshots.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.snapshots.html new file mode 100755 index 000000000..bf03d8966 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.snapshots.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.volumes.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.volumes.html new file mode 100755 index 000000000..c1e6a113c --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.volumes.html @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.images.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.images.html new file mode 100755 index 000000000..5053fe8d5 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.images.html @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.instances.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.instances.html new file mode 100755 index 000000000..1ec325fc5 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.instances.html @@ -0,0 +1,72 @@ + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.security_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.security_groups.html new file mode 100755 index 000000000..903ca2f17 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.id.vpcs.id.security_groups.html @@ -0,0 +1,48 @@ + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.resource_list.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.resource_list.html new file mode 100755 index 000000000..a55a94856 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.resource_list.html @@ -0,0 +1,33 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.rule_list.html b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.rule_list.html new file mode 100755 index 000000000..7fc22077a --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ec2.regions.vpcs.security_groups.rule_list.html @@ -0,0 +1,46 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.parameter_groups.html new file mode 100755 index 000000000..90590d477 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.parameter_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.security_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.security_groups.html new file mode 100755 index 000000000..d10d0cebb --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.security_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.subnet_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.subnet_groups.html new file mode 100755 index 000000000..d362bf2fa --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.subnet_groups.html @@ -0,0 +1,14 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..f8f176eb1 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elasticache.regions.id.vpcs.id.clusters.html @@ -0,0 +1,15 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.elb_policies.html b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.elb_policies.html new file mode 100755 index 000000000..0cac00d38 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.elb_policies.html @@ -0,0 +1,53 @@ + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.html b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.html new file mode 100755 index 000000000..e197e1978 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.html @@ -0,0 +1,87 @@ + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html new file mode 100755 index 000000000..fb0d63843 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.linked_resources.html @@ -0,0 +1,27 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.listener.html b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.listener.html new file mode 100755 index 000000000..800062038 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcs.id.elbs.listener.html @@ -0,0 +1,8 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html new file mode 100755 index 000000000..d6e4ecb47 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elb.regions.id.vpcsid.elbs.linked_policy.html @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.elbv2.regions.id.vpcs.id.lbs.html b/ScoutSuite/output/data/html/summaries/osc/services.elbv2.regions.id.vpcs.id.lbs.html new file mode 100755 index 000000000..c13169c71 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.elbv2.regions.id.vpcs.id.lbs.html @@ -0,0 +1,79 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.emr.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/summaries/osc/services.emr.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..40fd32370 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.emr.regions.id.vpcs.id.clusters.html @@ -0,0 +1,60 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.credential_reports.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.credential_reports.html new file mode 100755 index 000000000..7751382dc --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.credential_reports.html @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.groups.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.groups.html new file mode 100755 index 000000000..33cffce72 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.groups.html @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.inline_policies.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.inline_policies.html new file mode 100755 index 000000000..1f9168586 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.inline_policies.html @@ -0,0 +1,17 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies.html new file mode 100755 index 000000000..401554aee --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies.html @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies_list.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies_list.html new file mode 100755 index 000000000..9c1387309 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.managed_policies_list.html @@ -0,0 +1,15 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.roles.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.roles.html new file mode 100755 index 000000000..685fb67b5 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.roles.html @@ -0,0 +1,51 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.iam.users.html b/ScoutSuite/output/data/html/summaries/osc/services.iam.users.html new file mode 100755 index 000000000..f92b7450b --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.iam.users.html @@ -0,0 +1,67 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.kms.regions.id.keys.html b/ScoutSuite/output/data/html/summaries/osc/services.kms.regions.id.keys.html new file mode 100755 index 000000000..a6d1cd8e4 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.kms.regions.id.keys.html @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.parameter_groups.html new file mode 100755 index 000000000..4ce74d21d --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.parameter_groups.html @@ -0,0 +1,40 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.security_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.security_groups.html new file mode 100755 index 000000000..dae872a30 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.security_groups.html @@ -0,0 +1,28 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.instances.html b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.instances.html new file mode 100755 index 000000000..b94d5945d --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.instances.html @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.snapshots.html b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.snapshots.html new file mode 100755 index 000000000..2a47efa8a --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.snapshots.html @@ -0,0 +1,37 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.subnet_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.subnet_groups.html new file mode 100755 index 000000000..48d3f619d --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.rds.regions.id.vpcs.id.subnet_groups.html @@ -0,0 +1,15 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.parameter_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.parameter_groups.html new file mode 100755 index 000000000..db86abf53 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.parameter_groups.html @@ -0,0 +1,27 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.clusters.html b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.clusters.html new file mode 100755 index 000000000..d29ce9e93 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.clusters.html @@ -0,0 +1,51 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.security_groups.html b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.security_groups.html new file mode 100755 index 000000000..1fddd79b8 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.id.vpcs.id.security_groups.html @@ -0,0 +1,35 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.vpcs.cluster_nodes.html b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.vpcs.cluster_nodes.html new file mode 100755 index 000000000..d635a3a2b --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.redshift.regions.vpcs.cluster_nodes.html @@ -0,0 +1,9 @@ + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.domains.html b/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.domains.html new file mode 100755 index 000000000..b07936879 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.domains.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.hosted_zones.html b/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.hosted_zones.html new file mode 100755 index 000000000..52cd2d86e --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.route53.regions.id.hosted_zones.html @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.s3.acls.html b/ScoutSuite/output/data/html/summaries/osc/services.s3.acls.html new file mode 100755 index 000000000..5c189875e --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.s3.acls.html @@ -0,0 +1,58 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.s3.bucket_iam_policies.html b/ScoutSuite/output/data/html/summaries/osc/services.s3.bucket_iam_policies.html new file mode 100755 index 000000000..ba663aa65 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.s3.bucket_iam_policies.html @@ -0,0 +1,55 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.html b/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.html new file mode 100755 index 000000000..fcd20f393 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.html @@ -0,0 +1,77 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.objects.html b/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.objects.html new file mode 100755 index 000000000..66bd76a30 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.s3.buckets.objects.html @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.s3.public_access_block_configuration.html b/ScoutSuite/output/data/html/summaries/osc/services.s3.public_access_block_configuration.html new file mode 100644 index 000000000..df0787325 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.s3.public_access_block_configuration.html @@ -0,0 +1,22 @@ + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.secretsmanager.regions.id.secrets.html b/ScoutSuite/output/data/html/summaries/osc/services.secretsmanager.regions.id.secrets.html new file mode 100755 index 000000000..caab24cb8 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.secretsmanager.regions.id.secrets.html @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.ses.regions.id.identities.html b/ScoutSuite/output/data/html/summaries/osc/services.ses.regions.id.identities.html new file mode 100755 index 000000000..279e34961 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.ses.regions.id.identities.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.sns.regions.id.topics.html b/ScoutSuite/output/data/html/summaries/osc/services.sns.regions.id.topics.html new file mode 100755 index 000000000..08c907ef1 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.sns.regions.id.topics.html @@ -0,0 +1,62 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.sqs.regions.id.queues.html b/ScoutSuite/output/data/html/summaries/osc/services.sqs.regions.id.queues.html new file mode 100755 index 000000000..5390681b1 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.sqs.regions.id.queues.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.stackdriverlogging.sinks.html b/ScoutSuite/output/data/html/summaries/osc/services.stackdriverlogging.sinks.html new file mode 100755 index 000000000..7ea2a9306 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.stackdriverlogging.sinks.html @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.peering_connections.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.peering_connections.html new file mode 100755 index 000000000..95acfd63e --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.peering_connections.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.html new file mode 100755 index 000000000..023de9a0c --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.html @@ -0,0 +1,66 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.flow_logs.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.flow_logs.html new file mode 100755 index 000000000..12cabd25f --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.flow_logs.html @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.network_acls.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.network_acls.html new file mode 100755 index 000000000..13aa84089 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.network_acls.html @@ -0,0 +1,65 @@ + + + + + + + + + diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.peering_connections.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.peering_connections.html new file mode 100755 index 000000000..b5622fb43 --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.peering_connections.html @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.subnets.html b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.subnets.html new file mode 100755 index 000000000..345b4404c --- /dev/null +++ b/ScoutSuite/output/data/html/summaries/osc/services.vpc.regions.id.vpcs.id.subnets.html @@ -0,0 +1,54 @@ + + + + + + + + diff --git a/ScoutSuite/providers/__init__.py b/ScoutSuite/providers/__init__.py index abee8205a..686b2e150 100755 --- a/ScoutSuite/providers/__init__.py +++ b/ScoutSuite/providers/__init__.py @@ -1,8 +1,11 @@ +import logging + providers_dict = {'aws': 'AWSProvider', 'gcp': 'GCPProvider', 'azure': 'AzureProvider', 'aliyun': 'AliyunProvider', - 'oci': 'OracleProvider'} + 'oci': 'OracleProvider', + 'osc': 'OutscaleProvider'} def get_provider_object(provider): diff --git a/ScoutSuite/providers/base/authentication_strategy_factory.py b/ScoutSuite/providers/base/authentication_strategy_factory.py index 25e786153..93c395766 100755 --- a/ScoutSuite/providers/base/authentication_strategy_factory.py +++ b/ScoutSuite/providers/base/authentication_strategy_factory.py @@ -3,7 +3,8 @@ 'gcp': 'GCPAuthenticationStrategy', 'azure': 'AzureAuthenticationStrategy', 'aliyun': 'AliyunAuthenticationStrategy', - 'oci': 'OracleAuthenticationStrategy' + 'oci': 'OracleAuthenticationStrategy', + 'osc': 'OutscaleAuthenticationStrategy' } diff --git a/ScoutSuite/providers/osc/__init__.py b/ScoutSuite/providers/osc/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ScoutSuite/providers/osc/authentication_strategy.py b/ScoutSuite/providers/osc/authentication_strategy.py new file mode 100644 index 000000000..c2dbe2024 --- /dev/null +++ b/ScoutSuite/providers/osc/authentication_strategy.py @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ScoutSuite.providers.base.authentication_strategy import AuthenticationStrategy, AuthenticationException +from osc_sdk_python import Gateway + + +class OutscaleAuthenticationStrategy(AuthenticationStrategy): + def authenticate(self, profile=None, access=None, **kwargs): + if profile: + try: + session = Gateway(**{"profile": profile}) + session.ReadVms() + except Exception as e: + raise AuthenticationException(e) + elif access: + session = Gateway({"custom": { + "access_key": access[0], + "secret_key": access[1], + "region": "eu-west-2" + }}) + else: + try: + session = Gateway() + except Exception as e: + raise AuthenticationException(e) + return session \ No newline at end of file diff --git a/ScoutSuite/providers/osc/facade/__init__.py b/ScoutSuite/providers/osc/facade/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ScoutSuite/providers/osc/facade/base.py b/ScoutSuite/providers/osc/facade/base.py new file mode 100644 index 000000000..309724de5 --- /dev/null +++ b/ScoutSuite/providers/osc/facade/base.py @@ -0,0 +1,32 @@ +from ScoutSuite.providers.osc.facade.basefacade import OSCBaseFacade +from ScoutSuite.providers.osc.facade.fcu import FCUFacade +import requests + + +class OSCFacade(OSCBaseFacade): + def __init__(self, credentials=None): + super(OSCFacade, self).__init__() + self.session = credentials + self._instantiate_facades() + + async def build_region_list(self, chosen_regions=None, excluded_regions=None): + regions = requests.post( + "https://api.eu-west-2.outscale.com/api/latest/ReadRegions").json()["Regions"] + regions_list = [] + for region in regions: + regions_list.append(region["RegionName"]) + + not_opted_in_regions = [] + # TODO + + if chosen_regions: + regions = [r for r in regions if r in chosen_regions] + if excluded_regions: + regions = [r for r in regions if r not in excluded_regions] + if not_opted_in_regions: + regions = [r for r in regions if r not in not_opted_in_regions] + return regions + + def _instantiate_facades(self): + # self.api = ApiFacade(self.session) + self.fcu = FCUFacade(self.session) \ No newline at end of file diff --git a/ScoutSuite/providers/osc/facade/basefacade.py b/ScoutSuite/providers/osc/facade/basefacade.py new file mode 100644 index 000000000..9c5eb4cd0 --- /dev/null +++ b/ScoutSuite/providers/osc/facade/basefacade.py @@ -0,0 +1,5 @@ +from osc_sdk_python import Gateway + +class OSCBaseFacade(object): + def __init__(self, session: Gateway = None): + self.session = session diff --git a/ScoutSuite/providers/osc/facade/fcu.py b/ScoutSuite/providers/osc/facade/fcu.py new file mode 100644 index 000000000..a5105cdd2 --- /dev/null +++ b/ScoutSuite/providers/osc/facade/fcu.py @@ -0,0 +1,27 @@ +from osc_sdk_python import Gateway + +from ScoutSuite.core.console import print_exception +from ScoutSuite.providers.osc.facade.basefacade import OSCBaseFacade +from ScoutSuite.providers.osc.facade.utils import OSCFacadeUtils + + +class FCUFacade(OSCBaseFacade): + def __init__(self, session: Gateway): + self.session = session + super(FCUFacade, self).__init__(session) + + async def get_security_groups(self, region: str, vpc: str = None): + try: + security_groups = await OSCFacadeUtils.get_all_security_groups(self.session) + return security_groups + except Exception as e: + print_exception('Failed to describe FCU security groups: {}'.format(e)) + return [] + + async def get_volumes(self): + try: + volumes = await OSCFacadeUtils.get_all_volumes(self.session) + return volumes + except Exception as e: + print_exception('Failed to describe FCU volumes: {}'.format(e)) + return [] diff --git a/ScoutSuite/providers/osc/facade/utils.py b/ScoutSuite/providers/osc/facade/utils.py new file mode 100644 index 000000000..7630e37fa --- /dev/null +++ b/ScoutSuite/providers/osc/facade/utils.py @@ -0,0 +1,30 @@ +from osc_sdk_python import Gateway + + +class OSCFacadeUtils: + @staticmethod + async def get_all_security_groups(session: Gateway): + response = session.ReadSecurityGroups() + security_groups = [] + if 'SecurityGroups' in response: + for security_group in response['SecurityGroups']: + security_groups.append(security_group) + return security_groups + + @staticmethod + async def get_all_volumes(session: Gateway): + response = session.ReadVolumes() + volumes = [] + if 'Volumes' in response: + for volume in response['Volumes']: + volumes.append(volume) + return volumes + + + @staticmethod + def _get_outscale_endpoint(region, version, action): + return "https://api.{}.outscale.com/api/{}/{}".format( + region, + version, + action + ) diff --git a/ScoutSuite/providers/osc/metadata.json b/ScoutSuite/providers/osc/metadata.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/ScoutSuite/providers/osc/metadata.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/ScoutSuite/providers/osc/provider.py b/ScoutSuite/providers/osc/provider.py new file mode 100644 index 000000000..4acb2e1cf --- /dev/null +++ b/ScoutSuite/providers/osc/provider.py @@ -0,0 +1,35 @@ +import os + +from ScoutSuite.providers.base.provider import BaseProvider +from ScoutSuite.providers.osc.services import OSCServicesConfig +#from ScoutSuite.providers.osc.utils import get_partition_name + + +class OutscaleProvider(BaseProvider): + """ + Implements provider for Outscale + """ + + def __init__(self, profile='default', report_dir=None, timestamp=None, + services=None, skipped_services=None, result_format='json', **kwargs): + services = [] if services is None else services + skipped_services = [] if skipped_services is None else skipped_services + + self.metadata_path = '%s/metadata.json' % os.path.split(os.path.abspath(__file__))[0] + + self.sg_map = {} + self.subnet_map = {} + + self.profile = profile + self.services_config = OSCServicesConfig + + self.provider_code = 'osc' + self.provider_name = 'Outscale API' + self.environment = self.profile + self.result_format = result_format + + self.credentials = kwargs['credentials'] + self.account_id = "" + super(OutscaleProvider, self).__init__(report_dir, timestamp, + services, skipped_services, + result_format) diff --git a/ScoutSuite/providers/osc/resources/__init__.py b/ScoutSuite/providers/osc/resources/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ScoutSuite/providers/osc/resources/base.py b/ScoutSuite/providers/osc/resources/base.py new file mode 100644 index 000000000..4fd2f0298 --- /dev/null +++ b/ScoutSuite/providers/osc/resources/base.py @@ -0,0 +1,13 @@ + +import abc + +from ScoutSuite.providers.base.resources.base import Resources, CompositeResources + + +class OSCResources(Resources, metaclass=abc.ABCMeta): + """This is the base class for OSC resources.""" + pass + + +class OSCCompositeResources(OSCResources, CompositeResources, metaclass=abc.ABCMeta): + pass \ No newline at end of file diff --git a/ScoutSuite/providers/osc/resources/fcu/__init__.py b/ScoutSuite/providers/osc/resources/fcu/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ScoutSuite/providers/osc/resources/fcu/base.py b/ScoutSuite/providers/osc/resources/fcu/base.py new file mode 100644 index 000000000..d049696a9 --- /dev/null +++ b/ScoutSuite/providers/osc/resources/fcu/base.py @@ -0,0 +1,22 @@ +from ScoutSuite.providers.osc.resources.fcu.securitygroups import SecurityGroups +from ScoutSuite.providers.osc.resources.regions import Regions +from ScoutSuite.providers.osc.resources.fcu.volumes import Volumes + + +class FCU(Regions): + _children = [ + (SecurityGroups, 'security_groups') + # (Volumes, 'volumes') + ] + + def __init__(self, facade): + super(FCU, self).__init__('fcu', facade) + + async def fetch_all(self, regions=None, excluded_regions=None, partition_name='osc', **kwargs): + await super(FCU, self).fetch_all(regions, excluded_regions) + for region in self['regions']: + self['regions'][region]['security_groups_count'] =\ + sum([len(sg) for sg in self['regions'][region]['security_groups'].values()]) + self['regions'][region]['volumes_count'] =\ + sum([len(volumes['volumes']) for volumes in self['regions'][region]['volumes'].values()]) + self['security_groups_count'] = sum([region['security_groups_count'] for region in self['regions'].values()]) diff --git a/ScoutSuite/providers/osc/resources/fcu/securitygroups.py b/ScoutSuite/providers/osc/resources/fcu/securitygroups.py new file mode 100644 index 000000000..b827c3f68 --- /dev/null +++ b/ScoutSuite/providers/osc/resources/fcu/securitygroups.py @@ -0,0 +1,92 @@ +from ScoutSuite.providers.osc.resources.base import OSCResources +from ScoutSuite.providers.osc.facade.base import OSCFacade +from ScoutSuite.utils import manage_dictionary + +import logging + +class SecurityGroups(OSCResources): + def __init__(self, facade: OSCFacade, region: str, vpc: str = None): + super(SecurityGroups, self).__init__(facade) + self.region = region + self.vpc = vpc + + async def fetch_all(self): + try: + raw_security_groups = await self.facade.fcu.get_security_groups(self.region) + for raw_security_group in raw_security_groups: + name, resource = self._parse_security_group(raw_security_group) + self[name] = resource + except Exception as e: + logging.getLogger("scout").critical(f"OSC ::: SecurityGroups _fecth_all() Exception {e}\n\n\n") + + def _parse_security_group(self, raw_security_group): + security_group = {} + security_group['name'] = raw_security_group['SecurityGroupName'] + security_group['id'] = raw_security_group['SecurityGroupId'] + security_group['description'] = raw_security_group['Description'] + security_group['owner_id'] = raw_security_group['AccountId'] + + if 'Tags' in raw_security_group: + pass # TODO + security_group['rules'] = {'ingress': {}, 'egress': {}} + ingress_protocols, ingress_rules_count = self._parse_security_group_rules( + raw_security_group['InboundRules']) + security_group['rules']['ingress']['protocols'] = ingress_protocols + security_group['rules']['ingress']['count'] = ingress_rules_count + egress_protocols, egress_rules_count = self._parse_security_group_rules( + raw_security_group['OutboundRules']) + security_group['rules']['egress']['protocols'] = egress_protocols + security_group['rules']['egress']['count'] = egress_rules_count + return security_group['id'], security_group + + def _parse_security_group_rules(self, rules): + protocols = {} + rules_count = 0 + for rule in rules: + ip_protocol = rule['IpProtocol'].upper() + if ip_protocol == '-1': + ip_protocol = 'ALL' + protocols = manage_dictionary(protocols, ip_protocol, {}) + protocols[ip_protocol] = manage_dictionary( + protocols[ip_protocol], 'ports', {}) + + # Save the port (single port or range) + port_value = '1-65535' + if 'FromPort' in rule and 'ToPort' in rule: + if ip_protocol == 'ICMP': + # FromPort with ICMP is the type of message + # port_value = self.icmp_message_types_dict[str( + # rule['FromPort'])] + # TODO + pass + elif rule['FromPort'] == rule['ToPort']: + port_value = str(rule['FromPort']) + else: + port_value = '%s-%s' % (rule['FromPort'], rule['ToPort']) + manage_dictionary(protocols[ip_protocol]['ports'], port_value, {}) + + # Save grants, values are either a CIDR or an EC2 security group + # TODO If Ouscale has something equivalent + # for grant in rule['UserIdGroupPairs']: + # manage_dictionary( + # protocols[ip_protocol]['ports'][port_value], 'security_groups', []) + # protocols[ip_protocol]['ports'][port_value]['security_groups'].append( + # grant) + # rules_count = rules_count + 1 + # for grant in rule['IpRanges']: + # manage_dictionary( + # protocols[ip_protocol]['ports'][port_value], 'cidrs', []) + # protocols[ip_protocol]['ports'][port_value]['cidrs'].append( + # {'CIDR': grant['CidrIp']}) + # rules_count = rules_count + 1 + + # IPv6 + # TODO If Outscale has something equivalent + # for grant in rule['Ipv6Ranges']: + # manage_dictionary( + # protocols[ip_protocol]['ports'][port_value], 'cidrs', []) + # protocols[ip_protocol]['ports'][port_value]['cidrs'].append( + # {'CIDR': grant['CidrIpv6']}) + # rules_count = rules_count + 1 + + return protocols, rules_count diff --git a/ScoutSuite/providers/osc/resources/fcu/volumes.py b/ScoutSuite/providers/osc/resources/fcu/volumes.py new file mode 100644 index 000000000..275c4d80d --- /dev/null +++ b/ScoutSuite/providers/osc/resources/fcu/volumes.py @@ -0,0 +1,40 @@ +from ScoutSuite.providers.osc.resources.base import OSCResources +from ScoutSuite.providers.osc.facade.base import OSCFacade +from ScoutSuite.utils import manage_dictionary + +import logging + + +class Volumes(OSCResources): + def __init__(self, facade: OSCFacade, region: str, vpc: str = None): + super(Volumes, self).__init__(facade) + self.region = region + self.vpc = vpc + + async def fetch_all(self, regions=None, excluded_regions=None, partition_name='osc', **kwargs): + try: + raw_volumes = await self.facade.fcu.get_volumes() + for raw_volume in raw_volumes: + name, resource = self._parse_volumes(raw_volume) + self[name] = resource + except Exception as e: + logging.warning(e) + + def _parse_volume(self, raw_volume): + volume = {} + volume['size'] = raw_volume['Size'] + volume['id'] = raw_volume['VolumeId'] + volume['type'] = raw_volume['VolumeType'] + volume['snapshot_id'] = raw_volume['SnapshotId'] + volume['state'] = raw_volume['State'] + volume["rules"] = [] + return volume['id'], volume + + def _parse_volume_rules(self, rules): + protocols = {} + rules_count = 0 + for rule in rules: + # @TODO find ome rule to put here + rules_count += 1 + + return protocols, rules_count diff --git a/ScoutSuite/providers/osc/resources/regions.py b/ScoutSuite/providers/osc/resources/regions.py new file mode 100644 index 000000000..33c212ddc --- /dev/null +++ b/ScoutSuite/providers/osc/resources/regions.py @@ -0,0 +1,39 @@ +import abc + +from ScoutSuite.providers.osc.resources.base import OSCCompositeResources +from ScoutSuite.providers.osc.facade.base import OSCFacade +import logging + +class Regions(OSCCompositeResources, metaclass=abc.ABCMeta): + + def __init__(self, service: str, facade: OSCFacade): + super(Regions, self).__init__(facade) + self.service = service + + async def fetch_all(self, regions=None, excluded_regions=None, **kwargs): + try: + self['regions'] = {} + for region in await self.facade.build_region_list(regions, excluded_regions): + self['regions'][region['RegionName']] = { + 'id': region['RegionName'], + 'region': region, + 'name': region['RegionName'], + 'endpoint': region['Endpoint'] + } + await self._fetch_children_of_all_resources( + resources=self['regions'], + scopes={region: {'region': region} for region in self['regions']} + ) + self._set_counts() + except Exception as e: + logging.getLogger("scout").critical(f"OSC ::: Regions _fetch_all() Exception ::: {e}") + + + def _set_counts(self): + self['regions_count'] = len(self['regions']) + + for _, key in self._children: + if key == 'vpcs': + continue + + self[key + '_count'] = sum([region[key + '_count'] for region in self['regions'].values()]) \ No newline at end of file diff --git a/ScoutSuite/providers/osc/rules/conditions/security-group-opens-all-ports.json b/ScoutSuite/providers/osc/rules/conditions/security-group-opens-all-ports.json new file mode 100644 index 000000000..528be7fc6 --- /dev/null +++ b/ScoutSuite/providers/osc/rules/conditions/security-group-opens-all-ports.json @@ -0,0 +1,9 @@ +{ + "conditions": [ "and", + [ "or", + [ "fcu.regions.id.security_groups.id.rules.id.protocols.id.ports.id", "equal", "1-65535" ], + [ "fcu.regions.id.security_groups.id.rules.id.protocols.id", "equal", "ALL" ] + ], + [ "fcu.regions.id.security_groups.id.rules.id", "equal", "ingress"] + ] +} diff --git a/ScoutSuite/providers/osc/rules/findings/fcu-security-group-opens-all-ports.json b/ScoutSuite/providers/osc/rules/findings/fcu-security-group-opens-all-ports.json new file mode 100755 index 000000000..ccec791c9 --- /dev/null +++ b/ScoutSuite/providers/osc/rules/findings/fcu-security-group-opens-all-ports.json @@ -0,0 +1,15 @@ +{ + "description": "Security Group Opens All Ports", + "rationale": "It was detected that all ports in the security group are open, which creates a wider attack surface for resources assigned to it. Open ports should be reduced to the minimum needed to correctly operate.", + "dashboard_name": "Rules", + "display_path": "fcu.regions.id.security_groups.id", + "path": "fcu.regions.id.security_groups.id.rules.id.protocols.id.ports.id", + "conditions": [ + "and", + [ + "_INCLUDE_(conditions/security-group-opens-all-ports.json)", + "", + "" + ] + ] +} \ No newline at end of file diff --git a/ScoutSuite/providers/osc/rules/rulesets/default.json b/ScoutSuite/providers/osc/rules/rulesets/default.json new file mode 100644 index 000000000..93d36677f --- /dev/null +++ b/ScoutSuite/providers/osc/rules/rulesets/default.json @@ -0,0 +1,11 @@ +{ + "about": "This ruleset consists of numerous rules that are considered standard by NCC Group. The rules enabled range from violations of well-known security best practices to gaps resulting from less-known security implications of provider-specific mechanisms. Additional rules exist, some of them requiring extra-parameters to be configured, and some of them being applicable to a limited number of users.", + "rules": { + "fcu-security-group-opens-all-ports.json": [ + { + "enabled": true, + "level": "danger" + } + ] + } +} \ No newline at end of file diff --git a/ScoutSuite/providers/osc/rules/rulesets/filters.json b/ScoutSuite/providers/osc/rules/rulesets/filters.json new file mode 100644 index 000000000..156b33045 --- /dev/null +++ b/ScoutSuite/providers/osc/rules/rulesets/filters.json @@ -0,0 +1,4 @@ +{ + "rules": { + } +} \ No newline at end of file diff --git a/ScoutSuite/providers/osc/services.py b/ScoutSuite/providers/osc/services.py new file mode 100644 index 000000000..43430fd8b --- /dev/null +++ b/ScoutSuite/providers/osc/services.py @@ -0,0 +1,23 @@ +from ScoutSuite.providers.base.services import BaseServicesConfig +# from ScoutSuite.providers.osc.resources.api.base import Api +from ScoutSuite.providers.osc.facade.base import OSCFacade +from ScoutSuite.providers.osc.resources.fcu.base import FCU + +class OSCServicesConfig(BaseServicesConfig): + """ + Object that holds the necessary OSC configuration for all services in + scope. + + :ivar api: API configuration + """ + def __init__(self, credentials=None, **kwargs): + + super(OSCServicesConfig, self).__init__(credentials) + + facade = OSCFacade(credentials) + + # self.api = Api(facade) + self.fcu = FCU(facade) + + def _is_provider(self, provider_name): + return provider_name == 'osc' diff --git a/requirements.txt b/requirements.txt index a97848293..40289ef4d 100755 --- a/requirements.txt +++ b/requirements.txt @@ -61,3 +61,6 @@ oss2>=2.8.0 # Oracle Cloud Infrastructure Provider oci>=2.2.4 + +# Outscale API +https://github.com/outscale/osc-sdk-python/releases/download/0.9.15/osc_sdk_python-0.9.15-py3-none-any.whl