You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RITM assumes HTTP CONNECT requests indicate that the client wants to initiate a HTTPS connection. This is an unsafe assumption.
This affects clients attempting to tunnel unencrypted HTTP with the CONNECT method, as the subsequent request is forwarded as unencrypted HTTP to the SSL reverse proxy server which expects a SSL/TLS client hello rather than HTTP data.
As a result, RITM returns a generic default WEBrick::Response200 OK to the client in response to the initial CONNECT (rather than HTTP/1.0 200 Connection established) then fails to deliver the subsequent request to the appropriate server.
Additionally, while most clients will probably accept the 200 OK, a 200 Connection Established would be more appropriate.
To reproduce this issue, use this example RITM script:
#!/usr/bin/env rubyrequire'ritm'session=Ritm::Session.newsession.configure{proxy[:bind_port]=8081ssl_reverse_proxy[:bind_port]=8082}session.startputs'Hit enter to finish'getssession.shutdown
RITM assumes HTTP
CONNECT
requests indicate that the client wants to initiate a HTTPS connection. This is an unsafe assumption.This affects clients attempting to tunnel unencrypted HTTP with the
CONNECT
method, as the subsequent request is forwarded as unencrypted HTTP to the SSL reverse proxy server which expects a SSL/TLS client hello rather than HTTP data.As a result, RITM returns a generic default
WEBrick::Response
200 OK
to the client in response to the initialCONNECT
(rather thanHTTP/1.0 200 Connection established
) then fails to deliver the subsequent request to the appropriate server.Additionally, while most clients will probably accept the
200 OK
, a200 Connection Established
would be more appropriate.To reproduce this issue, use this example RITM script:
Proxychains
Here's an example with proxychains:
HTTP
HTTPS
cURL
Here's an example with cURL:
HTTP
HTTPS
The text was updated successfully, but these errors were encountered: