Dark Mode
Capec-33 Detail
HTTP Request Smuggling
Detailed Communications Software Likelihood: Medium Typical Severity: High
Parents: 220
Threats: T294
| External ID | Source | Link | Description |
|---|---|---|---|
| CAPEC-33 | capec | https://capec.mitre.org/data/definitions/33.html | |
| CWE-444 | cwe | http://cwe.mitre.org/data/definitions/444.html | |
| 26 | WASC | http://projects.webappsec.org/HTTP-Request-Smuggling | HTTP Request Smuggling |
| REF-38 | reference_from_CAPEC | http://www.ietf.org/rfc/rfc2616.txt | HTTP 1.1 Specification (RFC 2616), IETF RFC |
| REF-117 | reference_from_CAPEC | http://www.securiteam.com/securityreviews/5CP0L0AHPC.html | HTTP Response Smuggling, Beyond Security |
| REF-617 | reference_from_CAPEC | https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/15-Testing_for_HTTP_Splitting_Smuggling.html | OWASP Web Security Testing Guide, The Open Web Application Security Project (OWASP) |
| REF-672 | reference_from_CAPEC | http://projects.webappsec.org/w/page/13246928/HTTP%20Request%20Smuggling | Robert Auger, HTTP Request Smuggling, 2010--01, The Web Application Security Consortium |
| REF-673 | reference_from_CAPEC | https://www.neuralegion.com/blog/http-request-smuggling-hrs/ | Dzevad Alibegovic, HTTP Request Smuggling: Complete Guide to Attack Types and Prevention, 2021--08---23, NeuraLegion |
| REF-674 | reference_from_CAPEC | https://cobalt.io/blog/a-pentesters-guide-to-http-request-smuggling | Busra Demir, A Pentester’s Guide to HTTP Request Smuggling, 2020--10---15, Cobalt |
| REF-678 | reference_from_CAPEC | https://www.imperva.com/blog/http-desync-attacks-and-defence-methods/ | Edi Kogan, Daniel Kerman, HTTP Desync Attacks in the Wild and How to Defend Against Them, 2019--10---29, Imperva |
| REF-681 | reference_from_CAPEC | https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn | James Kettle, HTTP Desync Attacks: Request Smuggling Reborn, 2019--08---07, PortSwigger |
| REF-682 | reference_from_CAPEC | https://portswigger.net/web-security/request-smuggling | HTTP request smuggling, PortSwigger |
| REF-683 | reference_from_CAPEC | https://portswigger.net/web-security/request-smuggling/finding | Finding HTTP request smuggling vulnerabilities, PortSwigger |
| REF-684 | reference_from_CAPEC | https://portswigger.net/web-security/request-smuggling/exploiting | Exploiting HTTP request smuggling vulnerabilities, PortSwigger |
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.
| 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. |
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.
-
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.
| Techniques |
|---|
| Continue the monitoring of HTTP traffic. |
|
|
|
|
| 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. |
Exploit
-
Perform HTTP Request Smuggling attack: Using knowledge discovered in the experiment section above, smuggle a message to cause one of the consequences.
| Techniques |
|---|
| Leverage techniques identified in the Experiment Phase. |
- An additional intermediary HTTP agent such as an application firewall or a web caching proxy between the adversary and the second agent such as a web server, that sends multiple HTTP messages over same network connection.
- Differences in the way the two HTTP agents parse and interpret HTTP requests and its headers.
- HTTP agents running on HTTP/1.1 that allow for Keep Alive mode, Pipelined queries, and Chunked queries and responses.
- Tools capable of crafting malicious HTTP messages and monitoring HTTP message responses.
| Medium |
|---|
| Possess knowledge on the exact details in the discrepancies between several targeted HTTP agents in path of an HTTP message in parsing its message structure and individual headers. |
| Integrity | Availability | Authorization | Access Control | Confidentiality |
|---|---|---|---|---|
| Execute Unauthorized Commands | Execute Unauthorized Commands | Gain Privileges | Gain Privileges | Execute Unauthorized Commands |
| Modify Data | Gain Privileges |
- When using Haproxy 1.5.3 version as front-end proxy server with with Node.js version 14.13.1 or 12.19.0 as the back-end web server it is possible to use two same header fields for example: two Transfer-Encoding, Transfer-Encoding: chunked and Transfer-Encoding: chunked-false, to bypass Haproxy /flag URI restriction and receive the Haproxy flag value, since Node.js identifies the first header but ignores the second header. See also: CVE-2020-8287
- When using Sun Java System Web Proxy Server 3.x or 4.x in conjunction with Sun ONE/iPlanet 6.x, Sun Java System Application Server 7.x or 8.x, it is possible to bypass certain application firewall protections, hijack web sessions, perform Cross Site Scripting or poison the web proxy cache using HTTP Request Smuggling. Differences in the way HTTP requests are parsed by the Proxy Server and the Application Server enable malicious requests to be smuggled through to the Application Server, thereby exposing the Application Server to aforementioned attacks. See also: CVE-2006-6276
- Apache server 2.0.45 and version before 1.3.34, when used as a proxy, easily lead to web cache poisoning and bypassing of application firewall restrictions because of non-standard HTTP behavior. Although the HTTP/1.1 specification clearly states that a request with both "Content-Length" and a "Transfer- Encoding: chunked" headers is invalid, vulnerable versions of Apache accept such requests and reassemble the ones with "Transfer-Encoding: chunked" header without replacing the existing "Content-Length" header or adding its own. This leads to HTTP Request Smuggling using a request with a chunked body and a header with "Content-Length: 0". See also: CVE-2005-2088