type
status
date
slug
summary
tags
category
icon
password
一、元数据
华为云元数据地址:http://169.254.169.254
常见需要查询的接口:

需要注意直接访问是看不到openstack目录的。
/latest/meta-data/local-ipv4
用于查询弹性云服务器的固定IP地址。多网卡情况下,只显示主网卡的地址。

/latest/meta-data/hostname
用于查询弹性云服务器的主机名称,后面会追加.novalocal后缀

/latest/meta-data/instance-type
用于查询弹性云服务器的规格名称。

/latest/meta-data/placement/availability-zone
用于查询弹性云服务器的AZ信息。

/latest/meta-data/public-ipv4
查询弹性云服务器的弹性公网IP地址,多网卡情况下,只显示主网卡的弹性公网IP地址。

/latest/user-data
查询弹性云服务器的自定义数据。

/latest/meta-data/security-groups
查询弹性云服务器所使用的安全组名称。

/latest/meta-data/public-keys/0/openssh-key
查询弹性云服务器的公钥。

/openstack/latest/meta_data.json
用于查询弹性云服务器的元数据。

参数 | 参数类型 | 描述 |
uuid | String | 弹性云服务器的ID。 |
availability_zone | String | 弹性云服务器所在可用区。 |
meta | Dict | 元数据信息,包括镜像名称、镜像ID、VPC ID等信息。 |
hostname | String | 弹性云服务器主机名。<br><br>请参考以下链接为弹性云服务器去掉后缀.novalocal:<br><br>弹性云服务器的主机名带后缀.novalocal |
enterprise_project_id | String | 查询弹性云服务器的企业项目ID信息。 |
/openstack/latest/network_data.json
查询弹性云服务器的网络信息。

/openstack/latest/securitykey
获取临时的AK、SK。(还未配置所以无法查到)

/openstack/latest/user_data
查询弹性云服务器的自定义数据。
用户根据需要自行指定脚本和配置文件用于弹性云服务器初始化,详细操作请参考通过实例自定义数据配置ECS实例。
若linux虚拟化使用密码方式,则保存注入密码的脚本。

/openstack/latest/password
查询弹性云服务器的密码(暂时不知道为什么访问没有结果)。
Windows系统使用keypairs创建弹性云服务器初始化时cloudbase-init用于保存密文密码。

二、服务器命令
华为云ECS只有登录服务器才可以执行命令,哪怕拿到了账号登录控制台也需要服务器的账号密码 但是拿到泄漏的AK SK可以控制服务器的关机启动和修改密码。
相较于阿里云,华为云实测没有具体的短信以及控制台提醒


首先需要利用云服务器的地区和终端节点来爆破用户拥有的服务器 https://developer.huaweicloud.com/endpoint

如果地区正确,则响应如下:

需要用到id(命令里的server_id)和tenant_id(命令里的project_id)

2.1 修改服务器密码(无告警)
企业版
个人版
个人版修改密码后如下
注意,云平台对于要修改的密码是有要求的

重启服务器后修改生效
2.2 关闭服务器
--project_id的添加可以避免服务器配置的的批量更改
2.3 启动服务器

华为云购买服务器时默认的账号为root权限,如果用户未做权限限制,拿到shell就不用提权了
三、权限维持
3.1 新增服务器(有告警)
新建一台指定网段的服务器来作为跳板机


注入数据
在创建过程中,还想其中注入了脚本,可以利用这一点去拓展攻击手法。

可以通过SSH登录服务器查看

创建命令的解析
参数 | 描述 |
cli-region | 当前可调用地域 |
project_id | 项目ID |
server.data_volumes.1.volumetype | 云服务器数据盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配(默认SSD就行)。 |
server.data_volumes.1.size | 数据盘大小 |
server.flavorRef | 待创建云服务器的系统规格的ID. |
server.imageRef | 待创建云服务器的系统镜像,需要指定已创建镜像的ID,ID格式为通用唯一识别码(Universally UniqueIdentifier,简称UUID). |
云服务器名称 | |
server.nics.1.subnet_id | 待创建云服务器所在的子网信息,需要指定vpcid对应VPC下的子网ID,UUID格式. |
publicip.eip.iptype | 弹性地址IP类型(默认:5_bgp) |
server.publicip.eip.bandwidth.size | 带宽大小 |
server.publicip.eip.bandwidth.sharetype | 带宽的共享类型(PER-独享、WHOLE-共享) |
server.server_tags.1.value | 服务器标签值(随意写) |
server.server_tags.1.key | 服务器标签键(随意写) |
server.user_data | 创建服务器过程中注入的数据(注入内容需要BASE64编码) |
server.vpcid | 待创建云服务器所属虚拟私有云(简称VPC),需要指定已创建VPC的ID,UUID格式。 |
部分需要带的参数是需要其他命令获取的,获取方式👇
查看VPC列表
获取VPCID

查询子网列表
查询SubnetsID

查询镜像列表
查询镜像的ID

查询规格详情和规格扩展信息列表
查询flavorRef

3.2 新增账号(有告警)
记录domain-id

管理员创建IAM用户
获得user-id。
参数 | 描述 |
cli-region | 当前可调用地域 |
user.domain_id | 查询IAM用户可以访问的账号详情可获得 |
user.pwd_status | IAM用户首次登录是否重置密码,默认需要重置。 |
账号 | |
user.access_mode | IAM用户访问方式:<br>default:默认访问模式,编程访问和管理控制台访问。<br>programmatic:编程访问。<br>console:管理控制台访问。 |

查询group_id
一般admin是默认的超级管理员权限

添加用户组
添加了账号后,还需要给当前账号添加用户组

返回控制台看看

获平台账户
查询IAM用户列表,获平台账户信息

登录控制台
使用账户拼接登录地址,地址拼接后为:https://auth.huaweicloud.com/authui/login?id=fuyuanzii ,再使用刚才创建的账号登录控制台。所有添加的IAM账户,包括子账号添加的账号也是用同样的登录地址。

3.3 新增AK/SK(无告警)
可以新添加用户的AK/SK(限制是每个账号只能拥有两个密钥)
获平台账户
查询IAM用户列表,获平台账户信息

创建永久访问密钥


3.4 恶意镜像
可以删除,或者创建同名的镜像文件,将后门植入到镜像中,当用户使用镜像新建实例的时候,就会带入我们植入的恶意代码了

四、防御绕过
服务器创建好后默认不安装企业主机安全的Agent

若是开启了主机安全,可以手动关闭

五、信息搜集
5.1 元数据
元数据所在服务器:169.254.169.254

5.3 镜像服务
如果用户在制作整机镜像时未将敏感数据删除,那我们就可以将镜像导出到OBS桶中,然后下载到本地重新搭建,在其中寻找一些敏感数据。

然后访问存储桶下载或者从控制台下载

5.4 子网信息

元数据中也可以查看到(不全)

六、内网横向
如果内网机器无法出网且对方有使用负载均衡,我们登录控制台后可以将内网的指定端口通过负载均衡映射到公网

首先需要添加监听器,输入公网前端端口(就是我们直接访问的端口)和后端分配的端口(内网服务器的端口),然后在后端服务器组添加内网的服务器就可以了。
