Advanced H2 Vulnerabilities
Overview
The Core Problem
HTTP/1.1 vs HTTP/2 Character Handling
Character
HTTP/1.1
HTTP/2
RFC 9113 Requirements
Field names MUST NOT contain:
- Characters 0x00-0x20 (non-visible + space)
- Uppercase A-Z (0x41-0x5a)
- 0x7f-0xff
Field values MUST NOT contain:
- NUL (0x00)
- LF (0x0a)
- CR (0x0d)1. Request Header Injection
Technique
HTTP/2 Request
After Rewrite to HTTP/1.1
What Happened
HTTP/2
HTTP/1.1
2. Header Name Injection
Technique
HTTP/2 Request
After Rewrite to HTTP/1.1
What Happened
HTTP/2 Header Name
HTTP/2 Value
HTTP/1.1 Result
3. Request Line Injection (Pseudo-Header)
Technique
Why Pseudo-Headers?
HTTP/2 Request
After Rewrite to HTTP/1.1
What Happened
Injection Points Summary
Injection Point
Target
Example Payload
Testing in Burp
Inserting CRLF Characters
Example: Header Value Injection
Viewing Pseudo-Headers
Detection Checklist
Why These Work
Vulnerable Proxy Behavior
Secure Proxy Behavior
References
Last updated