IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Blog站点被黑以及问题解决过程

    bigwhite发表于 2015-04-12 01:35:35
    love 0

    记得前些日子,我在Blog评论里发现有人说我的Blog站点被黑:

    "YOUR SITE HAS BEEN HACKED – THERE ARE PARASITE PAGES IN http://tonybai.com/dl SECURE YOUR SITE!!!"

    粗浅检查了一番,没有发现什么异常,也就没把这事当回事儿。

    昨天上Gmail(由于需要搭梯子,不经常登录),发现一位网友发来mail说我的站点被入侵了,还附上了google search结果的截图:

    接着我也发现了google webmaster发来的mail,同样是警告我的博客站点被黑,并给出了两个可疑URL:

    http://tonybai.com/dl

    http://tonybai.com/dl/call-of-duty-4-modern-warfare-crack-download-tpb.html

    我自己访问了一下上述URL,我靠!果然被黑了。

    以前blog站点无论是搭建在dreamhost上还是朋友的主机上时都未出现过被黑的情况,这次在DO上居然被黑,之前没有解决类似问题的经验,这次只能从头摸索。

    看了几篇解决wordpress被黑问题的文章,都推荐先安装几个安全插件对site进行扫描,于是我就试了两个:iThemes Security和Wordfence Security。前者似乎有问题,安装后,dashboard页一片空白。Wordfence Security还好,只是每次scan都无法finish,也就无法得到到底哪些wordpress文件被感染的结果。

    插件不可靠,只能自己“手工”解决了。

    首先到server上利用find , ls等命令对比时间,发现是否有哪些文件的最近访问时间戳与其他文件有差异。不过search了半天,也没发现半点痕迹。

    网上还推荐用文件比对工具,比对现在的wordpress文件与backup的文件异同。多亏有backup插件的备份包,于是下载了20150326和20150409的backup zip,使用beyond compare进行目录比对。不比不知道,一比吓一跳啊:index.php文件时间戳相同,但内容居然不同。

    0409中的index.php的头部居然多了一段代码:

    ….

    ….

    ($CdFxbnu0g($nGXNegRe($dvXZv9($cDjofDA))));?>

    显然这就是入侵代码了。删除这段代码,重启apache2,试试再访问以下上述那两个URL。结果是令人悲伤的,页面居然还能正常打开和显示。我第一时间想到的是浏览器和apache2的缓存。

    强制刷新brower,无用。

    查找apache2关于Cache的配置,发现一个:/etc/apache2/mods-available/cache_disk.conf

    其内容:

    # cache cleaning is done by htcacheclean, which can be configured in
    # /etc/default/apache2
    #
    # For further information, see the comments in that file,
    # /usr/share/doc/apache2/README.Debian, and the htcacheclean(8)
    # man page.

    # This path must be the same as the one in /etc/default/apache2
    CacheRoot /var/cache/apache2/mod_cache_disk

    # This will also cache local documents. It usually makes more sense to
    # put this into the configuration for just one virtual host.
    #CacheEnable disk /

    # The result of CacheDirLevels * CacheDirLength must not be higher than
    # 20. Moreover, pay attention on file system limits. Some file systems
    # do not support more than a certain number of inodes and
    # subdirectories (e.g. 32000 for ext3)
    CacheDirLevels 2
    CacheDirLength 1

    查看CacheRoot,发现/var/cache/apache2/mod_cache_disk下是空的。显然并未缓存。

    难道还有其他位置为hacked了?难道0326的backup也是被hack过的?

    于是我翻箱倒柜,在电脑里发现了20150101的backup,用这个Backup和0409又对比了一次,这回发现了另外一个被hack的文件:.htaccess。

    .htaccess中多了这么一行代码:
    RewriteRule ^dl/(.*)$ wp-add.php [L]

    原来入侵的人或程序总共在我的主机上做了多处修改,这里总结一下:

    1、.htaccess中增加一行规则
    2、添加wp-add.php
    3、修改了index.php
    4、修改了wp-includes/theme-compat/header.php
    5、修改了wp-content/themes/xx/header.php和footer.php

    我ls了一下0409下的文件:

    -rw-r–r– 1 tony staff 4343 11 28 04:01 wp-activate.php
    -rw-r–r– 1 tony staff 1991 11 28 04:01 wp-add.php
    drwxr-xr-x 89 tony staff 3026 4 9 11:00 wp-admin/
    -rw-r–r– 1 tony staff 40243 11 28 04:01 wp-app.php

    可以看出入侵代码在添加文件之后,对文件时间做了调整,让简单的时间戳对比无法揪出这个罪魁。

    去除以上入侵代码后,上述可以网址就无法访问了。

    在google webmaster提交request,期望google 早日将搜索结果中的"此网站可能遭到黑客入侵"标签去掉。

    之后将密码修改了一遍,希望后续能免疫。

    后记:
    根据朋友建议,将blog的文件用git管理起来,并push到bitbucket的private repository中,这样一旦再被hack,恢复起来也较为方便。
    步骤如下:
    1、在/var/www目录下git init
    2、git add ./
    3、git commit -m”initial import” ./
    4、git remote add origin https://user@bitbucket.org/user/blog.git
    5、git push origin master

    © 2015, bigwhite. 版权所有.



沪ICP备19023445号-2号
友情链接