一、云攻防
基础知识
云服务,顾名思义就是云上服务,在云厂商上购买的产品服务。
国内有阿里云、腾讯云、华为云、天翼云、Ucloud、金山云等,
国外有亚马逊的AWS、Google的GCP、微软的Azure,IBM云等。
各个云厂商对云服务的叫法都不统一,这里统一以AWS为例。
S3 对象存储Simple Storage Service,简单的说就是一个类似网盘的东西
EC2 即弹性计算服务Elastic Compute Cloud,简单的说就是在云上的一台虚拟机。
RDS 云数据库Relational Database Service,简单的说就是云上的一个数据库。
IAM 身份和访问管理Identity and Access Management,简单的说就是云控制台上的一套身份管理服务,可以用来管理每个子账号的权限。
#对象存储各大云名词:
阿里云:OSS 腾讯云:COS 华为云:OBS
谷歌云:GCS 微软云:Blob 亚马逊云:S3
#对象存储:
1、权限配置错误
权限Bucket授权策略:设置ListObject显示完整结构(类似于目录遍历)
权限Bucket读写权限:公共读写直接PUT文件任意上传,由于管理员配置对象存储时错误配置公共读写权限,使得任何人都可以进行写入,通过PUT方法即可任意上传文件。
2、域名解析Bucket接管:
Bucket存储桶绑定域名后,当存储桶被删除而域名解析未删除,可以尝试接管!
当Bucket显示NoSuchBucket说明是可以接管的,如果显示AccessDenied则不行。
接管流程:
- 确认域名绑定存储桶(通过ping命令出现对象存储解析地址)
- 通过域名访问存储桶提示NoSuchBucket(没有这样的桶)
- 通过对象存储地址信息推断出存储桶名称、对象存储厂商、云存储所在城市
- 去对应得厂商创建对应城市对应名称的存储桶
- 再次访问域名即可访问到所创建的存储桶
当Bucket显示NoSuchBucket说明是可以接管的,如果显示AccessDenied不行。
参考文章
https://cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_oss
搜索引擎搜NoSuchBucket,寻找相关漏洞
AK/SK泄漏:
通过泄露的AK/SK进行接管
APP逆向源代码
小程序反编译
JS代码泄露
代码托管平台泄露
接口泄露
得到AK/SK之后可以利用云服务工具直接连接相应服务进行任意操作,例如各云厂商的官方工具、CF利用工具等。
bp插件有泄露查找
云业务 AccessKey 标识特征整理
https://wiki.teamssix.com/CloudService/more/
也可以自己添加在bp中
(?i)((access_key|access_token|admin_pass|admin_user|algolia_admin_key|algolia_api_key|alias_pass|alicloud_access_key|amazon_secret_access_key|amazonaws|ansible_vault_password|aos_key|api_key|api_key_secret|api_key_sid|api_secret|api.googlemaps AIza|apidocs|apikey|apiSecret|app_debug|app_id|app_key|app_log_level|app_secret|appkey|appkeysecret|application_key|appsecret|appspot|auth_token|authorizationToken|authsecret|aws_access|aws_access_key_id|aws_bucket|aws_key|aws_secret|aws_secret_key|aws_token|AWSSecretKey|b2_app_key|bashrc password|bintray_apikey|bintray_gpg_password|bintray_key|bintraykey|bluemix_api_key|bluemix_pass|browserstack_access_key|bucket_password|bucketeer_aws_access_key_id|bucketeer_aws_secret_access_key|built_branch_deploy_key|bx_password|cache_driver|cache_s3_secret_key|cattle_access_key|cattle_secret_key|certificate_password|ci_deploy_password|client_secret|client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key|cloudant_password|cloudflare_api_key|cloudflare_auth_key|cloudinary_api_secret|cloudinary_name|codecov_token|config|conn.login|connectionstring|consumer_key|consumer_secret|credentials|cypress_record_key|database_password|database_schema_test|datadog_api_key|datadog_app_key|db_password|db_server|db_username|dbpasswd|dbpassword|dbuser|deploy_password|digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd|docker_password|dockerhub_password|dockerhubpassword|dot-files|dotfiles|droplet_travis_password|dynamoaccesskeyid|dynamosecretaccesskey|elastica_host|elastica_port|elasticsearch_password|encryption_key|encryption_password|env.heroku_api_key|env.sonatype_password|eureka.awssecretkey)[a-z0-9_ .-,]{0,25})(=|>|:=|||:|<=|=>|:).{0,5}'"['"]
案例
对象存储任意文件上传
2、尝试获取解析oss的url地址
3、尝试对oss的url地址进行put上传
案例2:对象存储解析域名劫持
1、访问该域名显示NoSuchBucket,
那么只需要去阿里云存储桶重新创建一个与HostID一样的存储桶名称即可
2、随后只需要上传文件,就可以让该域名显示我们上传的任意文件
如果需要接管,不知道域名,可以关注ip 百度等
元数据解释:
实例元数据(metadata)包含了弹性计算云服务器实例在阿里云系统中的信息,您可以在运行中的实例内方便地查看实例元数据,并基于实例元数据配置或管理实例。(基本信息:实例ID、IP地址、网卡MAC地址、操作系统类型等信息。实例标识包括实例标识文档和实例标识签名,所有信息均实时生成,常用于快速辨别实例身份。)
各大云元数据地址:
阿里云元数据地址:http://100.100.100.200/
腾讯云元数据地址:http://metadata.tencentyun.com/
华为云元数据地址:http://169.254.169.254/
亚马云元数据地址:http://169.254.169.254/
微软云元数据地址:http://169.254.169.254/
谷歌云元数据地址:http://metadata.google.internal/
查询样式如下图:
细节方面可通过访问官网找元数据访问触发说 明,阿里云例子:
https://help.aliyun.com/zh/ecs/user-guide/manage-instance-metadata
#云服务-弹性计算-元数据&SSRF&AK
前提条件:
-弹性计算配置访问控制角色
-SSRF漏洞或已取得某云服务器权限(webshell或漏洞rce可以访问触发url)
环境搭建
这里是否启用实例元数据访问通道是默认开启的
创建RAM用户并添加相关测试权限
授予RAM角色,实例绑定RAM角色将授予实例该角色所拥有的所有权限
1、访问控制
访问控制是云厂商提供的一种运维手段,可以将管理员用户的权限进行拆分,将部分权限交给其他用户。从而控制对于云服务资源的访问。各云厂商对于访问控制的名称不同,阿里云称之为RAM。
利用条件
弹性计算配置RAM访问控制管理角色
获取服务器权限、发现SSRF漏洞、RCE等可以控制目标机器访问其他地址
2利用条件:获取某服务器权限后横向移动
配置RAM访问控制管理角色后获取元数据会多一项RAM。
依次进行访问特定地址后通过泄露的元数据信息得到AccessKeyId以及AccessKeySecret即可通过利用工具对目标账号下的资源进行接管,接管资源根据AK/SK的权限而定,也就是当前弹性计算所配置RAM角色权限大小而定。
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/
-获取临时凭证
http://100.100.100.200/latest/meta-data/ram/security-credentials/ecs
根据元数据中泄露的AK/SK可以使用利用工具进一步利用。
CF 云渗透框架项目:https://wiki.teamssix.com/CF/
3、利用环境2:某服务器上Web资产存在SSRF漏洞
获取这个服务器权限(不一定是最高权限)
主要利用服务器去访问网站的权限就可以(webshell 漏洞rce都能进行攻击)
找到ssrf漏洞,查看ip是什么云厂商,这里以阿里云为例子
这里的 SSRF 漏洞触发点在 UEditor 编辑器的上传图片功能中,下面我们尝试让服务器从 https://baidu.com?.jpg 获取图片。
2.直接利用SSRF漏洞获取目标阿里云的元数据地址
-利用ssrf漏洞获取关键信息
http://100.100.100.200/latest/meta-data/
http://100.100.100.200/latest/meta-data/ram/security-credentials/
-获取临时凭证
http://100.100.100.200/latest/meta-data/ram/security-credentials/ecs
-利用AK横向移动
CF 云渗透框架项目:https://wiki.teamssix.com/CF/
#云服务-云数据库-外部连接&权限提升
1、帐号密码:
源码配置中找到(几率高)或爆破手段(几率低)
2、连接获取:
-白名单&外网 直接Navicat支持连接
-内网需要其中内网某一个服务器做转发
3、AK利用(权限提升)
CF 云渗透框架项目:https://wiki.teamssix.com/CF/
案例参考链接