震惊,用一条命令,将MySQL 5.7.44伪装成5.7.88版本?

图片.png
今天看了公众号"老叶茶馆"的一篇文章《MySQL/GreatSQL 应对安全扫描的绝招》。
文章链接如下:

https://mp.weixin.qq.com/s/a3Vy1qSwQclX2xhdVhgfyw

文章显示可以用sed命令将GreatSQL-8.0.32-26改成GreatSQL-8.0.40-26版本,感觉很不可思议,难道数据库启动时不会校验版本信息吗?
下面我尝试将 MySQL 5.7.44版本改成一个不存在的版本 MySQL 5.7.88版本,可以正常启动数据库,检查版本确实变成了5.7.88。
MySQL 5.7分支最后一个版本就是5.7.44版本,所以根本不存在5.7.88版本。

https://downloads.mysql.com/archives/community/

测试过程如下:
注意:仅供参考,请勿在生产环境执行!

1.检查当前版本

[mysql@cjc-db-01 ~]$ which mysql
/mysqldata/app/5.7.44/bin/mysql

[mysql@cjc-db-01 ~]$ which mysqld
/mysqldata/app/5.7.44/bin/mysqld

[mysql@cjc-db-01 ~]$ mysql -V
mysql  Ver 14.14 Distrib 5.7.44, for el7 (x86_64) using  EditLine wrapper

[mysql@cjc-db-01 ~]$ mysqld -V
mysqld  Ver 5.7.44 for el7 on x86_64 (MySQL Community Server (GPL))

2.启动数据库

[mysql@cjc-db-01 ~]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &

3.通过命令检查版本

[mysql@cjc-db-01 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.44-log MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.44-log |
+------------+
1 row in set (0.00 sec)

4.停库

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

5.备份mysqld文件

[mysql@cjc-db-01 bin]$ pwd
/mysqldata/app/5.7.44/bin
[mysql@cjc-db-01 bin]$ cp mysqld mysqld_5744bak

[mysql@cjc-db-01 bin]$ ls -lrth mysqld*
....
-rwxr-xr-x 1 mysql mysql 241M Oct 11  2023 mysqld
-rwxr-xr-x 1 mysql mysql 241M Jan  3 21:08 mysqld_5744bak

检查mysqld文件中"5.7.44"关键字相关信息

[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.44|wc -l
5600

[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.44|more
5.7.44
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/mysqld.cc
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/rpl_gtid.h
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/binlog.h
....

6.利用 sed 修改替换 MySQL 版本号

[mysql@cjc-db-01 bin]$ cd /mysqldata/app/5.7.44/bin
[mysql@cjc-db-01 bin]$ sed -i 's/5\.7\.44/5.7.88/ig' mysqld

[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.88|more
5.7.88
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/mysqld.cc
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/rpl_gtid.h
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/binlog.h

7.启动数据库

[mysql@cjc-db-01 ~]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &
[2] 8662
[1]   Done                    mysqld --defaults-file=/etc/my.cnf --user=mysql

8.检查版本

检查日志,显示为mysqld 5.7.88-log。

[mysql@cjc-db-01 log]$ tail -10f error.log 
...
2025-01-03T21:14:55.154580+08:00 0 [Note] mysqld (mysqld 5.7.88-log) starting as process 8662 ...
...

mysql客户端还是5.7.44版本

[mysql@cjc-db-01 ~]$ mysql -V
mysql  Ver 14.14 Distrib 5.7.44, for el7 (x86_64) using  EditLine wrapper

mysql服务端显示5.7.88版本

[mysql@cjc-db-01 ~]$ mysqld -V
mysqld  Ver 5.7.88 for el7 on x86_64 (MySQL Community Server (GPL))

登录数据库,执行命令,均显示5.7.88版本

[mysql@cjc-db-01 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.88-log MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.88-log |
+------------+
1 row in set (0.00 sec)

9.测试

可以正常新增和查询数据。

mysql> create table cjc.t0103(id int,name varchar(10));
Query OK, 0 rows affected (0.31 sec)

mysql> insert into cjc.t0103 values(1,'x');
Query OK, 1 row affected (0.38 sec)

mysql> select * from cjc.t0103;
+------+------+
| id   | name |
+------+------+
|    1 | x    |
+------+------+
1 row in set (0.00 sec)

10.回退

停库
mysql> shutdown;
[mysql@cjc-db-01 bin]$ pwd
/mysqldata/app/5.7.44/bin
回退
[mysql@cjc-db-01 bin]$ mv mysqld mysqld_5788bak
[mysql@cjc-db-01 bin]$ mv mysqld_5744bak mysqld
启动数据库
[mysql@cjc-db-01 bin]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &

###chenjuchao 20250103###
欢迎关注我的公众号《IT小Chen》
图片.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值