Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cloudsplaining — Cloudsplaining è uno strumento di valutazione della sicurezza AWS IAM che identifica le violazioni del principio del minimo privilegio e genera un report prioritizzato per il rischio. | Kitploit
Strumenti/GitHubGitHub/salesforce/cloudsplaining
Sicurezza dell'Infrastruttura CloudAnalisi delle VulnerabilitàAudit di ConfigurazioneSicurezza CloudGestione Identità e Accessi (IAM)Configurazione ErrataTop in Sicurezza dell'Infrastruttura Cloud n.8Top in Sicurezza Cloud n.9
GitHub
2.2k219135 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
salesforce/cloudsplaining

cloudsplaining

Cloudsplaining è uno strumento di valutazione della sicurezza AWS IAM che identifica le violazioni del principio del minimo privilegio e genera un report prioritizzato per il rischio.

Vedi RepositorySito web
Condividi

Cloudsplaining

Cloudsplaining è uno strumento di valutazione della sicurezza IAM AWS che identifica violazioni del principio del minimo privilegio e genera un report HTML con priorità di rischio.

Tests Documentation Status Join the chat at https://gitter.im/cloudsplaining Twitter PyPI Python Version Downloads

  • Report di esempio
  • Documentazione

    Per la documentazione completa, visita il progetto su ReadTheDocs.

    • Installazione
    • Prontuario
    • Report di esempio

    Panoramica

    Cloudsplaining identifica le violazioni del principio del minimo privilegio nelle policy IAM AWS e genera un report HTML di bell'aspetto. Può scansionare tutte le policy nel tuo account AWS, su più account AWS, o può scansionare un singolo file di policy.

    Aiuta a identificare le azioni IAM che non sfruttano i vincoli delle risorse. Aiuta inoltre a dare priorità al processo di remediation segnalando le policy IAM che presentano i seguenti rischi per l'account AWS in questione senza restrizioni:

    • Esfiltrazione di Dati (s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)
    • Modifica dell'Infrastruttura
    • Esposizione di Risorse (la capacità di modificare le policy basate su risorse)
    • Escalation dei Privilegi (basato su Pathfinding.cloud)
    • Esposizione di Credenziali

    Cloudsplaining identifica anche i Ruoli IAM che possono essere assunti da Servizi di Calcolo AWS (come EC2, ECS, EKS o Lambda), poiché possono presentare un rischio maggiore rispetto ai ruoli definiti dall'utente - specialmente se il servizio di calcolo AWS si trova su un'istanza direttamente o indirettamente esposta a internet. Segnalare questi ruoli è particolarmente utile per penetration tester (o aggressori) in determinati scenari. Ad esempio, se un aggressore ottiene i privilegi per eseguire ssm:SendCommand e ci sono istanze EC2 privilegiate con l'agente SSM installato, può effettivamente avere i privilegi di quelle istanze EC2. L'esecuzione remota di codice tramite AWS Systems Manager Agent era già un percorso noto di escalation/sfruttamento, ma Cloudsplaining può rendere più facile il processo di identificazione di questi casi. Vedi il report di esempio per alcuni esempi.

    Puoi anche specificare un file di esclusioni personalizzato per filtrare i risultati che sono falsi positivi per vari motivi. Ad esempio, le Policy Utente sono permissive per progettazione, mentre i ruoli di Sistema sono generalmente più restrittivi. Potresti anche avere esclusioni specifiche per la strategia multi-account della tua organizzazione o per l'architettura delle applicazioni AWS.

    Motivazione

    Policy Sentry ci ha rivelato che è possibile finalmente scrivere policy IAM secondo il principio del minimo privilegio in modo scalabile. Prima del rilascio di Policy Sentry, era fin troppo facile trovare documenti di policy IAM privi di vincoli sulle risorse. Considera la policy seguente, che consente al principale IAM (un ruolo o un utente) di eseguire s3:PutObject su qualsiasi bucket S3 nell'account AWS:```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" } ] }

    root@kitploit:~
    Questo è male. Idealmente, l'accesso dovrebbe essere limitato in base agli ARN delle risorse, come segue:```json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject"
          ],
          "Resource": "arn:aws:s3:::my-bucket/*"
        }
      ]
    }
    

    Policy Sentry rende tutto molto semplice. Una volta che gli sviluppatori di Infrastructure as Code o gli amministratori AWS acquisiscono familiarità con lo strumento (che è abbastanza facile da usare), abbiamo scoperto che l'adozione inizia molto rapidamente. Tuttavia, se hai utilizzato AWS, probabilmente c'è un arretrato molto grande di policy IAM che potrebbero beneficiare di un miglioramento. Se hai centinaia di account AWS con dozzine di policy ciascuno, come possiamo blindare quegli account AWS identificando programmaticamente le policy che dovrebbero essere corrette?

    Ecco perché abbiamo scritto Cloudsplaining.

    Cloudsplaining identifica le violazioni del principio del minimo privilegio nelle policy IAM AWS e genera un bel report HTML. Può scansionare tutte le policy nel tuo account AWS, su più account AWS, oppure scansionare un singolo file di policy.

    Installazione

    Homebrew```bash

    brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining

    root@kitploit:~
    #### Pip3```bash
    pip3 install --user cloudsplaining
    
    • Ora dovresti essere in grado di eseguire cloudsplaining dalla riga di comando lanciando cloudsplaining --help.

    Completamento di shell

    Per abilitare il completamento Bash, inserisci questo nel tuo .bashrc:```bash eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"

    root@kitploit:~
    Per abilitare il completamento di ZSH, metti questo nel tuo .zshrc:```bash
    eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
    

    Scansione di una singola policy IAM

    Puoi anche scansionare un singolo file policy per identificare i rischi invece di un intero account.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json

    root@kitploit:~
    L'output includerà una descrizione del finding e un elenco delle azioni IAM che non sfruttano vincoli di risorsa.
    
    L'output sarà simile al seguente:```console
    Issue found: Data Exfiltration
    Actions: s3:GetObject
    
    Issue found: Resource Exposure
    Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl
    
    Issue found: Unrestricted Infrastructure Modification
    Actions: ecr:BatchDeleteImage, ecr:CompleteLayerUpload, ecr:CreateRepository, ecr:DeleteLifecyclePolicy, ecr:DeleteRepository, ecr:DeleteRepositoryPolicy, ecr:InitiateLayerUpload, ecr:PutImage, ecr:PutImageScanningConfiguration, ecr:PutImageTagMutability, ecr:PutLifecyclePolicy, ecr:SetRepositoryPolicy, ecr:StartImageScan, ecr:StartLifecyclePolicyPreview, ecr:TagResource, ecr:UntagResource, ecr:UploadLayerPart, s3:AbortMultipartUpload, s3:BypassGovernanceRetention, s3:CreateAccessPoint, s3:CreateBucket, s3:DeleteAccessPoint, s3:DeleteAccessPointPolicy, s3:DeleteBucket, s3:DeleteBucketPolicy, s3:DeleteBucketWebsite, s3:DeleteObject, s3:DeleteObjectTagging, s3:DeleteObjectVersion, s3:DeleteObjectVersionTagging, s3:GetObject, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccelerateConfiguration, s3:PutAccessPointPolicy, s3:PutAnalyticsConfiguration, s3:PutBucketAcl, s3:PutBucketCORS, s3:PutBucketLogging, s3:PutBucketNotification, s3:PutBucketObjectLockConfiguration, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutBucketRequestPayment, s3:PutBucketTagging, s3:PutBucketVersioning, s3:PutBucketWebsite, s3:PutEncryptionConfiguration, s3:PutInventoryConfiguration, s3:PutLifecycleConfiguration, s3:PutMetricsConfiguration, s3:PutObject, s3:PutObjectAcl, s3:PutObjectLegalHold, s3:PutObjectRetention, s3:PutObjectTagging, s3:PutObjectVersionAcl, s3:PutObjectVersionTagging, s3:PutReplicationConfiguration, s3:ReplicateDelete, s3:ReplicateObject, s3:ReplicateTags, s3:RestoreObject, s3:UpdateJobPriority, s3:UpdateJobStatus
    
    

    Scansione di un intero account AWS

    Scaricamento dei dettagli di autorizzazione dell'account

    Possiamo scansionare un intero account AWS e generare report. Per farlo, utilizziamo la chiamata API AWS IAM get-account-authorization-details, che scarica un file JSON di grandi dimensioni (circa 100KB per account) contenente tutti i dettagli IAM dell'account. Include dati su utenti, gruppi, ruoli, policy gestite dal cliente e policy gestite da AWS.

    • È necessario disporre di credenziali AWS configurate che possano essere utilizzate dalla CLI.

    • È necessario disporre dei privilegi per eseguire iam:GetAccountAuthorizationDetails. La policy arn:aws:iam::aws:policy/SecurityAudit include questo, così come molte altre che consentono l'accesso in lettura al servizio IAM.

    • Per scaricare i dettagli di autorizzazione dell'account, assicurati di essere autenticato su AWS, quindi esegui il comando download di cloudsplaining:```bash cloudsplaining download

    root@kitploit:~
    * Se preferisci utilizzare il file `~/.aws/credentials` invece delle variabili d'ambiente, puoi specificare il nome del profilo:```bash
    cloudsplaining download --profile myprofile
    

    Scaricherà un file JSON nella directory corrente che contiene le informazioni di dettaglio sull'autorizzazione del tuo account.

    Creare il file delle esclusioni

    Lo strumento Cloudsplaining non cerca di comprendere il contesto dietro tutto ciò che è presente nel tuo account AWS. È possibile comprendere il contesto dietro alcune di queste cose a livello programmatico - se la policy è applicata a un profilo di istanza, se la policy è allegata, se le policy IAM inline sono in uso, e se le policy gestite da AWS sono in uso. Solo tu conosci il contesto dietro la progettazione della tua infrastruttura AWS e la strategia IAM.

    Pertanto, è importante eliminare i falsi positivi che dipendono dal contesto. Puoi farlo con un file delle esclusioni. Abbiamo incluso un comando che genererà un file delle esclusioni per te in modo che tu non debba ricordare il formato richiesto.

    Puoi creare un template di esclusioni tramite il seguente comando:

    root@kitploit:~
    cloudsplaining create-exclusions-file
    ``````bash
    cloudsplaining create-exclusions-file
    

    Questo genererà un file nella directory corrente intitolato exclusions.yml.

    Ora, quando esegui il comando scan, puoi utilizzare il file delle esclusioni in questo modo:```bash cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

    root@kitploit:~
    Per maggiori informazioni sulla struttura del file di esclusioni, consulta [Filtrare i falsi positivi](#filtering-false-positives)
    
    #### Scansione del file dei dettagli di autorizzazione
    
    Ora che abbiamo scaricato il file di autorizzazione dell'account, possiamo scansionare *tutte* le policy AWS IAM con `cloudsplaining`.
    
    Esegui il seguente comando:```bash
    cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/
    

    Creerà un report HTML come questo:

    Creerà anche un file di dati JSON grezzo:

    • default-iam-results.json: Questo contiene l'output JSON grezzo del report. Puoi utilizzare questo file di dati per operare sui risultati della scansione per vari scopi. Ad esempio, potresti scrivere uno script Python che analizzi questi dati e apra automaticamente ticket JIRA o Work Items di Salesforce. Un esempio di voce è mostrato sotto. L'esempio completo può essere visualizzato su examples/files/iam-results-example.json```json { "example-authz-details": [ { "AccountID": "012345678901", "ManagedBy": "Customer", "PolicyName": "InsecureUserPolicy", "Arn": "arn:aws:iam::012345678901:user/userwithlotsofpermissions", "ActionsCount": 2, "ServicesCount": 1, "Actions": [ "s3:PutObject", "s3:PutObjectAcl" ], "Services": [ "s3" ] } ] }
    root@kitploit:~
    Vedi la cartella [examples/files](https://github.com/salesforce/cloudsplaining/blob/master/examples/files) per un output di esempio.
    
    #### Filtrare i falsi positivi
    
    I vincoli delle risorse sono una best practice - specialmente per i ruoli di sistema/profili di istanza - ma a volte sono intenzionali. Ad esempio, considera una situazione in cui una policy IAM personalizzata viene utilizzata su un profilo di istanza per un'istanza EC2 che esegue il provisioning di Terraform. *In questo caso, le autorizzazioni estese sono requisiti di progettazione* - quindi non vogliamo includerli nei risultati.
    
    Puoi creare un template di esclusioni tramite il seguente comando:```bash
    cloudsplaining create-exclusions-file
    

    Questo genererà un file nella directory corrente intitolato exclusions.yml.

    Il file di esclusioni predefinito ha il seguente aspetto:```yaml

    Policy names to exclude from evaluation

    Suggestion: Add policies here that are known to be overly permissive by design, after you run the initial report.

    policies:

    • "AWSServiceRoleFor*"
    • "*ServiceRolePolicy"
    • "*ServiceLinkedRolePolicy"
    • "AdministratorAccess" # Otherwise, this will take a long time
    • "service-role*"
    • "aws-service-role*"

    Don't evaluate these roles, users, or groups as part of the evaluation

    roles:

    • "service-role*"
    • "aws-service-role*" users:
    • "" groups:
    • ""

    Read-only actions to include in the results, such as s3:GetObject

    By default, it includes Actions that could lead to Data Exfiltration

    include-actions:

    • "s3:GetObject"
    • "ssm:GetParameter"
    • "ssm:GetParameters"
    • "ssm:GetParametersByPath"
    • "secretsmanager:GetSecretValue"

    Write actions to include from the results, such as kms:Decrypt

    exclude-actions:

    • ""
    root@kitploit:~
    * Fai tutte le aggiunte o modifiche che desideri.
      * Sotto `policies`, elenca il percorso dei nomi delle policy che vuoi escludere.
      * Se vuoi escludere un ruolo intitolato `MyRole`, elenca `MyRole` o `MyR*` nella lista `roles`.
      * Puoi seguire lo stesso approccio per le liste `users` e `groups`.
    
    Ora quando esegui il comando `scan`, puoi usare il file di esclusioni in questo modo:```bash
    cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/
    

    Scansione di più account AWS

    Se il tuo utente IAM o ruolo IAM ha autorizzazioni sts:AssumeRole su un ruolo IAM comune in più account AWS, puoi utilizzare il comando scan-multi-account.

    Questo diagramma illustra come funziona il processo:

    Diagram for scanning multiple AWS accounts with Cloudsplaining

    Nota: Se sei nuovo alla configurazione dell'accesso tra account, consulta il tutorial ufficiale AWS sulla delega dell'accesso tra account AWS utilizzando i ruoli IAM. Questo può aiutarti a configurare l'architettura sopra descritta.

    • Per prima cosa, dovrai creare il file di configurazione multi-account. Esegui il comando seguente:```bash cloudsplaining create-multi-account-config-file \ -o multi-account-config.yml
    root@kitploit:~
    * Questo genererà un file chiamato `multi-account-config.yml` con il seguente contenuto:```yaml
    accounts:
      default_account: 123456789012
      prod: 123456789013
      test: 123456789014
    

    Nota: osserva come il formato del file sopra include account_name: accountID. Modifica il contenuto del file in base al nome dell'account e all'ID dell'account desiderati. Includi quanti ID account desideri.

    Per il passaggio successivo, supponiamo che:

    • Abbiamo un ruolo negli account di destinazione chiamato CommonSecurityRole.
    • Le credenziali per il tuo utente IAM si trovano sotto il profilo delle credenziali AWS chiamato scanning-user.
    • Tale utente ha autorizzazioni sts:AssumeRole per assumere il CommonSecurityRole in tutti gli account di destinazione specificati nel file YAML creato in precedenza.
    • Desideri salvare l'output in un bucket S3 chiamato my-results-bucket

    Utilizzando i dati sopra, puoi eseguire il seguente comando:```bash cloudsplaining scan-multi-account
    -c multi-account-config.yml
    --profile scanning-user
    --role-name CommonSecurityRole \ --output-bucket my-results-bucket

    root@kitploit:~
    > Nota che se esegui quanto sopra senza il flag `--profile`, verrà eseguito secondo il [ordine di precedenza delle credenziali AWS](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default) standard (cioè variabili d'ambiente, profili di credenziali, credenziali del container ECS e infine credenziali del profilo dell'istanza EC2).
    
    ## Personalizzazione delle Guide e degli Allegati
    
    Cloudsplaining supporta la personalizzazione delle sezioni Guide e Allegati del report HTML per includere raccomandazioni di sicurezza e documentazione specifiche dell'organizzazione.
    
    ### Come Funziona
    
    Posiziona i file HTML nella directory principale del progetto:
    
    - `custom-guidance.html` - Contenuto personalizzato per la guida di sicurezza
    - `custom-appendices.html` - Contenuto personalizzato per gli allegati
    
    ### Comportamento
    
    - **I file non esistono**: Vengono mostrati i consigli di sicurezza predefiniti di AWS
    - **I file esistono con contenuto**: Viene mostrato il tuo contenuto HTML personalizzato
    - **I file esistono ma sono vuoti**: Le schede vengono nascoste completamente
    - **Configurazione mista**: Ogni scheda funziona in modo indipendente
    
    ### Esempio di Utilizzo```bash
    # Create custom guidance
    echo '<h1>Company Security Guidelines</h1>
    <p>Follow these organization-specific steps:</p>
    <ul>
      <li>Review with security team</li>
      <li>Document in JIRA ticket</li>
      <li>Get approval before remediation</li>
    </ul>' > custom-guidance.html
    
    # Create custom appendices  
    echo '<h1>Internal Resources</h1>
    <p>Additional company resources:</p>
    <ul>
      <li><a href="https://internal.company.com/security">Security Portal</a></li>
      <li><a href="https://wiki.company.com/iam">IAM Best Practices</a></li>
    </ul>' > custom-appendices.html
    

    Genera report con contenuti personalizzati

    cloudsplaining scan --input-file account-data.json --output reports/

    Cheat sheet```bash

    Download authorization details

    cloudsplaining download

    Download from a specific AWS profile

    cloudsplaining download --profile someprofile

    Scan Authorization details

    cloudsplaining scan --input-file default.json

    Scan Authorization details with custom exclusions

    cloudsplaining scan --input-file default.json --exclusions-file exclusions.yml

    Scan Policy Files

    cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json --exclusions-file examples/example-exclusions.yml

    Scan Multiple Accounts

    Generate the multi account config file

    cloudsplaining create-multi-account-config-file -o accounts.yml cloudsplaining scan-multi-account -c accounts.yml -r TargetRole --output-directory ./

    root@kitploit:~
    ## FAQ
    
    **Eseguirà la scansione di tutti i criteri per impostazione predefinita?**
    
    No, eseguirà la scansione solo dei criteri associati ai principali IAM.
    
    **Il comando di download scaricherà tutte le versioni dei criteri?**
    
    Non per impostazione predefinita. Se desideri farlo, specifica il flag `--include-non-default-policy-versions`. Nota che lo strumento `scan` attualmente non opera sulle versioni non predefinite.
    
    **Ho seguito le istruzioni di installazione ma non riesco affatto a eseguire il programma tramite riga di comando. Cosa devo fare?**
    
    Probabilmente è un problema con il tuo PATH. La variabile d'ambiente PATH non sta considerando i pacchetti binari installati da `pip3`. Su un Mac, puoi probabilmente risolvere inserendo il comando qui sotto, a seconda delle versioni che hai installato. YMMV.```bash
    export PATH=$HOME/Library/Python/3.7/bin/:$PATH
    

    Ho seguito le istruzioni di installazione, ma ricevo un ModuleNotFoundError che dice No module named policy_sentry.analysis.expand. Cosa dovrei fare?

    Prova ad aggiornare all'ultima versione di Cloudsplaining. Questo errore è stato corretto nella versione 0.0.10.

    Riferimenti

    • Policy Sentry di Kinnaird McQuade presso Salesforce
    • Parliament di Scott Piper presso Summit Route e Duo Labs.
    • Metodi di escalation dei privilegi AWS di Spencer Gietzen presso Rhino Security Labs
    • Comprensione dei riepiloghi dei livelli di accesso nei riepiloghi delle policy
    • Sfruttare l'IA blockchain di nuova generazione attraverso più service mesh per automatizzare in modo trasparente la magia IAM multi-cloud 🧙‍♂️
    Scarica lo strumento