Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CloudPrivs — Определение привилегий из облачных учетных данных путем брутфорс-тестирования. | Kitploit
Инструменты/GitHubGitHub/abstractclass/cloudprivs
Повышение привилегийАнализ уязвимостейСбор информацииТестирование на ПроникновениеБезопасность облачных сред
GitHubabstractclass/cloudprivs

CloudPrivs

Определение привилегий из облачных учетных данных путем брутфорс-тестирования.

Репозиторий
69226 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CloudPrivs

У меня есть учетные данные, что дальше?

Обзор

CloudPrivs — это инструмент, который использует существующую мощь SDK, таких как Boto3, для перебора прав доступа всех облачных сервисов и определения того, какие привилегии существуют для заданного набора учетных данных.

Этот инструмент полезен для пентестеров, участников красных команд и других специалистов по безопасности. Облачные сервисы обычно не предоставляют способа определить, какие разрешения есть у заданного набора учетных данных, а огромное количество сервисов и операций делает ручное подтверждение сложной задачей. Это означает, что повышение привилегий может быть возможным с использованием набора учетных данных, но об этом можно никогда не узнать, просто потому что неизвестно, что найденные учетные данные AWS могут выполнять Lambda.

Установка

В настоящее время недоступно на PyPi, но я работаю над этим

Pip (простой)

root@kitploit:~
git clone https://github.com/AbstractClass/CloudPrivs
cd CloudPrivs
python -m pip install -e .

Это без виртуального окружения и не рекомендуется, если вы запускаете много программ на Python.

Pip (рекомендуемый)

root@kitploit:~
git clone https://github.com/AbstractClass/CloudPrivs
cd CloudPrivs
python -m venv venv/
./venv/bin/activate # activate.ps1 в Windows
python -m pip install -e .

Вы также можете использовать Pyenv+virtualenv, если они доступны:

root@kitploit:~
git clone https://github.com/AbstractClass/CloudPrivs
cd CloudPrivs
pyenv virtualenv CloudPrivs
pyenv local CloudPrivs
python -m pip install -e .

Использование

cloudprivs [ПОСТАВЩИК] [АРГУМЕНТЫ]

Поставщики

В настоящее время доступен только AWS, но я работаю над GCP. Если вы хотите помочь, смотрите #Customizing.

AWS

root@kitploit:~
Опции:
  -v, --verbose                Показывать неудачные и ошибочные тесты в выводе
  -s, --services TEXT          Тестировать только указанные сервисы, а не все доступные
  -p, --profile TEXT           Имя профиля AWS для сканирования, если не указано, будут использованы переменные окружения
  -t, --custom-tests FILENAME  Расположение файла YAML с пользовательскими тестами. Читайте документацию для получения дополнительной информации
  -r, --regions TEXT           Список фильтров для сопоставления регионов, например "us", "eu-west", "ap-north-1"
  --help                       Показать это сообщение и выйти.

Советы

Для --region и --service поддерживаются несколько аргументов, но они должны передаваться с флагом каждый раз, т.е. cloudprivs aws -r us -r eu -s ec2 -s lambda. Мне это тоже не нравится, но это ограничение Click, для которого я пока не нашел обходного пути.

Обратите внимание, что флаг region поддерживает частичное совпадение. Наиболее часто используемые аргументы: -r us -r eu, чтобы охватить только общие регионы.

Результаты отображаются, сгруппированные по регионам, и каждая строка содержит тестовый случай и результат теста.

Ошибки

Если инструмент сталкивается с неожиданными ошибками во время тестирования, они выводятся в stderr по мере возникновения, что может прерывать поток вывода. Если вы не хотите их видеть, можно перенаправить stderr.

Как это работает

В отличие от других инструментов, таких как WeirdAAL, которые вручную пишут каждый тестовый случай, CloudPrivs напрямую запрашивает SDK Boto3, чтобы динамически сгенерировать список всех доступных сервисов и всех доступных регионов для каждого сервиса.

После формирования полного списка каждая функция вызывается по умолчанию без аргументов, хотя поддерживается возможность добавления пользовательских аргументов для каждой операции (подробнее в #Customizing).

Примечание: некоторые функции AWS могут повлечь затраты при вызове. Я разрешил только операции, начинающиеся с get_, list_ и describe_, чтобы избежать случайных затрат, что в моем собственном тестировании оказалось безопасным. Однако, пожалуйста, используйте с осторожностью. Это кажется безопасным для других инструментов, таких как enumerate-iam. Я не гарантирую, что вы случайно не понесете затраты при вызове всех этих функций (даже без аргументов).

Настройка

CloudPrivs поддерживает простое расширение/настройку в двух областях:

  • Поставщики
  • Пользовательские тесты

Поставщики

Реализовать нового поставщика (например, GCP) просто:

  1. Напишите логику для выполнения тестов. Соглашение об именах и структура не имеют значения.
  2. В папке CloudPrivs/providers создайте новую папку для вашего поставщика (например, 'gcp').
  3. В файле CloudPrivs/providers/__init__.py добавьте вашего поставщика в переменную __all__, она должна совпадать с именем папки.
  4. Создайте файл с именем cli.py в папке вашего поставщика.
  5. Используйте Click для создания CLI для вашего поставщика и назовите функцию входа в CLI cli (см. поставщика AWS для справки).
  6. Готово! Теперь запуск cloudprivs <поставщик> должен показывать ваш CLI.

Пользовательские тесты

Поставщик AWS поддерживает внедрение аргументов при вызове функций AWS. Эта функция предоставляется, потому что часто функции AWS требуют аргументов для вызова, и в некоторых случаях эти аргументы могут быть фиксированными переменными. Таким образом, если мы можем предоставить фиктивные переменные, мы увеличиваем покрытие тестирования. В других случаях мы можем внедрить аргументы, такие как dryrun=true, чтобы ускорить вызовы.

Пользовательские тесты хранятся в файле YAML по адресу cloudprivs/providers/aws/CustomTests.yaml.

Структура YAML следующая:

root@kitploit:~
---
<имя-сервиса>:
    - <имя-функции>:
        args:
            - <арг1>
            - <арг2>
        kwargs:
            arg1: val1
            arg2: val2

Примечание: имя функции работает с частичным совпадением. Это означает, что вы можете использовать имя функции, например 'describe_', и указанные аргументы будут внедрены во все функции, содержащие 'describe_'. Правила сопоставляются по принципу «первое найденное», поэтому если вы хотите переопределить общее правило, разместите более конкретное правило выше общего. Например:

root@kitploit:~
ec2:
    - describe_instances
        args:
        kwargs:
            DryRun: True
            NoPaginate: True
    - describe_
        args:
        kwargs:
            DryRun: True

Добавление новых правил

Новые правила можно добавить, изменив существующий файл CustomTests.yaml или создав новый файл YAML и указав его с помощью флага --custom-tests. Новый файл будет объединен с существующим файлом тестов, и любые дублирующиеся значения будут переопределены, при этом приоритет отдается предоставленному файлу.

Использование в качестве библиотеки

AWS

Поставщик AWS написан как библиотека для интеграции в другие инструменты. Вы можете использовать его следующим образом:

root@kitploit:~
import boto3
from cloudprivs.providers.aws import service
from concurrent.futures import ThreadPoolExecutor

session = boto3.Session('default')
with ThreadPoolExecutor(15) as executor:
  iam = service.Service('iam', session, executor=executor)
  scan_results = iam.scan() # охватит все регионы, указанные в executor (по умолчанию все доступные регионы)
  formatted_results = iam.pretty_print_scan(scan_results)
  print(formatted_results)

Всё полностью задокументировано в коде, должно быть достаточно просто для понимания.

План развития

Этот инструмент функционален, но далек от завершения. Я активно работаю над новыми функциями и открыт для вклада, поэтому, пожалуйста, не стесняйтесь открывать Issues/Feature Requests и отправлять PR.

Запланированные функции

  • Добавить инструмент в PyPi
  • Поддержка GCP
  • Вывод в JSON
  • Добавление модульных тестов
  • Миграция на Golang
Скачать инструмент