Detailed Post-Mortem of a Website Hack Through WordPress & How To Protect Your WordPress Blog From Hacking Подробная вскрытия из веб-сайта с помощью WordPress взломать и как защитить ваши WordPress блог от взлома
This WordPress blog was hacked for few hours on 24th December (nice Christmas present!) from Russia. Это WordPress блоге был взломанный в течение нескольких часов на 24 декабря (Ницца рождественского подарка!) Из России. The hacker exploited several WordPress vulnerabilities in administrative scripts to gain full access to the website (as permitted to apache user), including the ability to upload & run scripts, delete any file owned by apache user, view the file and directories etc. This is a full disclosure on the how the site was hacked and how I detected and removed the hack along with few comments on the state of WordPress security. Хакера используют несколько уязвимостей в WordPress административные скрипты для получения полного доступа к сети Интернет (как это разрешено для пользователя apache), в том числе возможность загружать и запускать скрипты, удалить любой файл, принадлежащий пользователю apache, просмотр файлов и каталогов и т.д. Это полное раскрытие информации о том, каким был взломанный сайт и насколько я обнаружены и устранены приемом наряду с некоторыми замечаниями о состоянии WordPress безопасности. I added a WordPress plugin and made modifications to prevent any such hacking attempts in future using WordPress. Я добавил WordPress плагин и сделал изменения, чтобы предотвратить такие попытки взлома в будущем с помощью WordPress. This is a must read for WordPress bloggers. Это должно идти на WordPress блоггеры.
How the site hacking was detected? Как сайт взлом был обнаружен?
The website was normal. Веб-сайт был нормальным. However when I tried to publish or even save a post, it simply showed a blank page. Однако, когда я пытался публиковать или даже сохранить пост, он просто показал пустую страницу. The post was never published or even saved. Должность так и не был опубликован или даже спасти. I knew something was wrong. Я знал, чего-то не так.
My first suspect were couple of plugins which contacted external servers after a publish. Мой первый подозреваемый были несколько плагинов, которые связались внешние серверы после публикации. I disabled them. Я инвалидов им. I also disabled the ping sites as they were sometimes known to cause problems. Я также инвалиды пинг-сайтов, поскольку они были известны иногда вызвать проблемы. None of that helped. Все, что помогло. I progressively disabled all of the plugins. Я постепенно инвалидов все плагины. Even with all the plugins disabled, the post wouldn’t publish. Даже с учетом всех дополнений-инвалидов, должность не будет публиковать. I was left with only one option. Я был оставлен лишь один вариант.
I decided to trace WordPress code to find out the cause of error. Я решил проследить WordPress код, чтобы узнать причину ошибки. I started with the file for post submission - post.php. Я начал с должности файл для представления - post.php. I found something startling with WordPress code which seriously undermines its security, a flawed design choice but more on it later. Я обнаружил нечто с поразительной WordPress код, который серьезно подрывает его безопасность, недостатки конструкции выбора, кроме как на более позднее. post.php calls admin.php which calls wp-config.php which in turn calls wp-settings.php. post.php звонки admin.php в котором содержится призыв wp-config.php, которые в свою очередь, требует wp-settings.php. wp-settings is an interesting file. wp-настроек интересный файл. This file isn’t just about settings. Этот файл представляет собой не только по поводу настройки. It loads tons of files, loads and executes the plugins and more. Он загружает файлы тонн, загружает и запускает плагины и многое другое. The problem was, as I originally suspected, in the plugins but which one? Проблема заключается, как я изначально подозревается в плагины, но один? The code which loads the plugins in WordPress is: Код, который загружает плагины в WordPress заключается в следующем:
if ( get_option('active_plugins') ) { $current_plugins = get_option('active_plugins'); if ( is_array($current_plugins) ) { foreach ($current_plugins as $plugin) { if (” != $plugin && file_exists(ABSPATH . PLUGINDIR . ‘/’ . $plugin)) include_once(ABSPATH . PLUGINDIR . ‘/’ . $plugin); } } } если (get_option ( 'active_plugins')) ($ current_plugins = get_option (' active_plugins'); если (is_array ($ current_plugins)) (foreach ($ $ current_plugins как плагин) (если ( "! = $ и плагин и file_exists (ABSPATH. PLUGINDIR. '/'. Плагин $)) include_once (ABSPATH. PLUGINDIR. '/'. Плагин $);))) The active plugins, as you can see, are loaded directly with include_once. Активные плагины, как вы можете видеть, загружены непосредственно с include_once. How do I find the plugin which while loading is causing the script to die? Как найти плагин, который при загрузке вызывает сценарий, чтобы умереть?
I added simple syslog() statements before and after the plugin. Я добавил простой системного журнала () заявления до и после плагина. However it generated copious output from all the traffic. Вместе с тем он порожденных обширной выход из всех перевозок.
Remember I was debugging on a heavily trafficked live site. Помните, я был отладки на крупной торговли, работающем сайте. So I added a define in post.php which I was checking before doing a syslog. Поэтому я добавил определить в post.php котором я была проверка перед выполнением системного журнала. The debugging code was: Отладки кода:
if (” != $plugin && file_exists(ABSPATH . ‘wp-content/plugins/’ . $plugin)) { если ( "! = $ и плагин и file_exists (ABSPATH". wp-content/plugins / '. плагин $)) (
if(defined(’TG_ADMIN’)) syslog(LOG_ALERT, “Loading $plugin…”); если (определен ( 'TG_ADMIN')) системного журнала (LOG_ALERT, "Загрузка $ плагин…");
include_once(ABSPATH . ‘wp-content/plugins/’ . $plugin); include_once (ABSPATH ". wp-content/plugins / '. плагин $);
if(defined(’TG_ADMIN’)) syslog(LOG_ALERT, “Loaded $plugin…”); если (определен ( 'TG_ADMIN')) системного журнала (LOG_ALERT, "Загрузить плагин $…");
} )
The result was surprising. Результат был удивительным. The first plugin loaded was not even a plugin I knew existed, let alone use it. Первый плагин загружен даже не плагин я знал, существуют, не говоря уже о его использовать. It was named ro8kbsmawge.txt. Он был назван ro8kbsmawge.txt. The full path to the plugin was /../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt Полный путь к плагину был /../../../../../../../../../../../../../../ ../../../../tmp/ro8kbsmawge.txt
Effectively the file path was /tmp/ro8kbsmawge.txt. Фактически был путь к файлу / tmp/ro8kbsmawge.txt. A telltale sign of this hacker is the presence of the file ro8kbsmawge.txt in your tmp directory. Telltale признаком этого хакера является наличие файла в вашем ro8kbsmawge.txt tmp каталоге.
I renamed the file and the problem was solved for now. Я переименован в файл и проблема была решена в настоящее время. I could publish posts finally. Я мог бы, наконец, публиковать сообщения. However my site was still not secure against future attacks. Однако мой сайт по-прежнему не безопасной в отношении будущих атак. I will detail next at how I secured my site and provide more information on the perpetrator and how the site was hacked in the first place. Я буду подробно на следующем, как я обеспеченный моем сайте и предоставлять больше информации о том, как преступника и взломанный сайт был на первом месте.
How the site was hacked using WordPress? Каким был взломанный сайт с использованием WordPress?
The site exploited a vulnerability in /wp-admin/options.php which allowed it to get the authentication cookies it required to upload the file ro8kbsmawge.txt to my /tmp directory using /wp-admin/inline-uploading.php. Сайт эксплуатации уязвимости в / wp-admin/options.php что позволило ей получить удостоверения cookies для этого требуется, чтобы загрузить файл ro8kbsmawge.txt для меня / tmp каталог с помощью / wp-admin/inline-uploading.php. It then used /wp-admin/plugins.php to activate the ro8kbsmawge.txt as a plugin while using options-misc along the way. Затем она используется / wp-admin/plugins.php для активации ro8kbsmawge.txt как плагин в то время как с помощью опции-разное вдоль пути.
Finally the hacker accessed the site using his magic word piska233 and browsed few directories on my server before retiring for the day. Наконец хакер обращались сайта, используя его волшебное слово piska233 и гулял несколько каталогов на моем сервере до пенсию за день. All of these was done within a span of 3 minutes which leads to the conclusion that a script was used to exploit the holes and orchestrate the hacking. Все это было сделано в течение 3 минут которое приводит к выводу о том, что сценарий был использован для эксплуатации дыр и организовать взлом.
The full log, except the IP address 217.74.245.85 which was removed for redundancy, of hackers action on my site is: Полный лог, за исключением IP адрес 217.74.245.85 который был удален за перебор, от действий хакеров на мой сайт:
[24/Dec/2007:07:40:24 -0600] “POST /wp-admin/options.php HTTP/1.0″ 302 471 “http://blog.taragana.com/wp-admin/options.php” “Opera” [24/Dec/2007: 07:40:24 -0600] "POST / wp-admin/options.php HTTP/1.0" 302 471 "http://blog.taragana.com/wp-admin/options.php" "Опера"
[24/Dec/2007:07:40:26 -0600] “POST /wp-admin/inline-uploading.php?post=-1&action=upload HTTP/1.0″ 200 1645 “http://blog.taragana.com/inline-uploading.php?post=-1&action=upload” “Opera” [24/Dec/2007: 07:40:26 -0600] "POST / wp-admin/inline-uploading.php? Должность =- 1 и действий = загрузить HTTP/1.0" 200 1645 "http://blog.taragana.com / встроенный-uploading.php? должность =- 1 и действий загрузить = "" Опера "
[24/Dec/2007:07:40:29 -0600] “POST /wp-admin/inline-uploading.php?post=-1&action=upload HTTP/1.0″ 200 142 “http://blog.taragana.com/inline-uploading.php?post=-1&action=upload” “Opera” [24/Dec/2007: 07:40:29 -0600] "POST / wp-admin/inline-uploading.php? Должность =- 1 и действий = загрузить HTTP/1.0" 200 142 "http://blog.taragana.com / встроенный-uploading.php? должность =- 1 и действий загрузить = "" Опера "
[24/Dec/2007:07:40:52 -0600] “POST /wp-admin/options.php HTTP/1.0″ 200 1713 “http://blog.taragana.com/wp-admin/options.php” “Opera” [24/Dec/2007: 07:40:52 -0600] "POST / wp-admin/options.php HTTP/1.0" 200 1713 "http://blog.taragana.com/wp-admin/options.php" "Опера"
[24/Dec/2007:07:40:54 -0600] “POST /wp-admin/options.php HTTP/1.0″ 302 471 “http://blog.taragana.com/wp-admin/options.php” “Opera” [24/Dec/2007: 07:40:54 -0600] "POST / wp-admin/options.php HTTP/1.0" 302 471 "http://blog.taragana.com/wp-admin/options.php" "Опера"
[24/Dec/2007:07:40:57 -0600] “POST /wp-admin/inline-uploading.php?post=-1&action=upload HTTP/1.0″ 200 1645 “http://blog.taragana.com/inline-uploading.php?post=-1&action=upload” “Opera” [24/Dec/2007: 07:40:57 -0600] "POST / wp-admin/inline-uploading.php? Должность =- 1 и действий = загрузить HTTP/1.0" 200 1645 "http://blog.taragana.com / встроенный-uploading.php? должность =- 1 и действий загрузить = "" Опера "
[24/Dec/2007:07:41:11 -0600] “GET /wp-admin/options-misc.php HTTP/1.1″ 200 7764 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:11 -0600] "GET / wp-admin/options-misc.php HTTP/1.1" 200 7764 "-" "Opera/9.24 (Windows NT 5,1; U; рус)"
[24/Dec/2007:07:41:15 -0600] “GET /wp-admin/wp-admin.css?version=2.0.7 HTTP/1.1″ 304 - “http://blog.taragana.com/wp-admin/options-misc.php” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:15 -0600] "GET / wp-admin/wp-admin.css? Версия 2.0.7 = HTTP/1.1" 304 - "http://blog.taragana.com/ wp-admin/options-misc.php "" Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:41:15 -0600] “GET /wp-includes/js/fat.js HTTP/1.1″ 304 - “http://blog.taragana.com/wp-admin/options-misc.php” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:15 -0600] "GET / wp-includes/js/fat.js HTTP/1.1" 304 - "http://blog.taragana.com/wp-admin/options- misc.php "" Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:41:12 -0600] “POST /wp-admin/inline-uploading.php?post=-1&action=upload HTTP/1.0″ 302 - “http://blog.taragana.com/inline-uploading.php?post=-1&action=upload” “Opera” [24/Dec/2007: 07:41:12 -0600] "POST / wp-admin/inline-uploading.php? Должность =- 1 и действий = загрузить HTTP/1.0" 302 - "http://blog.taragana.com / встроенный-uploading.php? должность =- 1 и действий загрузить = "" Опера "
[24/Dec/2007:07:41:21 -0600] “GET /wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt&_wpnonce= HTTP/1.1″ 200 1474 “http://blog.taragana.com/wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt” “Opera” [24/Dec/2007: 07:41:21 -0600] "GET / wp-admin/plugins.php? Действий = активации и плагин =/../../../../../../. ./../../../../../../../../../../../tmp/ro8kbsmawge.txt и _wpnonce = HTTP/1.1 "200 1474 сообщите: / / blog.taragana.com / wp-администратор / plugins.php? действий = активации и плагин =/../../../../../../../../../.. /../../../../../../../../ tmp/ro8kbsmawge.txt "" Опера "
[24/Dec/2007:07:41:23 -0600] “GET /wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt&_wpnonce=7b4c8019bd HTTP/1.1″ 302 - “http://blog.taragana.com/wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt” “Opera” [24/Dec/2007: 07:41:23 -0600] "GET / wp-admin/plugins.php? Действий = активации и плагин =/../../../../../../. ./../../../../../../../../../../../tmp/ro8kbsmawge.txt и _wpnonce = 7b4c8019bd HTTP/1.1 "302 - сообщите : / / blog.taragana.com / wp-администратор / plugins.php? действий = активации и плагин =/../../../../../../../../../. ./../../../../../../../../tmp/ro8kbsmawge.txt "" Опера "
[24/Dec/2007:07:41:30 -0600] “GET /?piska23 HTTP/1.1″ 200 95716 “http://lamer/mwpep/?mode=shell&what=20″ “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:30 -0600] "GET /? Piska23 HTTP/1.1" 200 95716 "http://lamer/mwpep/?mode=shell&what=20" "Opera/9.24 (Windows NT 5,1 ; U; рус) "
[24/Dec/2007:07:41:36 -0600] “GET /?piska233 HTTP/1.1″ 200 15840 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:36 -0600] "GET /? Piska233 HTTP/1.1" 200 15840 "-" "Opera/9.24 (Windows NT 5,1; U; рус)"
[24/Dec/2007:07:41:44 -0600] “POST /wp-admin/options.php HTTP/1.1″ 302 471 “http://blog.taragana.com/wp-admin/options-misc.php” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:44 -0600] "POST / wp-admin/options.php HTTP/1.1" 302 471 "http://blog.taragana.com/wp-admin/options-misc. php "" Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:41:47 -0600] “POST /wp-admin/options.php HTTP/1.1″ 302 471 “http://blog.taragana.com/wp-admin/options-misc.php” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:47 -0600] "POST / wp-admin/options.php HTTP/1.1" 302 471 "http://blog.taragana.com/wp-admin/options-misc. php "" Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:41:55 -0600] “GET /?piska233&dira=/tmp HTTP/1.1″ 200 9930 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:55 -0600] "GET /? Piska233 и dira = / tmp HTTP/1.1" 200 9930 "-" "Opera/9.24 (Windows NT 5,1; U; рус)"
[24/Dec/2007:07:41:54 -0600] “GET /wp-admin/options-misc.php?updated=true HTTP/1.1″ 200 7842 “http://blog.taragana.com/wp-admin/options-misc.php” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:41:54 -0600] "GET / wp-admin/options-misc.php? Обновление верно = HTTP/1.1" 200 7842 "http://blog.taragana.com/wp- админ / опции-misc.php "" Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:42:36 -0600] “POST /index.php?piska233&dira=./ HTTP/1.1″ 200 36721 “http://blog.taragana.com/?piska233″ “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:42:36 -0600] "POST / index.php? Piska233 и dira =. / HTTP/1.1" 200 36721 "http://blog.taragana.com/?piska233" "Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:43:23 -0600] “GET /index.php?piska233&dira=./wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1″ 200 6506 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:43:23 -0600] "GET / index.php? Piska233 и dira =. / wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1" 200 6506 "-" "Opera/9.24 (Windows NT 5,1; U; рус)"
[24/Dec/2007:07:43:38 -0600] “GET /wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1″ 301 298 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:43:38 -0600] "GET / wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1" 301 298 "-" "Opera/9.24 (Windows NT 5,1; U; рус) "
[24/Dec/2007:07:43:40 -0600] “GET /wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images/ HTTP/1.1″ 200 604 “-” “Opera/9.24 (Windows NT 5.1; U; ru)” [24/Dec/2007: 07:43:40 -0600] "GET / wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images / HTTP/1.1" 200 604 "-" "Опера / 9,24 (Windows NT 5,1; U; рус) "
The good news is that no harm was done. Хорошая новость состоит в том, что никакого вреда было сделано.
WordPress security issues & design flaw WordPress вопросы безопасности и дизайн изъяна
The basic design flaw is that loading WordPress configuration (required for database access for authentication checks) loads wp-settings which loads tons of other PHP files as well as all the WordPress plugins and any hacks. Основным конструктивным недостатком является то, что погрузка WordPress конфигурации (требуется для доступа к базам данных для проверки подлинности) нагрузок wp-настройки, которые нагрузок тонн других PHP файлов, а также все WordPress плагины и любые хаки. All of these are done even before you have a chance to authenticate the user. Все это сделано еще до вас есть шанс для аутентификации пользователя. This is extremely dangerous for administration scripts as it allows a hacker to pass arguments to and execute gazillions of WordPress files which may or may not have proper security checks in place. Это крайне опасно для управления скриптами, поскольку оно позволяет хакеру передавать аргументы и выполнить gazillions из WordPress файлы, которые могут или не могут обладать соответствующей проверки на месте. User authentication and entitlement should be done at the very beginning to prevent unauthenticated scripts from proceeding any further. Подлинности пользователя и право должно быть сделано в самом начале для предотвращения неаутентифицированных сценарии из любого дальнейшего разбирательства. To do that wp-config must be modified to not include wp-settings. Чтобы сделать что-wp конфигурации должен быть изменен, чтобы не включать wp-настройки. It should be separately included where required, even at the cost of redundancy. Он должен быть отдельно включен в случае необходимости, даже ценой избыточности. Administration scripts (under wp-admin) requires only wp-config to get the database details to authenticate the user and identify its entitlements. Администрация скриптов (под wp-администратора), требуется только wp-конфигурации, чтобы получить подробную информацию базы данных для аутентификации пользователя и определять его права. After authentication the rest should be loaded. После проверки подлинности остальное должно быть загружен. This flaw was exploited to get the authentication cookie details which was subsequently used. Эта уязвимость было использовано для получения авторизации cookie деталей, которые впоследствии используются. The exact exploit used in this case is hard to find from just server logs. Точное эксплуатировать, используемые в данном случае трудно найти только из сервера. However it was caused by late authentication problem as described above. Однако она была вызвана поздно проблему аутентификации, как описано выше.
There are were known issues with both options.php & upload script, some of which are detailed Существуют известные проблемы были с обеих options.php и загружать скрипт, некоторые из которых подробно описаны here здесь .
One of the challenges with WordPress is that security considerations was mostly an afterthought (feel free to disagree) which were latched on as WordPress became more and more popular. Одна из проблем, с WordPress заключается в том, что соображения безопасности в основном afterthought (не стесняйтесь не согласны), которые были закрытия, как на WordPress стал более и более популярными. You have to continuously update your WordPress to keep up with the latest patches. Вы должны постоянно обновлять ваши WordPress идти в ногу с последними заплатками.
There are 71 reported security advisories in Secunia (22 reported in 2007) and 9 viruses based on WordPress (one from 2007). Есть 71 рекомендательные безопасности, сообщили в Secunia (22 сообщалось в 2007) и 9 вирусов, основанные на WordPress (один из 2007).
Most likely the site was hacked using the cookies authentication vulnerability as detailed Скорее всего, сайт был взломанный, используя печеньки аутентификации уязвимости как подробный here здесь .
Several WordPress plugins and themes also have security advisories: Несколько WordPress плагины и темы также советы безопасности:
- AdSense-Deluxe 0.x (plugin for WordPress) -- AdSense-Deluxe 0.x (плагин для WordPress)
- AndyBlue 1.x (theme for WordPress) -- AndyBlue 1.x (тема для WordPress)
- Blix 0.x (theme for WordPress) -- Бликс 0.x (тема для WordPress)
- Blixed 1.x (theme for WordPress) -- Blixed 1.x (тема для WordPress)
- BlixKrieg 2.x (theme for WordPress) -- BlixKrieg 2.x (тема для WordPress)
- Blue Memories 1.x (theme for WordPress) -- Blue Memories 1.x (тема для WordPress)
- myGallery 1.x (plugin for WordPress) -- MyGallery 1.x (плагин для WordPress)
- PictPress 1.x (plugin for WordPress) -- PictPress 1.x (плагин для WordPress)
- Pool 1.x (theme for Wordpress) -- Пул 1.x (тема для Wordpress)
- Redoable 1.x (theme for WordPress) -- Redoable 1.x (тема для WordPress)
You can read all the Secunia advisories on WordPress Вы можете прочитать все рекомендации Secunia на WordPress here здесь .
Who was the hacker? Кто был хакер?
The IP address of the user responsible for hacking my site is 217.74.245.85 . IP-адрес пользователя, ответственных за взлом мой сайт 217.74.245.85. The IP address belongs to KUBANGSM-NET: IP адрес принадлежит KUBANGSM-NET:
% Information related to '217.74.245.0/24AS29497' route: 217.74.245.0/24 descr: KUBANGSM-NET origin: AS29497 mnt-by: KUBANGSM-MNT source: RIPE # Filtered % Информация, связанная с'217 .74.245.0/24AS29497 "Маршрут: 217.74.245.0/24 описание: KUBANGSM-NET происхождения: AS29497 шоссе-путем: KUBANGSM-MNT источник: RIPE # Отфильтрованный It is owned by: Она находится в собственности:
person: Volkov Denis address: 61, Gimnazicheskaya str. лицо: Денис Волков адресу: 61, Gimnazicheskaya ул. 350000, Krasnodar, Russia phone: +7 8612 660126 fax-no: +7 8612 401505 e-mail: d.volkov@kuban.mts.ru nic-hdl: VD370-RIPE source: RIPE # Filtered 350000, г. Краснодар, Россия телефон: +7 8612 660126 факс-нет: +7 8612 401505 электронная почта: d.volkov @ kuban.mts.ru nic-ЛПВП: VD370-RIPE источник: RIPE # Отфильтрованный
Their website is Их веб-сайт http://www.kuban.mts.ru/ . They appear to be legitimate mobile & internet service provider. Они оказались законные мобильных и интернет-услуг. Most likely their internet service is being abused by the spammer. Скорее всего, их интернет-услуг в настоящее время злоупотреблениям со стороны спамера. Nevertheless I decided to Тем не менее я решил ban this IP address from accessing my server запрет этот IP-адрес из моего доступа к серверу .
The hacker was most likely using Opera 9.24 browser (almost latest version) on Windows XP (NT 5.1). Хакер был, скорее всего, используя браузер Опера 9,24 (почти последняя версия) на Windows XP (NT 5.1). While user agent can be faked, there is no reason to suspect so in this case. В то время как агент пользователя может быть фальшивая, нет никаких оснований подозревать, поэтому в данном случае. The user agent string also shows that he was using the russian language file of Opera. Агент пользователя строка также показывает, что он использовал русский язык файл оперы.
Anatomy of the hacking script Анатомия взлома скрипта
The hacking script is a php script with aa nice comment and TODO line: Взлом скрипт php скрипт с аа приятно комментарий и TODO строки:
/*Magic Include Shell by Mag icq 884888*/ / * Magic Включить оболочкой, Mag icq 884888 *
//TODO: ñëèòü ôàéëî íà ñâîé ôòï (!) / / TODO: ñëèòü ôàéëî íà ñâîé ôòï (!)
Effectively it is a file manager, probably adapted from any of the free php file manager’s on the net. Фактически это файловый менеджер, вероятно, адаптированных от каких-либо бесплатно php файл менеджера по сети. It allows you to: Она позволяет:
- Browse directories and files Просмотр каталогов и файлов
- Edit files Редактирование файлов
- Rename files Переименовать файлы
- Delete files Удалить файлы
- zip & unzip files почтовый и unzip файлы
- Upload & download files & directories Загрузка и скачивать файлы и каталоги
- Execute arbitrary PHP scripts Выполнить произвольный PHP скрипты
- Execute arbitrary shell commands Выполнять произвольный команды оболочки
- Provides basic server, system & PHP information Предоставляет основные сервера, системы информации и PHP
The bulk of the code is executed when it receives a particular query string to a normal HTTP GET request. Основная часть кода выполняется, когда он получает особое строке запроса к нормальной HTTP GET запроса. So while http://blog.taragana.com/ will work as usual, http://blog.taragana.com/?piska233 will open with this magical hidden shell which will expose your entire website to an outside hacker. Поэтому, когда http://blog.taragana.com/ будет работать как обычно, http://blog.taragana.com/?piska233 начнется с этой магической скрытых корпуса, которая будет подвергать весь Ваш сайт, чтобы за хакера.
Note: There is nothing magical about piska233. Примечание: Существует ничего магического о piska233. It is a password which was most likely allowed to be chosen and given as input to the original script which injected this trojan horse on my site. Это пароль, который был, скорее всего, возможность выбора и приводятся в качестве вклада в первоначальной скрипт, который впрыскивается это троянский конь на моем сайте.
A trojan which protects itself against worms… Троян, которая защищает себя от червей…
The trojan takes steps to protect itself against worm! Троянских принимает меры для защиты себя от червя! The code at the end which is always executed is: Код на конце, который всегда выполняется это:
$post_arr=implode('.',$_POST); $ post_arr = implode ('.',$_ POST);
$get_arr=implode('.',$_GET); $ get_arr = implode ('.',$_ GET);
$cook_arr=implode('.',$_COOKIE); $ cook_arr = implode ('.',$_ COOKIE);
$post_arr_key=implode('.',@array_flip($_POST)); $ post_arr_key = implode ('.',array_flip ($ _POST));
$get_arr_key=implode('.',@array_flip($_GET)); $ get_arr_key = implode ('.',array_flip ($ _GET));
$cook_arr_key=implode('.',@array_flip($_COOKIE)); $ cook_arr_key = implode ('.',array_flip ($ _COOKIE));
$other_shtuki=@file_get_contents('php://input'); other_shtuki $ = @ file_get_contents ( "php: / / ввод");
$cracktrack = strtolower($post_arr.$get_arr.$cook_arr.$post_arr_key.$get_arr_key.$cook_arr_key.$other_shtuki); $ cracktrack = strtolower ($ post_arr. get_arr $. cook_arr $. post_arr_key $. get_arr_key $. cook_arr_key $. other_shtuki $);
$wormprotector = array('base64','user_pass','union','select','substring','or id='); $ wormprotector = массив ( 'base64', 'user_pass',' союз ',' выберите ',' подстрока ',' или идентификатор = ');
$checkworm = str_replace($wormprotector, '*', $cracktrack); $ checkworm = str_replace ($ wormprotector, '*', $ cracktrack);
if ($cracktrack != $checkworm) die(""); если ($ cracktrack! = $ checkworm) умирают ("");
It checks for certain keywords (in $wormprotector array) within GET, POST & COOKIE data. Она проверяет определенные ключевые слова (в $ wormprotector массив) в GET, POST и COOKIE данных. When they are present it simply aborts. Когда они присутствуют в нем лишь прервалось. This is one of the means to detect the current version of the script. Это одно из средств для обнаружения текущую версию скрипта. This is also the reason why it failed to submit a post. Это также причина, почему она не смогла представить пост. An url such as this would also die - http://localhost/wordpress/?select as would http://localhost/wordpress/?base64. В сети таких, как это также должно умереть - http://localhost/wordpress/?select как бы http://localhost/wordpress/?base64.
However there is nothing to be happy about. Однако ничто не может быть счастлив о. It will take less than a minute to modify the script and make it immune to detection in WordPress. Она займет меньше минуты на изменение сценария и сделать его иммунитет к обнаружению в WordPress.
How to protect your WordPress site from hacking? Как защитить свой WordPress сайта от взлома?
You can protect your administration scripts (scripts under wp-admin), where most attacks originate including this one, by restricting access to your admin scripts to specific IP address or IP address range. Вы можете защитить ваши управления сценариев (скриптов под wp-администратора), где большинство нападений происходят в том числе и этот, путем ограничения доступа к Вашей админ скрипты для конкретных IP-адрес или IP-адресов. You can also add a basic authentication on top of WordPress by using your httpd.conf file or .htaccess. Вы также можете добавить базовой проверки подлинности на верхней части WordPress используя Ваш файл httpd.conf или. Htaccess. This adds a layer of security which any hacker will have to overcome before he gets to your WordPress vulnerabilities. Это добавляет уровень защиты, которой любой хакер придется преодолеть, прежде чем он получит свою WordPress уязвимости.
WordPress should be upgraded as regularly as possible. WordPress должен быть обновлен, как регулярно, насколько это возможно. However that is easier said than done. Однако это легче сказать, чем сделать. Normally I prefer to wait a few versions before the new versions stabilize. Обычно я предпочитаю подождать несколько версий, прежде чем новые версии стабилизации.
WordPress security vulnerabilities affects every one of us, WordPress based bloggers. WordPress безопасности уязвимость затрагивает каждого из нас, WordPress основе блогов. While I was fully aware of the possibilities and even thought of writing a plugin to address these issues before, I decided to wait (and address more urgent issues or so I thought) relying on the law of probability to protect my sites; after all there are several million WordPress blogs out there, how much chance of being targeted by a hacker? Хотя я был в полной мере осознает возможности и даже мысли написания плагина для решения этих вопросов, я решил подождать (и решать более неотложные вопросы, или так я думал) опираясь на закон вероятностей для защиты своих сайтов, ведь там несколько миллионов блогов WordPress там, как много шансов быть мишенью для хакеров? Well, as it turns out, I was wrong. Ну, как выясняется, я ошибался.
To simplify securing WordPress, I have created a plugin, to be released soon, which leverages these ideas and more to secure your WordPress installations. Для упрощения обеспечения WordPress, я создал плагин, который будет выпущен в скором времени, который использует эти идеи и многое другое для обеспечения вашей WordPress установок. It works with your .htaccess but it also works even when .htaccess facility is not available. Он работает с вашим. Htaccess, но она также работает, даже когда это произойдет. Htaccess объект недоступен. I have already started using it on my blogs. Я уже начал использовать его на мои блоги.
Filed under Поданного в соответствии с CMS Software CMS Software , Computer Security Computer Security , Enterprise Software Программное обеспечение предпринимательства , Headline News Headline News , How To Как , Linux , Open Source Software Open Source Software , PHP , Programming Программирование , Web Веб , Web 2.0 Веб-2,0 , WordPress , WordPress Plugin WordPress Plugin , WordPress Theme WordPress тема | |
| |
RSS 2.0 RSS 2,0 | |
Trackback this Article | это статья |
Email this Article Отослать Статья
You may also like to read Вы можете также люблю читать |



February 28th, 2008 at 9:28 am 28 февраля 2008 года в 9:28 утра
Hi there, Привет там,
I am wondering if the plugin you mentioned to protect your blog from hacking has been released? Мне интересно, если вы упомянули плагин для защиты блога от взлома был освобожден? I am sure every WordPress blogger and admin would be eternally grateful. Я уверен, что каждый блоггер WordPress и админ будет бесконечно благодарен.
March 5th, 2008 at 11:34 am 5 марта 2008 года в 11:34 утра
I second dalton’s thoughts… if you’ve got that plugin ready, I will be glad to offer hosting space for you if you’re worried about bandwidth. Я второй Далтон мысли… если у вас есть плагин, что готовы, я буду рад предложить хостинг пространство для вас, если вы обеспокоены пропускания. I’d also love to get it running on some client web sites of mine. Я также люблю, чтобы он работает на некоторых веб-сайтах клиентов из шахты. For now, I have been running into attempts from similar scripts and would love to chat. В настоящее время я был работает в попытки из подобных сценариев и любил бы поговорить.
Best wishes and thanks for the work you’re doing. Наилучшие пожелания и благодарность за работу вы делаете.
-Dave - Дэйв
March 13th, 2008 at 11:15 am 13 марта 2008 года в 11:15
Thanks for this. Спасибо за это. One other suggestion for people running an insecure wordpress with other critical applications, is to run them on different unix userid accounts. Другой предложение для людей, работает ненадежно wordpress с других критически важных приложений, заключается в том, чтобы запускать их на различных unix userid счетов.
April 12th, 2008 at 4:20 am 12 апреля 2008 года в 4:20 утра
great article… thanks большое спасибо статье…