Azure Pentesting
ESTOY AÚN CONSTRUYENDO LA METODOLOGÍA DE AZURE
Información Básica
Az - Basic InformationMetodología de Pentester/Red Team en Azure
Para auditar un entorno de AZURE es muy importante saber: qué servicios se están utilizando, qué está expuesto, quién tiene acceso a qué, y cómo están conectados los servicios internos de Azure y los servicios externos.
Desde el punto de vista de un Red Team, el primer paso para comprometer un entorno de Azure es conseguir obtener algunas credenciales para Azure AD. Aquí tienes algunas ideas sobre cómo hacerlo:
Leaks en github (o similar) - OSINT
Ingeniería Social
Reutilización de contraseñas (password leaks)
Vulnerabilidades en Aplicaciones Alojadas en Azure
Server Side Request Forgery con acceso al endpoint de metadatos
Lectura de Archivos Locales
/home/USERNAME/.azure
C:\Users\USERNAME\.azure
El archivo
accessTokens.json
enaz cli
antes de la versión 2.30 - Ene2022 - almacenaba tokens de acceso en texto claroEl archivo
azureProfile.json
contiene información sobre el usuario conectado.az logout
elimina el token.Versiones anteriores de
Az PowerShell
almacenaban tokens de acceso en texto claro enTokenCache.dat
. También almacena ServicePrincipalSecret en texto claro enAzureRmContext.json
. El cmdletSave-AzContext
puede ser usado para almacenar tokens. UsaDisconnect-AzAccount
para eliminarlos.3ras partes comprometidas
Empleado interno
Phishing Común (credenciales o App Oauth)
Incluso si no has comprometido a ningún usuario dentro del tenant de Azure que estás atacando, puedes recopilar algo de información de él:
Az - Unauthenticated Enum & Initial EntryDespués de haber conseguido credenciales, necesitas saber a quién pertenecen esas credenciales, y a qué tienen acceso, por lo que necesitas realizar una enumeración básica:
Enumeración Básica
Recuerda que la parte más ruidosa de la enumeración es el inicio de sesión, no la enumeración en sí.
SSRF
Si encontraste un SSRF en una máquina dentro de Azure, revisa esta página para trucos:
Bypass de Condiciones de Inicio de Sesión
En casos donde tienes algunas credenciales válidas pero no puedes iniciar sesión, estas son algunas protecciones comunes que podrían estar en su lugar:
Lista blanca de IPs -- Necesitas comprometer una IP válida
Restricciones geográficas -- Averigua dónde vive el usuario o dónde están las oficinas de la empresa y consigue una IP de la misma ciudad (o al menos del mismo país)
Navegador -- Tal vez solo se permite un navegador de cierto SO (Windows, Linux, Mac, Android, iOS). Averigua qué SO usa la víctima/empresa.
También puedes intentar comprometer credenciales de Service Principal ya que usualmente están menos limitadas y su inicio de sesión es menos revisado
Después de evitarlo, podrías volver a tu configuración inicial y aún tendrás acceso.
Subdomain Takeover
Whoami
Aprende cómo instalar az cli, AzureAD y Az PowerShell en la sección Az - AzureAD.
Una de las primeras cosas que necesitas saber es quién eres (en qué entorno estás):
Uno de los comandos más importantes para enumerar Azure es Get-AzResource
de Az PowerShell, ya que te permite conocer los recursos sobre los que tu usuario actual tiene visibilidad.
Puedes obtener la misma información en la consola web yendo a https://portal.azure.com/#view/HubsExtension/BrowseAll o buscando "All resources"
Enumeración de AzureAD
Por defecto, cualquier usuario debería tener suficientes permisos para enumerar cosas como usuarios, grupos, roles, service principals... (consulta permisos predeterminados de AzureAD). Aquí puedes encontrar una guía:
Az - AzureAD (AAD)Ahora que tienes algo de información sobre tus credenciales (y si eres un red team, con suerte no has sido detectado). Es hora de averiguar qué servicios se están utilizando en el entorno. En la siguiente sección puedes revisar algunas formas de enumerar algunos servicios comunes.
Service Principal y Política de Acceso
Un servicio de Azure puede tener una Identidad del Sistema (del propio servicio) o usar una Identidad Administrada Asignada por el Usuario. Esta Identidad puede tener una Política de Acceso a, por ejemplo, un KeyVault para leer secretos. Estas Políticas de Acceso deben estar restringidas (principio de privilegio mínimo), pero podrían tener más permisos de los necesarios. Típicamente, un App Service usaría KeyVault para recuperar secretos y certificados.
Por lo tanto, es útil explorar estas identidades.
App Service SCM
Consola Kudu para iniciar sesión en el 'contenedor' del App Service.
Webshell
Usa portal.azure.com y selecciona el shell, o usa shell.azure.com, para un bash o powershell. El 'disco' de este shell se almacena como un archivo de imagen en una storage-account.
Azure DevOps
Azure DevOps está separado de Azure. Tiene repositorios, pipelines (yaml o release), tableros, wiki y más. Los Grupos de Variables se utilizan para almacenar valores de variables y secretos.
Herramientas de Recon Automatizadas
Azucar es una herramienta de auditoría de seguridad para Azure. Proporciona una forma automatizada de evaluar la configuración de seguridad de una suscripción de Azure.
Last updated