# Azure Pentesting {{#include ../../banners/hacktricks-training.md}} ## Основна інформація {{#ref}} az-basic-information/ {{#endref}} ## Методологія Azure Pentester/Red Team Щоб провести аудит середовища AZURE, дуже важливо знати: які **послуги використовуються**, що **виставлено на показ**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані. З точки зору Red Team, **перший крок для компрометації середовища Azure** - це отримати деякі **облікові дані** для Azure AD. Ось кілька ідей, як це зробити: - **Витоки** в github (або подібних) - OSINT - **Соціальна** інженерія - Повторне використання **паролів** (витоки паролів) - Вразливості в Azure-Hosted Applications - [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) з доступом до метаданих - **Читання локальних файлів** - `/home/USERNAME/.azure` - `C:\Users\USERNAME\.azure` - Файл **`accessTokens.json`** в `az cli` до 2.30 - січень 2022 - зберігав **токени доступу у відкритому тексті** - Файл **`azureProfile.json`** містить **інформацію** про увійшого користувача. - **`az logout`** видаляє токен. - Старі версії **`Az PowerShell`** зберігали **токени доступу** у **відкритому** тексті в **`TokenCache.dat`**. Він також зберігає **ServicePrincipalSecret** у **відкритому** тексті в **`AzureRmContext.json`**. Команда **`Save-AzContext`** може бути використана для **зберігання** **токенів**.\ Використовуйте `Disconnect-AzAccount`, щоб видалити їх. - 3-ті сторони **зламані** - **Внутрішній** співробітник - [**Звичайна фішинг**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (облікові дані або Oauth App) - [Фішинг аутентифікації за кодом пристрою](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) Навіть якщо ви **не зламали жодного користувача** всередині Azure-орендаря, який ви атакуєте, ви можете **зібрати деяку інформацію** з нього: {{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}} > [!NOTE] > Після того, як ви змогли отримати облікові дані, вам потрібно знати, **кому належать ці облікові дані**, і **до чого вони мають доступ**, тому вам потрібно виконати деяку базову енумерацію: ## Базова енумерація > [!NOTE] > Пам'ятайте, що **найгучніша** частина енумерації - це **вхід**, а не сама енумерація. ### SSRF Якщо ви знайшли SSRF на машині всередині Azure, перевірте цю сторінку на трюки: {{#ref}} https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html {{#endref}} ### Обхід умов входу
У випадках, коли у вас є деякі дійсні облікові дані, але ви не можете увійти, ось кілька загальних захистів, які можуть бути на місці: - **IP-білий список** -- Вам потрібно зламати дійсний IP - **Гео обмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або країни принаймні) - **Браузер** -- Можливо, лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS) дозволений. Дізнайтеся, яку ОС використовує жертва/компанія. - Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється. Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ. ### Захоплення піддомену - [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) ### Whoami > [!CAUTION] > Дізнайтеся, **як встановити** az cli, AzureAD та Az PowerShell у розділі [**Az - Entra ID**](az-services/az-azuread.md). Одне з перших, що вам потрібно знати, це **хто ви** (в якому середовищі ви знаходитесь): {{#tabs }} {{#tab name="az cli" }} ```bash az account list az account tenant list # Current tenant info az account subscription list # Current subscription info az ad signed-in-user show # Current signed-in user az ad signed-in-user list-owned-objects # Get owned objects by current user az account management-group list #Not allowed by default ``` {{#endtab }} {{#tab name="AzureAD" }} ```bash #Get the current session state Get-AzureADCurrentSessionInfo #Get details of the current tenant Get-AzureADTenantDetail ``` {{#endtab }} {{#tab name="Az PowerShell" }} ```bash # Get the information about the current context (Account, Tenant, Subscription etc.) Get-AzContext # List all available contexts Get-AzContext -ListAvailable # Enumerate subscriptions accessible by the current user Get-AzSubscription #Get Resource group Get-AzResourceGroup # Enumerate all resources visible to the current user Get-AzResource # Enumerate all Azure RBAC role assignments Get-AzRoleAssignment # For all users Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user ``` {{#endtab }} {{#endtabs }} > [!CAUTION] > Одна з найважливіших команд для перерахунку Azure - це **`Get-AzResource`** з Az PowerShell, оскільки вона дозволяє вам **дізнатися, які ресурси ваш поточний користувач може бачити**. > > Ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за посиланням [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) або шукаючи "Усі ресурси". ### Entra ID Enumeration За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби-принципали... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\ Тут ви можете знайти посібник: {{#ref}} az-services/az-azuread.md {{#endref}} > [!NOTE] > Тепер, коли ви **маєте деяку інформацію про свої облікові дані** (і якщо ви команда червоного кольору, сподіваємося, ви **не були виявлені**). Час з'ясувати, які сервіси використовуються в середовищі.\ > У наступному розділі ви можете перевірити кілька способів **перерахувати деякі загальні сервіси.** ## App Service SCM Консоль Kudu для входу в 'контейнер' App Service. ## Webshell Використовуйте portal.azure.com і виберіть оболонку, або використовуйте shell.azure.com для bash або powershell. 'Диск' цієї оболонки зберігається як файл зображення в обліковому записі зберігання. ## Azure DevOps Azure DevOps відокремлений від Azure. Він має репозиторії, конвеєри (yaml або реліз), дошки, вікі та інше. Групи змінних використовуються для зберігання значень змінних і секретів. {{#include ../../banners/hacktricks-training.md}}