Avec un auditeur Netcat comme:
nc -l <port> < ~/.bashrc
Je peux attraper mon .bashrc sur une nouvelle machine (n'a pas nc
ou LDAP) avec:
cat < /dev/tcp/<ip>/<port> > ~/.bashrc
Ma question est la suivante: Y a-t-il un moyen d'imiter les capacités de nc -l <port>
Dans ma première ligne avec/dev/tcp au lieu de nc
?
Les machines que je travaille sont extrêmement durcies et environnement sandbox rhel (pas de SSH, pas de NC, pas de LDAP, no yum, je ne peux pas installer de nouveaux logiciels, et ils ne sont pas connectés à Internet)
Si Perl est installé (comme il sera sur une machine Rhel):
Perl -MIO::Socket::INET -ne 'BEGIN{$l=IO::Socket::INET->new(
LocalPort=>1234,Proto=>"tcp",Listen=>5,ReuseAddr=>1);
$l=$l->accept}print $l $_' < ~/.bashrc
travaillerait, à moins qu'un pare-feu local ne permettrait pas de connexions entrantes à 1234.
Si Socat est installé:
socat -u - tcp-listen:1234,reuseaddr < ~/.bashrc
Si ZSH est installé:
zmodload zsh/net/tcp
ztcp -ld3 1234 && # start listening socket on fd 3
ztcp -ad4 3 && # accept connection on fd 4
ztcp -c 3 && # close the listening socket that is no longer needed
cat < ~/.bashrc >&4 && # send the data
ztcp -c 4 # close the communication socket to tell the other end we're finished
Malheureusement, il est impossible de faire avec juste bash. /dev/tcp/<ip>/<port>
Les fichiers virtuels sont implémentés dans la manière dont Bash tente de se connecter au <ip>:<port>
À l'aide de la fonction connect(2)
Fonction. Afin de créer une prise d'écoute, il faudrait appeler bind(2)
fonction.
Vous pouvez vérifier cela en téléchargeant des sources bash
et la regarder. Il est implémenté dans le fichier lib/sh/netopen.c
Dans la fonction _netopen4
(Ou _netopen6, qui prend également en charge IPv6). Cette fonction est utilisée par la fonction wrapper netopen
tire dans le même fichier, qui est directement utilisée dans le fichier redir.c
(redir_special_open
Fonction) pour implémenter cette redirection virtuelle.
Vous devez trouver une autre application pouvant créer une prise d'écoute sur votre machine.
Il n'y a pas de moyen d'écouter car l'écoute n'est pas en bash alors que Adamski a souligné.
Mais vous n'avez pas besoin d'écouter le client afin que vous n'ayez pas besoin de NETCAT sur le client pour transférer des fichiers, par exemple:
## To send a file to the locked down computer:
## Local server where you do have netcat
cat ~/.bashrc | nc -l -q 1 -p 8998
## Remote locked down computer without netcat
cat < /dev/tcp/local.server.ip.addr/8998 > latest.bashrc
## To grab a file from the locked down computer:
## First - on the local server run
nc -l -p 8998 -q 1 > remote.bashrc < /dev/null
## Then on the locked down computer run:
cat ~/.bashrc > /dev/tcp/local.server.ip.addr/8998 0<&1 2>&1