This WordPress blog was hacked for few hours on 24th December (nice Christmas present!) from Russia. Este blog de WordPress fue hackeado pocas horas para el 24 de diciembre (bonito regalo de Navidad!) De Rusia. 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. Los hackers explotan varias vulnerabilidades en WordPress scripts administrativos para obtener pleno acceso a la web (como apache permite a los usuarios), incluyendo la capacidad de cargar y ejecutar scripts, borrar cualquier fichero que pertenezca a apache usuario, visualizar el archivo y directorios, etc Esto es una amplia divulgación sobre la forma en que el sitio fue hackeado y la forma en que detectarán y eliminarán la corte junto con algunos comentarios sobre el estado de seguridad de WordPress. I added a WordPress plugin and made modifications to prevent any such hacking attempts in future using WordPress. He añadido un plugin WordPress e hizo modificaciones para evitar este tipo de intentos de hacking en el futuro usando WordPress. This is a must read for WordPress bloggers. Este es un deber de leer los bloggers de WordPress.


How the site hacking was detected? Cómo funciona el sitio se detectó la piratería?

The website was normal. El sitio web fue normal. However when I tried to publish or even save a post, it simply showed a blank page. Sin embargo, cuando traté de publicar o guardar un puesto, simplemente mostró una página en blanco. The post was never published or even saved. El puesto nunca fue publicado, o incluso guardado. I knew something was wrong. Sabía que algo andaba mal.

My first suspect were couple of plugins which contacted external servers after a publish. Mi primer sospechoso fueron par de plugins que estableció contacto con los servidores externos después de publicar. I disabled them. I discapacitados. I also disabled the ping sites as they were sometimes known to cause problems. Asimismo, los discapacitados el ping sitios, ya que a veces se sabe que causan problemas. None of that helped. Nada de eso ayuda. I progressively disabled all of the plugins. I progresivamente con discapacidad de todos los plugins. Even with all the plugins disabled, the post wouldn’t publish. Incluso con todos los plugins discapacitados, el puesto no publicar. I was left with only one option. Me quedé con una sola opción.

I decided to trace WordPress code to find out the cause of error. Decidí rastrear WordPress código para averiguar la causa del error. I started with the file for post submission - post.php. Comencé con la ficha de presentación posterior - post.php. I found something startling with WordPress code which seriously undermines its security, a flawed design choice but more on it later. He encontrado algo sorprendente con WordPress código que socava gravemente su seguridad, un diseño defectuoso elección, pero más en él más tarde. post.php calls admin.php which calls wp-config.php which in turn calls wp-settings.php. post.php pide que se pide admin.php wp-config.php que a su vez requiere wp-settings.php. wp-settings is an interesting file. wp-es la configuración de un interesante archivo. This file isn’t just about settings. Este archivo no es sólo acerca de la configuración. It loads tons of files, loads and executes the plugins and more. Carga toneladas de archivos, carga y ejecuta los plugins y mucho más. The problem was, as I originally suspected, in the plugins but which one? El problema es, como he inicialmente sospechosos, en los plugins, pero que uno? The code which loads the plugins in WordPress is: El código que carga los plugins a WordPress es la siguiente:

 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); }  } } if (get_option ( 'active_plugins')) ($ current_plugins = get_option (' active_plugins'); if (is_array ($ current_plugins)) (foreach ($ current_plugins como $ plugin) (if (! "plugin = $ & & file_exists (ABSPATH. PLUGINDIR. '/'. $ Plugin)) include_once (ABSPATH. PLUGINDIR. '/'. $ Plugin);))) 

The active plugins, as you can see, are loaded directly with include_once. El principio activo plugins, como se puede ver, se cargan directamente con include_once. How do I find the plugin which while loading is causing the script to die? ¿Cómo puedo encontrar el plugin que durante la carga está causando el guión a morir?
I added simple syslog() statements before and after the plugin. He añadido simple syslog () declaraciones antes y después del plugin. However it generated copious output from all the traffic. Sin embargo, generó una copiosa producción de todo el tráfico.
Remember I was debugging on a heavily trafficked live site. Recuerde que yo era una depuración en gran medida víctimas de la trata de vivir sitio. So I added a define in post.php which I was checking before doing a syslog. Así que he añadido a definir un post.php que yo era la comprobación antes de hacer un syslog. The debugging code was: La depuración de código:
if (” != $plugin && file_exists(ABSPATH . ‘wp-content/plugins/’ . $plugin)) { if (! "plugin = $ & & file_exists (ABSPATH '. wp-content/plugins /'. $ plugin)) (
if(defined(’TG_ADMIN’)) syslog(LOG_ALERT, “Loading $plugin…”); si (se define ( 'TG_ADMIN')) syslog (LOG_ALERT, "Carga de dólares plugin…");
include_once(ABSPATH . ‘wp-content/plugins/’ . $plugin); include_once (ABSPATH '. wp-content/plugins /'. plugin de dólares);
if(defined(’TG_ADMIN’)) syslog(LOG_ALERT, “Loaded $plugin…”); si (se define ( 'TG_ADMIN')) syslog (LOG_ALERT, "Cargado de dólares plugin…");
} )

The result was surprising. El resultado fue sorprendente. The first plugin loaded was not even a plugin I knew existed, let alone use it. El primer plugin cargado ni siquiera fue un plugin que sabía existían, y mucho menos utilizarlo. It was named ro8kbsmawge.txt. Fue nombrado ro8kbsmawge.txt. The full path to the plugin was /../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt La ruta completa para el plugin se /../../../../../../../../../../../../../../ ../../../../tmp/ro8kbsmawge.txt
Effectively the file path was /tmp/ro8kbsmawge.txt. Efectivamente la ruta del archivo es / tmp/ro8kbsmawge.txt. A telltale sign of this hacker is the presence of the file ro8kbsmawge.txt in your tmp directory. Un indicador de este signo hacker es la presencia de ro8kbsmawge.txt el archivo en su directorio tmp.

I renamed the file and the problem was solved for now. Me cambió el nombre del archivo y el problema se resolvió por el momento. I could publish posts finally. Pude publicar finalmente puestos. However my site was still not secure against future attacks. Sin embargo mi sitio todavía no estaba protegido contra ataques futuros. 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. Me siguiente detalle la forma en que he conseguido mi sitio y proporcionar más información sobre el autor y la forma en que el sitio fue hackeado en el primer lugar.

How the site was hacked using WordPress? Cómo funciona el sitio fue hackeado utilizando 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. El sitio explota una vulnerabilidad en / wp-admin/options.php que le permitió obtener el cookies de autenticación que necesita para cargar el archivo ro8kbsmawge.txt a mi directorio / tmp con / 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. A continuación, utilizados / wp-admin/plugins.php para activar el ro8kbsmawge.txt como un plugin, mientras que utilizando las opciones-misc en el camino.

Finally the hacker accessed the site using his magic word piska233 and browsed few directories on my server before retiring for the day. Por último, el hacker acceder al Sitio con su palabra mágica piska233 y paseado unos directorios en mi servidor antes de retirarse por el día. 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. Todos ellos se hizo dentro de un lapso de 3 minutos que lleva a la conclusión de que el script se utilizó para explotar los agujeros y orquestar la piratería informática.

The full log, except the IP address 217.74.245.85 which was removed for redundancy, of hackers action on my site is: El registro completo, excepto la dirección IP 217.74.245.85 que fue removido para garantizar la redundancia, la acción de los hackers en mi sitio es:

[24/Dec/2007:07:40:22 -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:22 -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: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" "Opera"
[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? Puesto =- 1 & action = cargar HTTP/1.0" 200 1645 "http://blog.taragana.com / inline-uploading.php? puesto =- 1 & action = cargar "" Opera "
[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? Puesto =- 1 & action = cargar HTTP/1.0" 200 142 "http://blog.taragana.com / inline-uploading.php? puesto =- 1 & action = cargar "" 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” “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" "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” “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" "Opera"
[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? Puesto =- 1 & action = cargar HTTP/1.0" 200 1645 "http://blog.taragana.com / inline-uploading.php? puesto =- 1 & action = cargar "" Opera "
[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; ru)"
[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? 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-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; ru) "
[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? Puesto =- 1 & action = cargar HTTP/1.0" 302 - "http://blog.taragana.com / inline-uploading.php? puesto =- 1 & action = cargar "" Opera "
[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? = Acción y activar el plugin =/../../../../../../. ./../../../../../../../../../../../tmp/ro8kbsmawge.txt & _wpnonce = HTTP/1.1 "200 1474" http: / / blog.taragana.com / wp-admin / plugins.php? = acción y activar el plugin =/../../../../../../../../../.. /../../../../../../../../ tmp/ro8kbsmawge.txt "" Opera "
[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? = Acción y activar el plugin =/../../../../../../. ./../../../../../../../../../../../tmp/ro8kbsmawge.txt & _wpnonce = 7b4c8019bd HTTP/1.1 "302 -" http : / / blog.taragana.com / wp-admin / plugins.php? = acción y activar el plugin =/../../../../../../../../../. ./../../../../../../../../tmp/ro8kbsmawge.txt "" Opera "
[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; ru) "
[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; 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; 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; 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; 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; 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; 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; ru)"
[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? Actualizado = 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: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; 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; 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; 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; 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; ru) "
[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 "-" "Opera 9.24 (Windows NT 5,1; U; ru) "

The good news is that no harm was done. La buena noticia es que ningún daño ya estaba hecho.

WordPress security issues & design flaw WordPress cuestiones de seguridad y diseño de fallas

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. El diseño básico es que falla la carga de configuración de WordPress (requerido para acceso a bases de datos para los controles de autenticación) carga wp-que la configuración de cargas de toneladas de otros archivos PHP, así como todos los plugins de WordPress y cualquier hacks. All of these are done even before you have a chance to authenticate the user. Todos estos se realizan incluso antes de tener una oportunidad para autenticar el usuario. 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. Esto es extremadamente peligroso para los scripts de administración, ya que permite que un hacker para pasar argumentos a gazillions y ejecutar archivos de WordPress que puede o no han adecuado los controles de seguridad en su lugar. User authentication and entitlement should be done at the very beginning to prevent unauthenticated scripts from proceeding any further. De autentificación de usuarios y el derecho debe hacerse desde el principio para evitar que no autenticados de scripts de seguir adelante. To do that wp-config must be modified to not include wp-settings. Para hacer que el wp-config debe ser modificado para no incluir el wp-settings. It should be separately included where required, even at the cost of redundancy. Se debe incluirse por separado cuando sea necesario, incluso a costa de despidos. Administration scripts (under wp-admin) requires only wp-config to get the database details to authenticate the user and identify its entitlements. Administración de secuencias de comandos (en virtud de wp-admin) requiere sólo el wp-config para obtener la base de datos detalles para autenticar al usuario y determinar sus derechos. After authentication the rest should be loaded. Después de autenticación el resto debe ser cargada. This flaw was exploited to get the authentication cookie details which was subsequently used. Esta falla fue aprovechada para obtener los detalles de cookies de autenticación que se utilizó posteriormente. The exact exploit used in this case is hard to find from just server logs. El lugar exacto de explotar utilizado en este caso es difícil de encontrar sólo de registros del servidor. However it was caused by late authentication problem as described above. Sin embargo, fue causado por el retraso en la autenticación problema tal y como se describe más arriba.

There are were known issues with both options.php & upload script, some of which are detailed Hay problemas conocidos fueron con options.php & script de carga, algunos de los cuales se detallan here aquí .

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. Uno de los retos con WordPress es que las consideraciones de seguridad era en su mayor parte una idea de último momento (no dude en desacuerdo) que se cerrada como en WordPress se hizo más y más popular. You have to continuously update your WordPress to keep up with the latest patches. Usted tiene a su continua actualización de WordPress estar al día con los últimos parches.

There are 71 reported security advisories in Secunia (22 reported in 2007) and 9 viruses based on WordPress (one from 2007). No se informó de 71 avisos de seguridad en SECUNIA (22 en 2007) y el 9 de virus basados en WordPress (una de 2007).

Most likely the site was hacked using the cookies authentication vulnerability as detailed Lo más probable es que el sitio fue hackeado utilizando la vulnerabilidad de las cookies de autenticación como se detalla here aquí .

Several WordPress plugins and themes also have security advisories: Varios WordPress plugins y temas también tienen avisos de seguridad:
- AdSense-Deluxe 0.x (plugin for WordPress) -- AdSense-Deluxe 0.x (plugin para WordPress)
- AndyBlue 1.x (theme for WordPress) -- AndyBlue 1.x (tema para WordPress)
- Blix 0.x (theme for WordPress) -- Blix 0.x (tema para WordPress)
- Blixed 1.x (theme for WordPress) -- Blixed 1.x (tema para WordPress)
- BlixKrieg 2.x (theme for WordPress) -- BlixKrieg 2.x (tema para WordPress)
- Blue Memories 1.x (theme for WordPress) -- Blue Memorias 1.x (tema para WordPress)
- myGallery 1.x (plugin for WordPress) -- MyGallery 1.x (plugin para WordPress)
- PictPress 1.x (plugin for WordPress) -- PictPress 1.x (plugin para WordPress)
- Pool 1.x (theme for Wordpress) -- Piscina 1.x (tema para Wordpress)
- Redoable 1.x (theme for WordPress) -- Redoable 1.x (tema para WordPress)

You can read all the Secunia advisories on WordPress Puede leer todas las advertencias sobre SECUNIA WordPress here aquí .

Who was the hacker? Que era el hacker?

The IP address of the user responsible for hacking my site is 217.74.245.85 . La dirección IP del usuario responsables de la piratería de mi sitio es 217.74.245.85. The IP address belongs to KUBANGSM-NET: La dirección IP pertenece a 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 % La información relacionada con'217 .74.245.0/24AS29497 'ruta: 217.74.245.0/24 descr: KUBANGSM-NET origen: AS29497 mnt-by: KUBANGSM-MNT source: RIPE # Filtrado 

It is owned by: Es propiedad de:

 person:       Volkov Denis address:      61, Gimnazicheskaya str. persona: Volkov Denis dirección: 61, Gimnazicheskaya str. 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, Krasnodar, Rusia Teléfono: +7 8612 660126 fax-no: +7 8612 401505 e-mail: @ d.volkov kuban.mts.ru nic-hdl: VD370-RIPE source: RIPE # Filtrado 

Their website is Su página web es http://www.kuban.mts.ru/ . They appear to be legitimate mobile & internet service provider. Ellos parecen ser legítimas móviles y proveedor de servicios de Internet. Most likely their internet service is being abused by the spammer. Lo más probable es que su servicio de Internet está siendo abusada por los spammer. Nevertheless I decided to No obstante he decidido ban this IP address from accessing my server prohibición de esta dirección IP de acceder a mi servidor .

The hacker was most likely using Opera 9.24 browser (almost latest version) on Windows XP (NT 5.1). El hacker es más probable la utilización del navegador Opera 9,24 (casi la última versión) en Windows XP (NT 5.1). While user agent can be faked, there is no reason to suspect so in this case. Aunque agente de usuario puede ser falsa, no hay ninguna razón para sospechar lo que en este caso. The user agent string also shows that he was using the russian language file of Opera. El agente de usuario cadena también muestra que él estaba usando el archivo de idioma ruso de Opera.

Magic Shell de captura Mag

Anatomy of the hacking script Anatomía de la secuencia de comandos de Hacking

The hacking script is a php script with aa nice comment and TODO line: La piratería es un script php script con aa comentario agradable y TODO línea:
/*Magic Include Shell by Mag icq 884888*/ / * Incluir Magic Shell de 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. Efectivamente se trata de un gestor de archivos, probablemente adaptado de cualquiera de los php libre del gestor de ficheros en la red. It allows you to: Esta solución le permite:

  • Browse directories and files Navegar directorios y archivos
  • Edit files Editar archivos
  • Rename files Renombrar archivos
  • Delete files Eliminar archivos
  • zip & unzip files zip y descomprimir archivos
  • Upload & download files & directories Subir y bajar ficheros y directorios
  • Execute arbitrary PHP scripts Ejecuta scripts PHP arbitrario
  • Execute arbitrary shell commands Ejecutar comandos shell arbitrarios
  • Provides basic server, system & PHP information Proporciona básica del servidor, PHP y sistema de información

The bulk of the code is executed when it receives a particular query string to a normal HTTP GET request. La mayor parte del código se ejecuta cuando se recibe una determinada cadena de consulta a la normalidad 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. Así, mientras http://blog.taragana.com/ trabajará como de costumbre, http://blog.taragana.com/?piska233 se abrirá con esta mágica escondida shell que expondrá todo su sitio web fuera a un hacker.
Note: There is nothing magical about piska233. Nota: No hay nada mágico acerca de 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. Se trata de una contraseña que era más probable es que permite que se pueda elegir y teniendo en cuenta como aporte para el guión original que inyectó este caballo de troya en mi sitio.

A trojan which protects itself against worms… Un troyano que se protege contra gusanos…

The trojan takes steps to protect itself against worm! El troyano toma medidas para protegerse contra el gusano! The code at the end which is always executed is: El código al final que es ejecutado siempre es el siguiente:

$post_arr=implode('.',$_POST); $ post_arr = implosión ('.',$_ POST);
$get_arr=implode('.',$_GET); $ get_arr = implosión ('.',$_ GET);
$cook_arr=implode('.',$_COOKIE); $ cook_arr = implosión ('.',$_ COOKIE);
$post_arr_key=implode('.',@array_flip($_POST)); $ post_arr_key = implosión ('.',array_flip ($ _POST));
$get_arr_key=implode('.',@array_flip($_GET)); $ get_arr_key = implosión ('.',array_flip ($ _GET));
$cook_arr_key=implode('.',@array_flip($_COOKIE)); $ cook_arr_key = implosión ('.',array_flip ($ _COOKIE));
$other_shtuki=@file_get_contents('php://input'); $ other_shtuki = @ file_get_contents ( 'php: / / input');
$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 dólares. cook_arr dólares. post_arr_key dólares. get_arr_key dólares. cook_arr_key dólares. other_shtuki dólares);
$wormprotector = array('base64','user_pass','union','select','substring','or id='); $ wormprotector = array ( 'base64', 'user_pass',' unión ',' seleccionar ',' sub ',' o id = ');
$checkworm = str_replace($wormprotector, '*', $cracktrack); $ checkworm = str_replace ($ wormprotector, '*', $ cracktrack);
if ($cracktrack != $checkworm) die(""); if ($ cracktrack! checkworm = $) mueren ("");

It checks for certain keywords (in $wormprotector array) within GET, POST & COOKIE data. Verifica para determinadas palabras clave (en wormprotector $ array) dentro de GET, POST y COOKIE. When they are present it simply aborts. Cuando están presentes simplemente aborta. This is one of the means to detect the current version of the script. Este es uno de los medios para detectar la versión actual del script. This is also the reason why it failed to submit a post. Esta es también la razón por la que no presentó una entrada. An url such as this would also die - http://localhost/wordpress/?select as would http://localhost/wordpress/?base64. Una url de este tipo también mueren - http://localhost/wordpress/?select al igual que http://localhost/wordpress/?base64.
However there is nothing to be happy about. Sin embargo no hay nada para ser feliz. It will take less than a minute to modify the script and make it immune to detection in WordPress. Se tardará menos de un minuto para modificar el guión y hacerla inmune a la detección en WordPress.

How to protect your WordPress site from hacking? Cómo proteger su sitio de WordPress de hacking?

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. Usted puede proteger a su administración guiones (scripts bajo wp-admin), donde se originan la mayoría de los ataques incluida ésta, por restringir el acceso a su administrador de scripts específicos para la dirección IP o rango de direcciones IP. You can also add a basic authentication on top of WordPress by using your httpd.conf file or .htaccess. También puede añadir una autenticación básica en la parte superior de WordPress mediante el uso de su archivo httpd.conf o. Htaccess. This adds a layer of security which any hacker will have to overcome before he gets to your WordPress vulnerabilities. Esto añade una capa de seguridad que cualquier hacker tendrá que superar antes de que llegue a sus vulnerabilidades de WordPress.

WordPress should be upgraded as regularly as possible. WordPress deben ser actualizados regularmente como posible. However that is easier said than done. No obstante que es más fácil decirlo que hacerlo. Normally I prefer to wait a few versions before the new versions stabilize. Normalmente yo prefiero esperar unos versiones antes de las nuevas versiones estabilizar.

WordPress security vulnerabilities affects every one of us, WordPress based bloggers. WordPress vulnerabilidades de seguridad afecta a todos y cada uno de nosotros, basados en WordPress bloggers. 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? Aunque yo era plenamente consciente de las posibilidades, e incluso el pensamiento de escribir un plugin para hacer frente a estas cuestiones antes, he decidido esperar (y abordar las cuestiones más urgentes o así que pensé) apoyándose en la ley de probabilidad para proteger mis sitios, después de todo allí Son varios los millones de blogs de WordPress por ahí, cuánto posibilidades de ser blanco de un hacker? Well, as it turns out, I was wrong. Bueno, como resulta, me he equivocado.
To simplify securing WordPress, I have created a plugin, to be released soon, which leverages these ideas and more to secure your WordPress installations. Para simplificar la obtención de WordPress, he creado un plugin, que se publicará en breve, que aprovecha estas ideas y mucho más para garantizar su WordPress instalaciones. It works with your .htaccess but it also works even when .htaccess facility is not available. Trabaja con tu. Htaccess sino que también funciona incluso cuando. Htaccess instalación no está disponible. I have already started using it on my blogs. Ya he empezado a utilizar en mis blogs.