
Инструмент перечисления Azure DevOps только для чтения, который запрашивает REST API для отображения проектов, репозиториев, сервисных подключений, сборок, секретов конвейеров, разрешений и политик ветвей во время авторизованных оценок безопасности.
Инструмент командной строки для перечисления организаций Azure DevOps с помощью персонального маркера доступа (PAT). Он запрашивает REST API Azure DevOps для отображения проектов, репозиториев, подключений к службам, сборок, артефактов сборки и параметров безопасности — полезен при авторизованных оценках безопасности сред ADO.
По функциональности схож с ADOKit. Ключевые отличия: реализация на Python, что делает его более переносимым; он ориентирован на перечисление только для чтения и предоставляет возможность перечисления разрешений.
Инструмент перечисления Azure DevOps — проекты, репозитории, подключения к службам и многое другое.
positional arguments:
{projects,repos,service-endpoints,builds,build-logs,search-code,enumerate,permissions,whoami,pipeline-vars,pipeline-secrets,variable-groups,secure-files,approvals-checks,branch-policies,build-artifacts}
projects Список проектов в организации.
repos Список репозиториев Git в организации.
service-endpoints Перечисление подключений к службам.
builds Список сборок для проектов.
build-logs Загрузка журналов сборки.
search-code Поиск кода по репозиториям.
enumerate Перечисление текущего пользователя, репозиториев, подключений к службам и проектов.
permissions Список групп, пространств имён безопасности и разрешений ACL.
whoami Определение аутентифицированного пользователя и список его членства в группах.
pipeline-vars Список всех переменных, определённых в конвейерах сборки.
pipeline-secrets Список имён секретных переменных, определённых в конвейерах сборки.
variable-groups Список переменных, определённых в группах переменных.
secure-files Список защищённых файлов, зарегистрированных в проектах.
approvals-checks Перечисление утверждений и проверок для защищённых ресурсов конвейера.
branch-policies Перечисление политик ветвей для репозитория.
build-artifacts Список и загрузка артефактов сборки.
options:
-h, --help Показать это справочное сообщение и выйти
--org ORG Имя организации Azure DevOps (например, myorg)
--pat PAT Персональный маркер доступа. Если опущен, читает переменную окружения AZURE_DEVOPS_PAT или ADO_PAT.
-k, --insecure Отключить проверку TLS (полезно при использовании перехватывающих прокси).
pip install git+https://github.com/ReversecLabs/azuredevops-enum.git
После установки команда ado-enum становится доступна в вашем PATH.
git clone https://github.com/ReversecLabs/azuredevops-enum.git
cd ado-enum
pip install .
Или без установки (запуск напрямую):
pip install -r requirements.txt
python ado_enum.py --help
Укажите ваш PAT через флаг --pat или переменную окружения:
export AZURE_DEVOPS_PAT=<ваш-pat>
# или
export ADO_PAT=<ваш-pat>
ado-enum --org <ОРГАНИЗАЦИЯ> [--pat <PAT>] [-k] <команда> [опции]
projects — список проектовado-enum --org myorg projects
ado-enum --org myorg projects --json
repos — список репозиториевado-enum --org myorg repos
ado-enum --org myorg repos --json
service-endpoints — перечисление подключений к службамado-enum --org myorg service-endpoints
ado-enum --org myorg service-endpoints --project "MyProject"
ado-enum --org myorg service-endpoints --json
builds — список сборокado-enum --org myorg builds
ado-enum --org myorg builds --project "MyProject"
build-logs — загрузка журналов сборки# Скачать все журналы по всем проектам
ado-enum --org myorg build-logs --output-dir ./logs
# Скачать журналы для конкретной сборки
ado-enum --org myorg build-logs --project "MyProject" --build-id 42 --output-dir ./logs
search-code — поиск кода по репозиториямТребует установленного расширения Code Search (ms.vss-code-search) в организации.
ado-enum --org myorg search-code "password"
ado-enum --org myorg search-code "connectionString"
Результат — JSON с URL-адресами соответствующих файлов и строками, которые совпали.
enumerate — перечисление политик ветвей, проверок и разрешенийado-enum --org myorg enumerate
ado-enum --org myorg enumerate --project "MyProject"
Выводит таблицы для:
permissions — список групп, пространств имён безопасности и разрешений ACL# Список всех групп и разрешений ACL
ado-enum --org myorg permissions
# Список групп, ограниченных конкретным проектом
ado-enum --org myorg permissions --project "MyProject"
# Список только групп уровня организации
ado-enum --org myorg permissions --org-level
# Показать группы и разрешения для конкретного пользователя
ado-enum --org myorg permissions --user "[email protected]"
# Показать разрешения для конкретной группы
ado-enum --org myorg permissions --group "Project Administrators"
Требует, чтобы PAT имел области Graph (read) и Identity (read) для полного разрешения членства в группах и записей ACL.
whoami — определение аутентифицированного пользователяado-enum --org myorg whoami
Читает заголовок x-vss-userdata для идентификации владельца PAT, затем запрашивает API Graph для получения его отображаемого имени, псевдонима в каталоге и членства в группах.
Требует, чтобы PAT имел область Graph (read) для разрешения членства в группах.
pipeline-vars — список переменных конвейераado-enum --org myorg pipeline-vars
ado-enum --org myorg pipeline-vars --project "MyProject"
ado-enum --org myorg pipeline-vars --json
Перечисляет все несекретные переменные, определённые в определениях конвейеров сборки. Секретные переменные исключены; используйте pipeline-secrets для их перечисления.
pipeline-secrets — список имён секретных переменных конвейераado-enum --org myorg pipeline-secrets
ado-enum --org myorg pipeline-secrets --project "MyProject"
ado-enum --org myorg pipeline-secrets --json
Перечисляет переменные, помеченные как isSecret в определениях конвейеров сборки. Значения не раскрываются API, поэтому отображаются как [HIDDEN]; команда показывает их имена, к какому конвейеру они относятся и в каком проекте находятся.
variable-groups — список содержимого групп переменныхado-enum --org myorg variable-groups
ado-enum --org myorg variable-groups --project "MyProject"
ado-enum --org myorg variable-groups --json
Перечисляет все переменные, хранящиеся в группах переменных по проектам. Секретные переменные в группах отображаются с их именами и значением [HIDDEN].
secure-files — список защищённых файловado-enum --org myorg secure-files
ado-enum --org myorg secure-files --project "MyProject"
ado-enum --org myorg secure-files --json
Перечисляет защищённые файлы, зарегистрированные в библиотеке конвейеров ADO. Содержимое файлов не загружается; команда возвращает метаданные: имя файла, ID, кто создал и когда.
approvals-checks — перечисление утверждений и проверок для защищённых ресурсов# Перечислить все типы ресурсов по всем проектам
ado-enum --org myorg approvals-checks
# Перечислить определённый тип ресурса
ado-enum --org myorg approvals-checks repositories
ado-enum --org myorg approvals-checks service-connections
# Ограничить конкретным проектом
ado-enum --org myorg approvals-checks --project "MyProject"
ado-enum --org myorg approvals-checks environments --project "MyProject"
# Вывод в JSON
ado-enum --org myorg approvals-checks --json
Поддерживаемые типы ресурсов: agent-pools, environments, repositories, secure-files, service-connections, variable-groups. Если тип ресурса не указан, перечисляются все типы.
branch-policies — перечисление политик ветвей для репозитория# Список всех политик ветвей для репозитория
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo"
# Фильтрация по конкретной ветке
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --branch main
# Вывод в JSON
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --json
--project и --repository обязательны. --branch необязателен; без него возвращаются все политики для репозитория.
build-artifacts — список и загрузка артефактов сборки# Список всех артефактов
ado-enum --org myorg build-artifacts
# Загрузить все артефакты
ado-enum --org myorg build-artifacts --download
# Загрузить все артефакты для конкретной сборки
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 --download
# Загрузить именованный артефакт
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 \
--download --artifact-name "drop" --output-dir ./artefacts
Используйте -k для отключения проверки TLS при маршрутизации через перехватывающий прокси:
proxychains ado-enum --org myorg -k projects
Или установите переменные окружения HTTPS_PROXY / HTTP_PROXY — requests будет учитывать их автоматически.
| Флаг | Описание |
|---|
--org | Имя организации (например, myorg из https://dev.azure.com/myorg) |
--pat | Токен PAT (или установите AZURE_DEVOPS_PAT / ADO_PAT) |
-k / --insecure | Отключить проверку TLS (полезно с перехватывающими прокси) |