как найти шелл?

Discussion in 'PHP' started by GSM™, 10 Jan 2008.

  1. GSM™

    GSM™ Elder - Старейшина

    Joined:
    2 Nov 2007
    Messages:
    221
    Likes Received:
    31
    Reputations:
    6
    кто то по всей видимости залил мне на сервер шелл. подскажите способ его обнаружить. нехочется форум сносить. проявляется в виде повреждения файлов таких как index.php, global.php, forumdisplay.php. вчера все восстонавил но сегодня опять тоже самое.
     
  2. Klaus Doring

    Klaus Doring Elder - Старейшина

    Joined:
    23 Jul 2007
    Messages:
    48
    Likes Received:
    16
    Reputations:
    0
    Дык в Ipb например есть даже функция встроенная на поиск вредоносных файлов. посмотри в админке.
     
  3. GSM™

    GSM™ Elder - Старейшина

    Joined:
    2 Nov 2007
    Messages:
    221
    Likes Received:
    31
    Reputations:
    6
    у меня вобла. там нету.
     
  4. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    637
    Likes Received:
    519
    Reputations:
    19
    Посмотри в теме про уязвимости воблы, куда заливаются шеллы(например через смайлы) и там уже ищи
     
  5. aka PSIH

    aka PSIH Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    543
    Likes Received:
    274
    Reputations:
    51
    iddqd
    а если шелл скопировали в другую папку?

    хз, можно поискать файлы которые недавно создали...
    ну или созданы за последние n дней...

    или файлы доступ к которым последний раз производился менее n дней назад
     
    #5 aka PSIH, 10 Jan 2008
    Last edited: 10 Jan 2008
  6. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    558
    Likes Received:
    306
    Reputations:
    27
    хм, через тот же шелл можно поменять дату измения файла.


    перед установкой форума посчитай md5(crc) сумму файлов, потом сравнивай, кажись для vb есть специальный скрипт для этих дел, а вообше - обнови форум до более высокой версии(или поставь smf).
     
    #6 AkyHa_MaTaTa, 10 Jan 2008
    Last edited: 10 Jan 2008
    1 person likes this.
  7. GSM™

    GSM™ Elder - Старейшина

    Joined:
    2 Nov 2007
    Messages:
    221
    Likes Received:
    31
    Reputations:
    6
    по непонятной причине все файлы вчерашним числом.....
     
  8. fucker"ok

    fucker"ok Elder - Старейшина

    Joined:
    21 Nov 2004
    Messages:
    578
    Likes Received:
    274
    Reputations:
    91
    А оно случайно жаба сплойт в вверх страницы не вставляет? Просто, на сколько мне известно, в последнее время бродит сплойт для cpanel, который встаивает свой js код в такие вот файлы. Так-что тут может ты и не причём. Проблемы хостера могут быть.
     
  9. -=[AL!EN]=-

    -=[AL!EN]=- Elder - Старейшина

    Joined:
    29 Aug 2007
    Messages:
    24
    Likes Received:
    15
    Reputations:
    0
    умный человек уже бы этот шелл расплодил 100 раз =)
     
  10. ZEXEL

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

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    А где вообще взять етот файл шелла ? а то я в етом немного не понимаю
     
  11. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    vBulletin searchshell.php

    PHP:
    <?php
    /*======================================================================*\
    || #################################################################### ||
    || # vBulletin 3.*.*
    || # ---------------------------------------------------------------- # ||
    || # Copyright ©2000–2007 Jelsoft Enterprises Ltd. All Rights Reserved. ||
    || # This file may not be redistributed in whole or significant part. # ||
    || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
    || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
    || #################################################################### ||
    \*======================================================================*/

    // ######################## SET PHP ENVIRONMENT ###########################
    error_reporting(E_ALL & ~E_NOTICE);

    // ##################### DEFINE IMPORTANT CONSTANTS #######################
    define('NOCOOKIES'1);
    define('NOHEADER'1);

    // ########################################################################
    // ######################### START MAIN SCRIPT ############################
    // ########################################################################

    $start time();

    print (
    "Welcome to vB3 search re-indexer\n");
    print (
    "What is the full path to your main forum directory? ");

    $forumspath fetch_stdin();

    // keep looping until they enter a path which exists
    while (!is_dir($forumspath))
    {
        print (
    "\n$forumspath is an invalid directory, please re-enter ");
        
    $forumspath fetch_stdin();
    }

    $forumspath preg_replace('#/$#'''trim($forumspath));
    chdir($forumspath);

    if (!
    file_exists($forumspath '/includes/init.php'))
    {
        print (
    "\nInvalid forums path, exiting...");
        exit;
    }

    require_once(
    './global.php');
    require_once(
    './includes/functions_databuild.php');

    print (
    "Would you like to drop the search table? (y/n) ");
    $dropdb fetch_stdin();
    if (
    $dropdb == 'yes' or $dropdb == 'y')
    {
        
    $db->query_write("TRUNCATE TABLE " TABLE_PREFIX "postindex");
        
    $db->query_write("TRUNCATE TABLE " TABLE_PREFIX "word");
        print (
    "The tables postindex and word are now empty\n");
    }
    // tidy up variables dont need this any more
    unset($dropdb);

    print (
    "What post number would you like to start at? (0) ");
    $startat intval(fetch_stdin());

    print (
    "What post number would you like to end at? (none) ");
    $endat intval(fetch_stdin());

    print (
    "Posts to process per cycle? (100000) ");
    $perpage intval(fetch_stdin());
    if (!
    $perpage)
    {
        
    $perpage 100000;
    }

    $foruminfo = array('indexposts' => 1);
    $firstpost = array();

    $notdone TRUE;

    while (
    $notdone)
    {
        
    $notdone false;

        
    $stopat $startat $perpage;
        if (
    $endat)
        {
            if (
    $stopat $endat)
            {
                
    $stopat $endat;
            }
            if (
    $startat >= $endat)
            {
                continue;
            }
        }

        
    $posts $db->query_read("
            SELECT postid, post.title, post.pagetext, post.threadid, thread.title AS threadtitle
            FROM " 
    TABLE_PREFIX "post AS post
            INNER JOIN " 
    TABLE_PREFIX "thread AS thread ON(thread.threadid = post.threadid)
            INNER JOIN " 
    TABLE_PREFIX "forum AS forum ON(forum.forumid = thread.forumid)
            WHERE (forum.options & 16384)
                AND post.postid >= 
    $startat
                AND post.postid <= 
    $stopat
            ORDER BY post.postid
        "
    );

        while (
    $post $db->fetch_array($posts))
        {
            
    $notdone TRUE;

            if (empty(
    $firstpost["$post[threadid]"]))
            {
                
    $getfirstpost $db->query_first("SELECT MIN(postid) AS postid FROM " TABLE_PREFIX "post WHERE threadid = $post[threadid]");
                
    $firstpost["$post[threadid]"] = $getfirstpost['postid'];
            }

            
    build_post_index($post['postid'], $foruminfo, ($post['postid'] == $firstpost["$post[threadid]"]) ? 0$post);

            print (
    "Processed post: $post[postid]\n");
            
    flush();
        }

        
    $startat += $perpage;
    }

    print_postindex_exec_time($start);

    // ###################### Start getinput #######################
    function fetch_stdin()
    {
        static 
    $fp;

        if (
    $fp)
        {
            
    $input fgets($fp255);
        }
        else
        {
            
    $fp fopen('php://stdin''r');
            
    $input fgets($fp255);
        }

        return 
    str_replace(array("\n""\r"), array(''''), $input);
    }

    // ###################### Start execution time #######################
    function print_postindex_exec_time($starttime)
    {
        
    $seconds time() - $starttime;
        
    $d['h'] = floor($seconds/3600);
        
    $d['m'] = str_padfloor( ($seconds - ($d['h']*3600)) / 60 ), 20STR_PAD_LEFT);
        
    $d['s'] = str_pad($seconds 6020STR_PAD_LEFT);

        print (
    "Index complete after $d[h] hours, $d[m] minutes and $d[s] seconds\n");
        exit;
    }
    /*======================================================================*\
    || ####################################################################
    || #
    || # CVS: $RCSfile$ - $Revision: 16011 $
    || ####################################################################
    \*======================================================================*/
    ?>
     
  12. ZEXEL

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

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    ЧТо то не работает, ошибку выдает !
    Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 24893431 bytes) in /superfilter/sf.php on line 38
    ему что места мало ?
     
  13. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    /superfilter/sf.php посмотри этот файл..он чего-то жрет у тебя много оперативке =\