Joomla网站被黑了?

时间:2016-01-11 11:29:07

标签: joomla joomla3.0

我们的Joomla网站暂时没有被我们接触过。当我去添加新内容时,我们遇到以下问题。初始页面显示正常,但无论何时单击任何菜单项或链接,我们都会显示以下俄语文本:

Файлключевиков键/sharperdevelopment.com.txtпустилинесуществует。更多信息来自ключевик。

转换为:

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

有没有人知道这是黑客问题还是配置问题?网页上的查看源只显示上面显示的文本的其他HTML。

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

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

5 个答案:

答案 0 :(得分:3)

如果您的网站在更新之前被黑客攻击,则需要在文件系统中梳理已修改和/或添加的文件。

上传Joomla 3.4.8的新副本无法解决此问题。

我将假设l​​inux,因为那是我跑的时候。我管理多个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也应该被检查。这些命令很可能会输出大量数据,因此将其输入较少的数据。

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

管道以减少这样的工作。

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

您将查找包含此类编码字符串但更长的文件:(已发布的代码无效)1ktebHkKHMh7oMftoPA4evcfooVJs4sUmcTtLCl5Jq0IGoKAUnbzDC1f6C2rJpduyVxvDvRsEztPwSUb6ey73tAVtx8A6BPK + SwyqR / edx3BsfPnmsfbwCFG2kYk

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

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

某些文件也可能包含Google漫游器的用户代理。我最近一直在看这个,所以寻找字符串googlebot

以下字符串的grep文件。

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

您可以对所有文件进行备份,并根据joomla的github repo进行检查。

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文件副本加载到你的网站上,然后搜索你网页目录中最旧的文件。

确定一切都干净后,请更改所有密码和备份。不要在本地存储备份。

答案 1 :(得分:0)

补充答案,也许对您有所帮助:

你的问题:

  

Joomla网站被黑了?

尝试Eyesite扩展程序。它需要你的J的快照!站点目录树以及稍后,如果有任何更改,它将通过电子邮件发送给您,直到您协调更改为止。 (通常,这取决于您 - 您使用ls /home/*/public_html | xargs grep "stringToFind" 设置了支票计划。)这样您就可以收到预警,特别是在像您这样的网站上,这些网站在很长一段时间内的变化最小。

答案 2 :(得分:0)

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

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

我也担心被黑客入侵,但该线程上的其他海报似乎认为这是托管问题(我们正在使用BH)。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

如果您运行自己的服务器,则可以使用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监控错误日志,以访问禁用的文件&amp;阻止攻击者。

使用I-Blocklistipset的列表也会有所帮助。我block approximately 120,000 abusive ip's in a fraction of a second。它对block tor nodes也很有用。

如果您使用ipset,则应将阻止规则放在iptables raw表中,以获得更好的性能和效果。不是input&amp;许多指南错误地显示output个表格。

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

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

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

strace php /path/to/file-below

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