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,85 @@
|
|
|
1
|
+
"""Entra ID role escalation path analysis."""
|
|
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.azure.entra_privesc.v1",
|
|
14
|
+
"safety_class": "READ_ONLY",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": [],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1078.004"],
|
|
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 entra_privesc module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Entra ID role escalation path analysis")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: AuthorizationManagementClient")
|
|
38
|
+
print(f"[*] Target: role assignments, custom roles")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "entra_privesc",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.identity,azure.mgmt.authorization".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, "azure_entra_privesc", 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 role assignments, custom roles...")
|
|
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": "privilege escalation paths",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: privilege escalation paths")
|
|
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, "azure_entra_privesc", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_entra_privesc", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Entra ID OAuth token theft, refresh token abuse, PRT extraction."""
|
|
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.azure.entra_tokens.v1",
|
|
14
|
+
"safety_class": "ACTIVE",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": ["api_calls"],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1528"],
|
|
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 entra_tokens module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Entra ID OAuth token theft, refresh token abuse, PRT extraction")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: TokenCredential")
|
|
38
|
+
print(f"[*] Target: OAuth tokens, refresh tokens, PRT")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "entra_tokens",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.identity".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, "azure_entra_tokens", 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 OAuth tokens, refresh tokens, PRT...")
|
|
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": "leaked or reusable tokens",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: leaked or reusable tokens")
|
|
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, "azure_entra_tokens", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_entra_tokens", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: FabricScape CVE-2022-30137 — Azure Service Fabric container escape to root"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.azure.fabricscape.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ['T1611', 'T1068'],
|
|
15
|
+
"references": ["CVE-2022-30137"],
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def run(args: Any) -> int:
|
|
20
|
+
"""Execute FabricScape CVE-2022-30137 — Azure Service Fabric container escape to root."""
|
|
21
|
+
import json
|
|
22
|
+
import sys
|
|
23
|
+
from datetime import datetime, timezone
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
|
|
26
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
27
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
28
|
+
|
|
29
|
+
findings: list[dict] = []
|
|
30
|
+
|
|
31
|
+
# --- Module logic placeholder ---
|
|
32
|
+
# TODO: implement provider-specific API calls
|
|
33
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
34
|
+
|
|
35
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
36
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
37
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
38
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
39
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
40
|
+
print(f"[+] Results saved to {out_file}")
|
|
41
|
+
return 0
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""CloudXPL-Forge — Azure FabricScape Container Escape (CVE-2022-30137)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
MANIFEST: dict = {
|
|
6
|
+
"name": "Azure FabricScape Container Escape (CVE-2022-30137)",
|
|
7
|
+
"cve": "CVE-2022-30137",
|
|
8
|
+
"mitre": ["T1611"],
|
|
9
|
+
"description": "Exploits Azure Service Fabric container escape for root access on the node. CVSS 8.2.",
|
|
10
|
+
"references": ["https://nvd.nist.gov/vuln/detail/CVE-2022-30137"],
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def run(args):
|
|
18
|
+
target = getattr(args, "target", None)
|
|
19
|
+
verbose = getattr(args, "verbose", False)
|
|
20
|
+
output = getattr(args, "output", ".")
|
|
21
|
+
|
|
22
|
+
print(f"[*] {MANIFEST['name']}")
|
|
23
|
+
if not target:
|
|
24
|
+
print("[!] --target required", file=sys.stderr)
|
|
25
|
+
return 1
|
|
26
|
+
|
|
27
|
+
print(f"[*] Target: {target}")
|
|
28
|
+
# TODO: implement exploit/scanner logic
|
|
29
|
+
print("[!] Module stub — implement exploit logic")
|
|
30
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Azure Functions exploitation — injection, env vars, managed identity."""
|
|
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.azure.function_exploit.v1",
|
|
14
|
+
"safety_class": "ACTIVE",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": ["api_calls"],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1648"],
|
|
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 function_exploit module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Azure Functions exploitation — injection, env vars, managed identity")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: WebSiteManagementClient")
|
|
38
|
+
print(f"[*] Target: function apps, app settings")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "function_exploit",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.mgmt.web".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, "azure_function_exploit", 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 function apps, app settings...")
|
|
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": "sensitive app settings exposed",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: sensitive app settings exposed")
|
|
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, "azure_function_exploit", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_function_exploit", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Azure Functions persistence via triggers and timer 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.azure.function_persist.v1",
|
|
14
|
+
"safety_class": "ACTIVE",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": ["api_calls"],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1525"],
|
|
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 function_persist module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Azure Functions persistence via triggers and timer functions")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: WebSiteManagementClient")
|
|
38
|
+
print(f"[*] Target: function triggers, bindings")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "function_persist",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.mgmt.web".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, "azure_function_persist", 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 function triggers, bindings...")
|
|
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": "persistence via timer/event triggers",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: persistence via timer/event triggers")
|
|
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, "azure_function_persist", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_function_persist", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""CloudXPL-Forge module: Azure Functions Docker container escape to host (Intezer research)"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
MANIFEST = {
|
|
9
|
+
"capability_id": "cloudxpl.azure.functions_escape.v1",
|
|
10
|
+
"safety_class": "EXPLOIT",
|
|
11
|
+
"requires_authorization": True,
|
|
12
|
+
"side_effects": ["api_calls", "state_change"],
|
|
13
|
+
"output_schema": "xpl.finding.v1",
|
|
14
|
+
"mitre": ['T1611'],
|
|
15
|
+
"references": ["Azure-Functions-escape"],
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def run(args: Any) -> int:
|
|
20
|
+
"""Execute Azure Functions Docker container escape to host (Intezer research)."""
|
|
21
|
+
import json
|
|
22
|
+
import sys
|
|
23
|
+
from datetime import datetime, timezone
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
|
|
26
|
+
print(f"[*] {MANIFEST['capability_id']} starting...")
|
|
27
|
+
print(f"[*] Target: {getattr(args, 'target', 'N/A')}")
|
|
28
|
+
|
|
29
|
+
findings: list[dict] = []
|
|
30
|
+
|
|
31
|
+
# --- Module logic placeholder ---
|
|
32
|
+
# TODO: implement provider-specific API calls
|
|
33
|
+
print("[!] Module stub — implement provider-specific logic")
|
|
34
|
+
|
|
35
|
+
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
36
|
+
out_dir = Path(getattr(args, "output", "."))
|
|
37
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
38
|
+
out_file = out_dir / f"{MANIFEST['capability_id'].rsplit('.', 1)[-1]}_{ts}.json"
|
|
39
|
+
out_file.write_text(json.dumps({"module": MANIFEST["capability_id"], "timestamp": ts, "findings": findings}, indent=2))
|
|
40
|
+
print(f"[+] Results saved to {out_file}")
|
|
41
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Microsoft Graph API over-scoped permission analysis."""
|
|
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.azure.graph_api_abuse.v1",
|
|
14
|
+
"safety_class": "READ_ONLY",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": [],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1528"],
|
|
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 graph_api_abuse module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Microsoft Graph API over-scoped permission analysis")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: GraphServiceClient")
|
|
38
|
+
print(f"[*] Target: app permissions, delegated permissions")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "graph_api_abuse",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.identity".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, "azure_graph_api_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 app permissions, delegated permissions...")
|
|
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": "over-scoped Graph API permissions",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: over-scoped Graph API permissions")
|
|
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, "azure_graph_api_abuse", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_graph_api_abuse", results)
|
|
85
|
+
return 0
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Azure Key Vault secrets extraction and key theft analysis."""
|
|
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.azure.keyvault_exploit.v1",
|
|
14
|
+
"safety_class": "READ_ONLY",
|
|
15
|
+
"requires_authorization": True,
|
|
16
|
+
"side_effects": [],
|
|
17
|
+
"output_schema": "xpl.finding.v1",
|
|
18
|
+
"mitre": ["T1552"],
|
|
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 keyvault_exploit module."""
|
|
35
|
+
provider = getattr(args, "command", "azure")
|
|
36
|
+
print(f"[*] {MANIFEST['capability_id']} — Azure Key Vault secrets extraction and key theft analysis")
|
|
37
|
+
print(f"[*] Provider: {provider} | Service: SecretClient")
|
|
38
|
+
print(f"[*] Target: vault secrets, keys, certificates")
|
|
39
|
+
|
|
40
|
+
results: dict[str, Any] = {
|
|
41
|
+
"module": "keyvault_exploit",
|
|
42
|
+
"provider": provider,
|
|
43
|
+
"findings": [],
|
|
44
|
+
"summary": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
libs = "azure.keyvault.secrets".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, "azure_keyvault_exploit", 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 vault secrets, keys, certificates...")
|
|
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": "accessible vault secrets",
|
|
75
|
+
}
|
|
76
|
+
print(f"[+] Analysis complete — key finding indicator: accessible vault secrets")
|
|
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, "azure_keyvault_exploit", results)
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
_save(args, "azure_keyvault_exploit", results)
|
|
85
|
+
return 0
|