记一次项目上线后mysql被攻击事件

318 阅读3分钟

在项目上线后时隔一段时间想登陆后台管理系统查看一下用户系统的使用情况,结果发现卡在登陆界面登陆不进去,


查看tomcat日志

cd /usr/local/apache-tomcat-8.5.43/logs
tail -f catalina.out


果然是数据库的问题,尝试使用账号密码登陆,结果爆出1045错误


然而密码我是不可能记错的,会不会是服务没有启动呢?


查看之后发现mysql服务处于正常启动状态,说明不是mysql服务的问题,那么就很有可能是有人篡改了我的mysql密码

因为项目上线后我并没有第一时间关掉方便开发的远程访问权限,所以使用navicat的连接测试来验证我的猜想:


这里可以看到远程连接提示错误的IP地址为一外网IP,那么我的猜想应该八九不离十了,接下

来采取解救方案:

1.找到my.cnf配置文件,设置为免密码登陆;



2.进入mysql表


3.查询user表,并删除'root'@'%'用户(或者所有host为'%'的用户)


4.修改密码

set password=password("123456") where user="root";

我使用这条sql语句修改密码时无法执行,查看后发现我的mysql.user表完全没有password这个字段


应该用的sql语句应该是这个,推测‘authentication_string’才是官配的密码字段

update mysql.user set authentication_string=password('123456') where user='root'; 

(PS:原谅我先用root 123456撑一下,等问题解决完我一定把密码改复杂,此次被黑除了没关闭远程访问权限,密码强度弱应该也是原因之一)

5.改回my.cnf配置文件,重启mysql服务,重新登陆


ok,这下就可以正常访问了,但是!

我访问网站的时候,又突然报错,提示我数据库表缺失,惊了!

又回过头查询数据库表:

我敲!我的数据库表呢?咋就剩一个WARNING了呢?正经被黑了呗?

查询一下WARNING表中的信息:


然而黑客并没有留下他的比特币账号,可能是觉得我们的测试数据都少得可怜,没有勒索的价值,也有可能是一位新晋的HackNet玩家前来练手


我重新导入了一份备份数据库表,暂时修复了这次黑客攻击带来的问题,或许是时候把网络安全和防护提上学习日程了。

这次黑客攻击事件没有造成较大的影响,根本原因是项目还在测试阶段,服务器上没有真实数据,网络防护像纸糊的一样,相当于一点没有。


但经过本次修复,我们在以后的开发和部署上线中,应该注意以下最基本的安全知识:

1.数据库的密码绝对不能用123456;

2.项目部署上线后一定要删除所有host=‘%’的用户,如果有必要保留的话,也应将%用户的权限设置为只读;

3.相对应的,为了远程访问权限而打开的防火墙端口和安全组,也应做对应的修改;