{'xhtml:p': ['An adversary abuses the flexibility and discrepancies in the parsing and interpretation of HTTP Request messages using various HTTP headers, request-line and body parameters as well as message sizes (denoted by the end of message signaled by a given HTTP header) by different intermediary HTTP agents (e.g., load balancer, reverse proxy, web caching proxies, application firewalls, etc.) to secretly send unauthorized and malicious HTTP requests to a back-end HTTP agent (e.g., web server).', 'See CanPrecede relationships for possible consequences.']}
Description
Attack Execution Flow
Step 1
Explore[Survey network to identify target] The adversary performs network reconnaissance by monitoring relevant traffic to identify the network path and parsing of the HTTP messages with the goal of identifying potential targets.
Scan networks to fingerprint HTTP infrastructure and monitor HTTP traffic to identify HTTP network path with a tool such as a Network Protocol Analyzer.
[Indagine sulla rete per identificare il target] L'adversary effettua ricognizione della rete monitorando il traffico rilevante per identificare il percorso di rete e analizzando i messaggi HTTP con l'obiettivo di individuare potenziali target.
Scansiona le reti per fingerprintare l'infrastruttura HTTP e monitora il traffico HTTP per identificare il percorso di rete HTTP utilizzando uno strumento come un Network Protocol Analyzer.
Attack Techniques
-
Scan networks to fingerprint HTTP infrastructure and monitor HTTP traffic to identify HTTP network path with a tool such as a Network Protocol Analyzer.
Step 2
Experiment[Identify vulnerabilities in targeted HTTP infrastructure and technologies] The adversary sends a variety of benign/ambiguous HTTP requests to observe responses from HTTP infrastructure in order to identify differences/discrepancies in the interpretation and parsing of HTTP requests by examining supported HTTP protocol versions, message sizes, and HTTP headers.
[Identificare vulnerabilità nell'infrastruttura e nelle tecnologie HTTP mirate] L'avversario invia una varietà di richieste HTTP benigni/ambigue per osservare le risposte dell'infrastruttura HTTP al fine di identificare differenze/discrepanze nell'interpretazione e nel parsing delle richieste HTTP esaminando le versioni del protocollo HTTP supportate, le dimensioni dei messaggi e gli header HTTP.
Step 3
Experiment[Cause differential HTTP responses by experimenting with identified HTTP Request vulnerabilities] The adversary sends maliciously crafted HTTP requests to interfere with the parsing of intermediary and back-end HTTP infrastructure, followed by normal/benign HTTP request from the adversary or a random user. The intended consequences of the malicious HTTP requests will be observed in the HTTP infrastructure response to the normal/benign HTTP request to confirm applicability of identified vulnerabilities in the adversary's plan of attack.
Continue the monitoring of HTTP traffic.
Utilize various combinations of HTTP Headers within a single HTTP Request such as: Content-Length & Transfer-Encoding (CL;TE), Transfer-Encoding & Content-Length (TE;CL), or double Transfer-Encoding (TE;TE), so that additional embedded requests or data in the body of the original request are unprocessed and treated as part of subsequent requests by the intended target HTTP agent.
From these HTTP Header combinations the adversary observes any timing delays (usually in the form of HTTP 404 Error response) or any other unintended consequences.
For CL;TE and TE;CL HTTP header combinations, the first HTTP agent, in the HTTP message path that receives the HTTP request, takes precedence or only processes one header but not the other, while the second/final HTTP agent processes the opposite header, allowing for embedded HTTP requests to be ignored and smuggled to the intended target HTTP agent.
For TE;TE HTTP headers combination, all HTTP agents in HTTP message path process Transfer-Encoding header, however, adversary obfuscation (see Mitigations for details) of one of the Transfer-Encoding headers, by not adhering strictly to the protocol specification, can cause it to be unprocessed/ignored by a designated HTTP agent, hence allowing embedded HTTP requests to be smuggled. .
Construct a very large HTTP request using multiple Content-Length headers of various data lengths that can potentially cause subsequent requests to be ignored by an intermediary HTTP agent (firewall) and/or eventually parsed separately by the target HTTP agent (web server).
Note that most modern HTTP infrastructure reject HTTP requests with multiple Content-Length headers.
Follow an unrecognized (sometimes a RFC compliant) HTTP header with a subsequent HTTP request to potentially cause the HTTP request to be ignored and interpreted as part of the preceding HTTP request.
[Generare risposte HTTP differenziate sperimentando vulnerabilità identificate nelle richieste HTTP] L'attaccante invia richieste HTTP maliziosamente craftate per interferire con l'analisi dell'infrastruttura HTTP intermedia e back-end, seguite da richieste HTTP normali o benigni dall'attaccante o da un utente casuale. Le conseguenze previste delle richieste HTTP dannose saranno osservate nella risposta dell'infrastruttura HTTP alle richieste HTTP normali/benigne per confermare l'applicabilità delle vulnerabilità identificate nel piano di attacco dell'attaccante.
Continuare il monitoraggio del traffico HTTP.
Utilizzare varie combinazioni di Headers HTTP all'interno di una singola richiesta HTTP come: Content-Length & Transfer-Encoding (CL;TE), Transfer-Encoding & Content-Length (TE;CL), o doppio Transfer-Encoding (TE;TE), in modo che richieste incorporate aggiuntive o dati nel corpo della richiesta originale non vengano elaborati e siano trattati come parte di richieste successive dall'agente HTTP di destinazione previsto.
Da queste combinazioni di Headers HTTP, l'attaccante osserva eventuali ritardi temporali (solitamente sotto forma di risposta HTTP 404 Error) o altre conseguenze non intenzionali.
Per le combinazioni di Headers HTTP CL;TE e TE;CL, il primo agente HTTP, nel percorso del messaggio HTTP che riceve la richiesta, dà priorità o elabora solo un header ma non l'altro, mentre il secondo/ultimo agente HTTP elabora l'altro header, consentendo di ignorare le richieste HTTP incorporate e di trasmetterle all'agente HTTP di destinazione previsto.
Per la combinazione di Headers HTTP TE;TE, tutti gli agenti HTTP nel percorso del messaggio HTTP elaborano l'header Transfer-Encoding, tuttavia, l'obfuscation dell'attaccante (vedi Mitigations per dettagli) di uno degli header Transfer-Encoding, non aderendo strettamente alla specifica del protocollo, può causare che venga ignorato/non elaborato da un agente HTTP designato, consentendo così di trasmettere richieste HTTP incorporate.
Costruire una richiesta HTTP molto grande utilizzando multiple Content-Length di varie lunghezze di dati, che può potenzialmente causare l'ignoramento delle richieste successive da parte di un agente HTTP intermedio (firewall) e/o essere eventualmente analizzata separatamente dall'agente HTTP di destinazione (web server).
Nota che la maggior parte delle infrastrutture HTTP moderne rifiuta richieste HTTP con multiple Content-Length.
Seguire un'intestazione HTTP non riconosciuta (a volte conforme a RFC) con una richiesta HTTP successiva, al fine di potenzialmente causare l'ignoramento della richiesta HTTP e la sua interpretazione come parte della richiesta HTTP precedente.
Attack Techniques
-
Construct a very large HTTP request using multiple Content-Length headers of various data lengths that can potentially cause subsequent requests to be ignored by an intermediary HTTP agent (firewall) and/or eventually parsed separately by the target HTTP agent (web server). Note that most modern HTTP infrastructure reject HTTP requests with multiple Content-Length headers.
-
Utilize various combinations of HTTP Headers within a single HTTP Request such as: Content-Length & Transfer-Encoding (CL;TE), Transfer-Encoding & Content-Length (TE;CL), or double Transfer-Encoding (TE;TE), so that additional embedded requests or data in the body of the original request are unprocessed and treated as part of subsequent requests by the intended target HTTP agent. From these HTTP Header combinations the adversary observes any timing delays (usually in the form of HTTP 404 Error response) or any other unintended consequences. For CL;TE and TE;CL HTTP header combinations, the first HTTP agent, in the HTTP message path that receives the HTTP request, takes precedence or only processes one header but not the other, while the second/final HTTP agent processes the opposite header, allowing for embedded HTTP requests to be ignored and smuggled to the intended target HTTP agent. For TE;TE HTTP headers combination, all HTTP agents in HTTP message path process Transfer-Encoding header, however, adversary obfuscation (see Mitigations for details) of one of the Transfer-Encoding headers, by not adhering strictly to the protocol specification, can cause it to be unprocessed/ignored by a designated HTTP agent, hence allowing embedded HTTP requests to be smuggled. .IT: Costruisci una richiesta HTTP molto grande utilizzando più intestazioni Content-Length di lunghezze variabili, in modo da potenzialmente far sì che le richieste successive vengano ignorate da un intermediario HTTP (firewall) e/o successivamente analizzate separatamente dall'agente HTTP di destinazione (web server). Nota che la maggior parte delle infrastrutture HTTP moderne rifiuta le richieste HTTP con più intestazioni Content-Length.
-
Continue the monitoring of HTTP traffic.IT: Costruisci una richiesta HTTP molto grande utilizzando più intestazioni Content-Length di lunghezze variabili, in modo da potenzialmente far sì che le richieste successive vengano ignorate da un intermediario HTTP (firewall) e/o successivamente analizzate separatamente dall'agente HTTP di destinazione (web server). Nota che la maggior parte delle infrastrutture HTTP moderne rifiuta le richieste HTTP con più intestazioni Content-Length.
-
Follow an unrecognized (sometimes a RFC compliant) HTTP header with a subsequent HTTP request to potentially cause the HTTP request to be ignored and interpreted as part of the preceding HTTP request.IT: Costruisci una richiesta HTTP molto grande utilizzando più intestazioni Content-Length di lunghezze variabili, in modo da potenzialmente far sì che le richieste successive vengano ignorate da un intermediario HTTP (firewall) e/o successivamente analizzate separatamente dall'agente HTTP di destinazione (web server). Nota che la maggior parte delle infrastrutture HTTP moderne rifiuta le richieste HTTP con più intestazioni Content-Length.
Step 4
Exploit[Perform HTTP Request Smuggling attack] Using knowledge discovered in the experiment section above, smuggle a message to cause one of the consequences.
Leverage techniques identified in the Experiment Phase.
[Eseguire un attacco di HTTP Request Smuggling] Utilizzando le conoscenze acquisite nella sezione sperimentale sopra, manomettere un messaggio per causare una delle conseguenze.
Sfruttare le tecniche identificate nella Fase di Esperimento.
Attack Techniques
-
Leverage techniques identified in the Experiment Phase.