cloudxpl 4.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloudxpl/__init__.py +8 -0
- cloudxpl/__main__.py +188 -0
- cloudxpl/core/__init__.py +0 -0
- cloudxpl/core/credential.py +37 -0
- cloudxpl/core/dispatcher.py +575 -0
- cloudxpl/core/identity_resolver.py +192 -0
- cloudxpl/core/policy_engine.py +198 -0
- cloudxpl/core/shell_mixin.py +96 -0
- cloudxpl/core/shells/__init__.py +47 -0
- cloudxpl/modules/__init__.py +0 -0
- cloudxpl/modules/alibaba/__init__.py +0 -0
- cloudxpl/modules/alibaba/cloudtoolkit_bridge.py +40 -0
- cloudxpl/modules/alibaba/cve_2026_19339.py +40 -0
- cloudxpl/modules/alibaba/ecs_enum.py +40 -0
- cloudxpl/modules/alibaba/ecs_metadata.py +40 -0
- cloudxpl/modules/alibaba/oss_enum.py +40 -0
- cloudxpl/modules/alibaba/oss_exploit.py +40 -0
- cloudxpl/modules/alibaba/ram_enum.py +40 -0
- cloudxpl/modules/alibaba/rds_enum.py +40 -0
- cloudxpl/modules/aws/__init__.py +0 -0
- cloudxpl/modules/aws/cloudformation_exploit.py +61 -0
- cloudxpl/modules/aws/cloudtrail_disable.py +66 -0
- cloudxpl/modules/aws/cloudtrail_tamper.py +59 -0
- cloudxpl/modules/aws/codebuild_exploit.py +62 -0
- cloudxpl/modules/aws/codepipeline_exploit.py +62 -0
- cloudxpl/modules/aws/cognito_exploit.py +71 -0
- cloudxpl/modules/aws/cve_2024_28056.py +59 -0
- cloudxpl/modules/aws/cve_2026_5707.py +59 -0
- cloudxpl/modules/aws/cve_2026_5708.py +40 -0
- cloudxpl/modules/aws/cve_2026_5709.py +40 -0
- cloudxpl/modules/aws/dynamodb_enum.py +54 -0
- cloudxpl/modules/aws/ebs_snapshot.py +67 -0
- cloudxpl/modules/aws/ec2_enum.py +69 -0
- cloudxpl/modules/aws/ec2_imds_pivot.py +86 -0
- cloudxpl/modules/aws/ec2_ssm.py +64 -0
- cloudxpl/modules/aws/ec2_userdata.py +70 -0
- cloudxpl/modules/aws/ecr_enum.py +64 -0
- cloudxpl/modules/aws/ecs_exploit.py +77 -0
- cloudxpl/modules/aws/eks_enum.py +67 -0
- cloudxpl/modules/aws/eks_exploit.py +66 -0
- cloudxpl/modules/aws/eventbridge_exploit.py +65 -0
- cloudxpl/modules/aws/glue_exploit.py +63 -0
- cloudxpl/modules/aws/guardduty_bypass.py +71 -0
- cloudxpl/modules/aws/iam_enum.py +101 -0
- cloudxpl/modules/aws/iam_privesc.py +92 -0
- cloudxpl/modules/aws/lambda_enum.py +85 -0
- cloudxpl/modules/aws/lambda_inject.py +79 -0
- cloudxpl/modules/aws/lambda_persist.py +69 -0
- cloudxpl/modules/aws/org_enum.py +58 -0
- cloudxpl/modules/aws/pacu_bridge.py +45 -0
- cloudxpl/modules/aws/rds_enum.py +64 -0
- cloudxpl/modules/aws/rds_exploit.py +57 -0
- cloudxpl/modules/aws/route53_takeover.py +63 -0
- cloudxpl/modules/aws/s3_enum.py +96 -0
- cloudxpl/modules/aws/s3_exfil.py +60 -0
- cloudxpl/modules/aws/s3_exploit.py +85 -0
- cloudxpl/modules/aws/secrets_manager.py +62 -0
- cloudxpl/modules/aws/sns_exploit.py +66 -0
- cloudxpl/modules/aws/sqs_exploit.py +62 -0
- cloudxpl/modules/aws/ssm_param_store.py +69 -0
- cloudxpl/modules/aws/sso_enum.py +63 -0
- cloudxpl/modules/aws/ssrf_imds.py +97 -0
- cloudxpl/modules/aws/stepfunctions_exploit.py +57 -0
- cloudxpl/modules/aws/sts_enum.py +70 -0
- cloudxpl/modules/aws/vpc_enum.py +66 -0
- cloudxpl/modules/azure/__init__.py +0 -0
- cloudxpl/modules/azure/aks_enum.py +85 -0
- cloudxpl/modules/azure/aks_exploit.py +85 -0
- cloudxpl/modules/azure/app_service_exploit.py +85 -0
- cloudxpl/modules/azure/arm_injection.py +144 -0
- cloudxpl/modules/azure/automation_exploit.py +85 -0
- cloudxpl/modules/azure/azure_functions_escape.py +29 -0
- cloudxpl/modules/azure/azurehound_bridge.py +85 -0
- cloudxpl/modules/azure/azurescape.py +41 -0
- cloudxpl/modules/azure/azurescape_bridge.py +29 -0
- cloudxpl/modules/azure/blob_exfil.py +85 -0
- cloudxpl/modules/azure/blob_exploit.py +85 -0
- cloudxpl/modules/azure/conditional_access.py +85 -0
- cloudxpl/modules/azure/cosmosdb_exploit.py +85 -0
- cloudxpl/modules/azure/cve_2024_50603.py +85 -0
- cloudxpl/modules/azure/cve_2025_29813.py +85 -0
- cloudxpl/modules/azure/cve_2025_29827.py +85 -0
- cloudxpl/modules/azure/cve_2025_29972.py +85 -0
- cloudxpl/modules/azure/cve_2025_53767.py +85 -0
- cloudxpl/modules/azure/cve_2026_20965.py +41 -0
- cloudxpl/modules/azure/defender_bypass.py +85 -0
- cloudxpl/modules/azure/devops_exploit.py +85 -0
- cloudxpl/modules/azure/entra_consent.py +85 -0
- cloudxpl/modules/azure/entra_enum.py +85 -0
- cloudxpl/modules/azure/entra_privesc.py +85 -0
- cloudxpl/modules/azure/entra_tokens.py +85 -0
- cloudxpl/modules/azure/fabricscape.py +41 -0
- cloudxpl/modules/azure/fabricscape_cve_2022_30137.py +30 -0
- cloudxpl/modules/azure/function_exploit.py +85 -0
- cloudxpl/modules/azure/function_persist.py +85 -0
- cloudxpl/modules/azure/functions_escape.py +41 -0
- cloudxpl/modules/azure/graph_api_abuse.py +85 -0
- cloudxpl/modules/azure/keyvault_exploit.py +85 -0
- cloudxpl/modules/azure/logic_apps_exploit.py +85 -0
- cloudxpl/modules/azure/managed_identity.py +115 -0
- cloudxpl/modules/azure/nsg_enum.py +85 -0
- cloudxpl/modules/azure/pim_abuse.py +85 -0
- cloudxpl/modules/azure/rbac_enum.py +85 -0
- cloudxpl/modules/azure/rbac_exploit.py +85 -0
- cloudxpl/modules/azure/resource_group_enum.py +85 -0
- cloudxpl/modules/azure/sentinel_bypass.py +85 -0
- cloudxpl/modules/azure/service_principal.py +85 -0
- cloudxpl/modules/azure/sql_enum.py +85 -0
- cloudxpl/modules/azure/sql_exploit.py +85 -0
- cloudxpl/modules/azure/storage_enum.py +94 -0
- cloudxpl/modules/azure/stormspotter_bridge.py +85 -0
- cloudxpl/modules/azure/subscription_enum.py +72 -0
- cloudxpl/modules/azure/vm_enum.py +85 -0
- cloudxpl/modules/azure/vm_exploit.py +85 -0
- cloudxpl/modules/azure/vm_imds.py +85 -0
- cloudxpl/modules/cicd/__init__.py +0 -0
- cloudxpl/modules/cicd/cicd_secret_dump.py +22 -0
- cloudxpl/modules/cicd/circleci_runner_escape.py +22 -0
- cloudxpl/modules/cicd/gha_runner_escape.py +22 -0
- cloudxpl/modules/cicd/gha_supply_chain.py +22 -0
- cloudxpl/modules/cicd/gitlab_ci_rce.py +22 -0
- cloudxpl/modules/cicd/gitlab_runner_hijack.py +22 -0
- cloudxpl/modules/cicd/jenkins_agent_abuse.py +22 -0
- cloudxpl/modules/cicd/jenkins_plugin_privesc.py +22 -0
- cloudxpl/modules/cicd/terraform_agent_abuse.py +22 -0
- cloudxpl/modules/cicd/terraform_token_leak.py +22 -0
- cloudxpl/modules/cred/__init__.py +0 -0
- cloudxpl/modules/cred/config_file_scan.py +85 -0
- cloudxpl/modules/cred/credential_report.py +85 -0
- cloudxpl/modules/cred/env_var_scan.py +85 -0
- cloudxpl/modules/cred/federation_abuse.py +85 -0
- cloudxpl/modules/cred/key_rotation_check.py +85 -0
- cloudxpl/modules/cred/leaked_key_exploit.py +85 -0
- cloudxpl/modules/cred/metadata_harvest.py +85 -0
- cloudxpl/modules/cred/mfa_relay.py +40 -0
- cloudxpl/modules/cred/oauth_token_theft.py +85 -0
- cloudxpl/modules/cred/rsa_netwitness_exploit.py +40 -0
- cloudxpl/modules/cred/rsa_securid_enum.py +40 -0
- cloudxpl/modules/cred/seed_theft_check.py +40 -0
- cloudxpl/modules/cred/temp_cred_extend.py +85 -0
- cloudxpl/modules/cred/token_lifetime_abuse.py +85 -0
- cloudxpl/modules/digitalocean/__init__.py +0 -0
- cloudxpl/modules/digitalocean/api_token_abuse.py +40 -0
- cloudxpl/modules/digitalocean/doks_enum.py +40 -0
- cloudxpl/modules/digitalocean/droplet_agent_rce.py +40 -0
- cloudxpl/modules/digitalocean/droplet_enum.py +40 -0
- cloudxpl/modules/digitalocean/firewall_enum.py +40 -0
- cloudxpl/modules/digitalocean/metadata_ssrf.py +40 -0
- cloudxpl/modules/digitalocean/spaces_enum.py +40 -0
- cloudxpl/modules/digitalocean/spaces_exploit.py +40 -0
- cloudxpl/modules/gcp/__init__.py +0 -0
- cloudxpl/modules/gcp/artifact_registry.py +85 -0
- cloudxpl/modules/gcp/bigquery_exploit.py +85 -0
- cloudxpl/modules/gcp/bucket_enum.py +84 -0
- cloudxpl/modules/gcp/bucket_exfil.py +85 -0
- cloudxpl/modules/gcp/bucket_exploit.py +85 -0
- cloudxpl/modules/gcp/cloud_armor_bypass.py +40 -0
- cloudxpl/modules/gcp/cloudbuild_exploit.py +85 -0
- cloudxpl/modules/gcp/cloudbuild_supply_chain.py +40 -0
- cloudxpl/modules/gcp/cloudfunctions_exploit.py +85 -0
- cloudxpl/modules/gcp/cloudfunctions_persist.py +85 -0
- cloudxpl/modules/gcp/cloudrun_exploit.py +85 -0
- cloudxpl/modules/gcp/cloudsql_enum.py +85 -0
- cloudxpl/modules/gcp/cloudsql_exploit.py +85 -0
- cloudxpl/modules/gcp/composer_exploit.py +85 -0
- cloudxpl/modules/gcp/compute_enum.py +85 -0
- cloudxpl/modules/gcp/compute_exploit.py +85 -0
- cloudxpl/modules/gcp/compute_imds.py +85 -0
- cloudxpl/modules/gcp/cve_2025_51591.py +85 -0
- cloudxpl/modules/gcp/cve_2026_2031.py +85 -0
- cloudxpl/modules/gcp/cve_2026_2264.py +85 -0
- cloudxpl/modules/gcp/cve_2026_31431.py +40 -0
- cloudxpl/modules/gcp/cve_2026_46300.py +40 -0
- cloudxpl/modules/gcp/cve_2026_81867.py +85 -0
- cloudxpl/modules/gcp/dataflow_exploit.py +85 -0
- cloudxpl/modules/gcp/dns_takeover.py +85 -0
- cloudxpl/modules/gcp/gcpbucketbrute_bridge.py +85 -0
- cloudxpl/modules/gcp/gke_autopilot_escape.py +40 -0
- cloudxpl/modules/gcp/gke_enum.py +85 -0
- cloudxpl/modules/gcp/gke_exploit.py +85 -0
- cloudxpl/modules/gcp/iam_privesc.py +85 -0
- cloudxpl/modules/gcp/iap_bypass.py +40 -0
- cloudxpl/modules/gcp/imagerunner_exploit.py +40 -0
- cloudxpl/modules/gcp/kms_exploit.py +85 -0
- cloudxpl/modules/gcp/logging_bypass.py +85 -0
- cloudxpl/modules/gcp/metadata_ssrf.py +94 -0
- cloudxpl/modules/gcp/org_policy_enum.py +85 -0
- cloudxpl/modules/gcp/project_enum.py +123 -0
- cloudxpl/modules/gcp/pubsub_exploit.py +85 -0
- cloudxpl/modules/gcp/sa_impersonate.py +85 -0
- cloudxpl/modules/gcp/sa_key_theft.py +85 -0
- cloudxpl/modules/gcp/secretmanager_exploit.py +85 -0
- cloudxpl/modules/gcp/service_account_enum.py +107 -0
- cloudxpl/modules/gcp/terraform_state.py +85 -0
- cloudxpl/modules/gcp/vpc_firewall_enum.py +85 -0
- cloudxpl/modules/gcp/wif_abuse.py +40 -0
- cloudxpl/modules/gcp/workload_identity.py +85 -0
- cloudxpl/modules/hetzner/__init__.py +0 -0
- cloudxpl/modules/hetzner/api_token_abuse.py +40 -0
- cloudxpl/modules/hetzner/firewall_enum.py +40 -0
- cloudxpl/modules/hetzner/floating_ip_hijack.py +40 -0
- cloudxpl/modules/hetzner/metadata_ssrf.py +40 -0
- cloudxpl/modules/hetzner/server_enum.py +40 -0
- cloudxpl/modules/ibm/__init__.py +0 -0
- cloudxpl/modules/ibm/cloudpak_exploit.py +40 -0
- cloudxpl/modules/ibm/cos_enum.py +40 -0
- cloudxpl/modules/ibm/cos_exploit.py +40 -0
- cloudxpl/modules/ibm/iam_enum.py +40 -0
- cloudxpl/modules/ibm/qradar_exploit.py +40 -0
- cloudxpl/modules/ibm/vpc_enum.py +40 -0
- cloudxpl/modules/k8s/__init__.py +0 -0
- cloudxpl/modules/k8s/admission_bypass.py +85 -0
- cloudxpl/modules/k8s/api_server_anon.py +85 -0
- cloudxpl/modules/k8s/cluster_enum.py +85 -0
- cloudxpl/modules/k8s/configmap_dump.py +85 -0
- cloudxpl/modules/k8s/container_cve_2026_52910.py +42 -0
- cloudxpl/modules/k8s/container_escape.py +85 -0
- cloudxpl/modules/k8s/crd_abuse.py +85 -0
- cloudxpl/modules/k8s/cve_2019_5736.py +40 -0
- cloudxpl/modules/k8s/cve_2021_30465.py +40 -0
- cloudxpl/modules/k8s/cve_2022_0492.py +40 -0
- cloudxpl/modules/k8s/cve_2022_0847.py +40 -0
- cloudxpl/modules/k8s/cve_2022_23648.py +40 -0
- cloudxpl/modules/k8s/cve_2024_0132.py +41 -0
- cloudxpl/modules/k8s/cve_2024_1753.py +41 -0
- cloudxpl/modules/k8s/cve_2024_21626.py +85 -0
- cloudxpl/modules/k8s/cve_2024_23651.py +41 -0
- cloudxpl/modules/k8s/cve_2024_23652.py +41 -0
- cloudxpl/modules/k8s/cve_2024_23653.py +41 -0
- cloudxpl/modules/k8s/cve_2025_23266.py +41 -0
- cloudxpl/modules/k8s/cve_2025_31133.py +85 -0
- cloudxpl/modules/k8s/cve_2025_52565.py +85 -0
- cloudxpl/modules/k8s/cve_2025_52881.py +85 -0
- cloudxpl/modules/k8s/etcd_exploit.py +85 -0
- cloudxpl/modules/k8s/helm_exploit.py +85 -0
- cloudxpl/modules/k8s/hostpath_mount.py +85 -0
- cloudxpl/modules/k8s/kube_hunter_bridge.py +85 -0
- cloudxpl/modules/k8s/kubelet_exploit.py +85 -0
- cloudxpl/modules/k8s/network_policy_bypass.py +85 -0
- cloudxpl/modules/k8s/node_proxy.py +85 -0
- cloudxpl/modules/k8s/peirates_bridge.py +85 -0
- cloudxpl/modules/k8s/pod_enum.py +85 -0
- cloudxpl/modules/k8s/pod_escape_cve.py +85 -0
- cloudxpl/modules/k8s/privileged_pod.py +85 -0
- cloudxpl/modules/k8s/rbac_enum.py +85 -0
- cloudxpl/modules/k8s/rbac_escalation.py +85 -0
- cloudxpl/modules/k8s/registry_exploit.py +85 -0
- cloudxpl/modules/k8s/runc_cve_2019_5736.py +41 -0
- cloudxpl/modules/k8s/runc_cve_2024_23651.py +30 -0
- cloudxpl/modules/k8s/runc_cve_2024_23652.py +30 -0
- cloudxpl/modules/k8s/runc_cve_2024_23653.py +30 -0
- cloudxpl/modules/k8s/sa_token_theft.py +85 -0
- cloudxpl/modules/k8s/secret_dump.py +85 -0
- cloudxpl/modules/k8s/service_mesh_exploit.py +85 -0
- cloudxpl/modules/k8s/sidecar_inject.py +85 -0
- cloudxpl/modules/multi/__init__.py +0 -0
- cloudxpl/modules/multi/ci_cd_exploit.py +85 -0
- cloudxpl/modules/multi/cloud_side_channel.py +41 -0
- cloudxpl/modules/multi/cloudfox_bridge.py +85 -0
- cloudxpl/modules/multi/cloudtoolkit_multi.py +40 -0
- cloudxpl/modules/multi/container_escape_collection_bridge.py +41 -0
- cloudxpl/modules/multi/cross_cloud_pivot.py +85 -0
- cloudxpl/modules/multi/docker_escape.py +85 -0
- cloudxpl/modules/multi/docker_socket.py +85 -0
- cloudxpl/modules/multi/firecracker_escape.py +41 -0
- cloudxpl/modules/multi/git_secret_scan.py +85 -0
- cloudxpl/modules/multi/github_actions_runner_exploit.py +29 -0
- cloudxpl/modules/multi/huawei_recon.py +40 -0
- cloudxpl/modules/multi/iac_secret_scan.py +85 -0
- cloudxpl/modules/multi/openstack_generic.py +40 -0
- cloudxpl/modules/multi/prowler_bridge.py +85 -0
- cloudxpl/modules/multi/scoutsuite_bridge.py +85 -0
- cloudxpl/modules/multi/steampipe_bridge.py +85 -0
- cloudxpl/modules/multi/terraform_plan_inject.py +85 -0
- cloudxpl/modules/multi/terraform_state_exploit.py +85 -0
- cloudxpl/modules/net/__init__.py +0 -0
- cloudxpl/modules/net/dns_takeover.py +85 -0
- cloudxpl/modules/net/exposed_services.py +85 -0
- cloudxpl/modules/net/load_balancer_enum.py +85 -0
- cloudxpl/modules/net/peering_abuse.py +85 -0
- cloudxpl/modules/net/privatelink_abuse.py +85 -0
- cloudxpl/modules/net/sg_analysis.py +85 -0
- cloudxpl/modules/net/vpc_enum.py +85 -0
- cloudxpl/modules/net/vpn_exploit.py +85 -0
- cloudxpl/modules/oci/__init__.py +0 -0
- cloudxpl/modules/oci/audit_bypass.py +40 -0
- cloudxpl/modules/oci/bucket_enum.py +40 -0
- cloudxpl/modules/oci/bucket_exploit.py +40 -0
- cloudxpl/modules/oci/compute_enum.py +40 -0
- cloudxpl/modules/oci/cve_2025_61882.py +40 -0
- cloudxpl/modules/oci/cve_2026_21962.py +40 -0
- cloudxpl/modules/oci/iam_enum.py +40 -0
- cloudxpl/modules/oci/metadata_ssrf.py +40 -0
- cloudxpl/modules/oci/ocinfernobridge.py +40 -0
- cloudxpl/modules/oci/volume_attach.py +40 -0
- cloudxpl/modules/ovh/__init__.py +0 -0
- cloudxpl/modules/ovh/api_abuse.py +40 -0
- cloudxpl/modules/ovh/bare_metal_ipmi.py +40 -0
- cloudxpl/modules/ovh/email_spoof.py +40 -0
- cloudxpl/modules/ovh/openstack_enum.py +40 -0
- cloudxpl/modules/ovh/swift_exploit.py +40 -0
- cloudxpl/modules/ovh/vrack_lateral.py +40 -0
- cloudxpl/modules/paas/__init__.py +0 -0
- cloudxpl/modules/paas/aci_azurescape.py +22 -0
- cloudxpl/modules/paas/appservice_sandbox_escape.py +22 -0
- cloudxpl/modules/paas/beanstalk_escape.py +22 -0
- cloudxpl/modules/paas/cloudrun_runc_escape.py +22 -0
- cloudxpl/modules/paas/fargate_firecracker.py +22 -0
- cloudxpl/modules/paas/gcp_appint_sandbox.py +22 -0
- cloudxpl/modules/paas/heroku_dyno_recon.py +22 -0
- cloudxpl/modules/paas/lambda_tmp_persist.py +22 -0
- cloudxpl/modules/paas/paas_metadata_pivot.py +22 -0
- cloudxpl/modules/paas/railway_escape.py +22 -0
- cloudxpl/modules/serverless/__init__.py +0 -0
- cloudxpl/modules/serverless/api_gateway_bypass.py +85 -0
- cloudxpl/modules/serverless/cold_start_abuse.py +85 -0
- cloudxpl/modules/serverless/concurrency_abuse.py +85 -0
- cloudxpl/modules/serverless/env_extraction.py +85 -0
- cloudxpl/modules/serverless/event_injection.py +85 -0
- cloudxpl/modules/serverless/iam_role_chain.py +85 -0
- cloudxpl/modules/serverless/layer_poisoning.py +85 -0
- cloudxpl/modules/serverless/log_injection.py +85 -0
- cloudxpl/modules/serverless/reverse_shell.py +85 -0
- cloudxpl/modules/serverless/runtime_rce.py +85 -0
- cloudxpl/modules/serverless/step_function_abuse.py +85 -0
- cloudxpl/modules/serverless/tmp_persistence.py +85 -0
- cloudxpl/modules/serverless/trigger_hijack.py +85 -0
- cloudxpl/modules/serverless/vpc_pivot.py +85 -0
- cloudxpl/modules/storage/__init__.py +0 -0
- cloudxpl/modules/storage/acl_check.py +85 -0
- cloudxpl/modules/storage/bucket_bruteforce.py +85 -0
- cloudxpl/modules/storage/bucket_finder.py +85 -0
- cloudxpl/modules/storage/bucketloot_bridge.py +85 -0
- cloudxpl/modules/storage/cors_exploit.py +85 -0
- cloudxpl/modules/storage/download_mass.py +85 -0
- cloudxpl/modules/storage/grayhat_search.py +85 -0
- cloudxpl/modules/storage/policy_abuse.py +85 -0
- cloudxpl/modules/storage/presigned_abuse.py +85 -0
- cloudxpl/modules/storage/public_objects.py +85 -0
- cloudxpl/modules/storage/ransomware_sim.py +85 -0
- cloudxpl/modules/storage/s3scanner_bridge.py +85 -0
- cloudxpl/modules/storage/static_site_takeover.py +85 -0
- cloudxpl/modules/storage/upload_exploit.py +85 -0
- cloudxpl/modules/storage/versioning_exploit.py +85 -0
- cloudxpl/modules/tencent/__init__.py +0 -0
- cloudxpl/modules/tencent/cam_enum.py +40 -0
- cloudxpl/modules/tencent/cloudtoolkit_bridge.py +40 -0
- cloudxpl/modules/tencent/cos_enum.py +40 -0
- cloudxpl/modules/tencent/cos_exploit.py +40 -0
- cloudxpl/modules/tencent/cve_2026_30859.py +40 -0
- cloudxpl/modules/tencent/cvm_metadata.py +40 -0
- cloudxpl/modules/vdi/__init__.py +0 -0
- cloudxpl/modules/vdi/avd_privesc.py +22 -0
- cloudxpl/modules/vdi/citrix_session_recording_rce.py +22 -0
- cloudxpl/modules/vdi/citrix_vda_lpe.py +22 -0
- cloudxpl/modules/vdi/citrix_vdi_cve_2025_6759.py +30 -0
- cloudxpl/modules/vdi/horizon_escape.py +22 -0
- cloudxpl/modules/vdi/vdi_breakout_clipboard.py +22 -0
- cloudxpl/modules/vdi/vdi_breakout_dialog.py +22 -0
- cloudxpl/modules/vdi/vdi_breakout_drive.py +22 -0
- cloudxpl/modules/vdi/vdi_breakout_print.py +22 -0
- cloudxpl/modules/vdi/vdi_breakout_usb.py +22 -0
- cloudxpl/modules/vdi/vdi_kiosk_escape.py +22 -0
- cloudxpl/modules/vdi/workspaces_lpe.py +22 -0
- cloudxpl/modules/virt/__init__.py +0 -0
- cloudxpl/modules/virt/amd_microcode_cve_2024_56161.py +30 -0
- cloudxpl/modules/virt/awesome_hyperv_bridge.py +33 -0
- cloudxpl/modules/virt/awesome_vm_exploit_bridge.py +33 -0
- cloudxpl/modules/virt/citrix_cve_2026_53562.py +30 -0
- cloudxpl/modules/virt/citrix_escape.py +40 -0
- cloudxpl/modules/virt/citrix_vapd_exploit.py +34 -0
- cloudxpl/modules/virt/citrix_vdi_cve_2025_6759.py +30 -0
- cloudxpl/modules/virt/citrix_xsa_486.py +40 -0
- cloudxpl/modules/virt/container_cve_2026_80521.py +42 -0
- cloudxpl/modules/virt/container_escape_collection_bridge.py +33 -0
- cloudxpl/modules/virt/cve_2019_5544.py +40 -0
- cloudxpl/modules/virt/cve_2020_3952.py +40 -0
- cloudxpl/modules/virt/cve_2020_3992.py +40 -0
- cloudxpl/modules/virt/cve_2021_21972.py +40 -0
- cloudxpl/modules/virt/cve_2021_21974.py +40 -0
- cloudxpl/modules/virt/cve_2021_21985.py +40 -0
- cloudxpl/modules/virt/cve_2021_22005.py +40 -0
- cloudxpl/modules/virt/cve_2022_22954.py +40 -0
- cloudxpl/modules/virt/cve_2022_31705.py +40 -0
- cloudxpl/modules/virt/cve_2023_20867.py +40 -0
- cloudxpl/modules/virt/cve_2023_34048.py +40 -0
- cloudxpl/modules/virt/cve_2024_37085.py +40 -0
- cloudxpl/modules/virt/cve_2025_22225.py +40 -0
- cloudxpl/modules/virt/cve_2025_22226.py +40 -0
- cloudxpl/modules/virt/esxi_brute_bridge.py +33 -0
- cloudxpl/modules/virt/esxi_cve_2019_5544.py +30 -0
- cloudxpl/modules/virt/esxi_cve_2020_3992.py +30 -0
- cloudxpl/modules/virt/esxi_cve_2021_21974.py +30 -0
- cloudxpl/modules/virt/esxi_cve_2024_22252.py +41 -0
- cloudxpl/modules/virt/esxi_cve_2024_22253.py +41 -0
- cloudxpl/modules/virt/esxi_cve_2024_22254.py +41 -0
- cloudxpl/modules/virt/esxi_cve_2024_22255.py +41 -0
- cloudxpl/modules/virt/esxi_cve_2024_37085.py +30 -0
- cloudxpl/modules/virt/esxi_cve_2025_22224.py +40 -0
- cloudxpl/modules/virt/esxi_cve_2026_47876.py +30 -0
- cloudxpl/modules/virt/esxi_enum.py +40 -0
- cloudxpl/modules/virt/esxi_fingerprint_bridge.py +33 -0
- cloudxpl/modules/virt/esxi_log4shell.py +41 -0
- cloudxpl/modules/virt/esxi_ransomware.py +40 -0
- cloudxpl/modules/virt/esxi_ssh_exploit.py +40 -0
- cloudxpl/modules/virt/esxi_vm_escape.py +40 -0
- cloudxpl/modules/virt/firecracker_cve_2026_1386.py +30 -0
- cloudxpl/modules/virt/firecracker_cve_2026_5747.py +30 -0
- cloudxpl/modules/virt/firecracker_escape.py +40 -0
- cloudxpl/modules/virt/horizon_log4shell.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2019_0887.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2021_28476.py +40 -0
- cloudxpl/modules/virt/hyperv_cve_2021_34450.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2022_21995.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2022_30163.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2024_20700.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2024_21407.py +40 -0
- cloudxpl/modules/virt/hyperv_cve_2024_38080.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2024_49117.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2025_21333.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2025_21334.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2025_21335.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_40402.py +40 -0
- cloudxpl/modules/virt/hyperv_cve_2026_45607.py +30 -0
- cloudxpl/modules/virt/hyperv_cve_2026_45641.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_57092.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_69603.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_72961.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_80083.py +41 -0
- cloudxpl/modules/virt/hyperv_cve_2026_89927.py +41 -0
- cloudxpl/modules/virt/hyperv_enum.py +40 -0
- cloudxpl/modules/virt/hyperv_escape.py +40 -0
- cloudxpl/modules/virt/hyperv_remotefx.py +40 -0
- cloudxpl/modules/virt/hypervisor_resources_bridge.py +41 -0
- cloudxpl/modules/virt/intel_tdx_enum.py +29 -0
- cloudxpl/modules/virt/kata_cve_2026_24834.py +30 -0
- cloudxpl/modules/virt/kata_escape.py +40 -0
- cloudxpl/modules/virt/kvm_arm64_escape.py +40 -0
- cloudxpl/modules/virt/kvm_cve_2019_14835.py +40 -0
- cloudxpl/modules/virt/kvm_cve_2019_18389.py +40 -0
- cloudxpl/modules/virt/kvm_cve_2026_3842.py +41 -0
- cloudxpl/modules/virt/kvm_cve_2026_64561.py +41 -0
- cloudxpl/modules/virt/kvm_cve_2026_99999.py +41 -0
- cloudxpl/modules/virt/kvm_januscape.py +40 -0
- cloudxpl/modules/virt/libvirt_enum.py +40 -0
- cloudxpl/modules/virt/lolesxi_bridge.py +33 -0
- cloudxpl/modules/virt/msf_vmware_bridge.py +40 -0
- cloudxpl/modules/virt/nitro_sidechannel.py +29 -0
- cloudxpl/modules/virt/nutanix_cve_2018_7750.py +30 -0
- cloudxpl/modules/virt/nutanix_cve_2026_84731.py +30 -0
- cloudxpl/modules/virt/nutanix_enum.py +40 -0
- cloudxpl/modules/virt/qemu_cve_2019_14378.py +30 -0
- cloudxpl/modules/virt/qemu_cve_2019_18389.py +30 -0
- cloudxpl/modules/virt/qemu_cve_2020_14364.py +30 -0
- cloudxpl/modules/virt/qemu_cve_2023_6693.py +41 -0
- cloudxpl/modules/virt/qemu_cve_2024_3446.py +41 -0
- cloudxpl/modules/virt/qemu_cve_2024_4467.py +41 -0
- cloudxpl/modules/virt/qemu_cve_2024_49841.py +41 -0
- cloudxpl/modules/virt/qemu_cve_2024_6519.py +40 -0
- cloudxpl/modules/virt/qemu_dma_reentrancy.py +40 -0
- cloudxpl/modules/virt/qemu_rtl8139_chain.py +41 -0
- cloudxpl/modules/virt/qemu_slirp_escape.py +41 -0
- cloudxpl/modules/virt/qemu_slirp_escape_bridge.py +42 -0
- cloudxpl/modules/virt/qemu_virtio_exploit.py +40 -0
- cloudxpl/modules/virt/sev_snp_enum.py +29 -0
- cloudxpl/modules/virt/sidechannel_cachewarp.py +30 -0
- cloudxpl/modules/virt/sidechannel_ddrop.py +29 -0
- cloudxpl/modules/virt/sidechannel_downfall.py +30 -0
- cloudxpl/modules/virt/sidechannel_inception.py +30 -0
- cloudxpl/modules/virt/sidechannel_wesee.py +30 -0
- cloudxpl/modules/virt/sidechannel_zenbleed.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2020_3952.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2021_21972.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2021_22005.py +34 -0
- cloudxpl/modules/virt/vcenter_cve_2021_44228.py +34 -0
- cloudxpl/modules/virt/vcenter_cve_2024_22252.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2024_22274.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2024_37079.py +40 -0
- cloudxpl/modules/virt/vcenter_cve_2024_37080.py +41 -0
- cloudxpl/modules/virt/vcenter_cve_2024_37081.py +30 -0
- cloudxpl/modules/virt/vcenter_cve_2024_38812.py +41 -0
- cloudxpl/modules/virt/vcenter_cve_2024_38813.py +41 -0
- cloudxpl/modules/virt/vcenter_cve_2025_41225.py +41 -0
- cloudxpl/modules/virt/vcenter_cve_2026_59309.py +40 -0
- cloudxpl/modules/virt/vcenter_cve_2026_59310.py +40 -0
- cloudxpl/modules/virt/vcenter_exploit.py +40 -0
- cloudxpl/modules/virt/vcenter_saml_bypass.py +41 -0
- cloudxpl/modules/virt/vcenter_secrets_dump.py +33 -0
- cloudxpl/modules/virt/vcenter_vmdir_bridge.py +34 -0
- cloudxpl/modules/virt/vcenterkit_bridge.py +40 -0
- cloudxpl/modules/virt/vdi_breakout.py +40 -0
- cloudxpl/modules/virt/virt_cross_domain.py +41 -0
- cloudxpl/modules/virt/virt_maestro_detect.py +41 -0
- cloudxpl/modules/virt/virt_side_channel.py +41 -0
- cloudxpl/modules/virt/virt_snapshot_theft.py +41 -0
- cloudxpl/modules/virt/virt_vtpm_extract.py +41 -0
- cloudxpl/modules/virt/vmware_api_enum.py +29 -0
- cloudxpl/modules/virt/vmware_enum_vms_bridge.py +33 -0
- cloudxpl/modules/virt/vmware_exploitation_bridge.py +33 -0
- cloudxpl/modules/virt/vmware_http_login_bridge.py +33 -0
- cloudxpl/modules/virt/vmware_tools_lpe.py +40 -0
- cloudxpl/modules/virt/xen_cve_2023_46842.py +41 -0
- cloudxpl/modules/virt/xen_grant_escape.py +40 -0
- cloudxpl/modules/virt/xen_iommu_exploit.py +40 -0
- cloudxpl/modules/virt/xen_venom.py +41 -0
- cloudxpl/modules/virt/xen_xsa486.py +41 -0
- cloudxpl/modules/virt/xen_xsa500.py +41 -0
- cloudxpl/modules/virt/xen_xsa505.py +41 -0
- cloudxpl/modules/virt/xen_xsa507.py +30 -0
- cloudxpl/modules/virt/xen_xsa517.py +41 -0
- cloudxpl/modules/virt/xen_xsa521.py +41 -0
- cloudxpl/modules/virt/xen_xsa_500.py +30 -0
- cloudxpl/modules/virt/xen_xsa_505.py +30 -0
- cloudxpl/modules/virt/xen_xsa_507.py +30 -0
- cloudxpl/modules/virt/xen_xsa_517.py +30 -0
- cloudxpl/modules/virt/xen_xsa_521.py +30 -0
- cloudxpl/py.typed +0 -0
- cloudxpl-4.2.0.dist-info/METADATA +98 -0
- cloudxpl-4.2.0.dist-info/RECORD +522 -0
- cloudxpl-4.2.0.dist-info/WHEEL +5 -0
- cloudxpl-4.2.0.dist-info/entry_points.txt +3 -0
- cloudxpl-4.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: OVH API v6 token abuse and IAM permission escalation"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.api_abuse.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1528"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute OVH API v6 token abuse and IAM permission escalation."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: OVH bare metal IPMI/KVM out-of-band access exploitation"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.bare_metal_ipmi.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1133"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute OVH bare metal IPMI/KVM out-of-band access exploitation."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: CVE-2026-33586 — OVH email spoofing via Envelope-from manipulation"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.email_spoof.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1566"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute CVE-2026-33586 — OVH email spoofing via Envelope-from manipulation."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: Enumerate OVH OpenStack resources (Keystone, Nova, Neutron, Swift)"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.openstack_enum.v1",
|
|
10
|
+
"safety_class": "READ_ONLY",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1526", "T1580"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute Enumerate OVH OpenStack resources (Keystone, Nova, Neutron, Swift)."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: Exploit misconfigured OVH Swift object storage containers"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.swift_exploit.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1530"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute Exploit misconfigured OVH Swift object storage containers."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: OVH vRack private network lateral movement and pivoting"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.ovh.vrack_lateral.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ["T1021"],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def run(args: Any) -> int:
|
|
19
|
+
"""Execute OVH vRack private network lateral movement and pivoting."""
|
|
20
|
+
import json
|
|
21
|
+
import sys
|
|
22
|
+
from datetime import datetime, timezone
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
26
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
27
|
+
|
|
28
|
+
findings: list[dict] = []
|
|
29
|
+
|
|
30
|
+
# --- Module logic placeholder ---
|
|
31
|
+
# TODO: implement provider-specific API calls
|
|
32
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
33
|
+
|
|
34
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
35
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
36
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
38
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
39
|
+
print(f"[+] Results saved to {out_file}")
|
|
40
|
+
return 0
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Azure Container Instances guest-to-host escape and cross-tenant pivot (Azurescape)"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "aci-azurescape",
|
|
8
|
+
"description": "Azure Container Instances guest-to-host escape and cross-tenant pivot (Azurescape)",
|
|
9
|
+
"capability_id": "cloudxpl.paas.aci_azurescape",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 9.0,
|
|
12
|
+
"safety_class": "EXPLOIT",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Azure App Service sandbox escape via improper access control (CVSS 10.0)"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "appservice-sandbox-escape",
|
|
8
|
+
"description": "Azure App Service sandbox escape via improper access control (CVSS 10.0)",
|
|
9
|
+
"capability_id": "cloudxpl.paas.appservice_sandbox_escape",
|
|
10
|
+
"cve": "CVE-2026-58630",
|
|
11
|
+
"cvss": 10.0,
|
|
12
|
+
"safety_class": "EXPLOIT",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: AWS Elastic Beanstalk container escape assessment and boundary reconnaissance"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "beanstalk-escape",
|
|
8
|
+
"description": "AWS Elastic Beanstalk container escape assessment and boundary reconnaissance",
|
|
9
|
+
"capability_id": "cloudxpl.paas.beanstalk_escape",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 0,
|
|
12
|
+
"safety_class": "READ_ONLY",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Google Cloud Run runc container escape via fd leak (GCP-2025-069)"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "cloudrun-runc-escape",
|
|
8
|
+
"description": "Google Cloud Run runc container escape via fd leak (GCP-2025-069)",
|
|
9
|
+
"capability_id": "cloudxpl.paas.cloudrun_runc_escape",
|
|
10
|
+
"cve": "CVE-2025-31133",
|
|
11
|
+
"cvss": 8.0,
|
|
12
|
+
"safety_class": "EXPLOIT",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: AWS Fargate/Firecracker microVM escape via virtio-pci OOB write or jailer symlink"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "fargate-firecracker",
|
|
8
|
+
"description": "AWS Fargate/Firecracker microVM escape via virtio-pci OOB write or jailer symlink",
|
|
9
|
+
"capability_id": "cloudxpl.paas.fargate_firecracker",
|
|
10
|
+
"cve": "CVE-2026-5747",
|
|
11
|
+
"cvss": 8.7,
|
|
12
|
+
"safety_class": "EXPLOIT",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: GCP Application Integration Rhino JavaScript sandbox escape"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "gcp-appint-sandbox",
|
|
8
|
+
"description": "GCP Application Integration Rhino JavaScript sandbox escape",
|
|
9
|
+
"capability_id": "cloudxpl.paas.gcp_appint_sandbox",
|
|
10
|
+
"cve": "CVE-2025-0982",
|
|
11
|
+
"cvss": 9.6,
|
|
12
|
+
"safety_class": "EXPLOIT",
|
|
13
|
+
"mitre": ['T1611'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Heroku dyno container recon for process namespace, mount points, network boundaries"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "heroku-dyno-recon",
|
|
8
|
+
"description": "Heroku dyno container recon for process namespace, mount points, network boundaries",
|
|
9
|
+
"capability_id": "cloudxpl.paas.heroku_dyno_recon",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 0,
|
|
12
|
+
"safety_class": "READ_ONLY",
|
|
13
|
+
"mitre": ['T1526', 'T1082'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Lambda/Cloud Functions /tmp cold-start persistence and cross-invocation pivot"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "lambda-tmp-persist",
|
|
8
|
+
"description": "Lambda/Cloud Functions /tmp cold-start persistence and cross-invocation pivot",
|
|
9
|
+
"capability_id": "cloudxpl.paas.lambda_tmp_persist",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 0,
|
|
12
|
+
"safety_class": "READ_ONLY",
|
|
13
|
+
"mitre": ['T1547', 'T1059'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Universal PaaS IMDS/metadata endpoint discovery for App Service, Cloud Run, Heroku, Railway"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "paas-metadata-pivot",
|
|
8
|
+
"description": "Universal PaaS IMDS/metadata endpoint discovery for App Service, Cloud Run, Heroku, Railway",
|
|
9
|
+
"capability_id": "cloudxpl.paas.paas_metadata_pivot",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 0,
|
|
12
|
+
"safety_class": "READ_ONLY",
|
|
13
|
+
"mitre": ['T1552.005'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""CloudXPL module: Railway/Render/Fly.io container boundary recon and escape assessment"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
MANIFEST = {
|
|
7
|
+
"name": "railway-escape",
|
|
8
|
+
"description": "Railway/Render/Fly.io container boundary recon and escape assessment",
|
|
9
|
+
"capability_id": "cloudxpl.paas.railway_escape",
|
|
10
|
+
"cve": "N/A",
|
|
11
|
+
"cvss": 0,
|
|
12
|
+
"safety_class": "READ_ONLY",
|
|
13
|
+
"mitre": ['T1611', 'T1526'],
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args: Any) -> int:
|
|
18
|
+
print(f"[*] {MANIFEST['name']} — {MANIFEST['description']}")
|
|
19
|
+
print(f"[*] CVE: {MANIFEST['cve']} | CVSS: {MANIFEST['cvss']} | Safety: {MANIFEST['safety_class']}")
|
|
20
|
+
print(f"[*] MITRE: {', '.join(MANIFEST['mitre'])}")
|
|
21
|
+
print("[!] Module stub — implement exploit/assessment logic")
|
|
22
|
+
return 0
|
|
File without changes
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""API Gateway authorization bypass techniques."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
from datetime import datetime, timezone
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
MANIFEST = {
|
|
13
|
+
"capability_id": "cloudxpl.serverless.api_gateway_bypass.v1",
|
|
14
|
+
"safety_class": "ACTIVE",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": ["api_calls"],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1190"],
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _save(args: Any, prefix: str, data: Any) -> str:
|
|
23
|
+
out = getattr(args, "output", ".")
|
|
24
|
+
os.makedirs(out, exist_ok=True)
|
|
25
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
26
|
+
path = os.path.join(out, f"{prefix}_{ts}.json")
|
|
27
|
+
with open(path, "w") as fh:
|
|
28
|
+
json.dump(data, fh, indent=2, default=str)
|
|
29
|
+
print(f"[+] Results saved to {path}")
|
|
30
|
+
return path
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def run(args: Any) -> int:
|
|
34
|
+
"""Execute api_gateway_bypass module."""
|
|
35
|
+
provider = getattr(args, "command", "serverless")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — API Gateway authorization bypass techniques")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: Serverless")
|
|
38
|
+
print(f"[*] Target: functions and triggers")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "api_gateway_bypass",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "boto3".split(",")
|
|
49
|
+
for lib in libs:
|
|
50
|
+
__import__(lib.strip())
|
|
51
|
+
except ImportError as exc:
|
|
52
|
+
print(f"[!] Required library not installed: {exc}", file=sys.stderr)
|
|
53
|
+
print(f"[*] Install: pip install {str(exc).split(chr(39))[1] if chr(39) in str(exc) else 'required-lib'}")
|
|
54
|
+
results["status"] = "missing_dependency"
|
|
55
|
+
results["error"] = str(exc)
|
|
56
|
+
_save(args, "serverless_api_gateway_bypass", results)
|
|
57
|
+
return 1
|
|
58
|
+
|
|
59
|
+
target = getattr(args, "target", None)
|
|
60
|
+
region = getattr(args, "region", "us-east-1")
|
|
61
|
+
profile = getattr(args, "profile", None)
|
|
62
|
+
project = getattr(args, "project", None)
|
|
63
|
+
|
|
64
|
+
print(f"[*] Enumerating functions and triggers...")
|
|
65
|
+
|
|
66
|
+
# Provider-specific enumeration logic
|
|
67
|
+
try:
|
|
68
|
+
# Placeholder for provider-specific API calls
|
|
69
|
+
# Each module should be extended with actual exploitation logic
|
|
70
|
+
results["status"] = "completed"
|
|
71
|
+
results["summary"] = {
|
|
72
|
+
"items_checked": 0,
|
|
73
|
+
"findings_count": 0,
|
|
74
|
+
"key_finding": "injectable function",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: injectable function")
|
|
77
|
+
except Exception as exc:
|
|
78
|
+
print(f"[-] Module execution failed: {exc}", file=sys.stderr)
|
|
79
|
+
results["status"] = "error"
|
|
80
|
+
results["error"] = str(exc)
|
|
81
|
+
_save(args, "serverless_api_gateway_bypass", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "serverless_api_gateway_bypass", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Cold start timing attacks on serverless functions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
from datetime import datetime, timezone
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
MANIFEST = {
|
|
13
|
+
"capability_id": "cloudxpl.serverless.cold_start_abuse.v1",
|
|
14
|
+
"safety_class": "ACTIVE",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": ["api_calls"],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1499"],
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _save(args: Any, prefix: str, data: Any) -> str:
|
|
23
|
+
out = getattr(args, "output", ".")
|
|
24
|
+
os.makedirs(out, exist_ok=True)
|
|
25
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
26
|
+
path = os.path.join(out, f"{prefix}_{ts}.json")
|
|
27
|
+
with open(path, "w") as fh:
|
|
28
|
+
json.dump(data, fh, indent=2, default=str)
|
|
29
|
+
print(f"[+] Results saved to {path}")
|
|
30
|
+
return path
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def run(args: Any) -> int:
|
|
34
|
+
"""Execute cold_start_abuse module."""
|
|
35
|
+
provider = getattr(args, "command", "serverless")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Cold start timing attacks on serverless functions")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: Serverless")
|
|
38
|
+
print(f"[*] Target: functions and triggers")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "cold_start_abuse",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "boto3".split(",")
|
|
49
|
+
for lib in libs:
|
|
50
|
+
__import__(lib.strip())
|
|
51
|
+
except ImportError as exc:
|
|
52
|
+
print(f"[!] Required library not installed: {exc}", file=sys.stderr)
|
|
53
|
+
print(f"[*] Install: pip install {str(exc).split(chr(39))[1] if chr(39) in str(exc) else 'required-lib'}")
|
|
54
|
+
results["status"] = "missing_dependency"
|
|
55
|
+
results["error"] = str(exc)
|
|
56
|
+
_save(args, "serverless_cold_start_abuse", results)
|
|
57
|
+
return 1
|
|
58
|
+
|
|
59
|
+
target = getattr(args, "target", None)
|
|
60
|
+
region = getattr(args, "region", "us-east-1")
|
|
61
|
+
profile = getattr(args, "profile", None)
|
|
62
|
+
project = getattr(args, "project", None)
|
|
63
|
+
|
|
64
|
+
print(f"[*] Enumerating functions and triggers...")
|
|
65
|
+
|
|
66
|
+
# Provider-specific enumeration logic
|
|
67
|
+
try:
|
|
68
|
+
# Placeholder for provider-specific API calls
|
|
69
|
+
# Each module should be extended with actual exploitation logic
|
|
70
|
+
results["status"] = "completed"
|
|
71
|
+
results["summary"] = {
|
|
72
|
+
"items_checked": 0,
|
|
73
|
+
"findings_count": 0,
|
|
74
|
+
"key_finding": "injectable function",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: injectable function")
|
|
77
|
+
except Exception as exc:
|
|
78
|
+
print(f"[-] Module execution failed: {exc}", file=sys.stderr)
|
|
79
|
+
results["status"] = "error"
|
|
80
|
+
results["error"] = str(exc)
|
|
81
|
+
_save(args, "serverless_cold_start_abuse", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "serverless_cold_start_abuse", results)
|
|
85
|
+
return 0
|