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.
Files changed (522) hide show
  1. cloudxpl/__init__.py +8 -0
  2. cloudxpl/__main__.py +188 -0
  3. cloudxpl/core/__init__.py +0 -0
  4. cloudxpl/core/credential.py +37 -0
  5. cloudxpl/core/dispatcher.py +575 -0
  6. cloudxpl/core/identity_resolver.py +192 -0
  7. cloudxpl/core/policy_engine.py +198 -0
  8. cloudxpl/core/shell_mixin.py +96 -0
  9. cloudxpl/core/shells/__init__.py +47 -0
  10. cloudxpl/modules/__init__.py +0 -0
  11. cloudxpl/modules/alibaba/__init__.py +0 -0
  12. cloudxpl/modules/alibaba/cloudtoolkit_bridge.py +40 -0
  13. cloudxpl/modules/alibaba/cve_2026_19339.py +40 -0
  14. cloudxpl/modules/alibaba/ecs_enum.py +40 -0
  15. cloudxpl/modules/alibaba/ecs_metadata.py +40 -0
  16. cloudxpl/modules/alibaba/oss_enum.py +40 -0
  17. cloudxpl/modules/alibaba/oss_exploit.py +40 -0
  18. cloudxpl/modules/alibaba/ram_enum.py +40 -0
  19. cloudxpl/modules/alibaba/rds_enum.py +40 -0
  20. cloudxpl/modules/aws/__init__.py +0 -0
  21. cloudxpl/modules/aws/cloudformation_exploit.py +61 -0
  22. cloudxpl/modules/aws/cloudtrail_disable.py +66 -0
  23. cloudxpl/modules/aws/cloudtrail_tamper.py +59 -0
  24. cloudxpl/modules/aws/codebuild_exploit.py +62 -0
  25. cloudxpl/modules/aws/codepipeline_exploit.py +62 -0
  26. cloudxpl/modules/aws/cognito_exploit.py +71 -0
  27. cloudxpl/modules/aws/cve_2024_28056.py +59 -0
  28. cloudxpl/modules/aws/cve_2026_5707.py +59 -0
  29. cloudxpl/modules/aws/cve_2026_5708.py +40 -0
  30. cloudxpl/modules/aws/cve_2026_5709.py +40 -0
  31. cloudxpl/modules/aws/dynamodb_enum.py +54 -0
  32. cloudxpl/modules/aws/ebs_snapshot.py +67 -0
  33. cloudxpl/modules/aws/ec2_enum.py +69 -0
  34. cloudxpl/modules/aws/ec2_imds_pivot.py +86 -0
  35. cloudxpl/modules/aws/ec2_ssm.py +64 -0
  36. cloudxpl/modules/aws/ec2_userdata.py +70 -0
  37. cloudxpl/modules/aws/ecr_enum.py +64 -0
  38. cloudxpl/modules/aws/ecs_exploit.py +77 -0
  39. cloudxpl/modules/aws/eks_enum.py +67 -0
  40. cloudxpl/modules/aws/eks_exploit.py +66 -0
  41. cloudxpl/modules/aws/eventbridge_exploit.py +65 -0
  42. cloudxpl/modules/aws/glue_exploit.py +63 -0
  43. cloudxpl/modules/aws/guardduty_bypass.py +71 -0
  44. cloudxpl/modules/aws/iam_enum.py +101 -0
  45. cloudxpl/modules/aws/iam_privesc.py +92 -0
  46. cloudxpl/modules/aws/lambda_enum.py +85 -0
  47. cloudxpl/modules/aws/lambda_inject.py +79 -0
  48. cloudxpl/modules/aws/lambda_persist.py +69 -0
  49. cloudxpl/modules/aws/org_enum.py +58 -0
  50. cloudxpl/modules/aws/pacu_bridge.py +45 -0
  51. cloudxpl/modules/aws/rds_enum.py +64 -0
  52. cloudxpl/modules/aws/rds_exploit.py +57 -0
  53. cloudxpl/modules/aws/route53_takeover.py +63 -0
  54. cloudxpl/modules/aws/s3_enum.py +96 -0
  55. cloudxpl/modules/aws/s3_exfil.py +60 -0
  56. cloudxpl/modules/aws/s3_exploit.py +85 -0
  57. cloudxpl/modules/aws/secrets_manager.py +62 -0
  58. cloudxpl/modules/aws/sns_exploit.py +66 -0
  59. cloudxpl/modules/aws/sqs_exploit.py +62 -0
  60. cloudxpl/modules/aws/ssm_param_store.py +69 -0
  61. cloudxpl/modules/aws/sso_enum.py +63 -0
  62. cloudxpl/modules/aws/ssrf_imds.py +97 -0
  63. cloudxpl/modules/aws/stepfunctions_exploit.py +57 -0
  64. cloudxpl/modules/aws/sts_enum.py +70 -0
  65. cloudxpl/modules/aws/vpc_enum.py +66 -0
  66. cloudxpl/modules/azure/__init__.py +0 -0
  67. cloudxpl/modules/azure/aks_enum.py +85 -0
  68. cloudxpl/modules/azure/aks_exploit.py +85 -0
  69. cloudxpl/modules/azure/app_service_exploit.py +85 -0
  70. cloudxpl/modules/azure/arm_injection.py +144 -0
  71. cloudxpl/modules/azure/automation_exploit.py +85 -0
  72. cloudxpl/modules/azure/azure_functions_escape.py +29 -0
  73. cloudxpl/modules/azure/azurehound_bridge.py +85 -0
  74. cloudxpl/modules/azure/azurescape.py +41 -0
  75. cloudxpl/modules/azure/azurescape_bridge.py +29 -0
  76. cloudxpl/modules/azure/blob_exfil.py +85 -0
  77. cloudxpl/modules/azure/blob_exploit.py +85 -0
  78. cloudxpl/modules/azure/conditional_access.py +85 -0
  79. cloudxpl/modules/azure/cosmosdb_exploit.py +85 -0
  80. cloudxpl/modules/azure/cve_2024_50603.py +85 -0
  81. cloudxpl/modules/azure/cve_2025_29813.py +85 -0
  82. cloudxpl/modules/azure/cve_2025_29827.py +85 -0
  83. cloudxpl/modules/azure/cve_2025_29972.py +85 -0
  84. cloudxpl/modules/azure/cve_2025_53767.py +85 -0
  85. cloudxpl/modules/azure/cve_2026_20965.py +41 -0
  86. cloudxpl/modules/azure/defender_bypass.py +85 -0
  87. cloudxpl/modules/azure/devops_exploit.py +85 -0
  88. cloudxpl/modules/azure/entra_consent.py +85 -0
  89. cloudxpl/modules/azure/entra_enum.py +85 -0
  90. cloudxpl/modules/azure/entra_privesc.py +85 -0
  91. cloudxpl/modules/azure/entra_tokens.py +85 -0
  92. cloudxpl/modules/azure/fabricscape.py +41 -0
  93. cloudxpl/modules/azure/fabricscape_cve_2022_30137.py +30 -0
  94. cloudxpl/modules/azure/function_exploit.py +85 -0
  95. cloudxpl/modules/azure/function_persist.py +85 -0
  96. cloudxpl/modules/azure/functions_escape.py +41 -0
  97. cloudxpl/modules/azure/graph_api_abuse.py +85 -0
  98. cloudxpl/modules/azure/keyvault_exploit.py +85 -0
  99. cloudxpl/modules/azure/logic_apps_exploit.py +85 -0
  100. cloudxpl/modules/azure/managed_identity.py +115 -0
  101. cloudxpl/modules/azure/nsg_enum.py +85 -0
  102. cloudxpl/modules/azure/pim_abuse.py +85 -0
  103. cloudxpl/modules/azure/rbac_enum.py +85 -0
  104. cloudxpl/modules/azure/rbac_exploit.py +85 -0
  105. cloudxpl/modules/azure/resource_group_enum.py +85 -0
  106. cloudxpl/modules/azure/sentinel_bypass.py +85 -0
  107. cloudxpl/modules/azure/service_principal.py +85 -0
  108. cloudxpl/modules/azure/sql_enum.py +85 -0
  109. cloudxpl/modules/azure/sql_exploit.py +85 -0
  110. cloudxpl/modules/azure/storage_enum.py +94 -0
  111. cloudxpl/modules/azure/stormspotter_bridge.py +85 -0
  112. cloudxpl/modules/azure/subscription_enum.py +72 -0
  113. cloudxpl/modules/azure/vm_enum.py +85 -0
  114. cloudxpl/modules/azure/vm_exploit.py +85 -0
  115. cloudxpl/modules/azure/vm_imds.py +85 -0
  116. cloudxpl/modules/cicd/__init__.py +0 -0
  117. cloudxpl/modules/cicd/cicd_secret_dump.py +22 -0
  118. cloudxpl/modules/cicd/circleci_runner_escape.py +22 -0
  119. cloudxpl/modules/cicd/gha_runner_escape.py +22 -0
  120. cloudxpl/modules/cicd/gha_supply_chain.py +22 -0
  121. cloudxpl/modules/cicd/gitlab_ci_rce.py +22 -0
  122. cloudxpl/modules/cicd/gitlab_runner_hijack.py +22 -0
  123. cloudxpl/modules/cicd/jenkins_agent_abuse.py +22 -0
  124. cloudxpl/modules/cicd/jenkins_plugin_privesc.py +22 -0
  125. cloudxpl/modules/cicd/terraform_agent_abuse.py +22 -0
  126. cloudxpl/modules/cicd/terraform_token_leak.py +22 -0
  127. cloudxpl/modules/cred/__init__.py +0 -0
  128. cloudxpl/modules/cred/config_file_scan.py +85 -0
  129. cloudxpl/modules/cred/credential_report.py +85 -0
  130. cloudxpl/modules/cred/env_var_scan.py +85 -0
  131. cloudxpl/modules/cred/federation_abuse.py +85 -0
  132. cloudxpl/modules/cred/key_rotation_check.py +85 -0
  133. cloudxpl/modules/cred/leaked_key_exploit.py +85 -0
  134. cloudxpl/modules/cred/metadata_harvest.py +85 -0
  135. cloudxpl/modules/cred/mfa_relay.py +40 -0
  136. cloudxpl/modules/cred/oauth_token_theft.py +85 -0
  137. cloudxpl/modules/cred/rsa_netwitness_exploit.py +40 -0
  138. cloudxpl/modules/cred/rsa_securid_enum.py +40 -0
  139. cloudxpl/modules/cred/seed_theft_check.py +40 -0
  140. cloudxpl/modules/cred/temp_cred_extend.py +85 -0
  141. cloudxpl/modules/cred/token_lifetime_abuse.py +85 -0
  142. cloudxpl/modules/digitalocean/__init__.py +0 -0
  143. cloudxpl/modules/digitalocean/api_token_abuse.py +40 -0
  144. cloudxpl/modules/digitalocean/doks_enum.py +40 -0
  145. cloudxpl/modules/digitalocean/droplet_agent_rce.py +40 -0
  146. cloudxpl/modules/digitalocean/droplet_enum.py +40 -0
  147. cloudxpl/modules/digitalocean/firewall_enum.py +40 -0
  148. cloudxpl/modules/digitalocean/metadata_ssrf.py +40 -0
  149. cloudxpl/modules/digitalocean/spaces_enum.py +40 -0
  150. cloudxpl/modules/digitalocean/spaces_exploit.py +40 -0
  151. cloudxpl/modules/gcp/__init__.py +0 -0
  152. cloudxpl/modules/gcp/artifact_registry.py +85 -0
  153. cloudxpl/modules/gcp/bigquery_exploit.py +85 -0
  154. cloudxpl/modules/gcp/bucket_enum.py +84 -0
  155. cloudxpl/modules/gcp/bucket_exfil.py +85 -0
  156. cloudxpl/modules/gcp/bucket_exploit.py +85 -0
  157. cloudxpl/modules/gcp/cloud_armor_bypass.py +40 -0
  158. cloudxpl/modules/gcp/cloudbuild_exploit.py +85 -0
  159. cloudxpl/modules/gcp/cloudbuild_supply_chain.py +40 -0
  160. cloudxpl/modules/gcp/cloudfunctions_exploit.py +85 -0
  161. cloudxpl/modules/gcp/cloudfunctions_persist.py +85 -0
  162. cloudxpl/modules/gcp/cloudrun_exploit.py +85 -0
  163. cloudxpl/modules/gcp/cloudsql_enum.py +85 -0
  164. cloudxpl/modules/gcp/cloudsql_exploit.py +85 -0
  165. cloudxpl/modules/gcp/composer_exploit.py +85 -0
  166. cloudxpl/modules/gcp/compute_enum.py +85 -0
  167. cloudxpl/modules/gcp/compute_exploit.py +85 -0
  168. cloudxpl/modules/gcp/compute_imds.py +85 -0
  169. cloudxpl/modules/gcp/cve_2025_51591.py +85 -0
  170. cloudxpl/modules/gcp/cve_2026_2031.py +85 -0
  171. cloudxpl/modules/gcp/cve_2026_2264.py +85 -0
  172. cloudxpl/modules/gcp/cve_2026_31431.py +40 -0
  173. cloudxpl/modules/gcp/cve_2026_46300.py +40 -0
  174. cloudxpl/modules/gcp/cve_2026_81867.py +85 -0
  175. cloudxpl/modules/gcp/dataflow_exploit.py +85 -0
  176. cloudxpl/modules/gcp/dns_takeover.py +85 -0
  177. cloudxpl/modules/gcp/gcpbucketbrute_bridge.py +85 -0
  178. cloudxpl/modules/gcp/gke_autopilot_escape.py +40 -0
  179. cloudxpl/modules/gcp/gke_enum.py +85 -0
  180. cloudxpl/modules/gcp/gke_exploit.py +85 -0
  181. cloudxpl/modules/gcp/iam_privesc.py +85 -0
  182. cloudxpl/modules/gcp/iap_bypass.py +40 -0
  183. cloudxpl/modules/gcp/imagerunner_exploit.py +40 -0
  184. cloudxpl/modules/gcp/kms_exploit.py +85 -0
  185. cloudxpl/modules/gcp/logging_bypass.py +85 -0
  186. cloudxpl/modules/gcp/metadata_ssrf.py +94 -0
  187. cloudxpl/modules/gcp/org_policy_enum.py +85 -0
  188. cloudxpl/modules/gcp/project_enum.py +123 -0
  189. cloudxpl/modules/gcp/pubsub_exploit.py +85 -0
  190. cloudxpl/modules/gcp/sa_impersonate.py +85 -0
  191. cloudxpl/modules/gcp/sa_key_theft.py +85 -0
  192. cloudxpl/modules/gcp/secretmanager_exploit.py +85 -0
  193. cloudxpl/modules/gcp/service_account_enum.py +107 -0
  194. cloudxpl/modules/gcp/terraform_state.py +85 -0
  195. cloudxpl/modules/gcp/vpc_firewall_enum.py +85 -0
  196. cloudxpl/modules/gcp/wif_abuse.py +40 -0
  197. cloudxpl/modules/gcp/workload_identity.py +85 -0
  198. cloudxpl/modules/hetzner/__init__.py +0 -0
  199. cloudxpl/modules/hetzner/api_token_abuse.py +40 -0
  200. cloudxpl/modules/hetzner/firewall_enum.py +40 -0
  201. cloudxpl/modules/hetzner/floating_ip_hijack.py +40 -0
  202. cloudxpl/modules/hetzner/metadata_ssrf.py +40 -0
  203. cloudxpl/modules/hetzner/server_enum.py +40 -0
  204. cloudxpl/modules/ibm/__init__.py +0 -0
  205. cloudxpl/modules/ibm/cloudpak_exploit.py +40 -0
  206. cloudxpl/modules/ibm/cos_enum.py +40 -0
  207. cloudxpl/modules/ibm/cos_exploit.py +40 -0
  208. cloudxpl/modules/ibm/iam_enum.py +40 -0
  209. cloudxpl/modules/ibm/qradar_exploit.py +40 -0
  210. cloudxpl/modules/ibm/vpc_enum.py +40 -0
  211. cloudxpl/modules/k8s/__init__.py +0 -0
  212. cloudxpl/modules/k8s/admission_bypass.py +85 -0
  213. cloudxpl/modules/k8s/api_server_anon.py +85 -0
  214. cloudxpl/modules/k8s/cluster_enum.py +85 -0
  215. cloudxpl/modules/k8s/configmap_dump.py +85 -0
  216. cloudxpl/modules/k8s/container_cve_2026_52910.py +42 -0
  217. cloudxpl/modules/k8s/container_escape.py +85 -0
  218. cloudxpl/modules/k8s/crd_abuse.py +85 -0
  219. cloudxpl/modules/k8s/cve_2019_5736.py +40 -0
  220. cloudxpl/modules/k8s/cve_2021_30465.py +40 -0
  221. cloudxpl/modules/k8s/cve_2022_0492.py +40 -0
  222. cloudxpl/modules/k8s/cve_2022_0847.py +40 -0
  223. cloudxpl/modules/k8s/cve_2022_23648.py +40 -0
  224. cloudxpl/modules/k8s/cve_2024_0132.py +41 -0
  225. cloudxpl/modules/k8s/cve_2024_1753.py +41 -0
  226. cloudxpl/modules/k8s/cve_2024_21626.py +85 -0
  227. cloudxpl/modules/k8s/cve_2024_23651.py +41 -0
  228. cloudxpl/modules/k8s/cve_2024_23652.py +41 -0
  229. cloudxpl/modules/k8s/cve_2024_23653.py +41 -0
  230. cloudxpl/modules/k8s/cve_2025_23266.py +41 -0
  231. cloudxpl/modules/k8s/cve_2025_31133.py +85 -0
  232. cloudxpl/modules/k8s/cve_2025_52565.py +85 -0
  233. cloudxpl/modules/k8s/cve_2025_52881.py +85 -0
  234. cloudxpl/modules/k8s/etcd_exploit.py +85 -0
  235. cloudxpl/modules/k8s/helm_exploit.py +85 -0
  236. cloudxpl/modules/k8s/hostpath_mount.py +85 -0
  237. cloudxpl/modules/k8s/kube_hunter_bridge.py +85 -0
  238. cloudxpl/modules/k8s/kubelet_exploit.py +85 -0
  239. cloudxpl/modules/k8s/network_policy_bypass.py +85 -0
  240. cloudxpl/modules/k8s/node_proxy.py +85 -0
  241. cloudxpl/modules/k8s/peirates_bridge.py +85 -0
  242. cloudxpl/modules/k8s/pod_enum.py +85 -0
  243. cloudxpl/modules/k8s/pod_escape_cve.py +85 -0
  244. cloudxpl/modules/k8s/privileged_pod.py +85 -0
  245. cloudxpl/modules/k8s/rbac_enum.py +85 -0
  246. cloudxpl/modules/k8s/rbac_escalation.py +85 -0
  247. cloudxpl/modules/k8s/registry_exploit.py +85 -0
  248. cloudxpl/modules/k8s/runc_cve_2019_5736.py +41 -0
  249. cloudxpl/modules/k8s/runc_cve_2024_23651.py +30 -0
  250. cloudxpl/modules/k8s/runc_cve_2024_23652.py +30 -0
  251. cloudxpl/modules/k8s/runc_cve_2024_23653.py +30 -0
  252. cloudxpl/modules/k8s/sa_token_theft.py +85 -0
  253. cloudxpl/modules/k8s/secret_dump.py +85 -0
  254. cloudxpl/modules/k8s/service_mesh_exploit.py +85 -0
  255. cloudxpl/modules/k8s/sidecar_inject.py +85 -0
  256. cloudxpl/modules/multi/__init__.py +0 -0
  257. cloudxpl/modules/multi/ci_cd_exploit.py +85 -0
  258. cloudxpl/modules/multi/cloud_side_channel.py +41 -0
  259. cloudxpl/modules/multi/cloudfox_bridge.py +85 -0
  260. cloudxpl/modules/multi/cloudtoolkit_multi.py +40 -0
  261. cloudxpl/modules/multi/container_escape_collection_bridge.py +41 -0
  262. cloudxpl/modules/multi/cross_cloud_pivot.py +85 -0
  263. cloudxpl/modules/multi/docker_escape.py +85 -0
  264. cloudxpl/modules/multi/docker_socket.py +85 -0
  265. cloudxpl/modules/multi/firecracker_escape.py +41 -0
  266. cloudxpl/modules/multi/git_secret_scan.py +85 -0
  267. cloudxpl/modules/multi/github_actions_runner_exploit.py +29 -0
  268. cloudxpl/modules/multi/huawei_recon.py +40 -0
  269. cloudxpl/modules/multi/iac_secret_scan.py +85 -0
  270. cloudxpl/modules/multi/openstack_generic.py +40 -0
  271. cloudxpl/modules/multi/prowler_bridge.py +85 -0
  272. cloudxpl/modules/multi/scoutsuite_bridge.py +85 -0
  273. cloudxpl/modules/multi/steampipe_bridge.py +85 -0
  274. cloudxpl/modules/multi/terraform_plan_inject.py +85 -0
  275. cloudxpl/modules/multi/terraform_state_exploit.py +85 -0
  276. cloudxpl/modules/net/__init__.py +0 -0
  277. cloudxpl/modules/net/dns_takeover.py +85 -0
  278. cloudxpl/modules/net/exposed_services.py +85 -0
  279. cloudxpl/modules/net/load_balancer_enum.py +85 -0
  280. cloudxpl/modules/net/peering_abuse.py +85 -0
  281. cloudxpl/modules/net/privatelink_abuse.py +85 -0
  282. cloudxpl/modules/net/sg_analysis.py +85 -0
  283. cloudxpl/modules/net/vpc_enum.py +85 -0
  284. cloudxpl/modules/net/vpn_exploit.py +85 -0
  285. cloudxpl/modules/oci/__init__.py +0 -0
  286. cloudxpl/modules/oci/audit_bypass.py +40 -0
  287. cloudxpl/modules/oci/bucket_enum.py +40 -0
  288. cloudxpl/modules/oci/bucket_exploit.py +40 -0
  289. cloudxpl/modules/oci/compute_enum.py +40 -0
  290. cloudxpl/modules/oci/cve_2025_61882.py +40 -0
  291. cloudxpl/modules/oci/cve_2026_21962.py +40 -0
  292. cloudxpl/modules/oci/iam_enum.py +40 -0
  293. cloudxpl/modules/oci/metadata_ssrf.py +40 -0
  294. cloudxpl/modules/oci/ocinfernobridge.py +40 -0
  295. cloudxpl/modules/oci/volume_attach.py +40 -0
  296. cloudxpl/modules/ovh/__init__.py +0 -0
  297. cloudxpl/modules/ovh/api_abuse.py +40 -0
  298. cloudxpl/modules/ovh/bare_metal_ipmi.py +40 -0
  299. cloudxpl/modules/ovh/email_spoof.py +40 -0
  300. cloudxpl/modules/ovh/openstack_enum.py +40 -0
  301. cloudxpl/modules/ovh/swift_exploit.py +40 -0
  302. cloudxpl/modules/ovh/vrack_lateral.py +40 -0
  303. cloudxpl/modules/paas/__init__.py +0 -0
  304. cloudxpl/modules/paas/aci_azurescape.py +22 -0
  305. cloudxpl/modules/paas/appservice_sandbox_escape.py +22 -0
  306. cloudxpl/modules/paas/beanstalk_escape.py +22 -0
  307. cloudxpl/modules/paas/cloudrun_runc_escape.py +22 -0
  308. cloudxpl/modules/paas/fargate_firecracker.py +22 -0
  309. cloudxpl/modules/paas/gcp_appint_sandbox.py +22 -0
  310. cloudxpl/modules/paas/heroku_dyno_recon.py +22 -0
  311. cloudxpl/modules/paas/lambda_tmp_persist.py +22 -0
  312. cloudxpl/modules/paas/paas_metadata_pivot.py +22 -0
  313. cloudxpl/modules/paas/railway_escape.py +22 -0
  314. cloudxpl/modules/serverless/__init__.py +0 -0
  315. cloudxpl/modules/serverless/api_gateway_bypass.py +85 -0
  316. cloudxpl/modules/serverless/cold_start_abuse.py +85 -0
  317. cloudxpl/modules/serverless/concurrency_abuse.py +85 -0
  318. cloudxpl/modules/serverless/env_extraction.py +85 -0
  319. cloudxpl/modules/serverless/event_injection.py +85 -0
  320. cloudxpl/modules/serverless/iam_role_chain.py +85 -0
  321. cloudxpl/modules/serverless/layer_poisoning.py +85 -0
  322. cloudxpl/modules/serverless/log_injection.py +85 -0
  323. cloudxpl/modules/serverless/reverse_shell.py +85 -0
  324. cloudxpl/modules/serverless/runtime_rce.py +85 -0
  325. cloudxpl/modules/serverless/step_function_abuse.py +85 -0
  326. cloudxpl/modules/serverless/tmp_persistence.py +85 -0
  327. cloudxpl/modules/serverless/trigger_hijack.py +85 -0
  328. cloudxpl/modules/serverless/vpc_pivot.py +85 -0
  329. cloudxpl/modules/storage/__init__.py +0 -0
  330. cloudxpl/modules/storage/acl_check.py +85 -0
  331. cloudxpl/modules/storage/bucket_bruteforce.py +85 -0
  332. cloudxpl/modules/storage/bucket_finder.py +85 -0
  333. cloudxpl/modules/storage/bucketloot_bridge.py +85 -0
  334. cloudxpl/modules/storage/cors_exploit.py +85 -0
  335. cloudxpl/modules/storage/download_mass.py +85 -0
  336. cloudxpl/modules/storage/grayhat_search.py +85 -0
  337. cloudxpl/modules/storage/policy_abuse.py +85 -0
  338. cloudxpl/modules/storage/presigned_abuse.py +85 -0
  339. cloudxpl/modules/storage/public_objects.py +85 -0
  340. cloudxpl/modules/storage/ransomware_sim.py +85 -0
  341. cloudxpl/modules/storage/s3scanner_bridge.py +85 -0
  342. cloudxpl/modules/storage/static_site_takeover.py +85 -0
  343. cloudxpl/modules/storage/upload_exploit.py +85 -0
  344. cloudxpl/modules/storage/versioning_exploit.py +85 -0
  345. cloudxpl/modules/tencent/__init__.py +0 -0
  346. cloudxpl/modules/tencent/cam_enum.py +40 -0
  347. cloudxpl/modules/tencent/cloudtoolkit_bridge.py +40 -0
  348. cloudxpl/modules/tencent/cos_enum.py +40 -0
  349. cloudxpl/modules/tencent/cos_exploit.py +40 -0
  350. cloudxpl/modules/tencent/cve_2026_30859.py +40 -0
  351. cloudxpl/modules/tencent/cvm_metadata.py +40 -0
  352. cloudxpl/modules/vdi/__init__.py +0 -0
  353. cloudxpl/modules/vdi/avd_privesc.py +22 -0
  354. cloudxpl/modules/vdi/citrix_session_recording_rce.py +22 -0
  355. cloudxpl/modules/vdi/citrix_vda_lpe.py +22 -0
  356. cloudxpl/modules/vdi/citrix_vdi_cve_2025_6759.py +30 -0
  357. cloudxpl/modules/vdi/horizon_escape.py +22 -0
  358. cloudxpl/modules/vdi/vdi_breakout_clipboard.py +22 -0
  359. cloudxpl/modules/vdi/vdi_breakout_dialog.py +22 -0
  360. cloudxpl/modules/vdi/vdi_breakout_drive.py +22 -0
  361. cloudxpl/modules/vdi/vdi_breakout_print.py +22 -0
  362. cloudxpl/modules/vdi/vdi_breakout_usb.py +22 -0
  363. cloudxpl/modules/vdi/vdi_kiosk_escape.py +22 -0
  364. cloudxpl/modules/vdi/workspaces_lpe.py +22 -0
  365. cloudxpl/modules/virt/__init__.py +0 -0
  366. cloudxpl/modules/virt/amd_microcode_cve_2024_56161.py +30 -0
  367. cloudxpl/modules/virt/awesome_hyperv_bridge.py +33 -0
  368. cloudxpl/modules/virt/awesome_vm_exploit_bridge.py +33 -0
  369. cloudxpl/modules/virt/citrix_cve_2026_53562.py +30 -0
  370. cloudxpl/modules/virt/citrix_escape.py +40 -0
  371. cloudxpl/modules/virt/citrix_vapd_exploit.py +34 -0
  372. cloudxpl/modules/virt/citrix_vdi_cve_2025_6759.py +30 -0
  373. cloudxpl/modules/virt/citrix_xsa_486.py +40 -0
  374. cloudxpl/modules/virt/container_cve_2026_80521.py +42 -0
  375. cloudxpl/modules/virt/container_escape_collection_bridge.py +33 -0
  376. cloudxpl/modules/virt/cve_2019_5544.py +40 -0
  377. cloudxpl/modules/virt/cve_2020_3952.py +40 -0
  378. cloudxpl/modules/virt/cve_2020_3992.py +40 -0
  379. cloudxpl/modules/virt/cve_2021_21972.py +40 -0
  380. cloudxpl/modules/virt/cve_2021_21974.py +40 -0
  381. cloudxpl/modules/virt/cve_2021_21985.py +40 -0
  382. cloudxpl/modules/virt/cve_2021_22005.py +40 -0
  383. cloudxpl/modules/virt/cve_2022_22954.py +40 -0
  384. cloudxpl/modules/virt/cve_2022_31705.py +40 -0
  385. cloudxpl/modules/virt/cve_2023_20867.py +40 -0
  386. cloudxpl/modules/virt/cve_2023_34048.py +40 -0
  387. cloudxpl/modules/virt/cve_2024_37085.py +40 -0
  388. cloudxpl/modules/virt/cve_2025_22225.py +40 -0
  389. cloudxpl/modules/virt/cve_2025_22226.py +40 -0
  390. cloudxpl/modules/virt/esxi_brute_bridge.py +33 -0
  391. cloudxpl/modules/virt/esxi_cve_2019_5544.py +30 -0
  392. cloudxpl/modules/virt/esxi_cve_2020_3992.py +30 -0
  393. cloudxpl/modules/virt/esxi_cve_2021_21974.py +30 -0
  394. cloudxpl/modules/virt/esxi_cve_2024_22252.py +41 -0
  395. cloudxpl/modules/virt/esxi_cve_2024_22253.py +41 -0
  396. cloudxpl/modules/virt/esxi_cve_2024_22254.py +41 -0
  397. cloudxpl/modules/virt/esxi_cve_2024_22255.py +41 -0
  398. cloudxpl/modules/virt/esxi_cve_2024_37085.py +30 -0
  399. cloudxpl/modules/virt/esxi_cve_2025_22224.py +40 -0
  400. cloudxpl/modules/virt/esxi_cve_2026_47876.py +30 -0
  401. cloudxpl/modules/virt/esxi_enum.py +40 -0
  402. cloudxpl/modules/virt/esxi_fingerprint_bridge.py +33 -0
  403. cloudxpl/modules/virt/esxi_log4shell.py +41 -0
  404. cloudxpl/modules/virt/esxi_ransomware.py +40 -0
  405. cloudxpl/modules/virt/esxi_ssh_exploit.py +40 -0
  406. cloudxpl/modules/virt/esxi_vm_escape.py +40 -0
  407. cloudxpl/modules/virt/firecracker_cve_2026_1386.py +30 -0
  408. cloudxpl/modules/virt/firecracker_cve_2026_5747.py +30 -0
  409. cloudxpl/modules/virt/firecracker_escape.py +40 -0
  410. cloudxpl/modules/virt/horizon_log4shell.py +30 -0
  411. cloudxpl/modules/virt/hyperv_cve_2019_0887.py +30 -0
  412. cloudxpl/modules/virt/hyperv_cve_2021_28476.py +40 -0
  413. cloudxpl/modules/virt/hyperv_cve_2021_34450.py +30 -0
  414. cloudxpl/modules/virt/hyperv_cve_2022_21995.py +30 -0
  415. cloudxpl/modules/virt/hyperv_cve_2022_30163.py +30 -0
  416. cloudxpl/modules/virt/hyperv_cve_2024_20700.py +41 -0
  417. cloudxpl/modules/virt/hyperv_cve_2024_21407.py +40 -0
  418. cloudxpl/modules/virt/hyperv_cve_2024_38080.py +41 -0
  419. cloudxpl/modules/virt/hyperv_cve_2024_49117.py +30 -0
  420. cloudxpl/modules/virt/hyperv_cve_2025_21333.py +41 -0
  421. cloudxpl/modules/virt/hyperv_cve_2025_21334.py +41 -0
  422. cloudxpl/modules/virt/hyperv_cve_2025_21335.py +41 -0
  423. cloudxpl/modules/virt/hyperv_cve_2026_40402.py +40 -0
  424. cloudxpl/modules/virt/hyperv_cve_2026_45607.py +30 -0
  425. cloudxpl/modules/virt/hyperv_cve_2026_45641.py +41 -0
  426. cloudxpl/modules/virt/hyperv_cve_2026_57092.py +41 -0
  427. cloudxpl/modules/virt/hyperv_cve_2026_69603.py +41 -0
  428. cloudxpl/modules/virt/hyperv_cve_2026_72961.py +41 -0
  429. cloudxpl/modules/virt/hyperv_cve_2026_80083.py +41 -0
  430. cloudxpl/modules/virt/hyperv_cve_2026_89927.py +41 -0
  431. cloudxpl/modules/virt/hyperv_enum.py +40 -0
  432. cloudxpl/modules/virt/hyperv_escape.py +40 -0
  433. cloudxpl/modules/virt/hyperv_remotefx.py +40 -0
  434. cloudxpl/modules/virt/hypervisor_resources_bridge.py +41 -0
  435. cloudxpl/modules/virt/intel_tdx_enum.py +29 -0
  436. cloudxpl/modules/virt/kata_cve_2026_24834.py +30 -0
  437. cloudxpl/modules/virt/kata_escape.py +40 -0
  438. cloudxpl/modules/virt/kvm_arm64_escape.py +40 -0
  439. cloudxpl/modules/virt/kvm_cve_2019_14835.py +40 -0
  440. cloudxpl/modules/virt/kvm_cve_2019_18389.py +40 -0
  441. cloudxpl/modules/virt/kvm_cve_2026_3842.py +41 -0
  442. cloudxpl/modules/virt/kvm_cve_2026_64561.py +41 -0
  443. cloudxpl/modules/virt/kvm_cve_2026_99999.py +41 -0
  444. cloudxpl/modules/virt/kvm_januscape.py +40 -0
  445. cloudxpl/modules/virt/libvirt_enum.py +40 -0
  446. cloudxpl/modules/virt/lolesxi_bridge.py +33 -0
  447. cloudxpl/modules/virt/msf_vmware_bridge.py +40 -0
  448. cloudxpl/modules/virt/nitro_sidechannel.py +29 -0
  449. cloudxpl/modules/virt/nutanix_cve_2018_7750.py +30 -0
  450. cloudxpl/modules/virt/nutanix_cve_2026_84731.py +30 -0
  451. cloudxpl/modules/virt/nutanix_enum.py +40 -0
  452. cloudxpl/modules/virt/qemu_cve_2019_14378.py +30 -0
  453. cloudxpl/modules/virt/qemu_cve_2019_18389.py +30 -0
  454. cloudxpl/modules/virt/qemu_cve_2020_14364.py +30 -0
  455. cloudxpl/modules/virt/qemu_cve_2023_6693.py +41 -0
  456. cloudxpl/modules/virt/qemu_cve_2024_3446.py +41 -0
  457. cloudxpl/modules/virt/qemu_cve_2024_4467.py +41 -0
  458. cloudxpl/modules/virt/qemu_cve_2024_49841.py +41 -0
  459. cloudxpl/modules/virt/qemu_cve_2024_6519.py +40 -0
  460. cloudxpl/modules/virt/qemu_dma_reentrancy.py +40 -0
  461. cloudxpl/modules/virt/qemu_rtl8139_chain.py +41 -0
  462. cloudxpl/modules/virt/qemu_slirp_escape.py +41 -0
  463. cloudxpl/modules/virt/qemu_slirp_escape_bridge.py +42 -0
  464. cloudxpl/modules/virt/qemu_virtio_exploit.py +40 -0
  465. cloudxpl/modules/virt/sev_snp_enum.py +29 -0
  466. cloudxpl/modules/virt/sidechannel_cachewarp.py +30 -0
  467. cloudxpl/modules/virt/sidechannel_ddrop.py +29 -0
  468. cloudxpl/modules/virt/sidechannel_downfall.py +30 -0
  469. cloudxpl/modules/virt/sidechannel_inception.py +30 -0
  470. cloudxpl/modules/virt/sidechannel_wesee.py +30 -0
  471. cloudxpl/modules/virt/sidechannel_zenbleed.py +30 -0
  472. cloudxpl/modules/virt/vcenter_cve_2020_3952.py +30 -0
  473. cloudxpl/modules/virt/vcenter_cve_2021_21972.py +30 -0
  474. cloudxpl/modules/virt/vcenter_cve_2021_22005.py +34 -0
  475. cloudxpl/modules/virt/vcenter_cve_2021_44228.py +34 -0
  476. cloudxpl/modules/virt/vcenter_cve_2024_22252.py +30 -0
  477. cloudxpl/modules/virt/vcenter_cve_2024_22274.py +30 -0
  478. cloudxpl/modules/virt/vcenter_cve_2024_37079.py +40 -0
  479. cloudxpl/modules/virt/vcenter_cve_2024_37080.py +41 -0
  480. cloudxpl/modules/virt/vcenter_cve_2024_37081.py +30 -0
  481. cloudxpl/modules/virt/vcenter_cve_2024_38812.py +41 -0
  482. cloudxpl/modules/virt/vcenter_cve_2024_38813.py +41 -0
  483. cloudxpl/modules/virt/vcenter_cve_2025_41225.py +41 -0
  484. cloudxpl/modules/virt/vcenter_cve_2026_59309.py +40 -0
  485. cloudxpl/modules/virt/vcenter_cve_2026_59310.py +40 -0
  486. cloudxpl/modules/virt/vcenter_exploit.py +40 -0
  487. cloudxpl/modules/virt/vcenter_saml_bypass.py +41 -0
  488. cloudxpl/modules/virt/vcenter_secrets_dump.py +33 -0
  489. cloudxpl/modules/virt/vcenter_vmdir_bridge.py +34 -0
  490. cloudxpl/modules/virt/vcenterkit_bridge.py +40 -0
  491. cloudxpl/modules/virt/vdi_breakout.py +40 -0
  492. cloudxpl/modules/virt/virt_cross_domain.py +41 -0
  493. cloudxpl/modules/virt/virt_maestro_detect.py +41 -0
  494. cloudxpl/modules/virt/virt_side_channel.py +41 -0
  495. cloudxpl/modules/virt/virt_snapshot_theft.py +41 -0
  496. cloudxpl/modules/virt/virt_vtpm_extract.py +41 -0
  497. cloudxpl/modules/virt/vmware_api_enum.py +29 -0
  498. cloudxpl/modules/virt/vmware_enum_vms_bridge.py +33 -0
  499. cloudxpl/modules/virt/vmware_exploitation_bridge.py +33 -0
  500. cloudxpl/modules/virt/vmware_http_login_bridge.py +33 -0
  501. cloudxpl/modules/virt/vmware_tools_lpe.py +40 -0
  502. cloudxpl/modules/virt/xen_cve_2023_46842.py +41 -0
  503. cloudxpl/modules/virt/xen_grant_escape.py +40 -0
  504. cloudxpl/modules/virt/xen_iommu_exploit.py +40 -0
  505. cloudxpl/modules/virt/xen_venom.py +41 -0
  506. cloudxpl/modules/virt/xen_xsa486.py +41 -0
  507. cloudxpl/modules/virt/xen_xsa500.py +41 -0
  508. cloudxpl/modules/virt/xen_xsa505.py +41 -0
  509. cloudxpl/modules/virt/xen_xsa507.py +30 -0
  510. cloudxpl/modules/virt/xen_xsa517.py +41 -0
  511. cloudxpl/modules/virt/xen_xsa521.py +41 -0
  512. cloudxpl/modules/virt/xen_xsa_500.py +30 -0
  513. cloudxpl/modules/virt/xen_xsa_505.py +30 -0
  514. cloudxpl/modules/virt/xen_xsa_507.py +30 -0
  515. cloudxpl/modules/virt/xen_xsa_517.py +30 -0
  516. cloudxpl/modules/virt/xen_xsa_521.py +30 -0
  517. cloudxpl/py.typed +0 -0
  518. cloudxpl-4.2.0.dist-info/METADATA +98 -0
  519. cloudxpl-4.2.0.dist-info/RECORD +522 -0
  520. cloudxpl-4.2.0.dist-info/WHEEL +5 -0
  521. cloudxpl-4.2.0.dist-info/entry_points.txt +3 -0
  522. cloudxpl-4.2.0.dist-info/top_level.txt +1 -0
cloudxpl/__init__.py ADDED
@@ -0,0 +1,8 @@
1
+ """CloudXPL-Forge — Cloud security assessment framework."""
2
+
3
+ __version__ = "4.2.0"
4
+ __product__ = "CloudXPL-Forge"
5
+ __cli__ = "cxf"
6
+
7
+ PRODUCT = __product__
8
+ CLI = __cli__
cloudxpl/__main__.py ADDED
@@ -0,0 +1,188 @@
1
+ """CloudXPL-Forge CLI entrypoint."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import sys
7
+
8
+ from cloudxpl import __product__, __version__
9
+ from cloudxpl.core.dispatcher import MODULE_MAP
10
+
11
+
12
+ def _add_common(p: argparse.ArgumentParser) -> None:
13
+ p.add_argument("--target", "-t", help="Target URL/host")
14
+ p.add_argument("--output", "-o", default=".", help="Output directory")
15
+ p.add_argument("--json", action="store_true", help="JSON output")
16
+ p.add_argument("--verbose", "-v", action="store_true")
17
+
18
+
19
+ def _build_parser() -> argparse.ArgumentParser:
20
+ p = argparse.ArgumentParser(
21
+ prog="cxf",
22
+ description=f"{__product__} v{__version__} — Cloud security assessment framework",
23
+ )
24
+ p.add_argument("--version", action="version", version=f"{__product__} {__version__}")
25
+
26
+ sub = p.add_subparsers(dest="command")
27
+
28
+ # --- AWS ---
29
+ aws_p = sub.add_parser("aws", help="AWS modules (IAM, S3, EC2, Lambda, EKS, RDS, ...)")
30
+ aws_p.add_argument("module", choices=sorted(MODULE_MAP["aws"]))
31
+ aws_p.add_argument("--profile", default=None, help="AWS CLI profile")
32
+ aws_p.add_argument("--region", default="us-east-1")
33
+ aws_p.add_argument("--role-arn", help="ARN to assume")
34
+ _add_common(aws_p)
35
+
36
+ # --- Azure ---
37
+ azure_p = sub.add_parser("azure", help="Azure modules (Entra, Blob, AKS, KeyVault, ...)")
38
+ azure_p.add_argument("module", choices=sorted(MODULE_MAP["azure"]))
39
+ azure_p.add_argument("--tenant-id", help="Azure tenant ID")
40
+ azure_p.add_argument("--subscription-id", help="Azure subscription ID")
41
+ azure_p.add_argument("--client-id", help="App/SP client ID")
42
+ _add_common(azure_p)
43
+
44
+ # --- GCP ---
45
+ gcp_p = sub.add_parser("gcp", help="GCP modules (IAM, Buckets, GKE, Cloud SQL, Cloud Armor, WIF, ...)")
46
+ gcp_p.add_argument("module", choices=sorted(MODULE_MAP["gcp"]))
47
+ gcp_p.add_argument("--project", help="GCP project ID")
48
+ gcp_p.add_argument("--sa-key", help="Service account key file")
49
+ _add_common(gcp_p)
50
+
51
+ # --- Kubernetes ---
52
+ k8s_p = sub.add_parser("k8s", help="Kubernetes/container modules (RBAC, pods, escape, ...)")
53
+ k8s_p.add_argument("module", choices=sorted(MODULE_MAP["k8s"]))
54
+ k8s_p.add_argument("--kubeconfig", help="Kubeconfig path")
55
+ k8s_p.add_argument("--context", help="Kubernetes context")
56
+ k8s_p.add_argument("--namespace", "-n", default="default")
57
+ _add_common(k8s_p)
58
+
59
+ # --- Serverless ---
60
+ sls_p = sub.add_parser("serverless", help="Serverless attack modules (Lambda, Functions, ...)")
61
+ sls_p.add_argument("module", choices=sorted(MODULE_MAP["serverless"]))
62
+ sls_p.add_argument("--provider", choices=["aws", "azure", "gcp"], default="aws")
63
+ sls_p.add_argument("--function-name", help="Target function")
64
+ _add_common(sls_p)
65
+
66
+ # --- Storage ---
67
+ sto_p = sub.add_parser("storage", help="Cloud storage attack modules (S3, GCS, Blob, ...)")
68
+ sto_p.add_argument("module", choices=sorted(MODULE_MAP["storage"]))
69
+ sto_p.add_argument("--provider", choices=["aws", "azure", "gcp", "all"], default="all")
70
+ sto_p.add_argument("--bucket", "-b", help="Bucket/container name")
71
+ sto_p.add_argument("--wordlist", "-w", help="Wordlist for brute-force")
72
+ _add_common(sto_p)
73
+
74
+ # --- Multi-cloud ---
75
+ multi_p = sub.add_parser("multi", help="Multi-cloud and cross-provider modules")
76
+ multi_p.add_argument("module", choices=sorted(MODULE_MAP["multi"]))
77
+ multi_p.add_argument("--providers", nargs="+", choices=["aws", "azure", "gcp", "oci", "alibaba", "tencent", "ibm"],
78
+ default=["aws", "azure", "gcp"])
79
+ _add_common(multi_p)
80
+
81
+ # --- Credential ---
82
+ cred_p = sub.add_parser("cred", help="Credential discovery and abuse modules (RSA SecurID, MFA relay, ...)")
83
+ cred_p.add_argument("module", choices=sorted(MODULE_MAP["cred"]))
84
+ cred_p.add_argument("--scan-path", help="Path to scan for credentials")
85
+ _add_common(cred_p)
86
+
87
+ # --- Network ---
88
+ net_p = sub.add_parser("net", help="Cloud network attack modules (VPC, SG, DNS, ...)")
89
+ net_p.add_argument("module", choices=sorted(MODULE_MAP["net"]))
90
+ net_p.add_argument("--provider", choices=["aws", "azure", "gcp"], default="aws")
91
+ net_p.add_argument("--cidr", help="Target CIDR range")
92
+ _add_common(net_p)
93
+
94
+ # --- OCI (Oracle Cloud) ---
95
+ oci_p = sub.add_parser("oci", help="Oracle Cloud modules (OCI IAM, buckets, compute, CVEs, ...)")
96
+ oci_p.add_argument("module", choices=sorted(MODULE_MAP["oci"]))
97
+ oci_p.add_argument("--tenancy-ocid", help="OCI tenancy OCID")
98
+ oci_p.add_argument("--region", default="us-ashburn-1", help="OCI region")
99
+ oci_p.add_argument("--config-file", default="~/.oci/config", help="OCI config file path")
100
+ _add_common(oci_p)
101
+
102
+ # --- Virtualization / Hypervisors ---
103
+ virt_p = sub.add_parser("virt", help="Hypervisor modules (VMware, Hyper-V, KVM, QEMU, Citrix, Nutanix, ...)")
104
+ virt_p.add_argument("module", choices=sorted(MODULE_MAP["virt"]))
105
+ virt_p.add_argument("--vcenter-host", help="vCenter/ESXi host")
106
+ virt_p.add_argument("--hyperv-host", help="Hyper-V host")
107
+ virt_p.add_argument("--libvirt-uri", default="qemu:///system", help="Libvirt connection URI")
108
+ _add_common(virt_p)
109
+
110
+ # --- Alibaba Cloud ---
111
+ ali_p = sub.add_parser("alibaba", help="Alibaba Cloud modules (ECS, OSS, RAM, RDS, ...)")
112
+ ali_p.add_argument("module", choices=sorted(MODULE_MAP["alibaba"]))
113
+ ali_p.add_argument("--access-key-id", help="Alibaba Cloud AccessKey ID")
114
+ ali_p.add_argument("--region", default="cn-hangzhou", help="Alibaba Cloud region")
115
+ _add_common(ali_p)
116
+
117
+ # --- Tencent Cloud ---
118
+ tc_p = sub.add_parser("tencent", help="Tencent Cloud modules (COS, CVM, CAM, ...)")
119
+ tc_p.add_argument("module", choices=sorted(MODULE_MAP["tencent"]))
120
+ tc_p.add_argument("--secret-id", help="Tencent Cloud SecretId")
121
+ tc_p.add_argument("--region", default="ap-guangzhou", help="Tencent Cloud region")
122
+ _add_common(tc_p)
123
+
124
+ # --- IBM Cloud ---
125
+ ibm_p = sub.add_parser("ibm", help="IBM Cloud modules (COS, IAM, VPC, QRadar, CloudPak, ...)")
126
+ ibm_p.add_argument("module", choices=sorted(MODULE_MAP["ibm"]))
127
+ ibm_p.add_argument("--api-key", help="IBM Cloud API key")
128
+ ibm_p.add_argument("--region", default="us-south", help="IBM Cloud region")
129
+ _add_common(ibm_p)
130
+
131
+ # --- DigitalOcean ---
132
+ do_p = sub.add_parser("digitalocean", help="DigitalOcean modules (Droplets, Spaces, DOKS, ...)")
133
+ do_p.add_argument("module", choices=sorted(MODULE_MAP["digitalocean"]))
134
+ do_p.add_argument("--api-token", help="DigitalOcean API token")
135
+ do_p.add_argument("--region", default="nyc1", help="DigitalOcean region")
136
+ _add_common(do_p)
137
+
138
+ # --- OVHcloud ---
139
+ ovh_p = sub.add_parser("ovh", help="OVHcloud modules (OpenStack, vRack, Swift, IPMI, ...)")
140
+ ovh_p.add_argument("module", choices=sorted(MODULE_MAP["ovh"]))
141
+ ovh_p.add_argument("--app-key", help="OVH application key")
142
+ ovh_p.add_argument("--region", default="GRA", help="OVHcloud region")
143
+ _add_common(ovh_p)
144
+
145
+ # --- Hetzner ---
146
+ hetz_p = sub.add_parser("hetzner", help="Hetzner Cloud modules (servers, firewalls, floating IPs, ...)")
147
+ hetz_p.add_argument("module", choices=sorted(MODULE_MAP["hetzner"]))
148
+ hetz_p.add_argument("--api-token", help="Hetzner API token")
149
+ hetz_p.add_argument("--region", default="nbg1", help="Hetzner datacenter/region")
150
+ _add_common(hetz_p)
151
+
152
+ # --- VDI (Virtual Desktop Infrastructure) ---
153
+ vdi_p = sub.add_parser("vdi", help="VDI escape modules (Horizon, Citrix VDA, AVD, WorkSpaces, kiosk, ...)")
154
+ vdi_p.add_argument("module", choices=sorted(MODULE_MAP["vdi"]))
155
+ vdi_p.add_argument("--vdi-host", help="VDI broker/connection server host")
156
+ vdi_p.add_argument("--session-id", help="Target VDI session ID")
157
+ _add_common(vdi_p)
158
+
159
+ # --- PaaS (Platform-as-a-Service) ---
160
+ paas_p = sub.add_parser("paas", help="PaaS escape modules (App Service, ACI, Cloud Run, Fargate, Lambda, ...)")
161
+ paas_p.add_argument("module", choices=sorted(MODULE_MAP["paas"]))
162
+ paas_p.add_argument("--provider", choices=["aws", "azure", "gcp", "heroku", "railway"], default="aws")
163
+ paas_p.add_argument("--function-name", help="Target function/service name")
164
+ _add_common(paas_p)
165
+
166
+ # --- CI/CD ---
167
+ cicd_p = sub.add_parser("cicd", help="CI/CD runner escape modules (GitHub Actions, GitLab CI, Jenkins, Terraform, ...)")
168
+ cicd_p.add_argument("module", choices=sorted(MODULE_MAP["cicd"]))
169
+ cicd_p.add_argument("--runner-url", help="CI/CD runner or server URL")
170
+ cicd_p.add_argument("--token", help="CI/CD API token or runner token")
171
+ _add_common(cicd_p)
172
+
173
+ return p
174
+
175
+
176
+ def main(argv: list[str] | None = None) -> int:
177
+ parser = _build_parser()
178
+ args = parser.parse_args(argv)
179
+ if not args.command:
180
+ parser.print_help()
181
+ return 0
182
+
183
+ from cloudxpl.core.dispatcher import dispatch
184
+ return dispatch(args)
185
+
186
+
187
+ if __name__ == "__main__":
188
+ sys.exit(main())
File without changes
@@ -0,0 +1,37 @@
1
+ """Cloud credential management — provider-agnostic credential handling."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass, field
6
+ from typing import Any
7
+
8
+
9
+ @dataclass
10
+ class CloudCredential:
11
+ provider: str
12
+ identity: str
13
+ credential_type: str = "unknown"
14
+ access_key: str | None = None
15
+ secret_key: str | None = None
16
+ token: str | None = None
17
+ profile: str | None = None
18
+ region: str | None = None
19
+ project_id: str | None = None
20
+ subscription_id: str | None = None
21
+ extra: dict[str, Any] = field(default_factory=dict)
22
+
23
+ @property
24
+ def masked_secret(self) -> str:
25
+ if self.secret_key:
26
+ return self.secret_key[:4] + "****" + self.secret_key[-4:]
27
+ return "(none)"
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ return {
31
+ "provider": self.provider,
32
+ "identity": self.identity,
33
+ "credential_type": self.credential_type,
34
+ "region": self.region,
35
+ "project_id": self.project_id,
36
+ "subscription_id": self.subscription_id,
37
+ }