记一次阿里云主机泄露Access Key到Getshell
字数 1527 2025-08-15 21:32:45
阿里云主机Access Key泄露到Getshell完整利用指南
0x00 前言
本文详细记录了一次通过阿里云Access Key泄露到最终获取服务器shell的完整过程。Access Key是阿里云API调用的重要凭证,一旦泄露可能导致严重的安全问题。
0x01 信息收集阶段
-
初始发现:
- 在网站登录页面输入"login"后意外暴露调试信息
- 调试信息中泄露了Redis、MySQL和阿里云Access Key凭证
-
关键凭证:
ALIYUN_ACCESSKEYIDALIYUN_ACCESSKEYSECRET
0x02 手工利用方法
第一步:验证Access Key有效性
使用行云管家(https://yun.cloudbility.com/)验证Access Key:
- 选择"阿里云主机"
- 导入Key ID和Key Secret
- 成功导入后可查看主机信息
重要注意事项:
- 不要执行重置操作系统密码等不可逆操作
- 只需记录两个关键信息:
- 实例ID
- 所属网络(Region)
第二步:使用阿里云API管理器
访问阿里云API管理器:https://api.aliyun.com/#/?product=Ecs
1. 创建命令(CreateCommand)
- 搜索并选择"CreateCommand"
- 填写参数:
- Name:任意名称
- Type:根据目标系统选择
- RunBatScript:Windows Bat脚本
- RunPowerShellScript:Windows PowerShell脚本
- RunShellScript:Linux Shell脚本
- CommandContent:Base64编码的命令
- 选择Python语言
- 点击"调试SDK示例代码"
- 修改生成的CreateCommand.py文件:
- 更新accessKeyId和accessSecret
- 执行脚本,记录返回的CommandId
2. 调用命令(InvokeCommand)
- 搜索并选择"InvokeCommand"
- 填写参数:
- RegionId:从行云管家获取的所属网络
- CommandId:上一步获取的CommandId
- InstanceId:实例ID
- 选择Python语言
- 点击"调试SDK示例代码"
- 修改生成的InvokeCommand.py文件:
- 更新accessKeyId和accessSecret
- 在本地使用nc监听端口
- 执行InvokeCommand.py脚本
- 成功获取反弹shell
0x03 工具利用方法
使用开源工具alicloud-tools简化流程:
工具地址:https://github.com/iiiusky/alicloud-tools
基本用法
-
查看所有实例信息:
AliCloud-Tools.exe -a <AccessKey> -s <SecretKey> ecs --list -
执行命令:
AliCloud-Tools.exe -a <AccessKey> -s <SecretKey> ecs exec -I <实例ID> -c "执行命令"
0x04 Access Key常见泄露场景
- 报错信息/调试信息:如本文案例
- Web页面/JS文件:前端代码中硬编码
- APP中:APK文件中存放
- Github等代码仓库:通过关键字搜索发现
- 低权限WebShell:通过文件搜索获取
0x05 防御措施
- 最小权限原则:为Access Key分配最小必要权限
- 定期轮换:定期更换Access Key
- 日志监控:监控异常API调用
- 避免硬编码:不要将凭证写入代码或配置文件
- 子账号管理:使用RAM子账号而非主账号Access Key
- IP限制:为Access Key设置调用IP白名单
0x06 总结
阿里云Access Key泄露可能导致严重的安全问题,攻击者可以完全控制云主机。通过本文介绍的手工和工具两种方法,可以快速验证Access Key的风险。防御方面应遵循最小权限原则,并加强凭证管理。