Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
red-shadow — Analyse les configurations IAM AWS à la recherche d'administrateurs fantômes en détectant les politiques de refus mal configurées qui ne parviennent pas à restreindre les actions des utilisateurs sur les groupes, permettant ainsi la détection et la correction des élévations de privilèges. | Kitploit
Outils/GitHubGitHub/lightspin-tech/red-shadow
Sécurité de l'Infrastructure CloudScanners de VulnérabilitésTests d'IntrusionSécurité CloudGestion des Identités et des Accès (IAM)Mauvaise Configuration
GitHublightspin-tech/red-shadow

red-shadow

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
9522il y a 5 ansVérifié par Kitploit

À propos

Analyse les configurations IAM AWS à la recherche d'administrateurs fantômes en détectant les politiques de refus mal configurées qui ne parviennent pas à restreindre les actions des utilisateurs sur les groupes, permettant ainsi la détection et la correction des élévations de privilèges.

Partager

red-shadow

Red-Shadow

Lightspin AWS IAM Scanner de vulnérabilités

Description

Analysez votre configuration AWS IAM à la recherche d'administrateurs fantômes dans AWS IAM basés sur des politiques de refus mal configurées n'affectant pas les utilisateurs dans les groupes, découvertes par l'équipe de recherche en sécurité de Lightspin.

L'outil détecte les mauvaises configurations dans les objets IAM suivants :

  • Stratégies gérées

  • Stratégies intégrées aux utilisateurs

  • Stratégies intégrées aux groupes

  • Stratégies intégrées aux rôles

Résumé de la recherche

La logique d'évaluation d'AWS IAM pour les politiques de refus appliquées aux groupes ne fonctionne pas de la même manière que la plupart des ingénieurs en sécurité peuvent en avoir l'habitude avec d'autres mécanismes d'autorisation.

Supposons qu'une politique avec une ressource de groupe ait un refus explicite. Dans ce cas, cela n'affectera que les actions de groupe et non les actions des utilisateurs, exposant les organisations à des erreurs de configuration et des vulnérabilités si elles supposent que le processus est le même qu'avec Active Directory, par exemple.

Exemple de politique json vulnérable :

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ProtectManagersByDeny",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "arn:aws:iam::123456789999:group/managers"
        }
    ]
}

Dans cet exemple, la politique devrait refuser toute action iam effectuée par les utilisateurs, groupes ou rôles auxquels cette politique est attachée, envers le groupe appelé managers.

En réalité, une simple action IAM comme iam:ChangePassword fonctionnerait car la politique de refus est inefficace.

Lien vers le blog complet de recherche en sécurité

Détection

AWS IAM a une séparation claire entre les actions des objets utilisateur et les actions des objets groupe.

La liste suivante comprend les actions des objets utilisateur que l'outil analyse sur les politiques de refus affectant les groupes (en plus du wildcard) :

root@kitploit:~
AWS_USER_ACTIONS = ["iam:CreateUser",
                     "iam:GetUser",
                     "iam:UpdateUser",
                     "iam:DeleteUser",
                     "iam:GetUserPolicy",
                     "iam:PutUserPolicy",
                     "iam:DeleteUserPolicy",
                     "iam:ListUserPolicies",
                     "iam:AttachUserPolicy",
                     "iam:DetachUserPolicy",
                     "iam:ListAttachedUserPolicies",
                     "iam:SimulatePrincipalPolicy",
                     "iam:GetContextKeysForPrincipalPolicy",
                     "iam:TagUser",
                     "iam:UpdateSSHPublicKey",
                     "iam:UntagUser",
                     "iam:GetSSHPublicKey",
                     "iam:ListUserTags",
                     "iam:DeleteSSHPublicKey",
                     "iam:GetLoginProfile",
                     "iam:GetAccessKeyLastUsed",
                     "iam:UpdateLoginProfile",
                     "iam:UploadSigningCertificate",
                     "iam:DeleteLoginProfile",
                     "iam:ListSigningCertificates",
                     "iam:CreateLoginProfile",
                     "iam:UpdateSigningCertificate",
                     "iam:EnableMFADevice",
                     "iam:DeleteSigningCertificate",
                     "iam:ResyncMFADevice",
                     "iam:ListServiceSpecificCredentials",
                     "iam:ListMFADevices",
                     "iam:ResetServiceSpecificCredential",
                     "iam:DeactivateMFADevice",
                     "iam:CreateServiceSpecificCredential",
                     "iam:ChangePassword",
                     "iam:UpdateServiceSpecificCredential",
                     "iam:CreateAccessKey",
                     "iam:DeleteServiceSpecificCredential",
                     "iam:ListAccessKeys",
                     "iam:PutUserPermissionsBoundary",
                     "iam:UpdateAccessKey",
                     "iam:DeleteUserPermissionsBoundary",
                     "iam:DeleteAccessKey",
                     "iam:ListGroupsForUser",
                     "iam:ListSSHPublicKeys",
                     "iam:UploadSSHPublicKey"]

Nombre des actions des objets utilisateur mentionnées ci-dessus peuvent facilement conduire à une escalade de privilèges ou compromettre le compte, comme réinitialiser le mot de passe de l'administrateur, désactiver le MFA du compte racine, etc.

Prérequis

Red-Shadow est construit avec Python 3 et Boto3.

L'outil nécessite :

  • Utilisateur IAM avec clé d'accès dans les variables d'environnement
  • Permissions suffisantes pour que l'utilisateur IAM exécute le scanner
  • Python 3 et pip3 installés

Installation

root@kitploit:~
sudo git clone https://github.com/lightspin-tech/red-shadow.git
cd red-shadow
pip3 install -r requirements.txt

Utilisation

root@kitploit:~
python3 red-shadow.py

Analyse des résultats

Les résultats découvrent tout objet IAM vulnérable à ce contournement d'autorisation dans AWS.

Exemple de sortie des résultats :

root@kitploit:~
++ Starting Red-Shadow ++

++ AWS IAM Vulnerability Scanner
++ Red Shadow scans for shadow admins in AWS IAM based on misconfigured deny policies not affecting users in groups

Step 1: Searching for IAM Group misconfigurations in managed policies
Found potential misconfiguration at arn:aws:iam::123456789999:policy/ProtectManagers
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 2: Searching for IAM Group misconfigurations in Users inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 3: Searching for IAM Group misconfigurations in Groups inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 4: Searching for IAM Group misconfigurations in Roles inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Done

Dans cette sortie console, nous pouvons voir que notre politique de refus ProtectManagers est inefficace et vulnérable à des attaques telles que l'escalade de privilèges mentionnée ci-dessus.

Simulation et Exploitation

Pour valider la vulnérabilité IAM et exécuter l'exploitation, vous pouvez suivre le flux suivant :

  1. aws iam create-group --group-name managers
  2. aws iam attach-group-policy --group-name managers --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
  3. aws iam create-user --user-name JohnAdmin
  4. aws iam add-user-to-group --user-name JohnAdmin --group-name managers
  5. créez un fichier policy.json avec le contenu ci-dessous (remplacez l'identifiant du compte) :
root@kitploit:~
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ProtectManagersByDeny",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "arn:aws:iam::123456789999:group/managers"
    }
  ]
}
  1. aws iam create-policy --policy-name ProtectManagers --policy-document file://policy.json
  2. aws iam create-group --group-name backend-dev
  3. aws iam create-user --user-name BobAttacker
  4. aws iam add-user-to-group --user-name BobAttacker --group-name backend-dev
  5. aws iam attach-group-policy --group-name backend-dev --policy-arn arn:aws:iam::123456789999:policy/ProtectManagers
  6. Créez une politique pour autoriser les utilisateurs à créer des clés d'accès dans le fichier policy_iam.json pour le groupe backend-dev :
root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:CreateAccessKey",
            "Resource": "*"
        }
    ]
}
  1. aws iam create-policy --policy-name devCreateAccessKeys --policy-document file://policy_iam.json
  2. aws iam attach-group-policy --group-name backend-dev --policy-arn arn:aws:iam::123456789999:policy/devCreateAccessKeys
  3. Validez notre configuration en utilisant : aws iam list-attached-group-policies --group backend-dev
  4. aws iam create-access-key --user-name BobAttacker
  5. Configurez la nouvelle clé d'accès et le secret dans le profil aws (environnement local)
  6. Maintenant, l'utilisateur BobAttacker peut créer une clé d'accès pour toutes les ressources mais a un refus explicite pour le groupe managers.

Exploitons la vulnérabilité en utilisant :

aws iam create-access-key --user-name JohnAdmin --profile BobAttacker

Escalade de privilèges terminée !

Remédiation

Une fois que vous avez trouvé les politiques vulnérables au contournement d'autorisation, il existe deux façons possibles de remédier à la vulnérabilité et de corriger la politique :

OPTION 1 : Définissez tous les utilisateurs concernés dans le champ resource au lieu des groupes pour éviter les actions iam inefficaces, et refusez toutes les actions de groupe, comme dans l'exemple suivant :

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenySpecificUserActions",
            "Effect": "Deny",
            "Action": [
                "iam:CreateLoginProfile",
                "iam:ChangePassword",
                "iam:CreateAccessKey"
            ],
            "Resource": [
                "arn:aws:iam::123456789999:user/[email protected]",
                "arn:aws:iam::123456789999:user/[email protected]",
                "arn:aws:iam::123456789999:user/[email protected]"
            ]
        },
        {
            "Sid": "DenyAllGroupActions",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "arn:aws:iam::123456789999:group/managers"
        }
    ]
}

OPTION 2 : Utilisez une condition dans la politique avec iam:ResourceTag en place comme dans l'exemple suivant :

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "iam:CreateLoginProfile",
                "iam:ChangePassword",
                "iam:CreateAccessKey"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iam:ResourceTag/group": "managers"
                }
            }
        }
    ]
}

Contactez-nous

Cette recherche a été menée par l'équipe de recherche en sécurité de Lightspin. Pour plus d'informations, contactez-nous à [email protected].

Licence

Ce dépôt est disponible sous la Licence Apache 2.0.

Télécharger l’outil