欢迎使用云权限提升 Awesome 脚本套件- 一站式解决方案,让您在跨主要云平台(Azure、GCP 和 AWS)的红队中攻陷主体时,快速查找权限。该套件旨在帮助您确定所有权限,以及使用被攻陷的权限可能实现的目标,重点关注权限提升和访问敏感信息🔥,以及其他潜在的攻击媒介,而无需修改任何资源。
此工具包利用先进的技术来枚举您的权限(它根据云平台使用不同的权限枚举技术),并利用HackTricks Cloud和HackTricks AI 🤖 的洞察,将敏感权限映射到潜在攻击。请注意,不会向 AI 发送任何敏感数据,只会发送资源和权限的名称。但如果您不想使用 AI 分析,只需--not-use-hacktricks-ai在执行工具时附加相应标志即可。
AzurePEAS💼🖥️
AzurePEAS致力于枚举Azure和Entra ID环境中的主体权限,尤其注重检测权限提升路径并识别潜在的安全风险。它还可以枚举多个 Microsoft 365服务以进行快速侦察。以下是其主要功能和要求:
- 全面的权限检查
AzurePEAS 可以查找主体可访问的所有资源及其拥有的权限。它检索Azure (ARM API)和Entra ID (Graph API)的权限,确保对您的云权限进行全面分析。
- 身份验证要求
为了有效运行,AzurePEAS 需要:
- 具有Azure ARM API访问权限的令牌,用于查找主体在 Azure 管理内部拥有的所有资源和权限。
- 可以访问Azure Graph API 的令牌,用于查找主体在 Entra ID 内拥有的所有资源和权限。
- 如果提供了FOCI 刷新令牌或有效凭据(用户名和密码),AzurePEAS 可以自行生成以前的令牌,还可以枚举各种 Microsoft 365 服务。
注意:大多数权限无需额外的枚举权限即可收集。但是,某些特定操作可能需要额外的范围。
Microsoft 365 枚举(M356)
如果您向 AzurePEAS 提供FOCI 刷新令牌或有效凭据(用户名和密码),它将扩展其扫描功能以枚举各种Microsoft 365服务,包括:
- SharePoint 📂
- OneDrive ☁️
- Outlook 📧
- Teams 💬
- OneNote 📝
- Contacts 👥
- Tasks ✅
此额外枚举旨在指示这些服务中是否存在任何数据,以便在需要时进行进一步的手动调查。该过程并非详尽无遗,但可以作为有用的初步检查。
AzurePEAS 帮助
要查看完整的选项列表,请运行:
python3 ./AzurePEAS.py --helpusage: AzurePEAS.py [-h] [--tenant-id TENANT_ID] [--arm-token ARM_TOKEN] [--graph-token GRAPH_TOKEN] [--foci-refresh-token FOCI_REFRESH_TOKEN] [--not-enumerate-m365] [--username USERNAME] [--password PASSWORD] [--out-json-path OUT_JSON_PATH] [--threads THREADS] [--not-use-hacktricks-ai]Run AzurePEASS to find all your current privileges in Azure and EntraID and checkfor potential privilege escalation attacks. Tocheckfor Azure permissions an ARM tokenis needed. Tocheckfor Entra ID permissions a Graph token is needed.options: -h, --help show this help message and exit--tenant-id TENANT_ID Indicate the tenant id--arm-token ARM_TOKEN Azure Managementauthentication token--graph-token GRAPH_TOKEN Azure Graph authentication token--foci-refresh-token FOCI_REFRESH_TOKEN FOCI Refresh Token--not-enumerate-m365 Don't enumerate M365 permissions--username USERNAME Username for authentication--password PASSWORD Password for authentication--out-json-path OUT_JSON_PATHOutputJSONfilepath (e.g. /tmp/azure_results.json)--threads THREADS Number of threads to use--not-use-hacktricks-ai Don't use Hacktricks AI to analyze permissions
AzurePEAS 使用示例
1. 获取代币🔑
在执行脚本之前,请使用以下命令生成令牌:
# Get Azure ARM tokenexport AZURE_ARM_TOKEN=$(az account get-access-token --resource-type arm | jq -r .accessToken)# Get Azure Graph tokenexport AZURE_GRAPH_TOKEN=$(az account get-access-token --resource-type ms-graph | jq -r .accessToken)# Get Graph Token with enough scopes (use powershell)Connect-MgGraph -Scopes "RoleAssignmentSchedule.Read.Directory"$Parameters = @{Method = "GET" Uri = "/v1.0/me" OutputType = "HttpResponseMessage"}$Response = Invoke-MgGraphRequest @Parameters$Headers = $Response.RequestMessage.Headers$Headers.Authorization.Parameter
2. 使用令牌运行 AzurePEAS
您可以通过命令行提供令牌或将其设置为环境变量来运行 AzurePEAS:
python3 AzurePEAS.py [--arm-token <AZURE_MANAGEMENT_TOKEN>] [--graph-token <AZURE_GRAPH_TOKEN>]
3. 使用凭证/FOCI 令牌运行 AzurePEAS,以改进枚举
如需更多 Microsoft 365 服务枚举,您可以提供:
FOCI刷新令牌:
python3 AzurePEAS.py [--tenant-id <TENANT_ID>] [--foci-refresh-token <FOCI_REFRESH_TOKEN>]
用户名和密码凭证:
python3 AzurePEAS.py [--username <USERNAME>] [--password <PASWORD>]
GCPPEAS🌐🔍
GCPPEAS旨在枚举您在 Google Cloud Platform (GCP) 上的所有权限,从而发现潜在的提权路径和其他攻击向量——所有这些都无需修改任何资源。它首先收集受感染主体可以枚举的项目、文件夹和组织,然后扩展搜索范围以发现其他资产,例如虚拟机、函数、存储桶和服务帐号。这种整体方法可以最大限度地减少盲点,并提高识别权限的几率。
工作原理
- 资源发现:
GCPPEAS 首先收集提供的项目、文件夹或组织,然后在这些容器中发现更多资源。
- 权限枚举:
它采用两种主要技术来评估用户的权限:
- IAM 策略检索:
尝试获取资源的 IAM 策略(这需要*.getIamPolicy权限,并且可能并非在所有情况下都可用)。
- 暴力破解测试:
利用 GCP testIamPermissionsAPI 对所有资源进行暴力破解权限检查。此方法本质上是非侵入式的——它不会修改任何资源或配置。
注意:
如果遇到提示服务cloudresourcemanager.googleapis.com未启用的错误,您可以:
- 尝试使用以下方法启用它:
gcloudservicesenablecloudresourcemanager.googleapis.com
- 或者,在您的控制下创建一个新项目,在那里启用服务,将roles/serviceusage.serviceUsageConsumer角色分配给受损主体,并使用--billing-projectGCPPEAS 中的标志指示该项目的名称 ID(这将允许您在受害者项目中强制执行权限,即使该受害者项目没有启用该服务)。
如果错误与有关,则适用相同的方法cloudidentity.googleapis.com。
- 攻击面分析:
收集到权限后,GCPPEAS 会将数据关联起来,以精准定位潜在的提权路径。尽管某些权限可能直接分配给单个资源(这可能会导致误报),但该工具还会枚举其他资产(例如虚拟机、存储、函数和服务帐户)并测试其权限,以最大程度地减少此类疏忽。
- 身份验证要求:
要执行 GCPPEAS,您必须提供GCP 访问令牌或带有服务帐户凭据的 JSON 文件。
gcloudGoogle Drive 访问的“后门” 📂☁️
默认情况下gcloud不会生成具有 Drive 访问权限的令牌,但它可以,因此您在这里有几个选项:
- 选项 1:
如果您知道用户名和密码,请使用以下方式进行身份验证:
gcloud auth login --enable-gdrive-access
- 选项 2:
如果您已经入侵了受害者的笔记本电脑,请修改GetScopesPython 库中的函数(通常位于/opt/homebrew/Caskroom/google-cloud-sdk/458.0.1/google-cloud-sdk/lib/surface/auth/login.py),以便https://www.googleapis.com/auth/drive始终包含范围:
defGetScopes(args): scopes = config.CLOUDSDK_SCOPES# Include the REAUTH scope for users with 2FA enabled. scopes += (config.REAUTH_SCOPE,)# Always add Google Drive scope scopes += (auth_util.GOOGLE_DRIVE_SCOPE,)if args.enable_gdrive_access: scopes += (auth_util.GOOGLE_DRIVE_SCOPE,)return scopes
下次gcloud auth login运行时,它将包含 Drive 范围。如果您有权访问受害者的计算机并可以修改库,则此方法特别有用。
生成 Gmail 和 Drive 令牌💌☁️
按照以下步骤创建访问令牌,授予 GCPPEAS 访问 Gmail 和 Google Drive 的权限:
- 项目设置:
- 在Google Cloud Console中选择或创建一个项目。
- 或者,使用 AppSheet 函数来自动创建项目。
- 启用 API:
- 启用Gmail API:
gcloudservicesenablegmail.googleapis.com
- 启用Drive API:
gcloudservicesenabledrive.googleapis.com
2.配置 OAuth 同意:
- 转到Cloud Console 中的OAuth 同意屏幕,并设置一个名为GCPPEAS的应用。使用您的电子邮件作为测试用户。
3.创建 OAuth 客户端:
使用以下方式生成 OAuth 客户端:
- 姓名: GCPPEAS
- 应用程序类型:桌面应用程序
下载客户端机密 JSON 文件。
4.添加所需范围:
在数据访问设置中,包括以下范围:
- https://www.googleapis.com/auth/gmail.readonly
- https://www.googleapis.com/auth/drive
5.生成访问令牌:
- 使用以下 Python 脚本启动 OAuth 流程并获取您的令牌:
# python3 -m pip install google-auth-oauthlibfrom google_auth_oauthlib.flow import InstalledAppFlow# Define the necessary scopesSCOPES = ["https://www.googleapis.com/auth/gmail.readonly","https://www.googleapis.com/auth/drive"]# Path to your downloaded client secret JSON fileCLIENT_SECRET_FILE = "/path/to/client_secret.json"# Initialize and run the OAuth flowflow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)creds = flow.run_local_server(port=0)# Output the access tokenprint("Access Token:", creds.token)
GCPPEAS帮助和使用
- 帮助:
要显示所有可用的命令选项,请运行:
python3 ./GCPPEAS.py--helpusage: GCPPEAS.py[-h][--projects PROJECTS | --folders FOLDERS | --organizations ORGANIZATIONS | --service-accounts SERVICE_ACCOUNTS] (--sa-credentials-path SA_CREDENTIALS_PATH | --token TOKEN)[--extra-token EXTRA_TOKEN][--dont-get-iam-policies][--out-json-path OUT_JSON_PATH][--threads THREADS][--not-use-hacktricks-ai][--billing-project BILLING_PROJECT][--proxy PROXY][--print-invalid-permissions]
GCPPEASS:枚举 GCP 权限并使用 HackTricks AI 检查权限提升和其他攻击。
选项:-h,--help 显示此帮助消息并退出--projects PROJECTS 已知项目 ID(项目名称),用逗号分隔--folders FOLDERS 已知文件夹 ID(文件夹编号),用逗号分隔--organizations ORGANIZATIONS 已知组织 ID,用逗号分隔--service-accounts SERVICE_ACCOUNTS 已知服务帐户电子邮件,用逗号分隔--sa-credentials-path SA_CREDENTIALS_PATH credentials.json 的路径--token TOKEN 原始访问令牌--extra-token EXTRA_TOKEN 可能通过 Gmail 和/或 Drive 访问的额外令牌--dont-get-iam-policies 不获取资源的 IAM 策略--out-json-path OUT_JSON_PATH 输出 JSON 文件路径(例如 /tmp/gcp_results.json)--threads THREADS 要使用的线程数--not-use-hacktricks-ai 不要使用 Hacktricks AI 来分析权限--billing-project BILLING_PROJECT 指示用于强制执行权限的计费项目 --proxy PROXY 指示用于连接 GCP 进行调试的代理(例如 127.0.0.1:8080) --print-invalid-permissions 打印发现的无效权限以提高工具的速度
- **Usage Example:** Set your environment token and run GCPPEAS with your desired parameters: ```bash # Get token from gcloud export CLOUDSDK_AUTH_ACCES_TOKEN=$(gcloud auth print-access-token) # Run GCPPEAS (you can also pass an extra token for Gmail/Drive access)python3 GCPPEAS.py [--token <TOKEN>] [--extra-token <EXTRA_TOKEN>] [--projects <PROJECT_ID1>,<PROJECT_ID2>] [--folders <FOLDER_ID1>,<FOLDER_ID2>] [--organizations <ORGANIZATION_ID>] [--service-accounts <SA_EMAIL1>,<SA_EMAIL2>] [--billing-project <BILLING_PROJECT_ID>]
AWSPEAS⚡️🔐
AWSPEAS是一款终极工具,可用于枚举AWS 权限并发现潜在的提权路径及其他攻击向量,同时保持目标环境不变。它利用多种技术来收集、模拟甚至推断权限,让您深入了解 AWS 设置的安全状况。
工作原理
- IAM 策略枚举:
检索并审查与受损主体关联的所有 IAM 策略。(需要相应的 IAM 权限。)
- 权限模拟:
如果之前的方法无效,则模拟主体的有效权限来确定可以执行的操作。(需要单个 IAM 权限。)
- 暴力枚举:
如果之前的技术不起作用,它会通过 AWS CLI 系统地测试 List、Get 和 Describe API 调用。
服务过滤:使用--aws-services标志仅针对特定服务,以加快枚举过程。
策略推断:集成aws-Perms2ManagedPolicies版本,根据已识别的权限和 AWS 托管策略预测其他权限。
操作安全注意事项⚠️
- Canary 账户检测:
AWSPEAS 会尝试检测 AWS 账户 ID 是否属于Canary 服务。如果怀疑是 Canary 账户,工具会提示您确认后再继续操作。此外,在与 AWS API 进行首次交互后,还会收集主体的名称,AWSPEAS 会使用该名称尝试检测主体是否是 Canary 账户。请注意,此时可能为时已晚,因为 API 交互已经完成,但至少您会收到警告。
身份验证和执行要求
在运行 AWSPEAS 之前,请确保您已:
- 正确配置AWS配置文件(用于连接到目标AWS账户)
- 在您的 PATH 上安装并配置的AWS CLI
AWSPEAS 帮助和使用
- 帮助:
要查看所有命令选项,请运行:
python3 ./AWSPEAS.py --helpusage: AWSPEAS.py [-h] --profile PROFILE [--out-json-path OUT_JSON_PATH] [--threads THREADS] [--not-use-hacktricks-ai] [--debug]--region REGION [--aws-services AWS_SERVICES]Run AWSPEASS to find all your current permissions in AWS and checkfor potential privilege escalation risks. AWSPEASS requires thenameof the profile tousetoconnectto AWS.options: -h, --help show this help message and exit--profile PROFILE AWS profile to use--out-json-path OUT_JSON_PATHOutputJSONfilepath (e.g. /tmp/aws_results.json)--threads THREADS Number of threads to use--not-use-hacktricks-ai Don't use Hacktricks AI to analyze permissions --debug Print more infromation when brute-forcing permissions --region REGION Indicate the region to use for brute-forcing permissions --aws-services AWS_SERVICES Filter AWS services to brute-force permissions for indicating them as a comma separated list (e.g. --aws- services s3,ec2,lambda,rds,sns,sqs,cloudwatch,cloudfront,iam,dynamodb)
使用示例:
# Basic usage with profileand regionpython3 AWSPEAS.py --profile<AWS_PROFILE> --region <AWS_REGION># Usage with specific AWS services (e.g., S3, EC2, Lambda, etc.)python3 AWSPEAS.py --profile<AWS_PROFILE> --region <AWS_REGION> --aws-services s3,ec2,lambda,rds,sns,sqs,cloudwatch,cloudfront,iam,dynamodb
项目地址:
https://github.com/carlospolop/CloudPEASS
原文始发于微信公众号(Ots安全):云权限提升 Awesome 脚本插件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论