【问题标题】:Joomla Site Hacked?Joomla 网站被黑?
【发布时间】:2016-01-11 11:29:06
【问题描述】:

我们的 Joomla 网站已经有一段时间没有被我们动过。当我去添加新内容时,我们遇到了以下问题。初始页面显示正常,但每当您单击任何菜单项或链接时,我们都会显示以下俄语文本:

Файл ключевиков keys/sharperdevelopment.com.txt пуст или не существует。 Пропишите туда хотя бы один ключевик。

翻译为:

文件关键字keys / sharperdevelopment.com.txt 为空或不存在。规定至少一个关键字。

有人知道这是黑客问题还是配置问题?网页上的视图源不显示其他 HTML,仅显示上面显示的文本。

我们的 Joomla 版本刚刚升级到:Joomla! 3.4.8 稳定 该网站是SharperDevelopment.com

当然,这发生在我们遇到新的潜在客户之前。任何帮助或建议将不胜感激。

【问题讨论】:

  • 可能恢复到以前已知的良好版本的网站?
  • 不幸的是,负责站点的人从未完全弄清楚如何备份。
  • 针对被黑 Joomla 网站的解决方案:joomla.stackexchange.com/a/2339/120
  • akeeba 备份是备份解决方案之一......akeebabackup.com JED 中列出了其他选项

标签: joomla joomla3.0


【解决方案1】:

如果您的网站在更新之前已被黑客入侵,您需要梳理文件系统以查找已修改和/或添加的文件。

上传 Joomla 3.4.8 的新副本不会解决此问题。

我将假设 linux 因为那是我运行的时候。我管理多个 LAMP 服务器,每个服务器托管多个域。

保存备份并将其标记为受感染。这样做是因为该网站在受感染后仍在运行。

第一件事……

run tail -f path/to/logs/* | grep POST 

您需要查看谁在您的网站上发布了奇怪的文件。 关闭自动换行。 发布到的每个发现都需要进行可视化查看。 joomla 文件以<?php\n 开头,然后是注释标题。如果您看到一串 PHP 代码,则需要将其删除。

这里列出了一些我经常看到的文件。

nnnnnnnnnnnnnnnnn.php
alias.php
article.php
css.php
blog66.php
defines.php < Joomla file that has been modified.
dirs.php
footer4.php
functions14.php
global.php
lib87.php
trust.php
functions.php

/includes/defines.php 不应该是一个长文件。如果你看到 //istart 那么你需要从那时起删除所有内容。

您需要 grep 查找使用 eval 或 GLOBAL 的文件。还应检查 istart。这些命令很可能会输出大量数据,因此将其通过管道传输到 less。

find /home -iname \*.php | xargs pcregrep -M "^<?php.*\n.*fun"
find /home/ -iname \*.php | xargs grep "eval("
find ./ -iname \*.php | xargs grep "globals"

Pipe to less 像这样工作。

find ./ -name \*.php | xargs grep -r "eval(" | less
grep -r "eval(" | less

您将寻找包含类似这样但更长的编码字符串的文件:(发布的代码无效)1ktebHkKHMh7oMftoPA4evcfEoVJs4sUmcTtLCl5Jq0IGoKAUnbzDC1f6C2rJpduyVxvDvRsEztPwSUb6ey73tAVtx8A6BPK+SwyqR/edx3BsfPnmsfbw

很多时候文件将以 eval base64_decode 和 gzuncompress 结尾。

许多合法文件使用 eval 和 base64 解码。如果您看到很长的编码数据块,则很可能是恶意文件。一段时间后,您将能够看到看起来不正确的模式。

有些文件也可能有谷歌机器人的用户代理。我最近一直在看到这个,所以寻找字符串 googlebot

grep 文件也用于以下字符串。

74.125
lnkfarm.pw   # this is an actual host. It has been reported to Interpol

您可以备份您获得的任何文件,并对照 joomla 的 github 存储库检查它们。

https://github.com/joomla/joomla-cms

还要检查 mailq 是否有垃圾邮件机器人导致的延迟邮件,这就是其中许多文件的用途..

我还添加了如下的 iptables 规则来最初停止它。

-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /libraries/joomla/exporter.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /modules/bmvlfj.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /modules/7595mb.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable

可能还有很多其他方法可以搜索恶意文件,但这是我目前使用的方法。

清除所有恶意文件后,进行备份,然后更新所有扩展。之后我会再次检查您的文件并将 Joomla 文件的新副本加载到您的网站上,然后在您的 Web 目录中搜索最旧的文件。

确定一切正常后,更改所有密码并备份。不要在本地存储备份。

【讨论】:

  • 史蒂夫,很好的答案 - 我实际上将使用你的建议对我在受感染站点上拍摄的快照进行一些取证工作 - 你的说明很详细,并给了我一些关于如何进行的额外想法.当网站管理员发现他在 12 月 1 日对 PHP 目录制作的快照时,我们确实设法躲过了一劫——我们大量恢复了这些目录,网站又开始工作了。我现在正在采取额外的步骤来锁定站点并自动执行备份。谢谢你的回答。
  • 很高兴您在这方面取得了一些进展。很头疼,我知道。我使用一个 perl 脚本,防火墙尝试连接到我找到的文件。您也可以尝试使用以下命令在 google 上进行搜索:site:domain.tld
  • 附录:在愉快地恢复一切后,我们认为我们已经解决了问题,但在我们的网站上点击几下后,它很快又重新感染了自己。事实证明,您需要删除除配置文件之外的所有内容,然后从备份中重新加载。我们终于恢复正常运行了,我可以开始执行您上面描述的取证过程。
  • 当您修复活动站点时,有时会发生这种情况。最好将备份加载到另一台服务器上,不要从外部世界访问并在那里修复它,然后进行所有更新。恶意文件被用作僵尸网络的一部分,当其中一个脚本被删除时,有时会重新感染网站。这就是我使用防火墙阻止访问服务器的原因。我有一个使用ngrep 来主动监控流量的脚本。我将他们正在使用的文件添加到其中,并且任何请求该文件的 IP 都被无限期地阻止。它创建了我在答案中输入的iptables 规则。
【解决方案2】:

补充回答,或许对你有帮助:

你的问题:

Joomla 网站被黑了?

尝试Eyesite 扩展。它会拍下你的 J!站点目录树和以后,如果有任何更改,它会通过电子邮件发送给您,直到您协调更改。 (多久一次,这取决于您 - 您使用 cron 设置检查计划。)这样您就可以收到早期警告,尤其是在像您这样的网站上,在很长一段时间内变化最少。

【讨论】:

    【解决方案3】:

    我很好奇你发现了什么?我有一个在 3.4.7 之后开始的 Joomla 3 站点(我认为 .8 在 .7 之后不久就出现了,我认为这可能是一个修复)。我在这里学到的 >>> http://forum.joomla.org/viewtopic.php?f=706&t=902833

    根据这些信息,我关闭了 SEF,网站运行正常(嗯,不好,因为我想使用 SEF)。

    我也担心被黑,但该线程上的其他发帖人似乎认为这是一个托管问题(我们使用的是 BH)。

    【讨论】:

      【解决方案4】:

      更新:看起来有人在我找到解决方案后发帖。

      http://forum.joomla.org/viewtopic.php?f=706&t=902833#p3352730

      这修复了我的网站。干杯!

      【讨论】:

        【解决方案5】:

        如果您运行自己的服务器,您可以使用incrond 实时监控文件更改。您需要编写一个脚本来生成要查看的目录列表:

        PARAM="IN_CREATE,IN_DELETE,IN_MODIFY,IN_MOVED_FROM,IN_MOVED_TO,IN_ATTRIB"
        CMD='/path/to/mail/script file change detected in: $@/$# with event [$%]|Web files changed'
        OUTPUT=/etc/incron.d/www-changes
        WEBROOT=/var/www
        
        # generate config
        find $WEBROOT -type d -print0 | xargs -0 -I{} echo "{} $PARAM $CMD" > $OUTPUT
        

        如果您不block front end access 访问不应浏览的目录,您将受到黑客攻击。以下目录应阻止前端访问:

        bin|cli|components|includes|language|layouts|libraries|logs|plugins|tmp
        

        您还应该在前端可访问目录中禁用脚本的运行:

        images|media|modules|templates
        

        然后您可以使用incrond 监控错误日志以访问被禁止的文件并阻止攻击者。

        I-Blocklist 中的列表与ipset 结合使用也会有所帮助。我block approximately 120,000 abusive ip's in a fraction of a secondblock tor nodes也有用。

        如果您使用 ipset,您应该将阻止规则放在 iptables raw 表中以获得更好的性能,而不是像许多指南错误显示的 inputoutput 表。

        Hiawatha Webserver 作为网络服务器或反向代理运行也会阻止很多攻击。

        您的/var/www 应挂载noexec,nosuid,以防止攻击者运行他们设法上传的脚本。

        使用php-fpm 中的chroot 功能来限制攻击者可用的文件。要在chroot 运行中查找dns 分辨率所需的文件列表:

        strace php /path/to/file-below
        
        <?php
        header( "Content-Type: text/plain" );
        echo( gethostbyname( "google.com" )."\n" );
        print_r( getdate() );
        ?>
        

        【讨论】:

          猜你喜欢
          • 2017-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-06
          • 1970-01-01
          • 2012-03-23
          • 2014-01-06
          相关资源
          最近更新 更多