hacktricks/pentesting-web/h2c-smuggling.md

18 KiB

Upgrade Header Smuggling

{% 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
{% endhint %}

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


H2C Smuggling

HTTP2 Over Cleartext (H2C)

H2C, рдпрд╛ http2 рдУрд╡рд░ рдХреНрд▓рд┐рдпрд░рдЯреЗрдХреНрд╕реНрдЯ, рдЕрд╕реНрдерд╛рдпреА HTTP рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рдорд╛рдирдХ рд╕реЗ рднрдЯрдХрддрд╛ рд╣реИ, рдПрдХ рдорд╛рдирдХ HTTP рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдерд╛рдпреА рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗред рдпрд╣ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдиреЗрдХреНрд╢рди ongoing рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП http2 рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ plaintext HTTP рдХреА рдПрдХрд▓-рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкреНрд░рдХреГрддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред

рд╕реНрдордЧрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдФрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрддреНрддрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ Connection: Upgrade рд╣реЗрдбрд░ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╡реЗрдмрд╕реНрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рдпреА рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░рдВрддрд░ рд╡рд┐рдирд┐рдордп рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред H2C рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП, RFC рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЗрдбрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings

The vulnerability arises when, after upgrading a connection, the reverse proxy ceases to manage individual requests, assuming its job of routing is complete post-connection establishment. H2C Smuggling рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдирд┐рдпрдореЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкрде-рдЖрдзрд╛рд░рд┐рдд рд░реВрдЯрд┐рдВрдЧ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдФрд░ WAF рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ H2C рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Vulnerable Proxies

рдпрд╣ рднреЗрджреНрдпрддрд╛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ Upgrade рдФрд░ рдХрднреА-рдХрднреА Connection рд╣реЗрдбрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЙрдХреНрд╕рд┐рдпреЛрдВ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрди рд╣реЗрдбрд░реЛрдВ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА-рдкрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ H2C рд╕реНрдордЧрд▓рд┐рдВрдЧ рд╕рдХреНрд╖рдо рд╣реЛрддреА рд╣реИ:

  • HAProxy
  • Traefik
  • Nuster

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпреЗ рд╕реЗрд╡рд╛рдПрдБ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА-рдкрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рджреЛрдиреЛрдВ рд╣реЗрдбрд░реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрдиреНрд╣реЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ Upgrade рдФрд░ Connection рд╣реЗрдбрд░реЛрдВ рдХрд╛ рдмрд┐рдирд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдЧреНрд░реЗрд╖рдг рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

  • AWS ALB/CLB
  • NGINX
  • Apache
  • Squid
  • Varnish
  • Kong
  • Envoy
  • Apache Traffic Server

Exploitation

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рднреА рд╕рд░реНрд╡рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдиреБрдкрд╛рд▓рди H2C рдХрдиреЗрдХреНрд╢рди рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, AWS ALB/CLB, NGINX, рдФрд░ Apache Traffic Server рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ H2C рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рднреА, рдЕрдиреБрдкрд╛рд▓рди рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Connection: Upgrade рд╡реИрд░рд┐рдПрдВрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИ, рдЬреЛ Connection рд╣реЗрдбрд░ рд╕реЗ HTTP2-Settings рдорд╛рди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдмреИрдХрдПрдВрдб рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

{% hint style="danger" %} proxy_pass URL рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖ рдкрде (рдЬреИрд╕реЗ, http://backend:9999/socket.io) рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ http://backend:9999 рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реБрдП рдЙрд╕ рдЖрдВрддрд░рд┐рдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА рдкрде рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, proxy_pass URL рдореЗрдВ рдкрде рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдкрд╣реБрдБрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред {% endhint %}

рдЙрдкрдХрд░рдг h2csmuggler by BishopFox рдФрд░ h2csmuggler by assetnote H2C рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдкреНрд░реЙрдХреНрд╕реА-рд▓рдЧрд╛рдП рдЧрдП рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдВрднрд╡ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ NGINX рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрд╕ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрд╕рд╛рдзрди рдХреЛ рджреЗрдЦреЗрдВред

Websocket Smuggling

Websocket рд╕реНрдордЧрд▓рд┐рдВрдЧ, рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рдПрдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП HTTP2 рдЯрдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░реЙрдХреНрд╕реА рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдФрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Websocket рдЯрдирд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

Scenario 1

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдПрдХ рдмреИрдХрдПрдВрдб рдЬреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ WebSocket API рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рдЖрдВрддрд░рд┐рдХ REST API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ REST API рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдорд▓рд╛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

  1. рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдЧрд▓рдд Sec-WebSocket-Version рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдПрдХ рдЕрдкрдЧреНрд░реЗрдб рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА, Sec-WebSocket-Version рд╣реЗрдбрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддреЗ рд╣реБрдП, рдЕрдкрдЧреНрд░реЗрдб рдЕрдиреБрд░реЛрдз рдХреЛ рдорд╛рдиреНрдп рдорд╛рдирддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдмреИрдХрдПрдВрдб рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреА рд╣реИред
  2. рдмреИрдХрдПрдВрдб 426 рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ Sec-WebSocket-Version рд╣реЗрдбрд░ рдореЗрдВ рдЧрд▓рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА, рдмреИрдХрдПрдВрдб рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рддреЗ рд╣реБрдП, WebSocket рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░рддрд╛ рдорд╛рдирддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрддреА рд╣реИред
  3. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдПрдХ WebSocket рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреИрдХрдПрдВрдб рдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдлрд┐рд░ рднреА, рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдПрдХ рдЦреБрд▓рд╛ TCP рдпрд╛ TLS рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдП рд░рдЦрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдЬреА REST API рддрдХ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдкрд╣реБрдБрдЪ рдорд┐рд▓рддреА рд╣реИред

рдкреНрд░рднрд╛рд╡рд┐рдд рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ Varnish рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдФрд░ Envoy рдкреНрд░реЙрдХреНрд╕реА рд╕рдВрд╕реНрдХрд░рдг 1.8.0 рдпрд╛ рдЙрд╕рд╕реЗ рдкреБрд░рд╛рдиреЗ, рдЬрд┐рдирдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдиреЗ рдЕрдкрдЧреНрд░реЗрдб рддрдВрддреНрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдЕрдиреНрдп рдкреНрд░реЙрдХреНрд╕реА рднреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png

Scenario 2

рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рдПрдХ рдмреИрдХрдПрдВрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ WebSocket API рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ REST API рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рдЖрдВрддрд░рд┐рдХ REST API рд╣реИред рд╣рдорд▓рд╛, рдЬреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:

  1. рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ API рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рд╣реЗрдбрд░ Upgrade: websocket рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред NGINX, рдЬреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЗрд╡рд▓ Upgrade рд╣реЗрдбрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдорд╛рдирдХ рдЕрдкрдЧреНрд░реЗрдб рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреНрдп рдкрд╣рд▓реБрдУрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмреИрдХрдПрдВрдб рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
  2. рдмреИрдХрдПрдВрдб рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ API рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ 101 рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЬрдм рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рдФрд░ NGINX рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдзреЛрдЦрд╛ рджреЗрддреА рд╣реИ рдХрд┐ рдПрдХ WebSocket рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рдорд╛рдиреНрдпрддрд╛ рдХрд░рддрд╛ рд╣реИред

https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png

Warning: рдЗрд╕ рддрдХрдиреАрдХ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдПрдХ рдРрд╕реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб 101 рд▓реМрдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред

рдЕрдВрддрддрдГ, NGINX рдХреЛ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдПрдХ WebSocket рдХрдиреЗрдХреНрд╢рди рдореМрдЬреВрдж рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ; рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ REST API рд▓рдХреНрд╖реНрдп рдерд╛ред рдлрд┐рд░ рднреА, рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдЬреА REST API рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред

https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png

рдЕрдзрд┐рдХрд╛рдВрд╢ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢реЛрд╖рдг рдПрдХ рдмрд╛рд╣рд░реА SSRF рднреЗрджреНрдпрддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирд┐рдореНрди-рдЧрдВрднреАрд░рддрд╛ рд╕рдорд╕реНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

Labs

рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ https://github.com/0ang3el/websocket-smuggle.git

References

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

{% 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
{% endhint %}