jrmdev / mitm_relay

Hackish way to intercept and modify non-HTTP protocols through Burp & others.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Getting valueError

uchihaluckycs opened this issue · comments

Socket errors are silently ignored during handshake interception in do_relay_tcp :

mitm_relay/mitm_relay.py

Lines 264 to 265 in 9f34e23

# Peek for the beginnings of an ssl handshake
try:

Due to this greedy except :

except:

Failed negotiation result in an invalid socket file descriptor (-1).

I ran into the same issue recently when attempting to relay to a server which was very slow to negotiate. Fixed by increasing the timeouts:

mitm_relay/mitm_relay.py

Lines 240 to 241 in 9f34e23

server_sock.settimeout(1.0)
client_sock.settimeout(1.0)

I've added support for --client-timeout / --server-timeout arguments in #21.

Although in your situation the reason for failed negotiation may be different. You can check by printing the error message:

diff --git a/mitm_relay.py b/mitm_relay.py
index 159b6d5..41864d0 100755
--- a/mitm_relay.py
+++ b/mitm_relay.py
@@ -279,7 +279,8 @@ def do_relay_tcp(client_sock, server_sock, cfg):
                                                server_sock = ssl.wrap_socket(server_sock, suppress_ragged_eofs=True, certfile=cfg.clientcert.name, keyfile=cfg.clientkey.name, ssl_version=cfg_ssl_version)
                                        else:
                                                server_sock = ssl.wrap_socket(server_sock, suppress_ragged_eofs=True, ssl_version=cfg_ssl_version)
-               except:
+               except Exception as e:
+                       print(e)
                        pass
 
                receiving, _, _ = select([client_sock, server_sock], [], [])
./mitm_relay.py -r 1337:127.0.0.1:1234 -c cert/server.pem -k cert/private.key 
[i] Client cert/key not provided.
[!] Interception disabled! mitm_relay will run in monitoring mode only.
[+] Relay listening on tcp 1337 -> 127.0.0.1:1234
[+] New client 127.0.0.1:55052 will be relayed to 127.0.0.1:1234
---------------------- Wrapping sockets ----------------------
_ssl.c:1106: The handshake operation timed out # <-- error message
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/root/Desktop/mitm_relay/./mitm_relay.py", line 404, in handle_tcp_client
    do_relay_tcp(client_sock, server_sock, cfg)
  File "/root/Desktop/mitm_relay/./mitm_relay.py", line 286, in do_relay_tcp
    receiving, _, _ = select([client_sock, server_sock], [], [])
ValueError: file descriptor cannot be a negative integer (-1)

This should now be resolved with the recent updates.