您好,欢迎访问一九零五行业门户网

怎么隐藏mysql版本

隐藏mysql版本的方法:1、通过“mysql -uroot -p> select version();”命令查看当前mysql 版本;2、开启mysql服务,添加防火墙策略;3、备份文件“mysqld.bak”;4、打开“/usr/sbin/mysqld”文件,并替换其中的版本信息即可。
本教程操作环境:centos 7.6系统、mysql5.7版本、dell g3电脑。
隐藏mysql/mariadb真实版本信息项目中,甲方对服务器做安全扫描,发现存在较多 mysql 低版本漏洞,并要求修复。但考虑到业务的影响,不方便直接对当前版本做升级,且我们业务部署在内网环境,也做了网络访问限制,因此实际安全隐患较小。这里尝试寻找其他的方法进行规避,即修改 mysql 的版本号,隐藏其真实的版本信息。
测试过程记录如下,风险操作,仅供参考。
探测mysql/mariadb版本信息查看当前版本的方法有很多,常见的有:
服务器上执行 mysql -v登录mysql,使用sql语句查询mysql -uroot -p> select version();
没有登录权限的情况下,还可以使用 telnet 或 nmap 工具进行探测扫描,得到 mysql 的版本信息:
telnettelnet [host] [port]
nmapnmap -t4 -sc -sv -p [port] [ip]
隐藏mysql真实版本信息测试环境序号名称版本备注
1 linux操作系统 centos 7.6 ip:192.168.64.147
2 mysql数据库 5.7.22 rpm安装
安装过程下载安装 rpm 包yum -y install wget telnet nmap net-toolswget -p /opt/mysql https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tartar -xf /opt/mysql/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar -c /opt/mysqlcd /opt/mysqlls -lh /opt/mysql/yum -y remove mariadb*yum -y install \  mysql-community-common-5.7.22-1.el7.x86_64.rpm \  mysql-community-libs-5.7.22-1.el7.x86_64.rpm \  mysql-community-client-5.7.22-1.el7.x86_64.rpm \  mysql-community-server-5.7.22-1.el7.x86_64.rpm
2. 开启 mysql 服务,添加防火墙策略
systemctl start mysqld && systemctl status mysqldfirewall-cmd --permanent --add-port=3306/tcpfirewall-cmd --reloadfirewall-cmd --list-all
3. 设置密码
passwd=`grep 'password' /var/log/mysqld.log|awk '{print $nf}'`mysqladmin -u root -p$passwd password aa123456.
4. 设置远程连接
mysql -uroot -paa123456.mysql> use mysql;mysql> select user,host from user;mysql> update user set host='%' where user='root';mysql> flush privileges;mysql> select user,host from user;
5. 查看当前版本
mysql> select version();mysql> \qmysql -v
版本信息探测telnet 192.168.64.147 3306nmap -t4 -sc -sv -p 3306 192.168.64.147



修改版本信息备份文件cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/sbin/mysqld /usr/sbin/mysqld.bak
2. 编辑二进制文件,替换其中的版本信息
如果只想对外部探测 mysql 的真实版本信息进行隐藏,只需改 /usr/sbin/mysqld 文件。
❗️❗️❗️注意:版本号不可为空或删减其他信息,否则可能导致服务无法启用!
vi /usr/bin/mysql# 搜索关键字“linux”快速定位,修改版本号,建议改为官网最新的稳定版本^@fwrite^@\0^@\t^@\n^@\\^@error^@ %d (%s)^@ at line %lu^@ in file: '%s'^@error %d (%s): ^@error %d: ^@error: ^@unknown user^@mysqlclient^@logname^@login^@sudo_user^@linux^@5.7.22^@x86_64^@show warnings enabled.^@show warnings disabled.^@aborted^@bye^@writing history-file %s# 参考案例:^@fwrite^@\0^@\t^@\n^@\\^@error^@ %d (%s)^@ at line %lu^@ in file: '%s'^@error %d (%s): ^@error %d: ^@error: ^@unknown user^@mysqlclient^@logname^@login^@sudo_user^@linux^@5.7.37^@x86_64^@show warnings enabled.^@show warnings disabled.^@aborted^@bye^@writing history-file %s
vi /usr/sbin/mysqld# 搜索关键字“--language”快速定位,修改版本号,建议改为官网最新的稳定版本h<8b>^p1öéz¬,ÿ1òëõ^@^@h<83>ì^hh<83>ä^hã^@^@^@^@^@^@^@^@^@^@^@^a^@^b^@^@^@^@^@^@^@^@^@^@^@^@^@%s: %s^@mysql_audit_general_error^@off^@both^@no_auto_clear^@no_internal_lookup^@unknown^@tcp^@mysql_tcp_port^@/var/lib/mysql/mysql.sock^@mysql_unix_port^@unable to delete pid file: %s^@%.3f^@.lower-test^@.lower-test^@can't create test file %s^@shutting down slave threads^@'--lc-messages-dir'^@--language/-l^@--binlog_max_flush_queue_time^@5.7.22^@linux^@%s  ver %s for %s on %s (%s)# 参考案例:h<8b>^p1öéz¬,ÿ1òëõ^@^@h<83>ì^hh<83>ä^hã^@^@^@^@^@^@^@^@^@^@^@^a^@^b^@^@^@^@^@^@^@^@^@^@^@^@^@%s: %s^@mysql_audit_general_error^@off^@both^@no_auto_clear^@no_internal_lookup^@unknown^@tcp^@mysql_tcp_port^@/var/lib/mysql/mysql.sock^@mysql_unix_port^@unable to delete pid file: %s^@%.3f^@.lower-test^@.lower-test^@can't create test file %s^@shutting down slave threads^@'--lc-messages-dir'^@--language/-l^@--binlog_max_flush_queue_time^@5.7.37^@linux^@%s  ver %s for %s on %s (%s)
3. 重启服务
systemctl restart mysqldsystemctl status mysqldnetstat -nplt |grep mysqld
4. 确认版本
mysql -vmysql -h 192.168.64.147 -uroot -paa123456.mysql> select version();mysql> \q
5. 其他业务相关的测试
版本信息复测telnet 192.168.64.147 3306nmap -t4 -sc -sv -p 3306 192.168.64.147



隐藏mariadb真实版本信息测试环境序号名称版本备注
1 linux操作系统 centos 7.6 ip:192.168.64.147
2 mariadb数据库 5.5.68 rpm安装
安装过程yum安装yum -y install mariadb-server telnet nmap net-tools
2. 开启 mysql 服务,添加防火墙策略
systemctl start mariadb && systemctl status mariadbfirewall-cmd --permanent --add-port=3306/tcpfirewall-cmd --reloadfirewall-cmd --list-all
3. 设置密码和远程连接
mysqladmin -u root password aa123456.mysql -uroot -paa123456.mariadb [(none)]> use mysql;mariadb [mysql]> select user,host from user;mariadb [mysql]> update user set host='%' where user='root';mariadb [mysql]> flush privileges;mariadb [mysql]> select user,host from user;
4. 查看当前版本
mariadb [mysql]> select version();mariadb [mysql]> \qmysql -v
版本信息探测telnet 192.168.64.147 3306nmap -t4 -sc -sv -p 3306 192.168.64.147



修改版本信息备份文件cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/libexec/mysqld /usr/libexec/mysqld.bak
2. 编辑二进制文件,替换其中的版本信息
如果只想对外部探测 mariadb 的真实版本信息进行隐藏,只需改 /usr/libexec/mysqld 文件。
❗️❗️❗️注意:版本号不可为空或删减其他信息,否则可能导致服务无法启用!
vi /usr/bin/mysql# 搜索关键字“-mariadb”快速定位,修改版本号,建议改为官网最新的稳定版本^@kill %s%lu^@error^@ at line %lu^@ in file: '%s'^@error %d (%s)^@error %d^@linux^@5.5.68-mariadb^@readline^@x86_64^@vi^@editor^@visual^@command '%.40s' failed^@show warnings disabled.^@show warnings enabled.^@usage: \! shell-command^@charset changed^@charset is not found^@show databases^@show tables^@%.64s.%.64s^@*** none ***^@connection id:    %lu^@current database: %.128s# 参考案例:^@kill %s%lu^@error^@ at line %lu^@ in file: '%s'^@error %d (%s)^@error %d^@linux^@10.7.3-mariadb^@readline^@x86_64^@vi^@editor^@visual^@command '%.40s' failed^@show warnings disabled.^@show warnings enabled.^@usage: \! shell-command^@charset changed^@charset is not found^@show databases^@show tables^@%.64s.%.64s^@*** none ***^@connection id:    %lu^@current database: %.128s
vi /usr/libexec/mysqld # 同样通过搜索关键字“-mariadb”快速定位,修改版本号,建议改为官网最新的稳定版本^@close_connection^@unauthenticated^@unconnected^@error in accept^@5.5.68-mariadb^@x86_64^@linux^@%s  ver %s for %s on %s (%s)# 参考案例:^@close_connection^@unauthenticated^@unconnected^@error in accept^@10.7.3-mariadb^@x86_64^@linux^@%s  ver %s for %s on %s (%s)
3. 重启服务
systemctl restart mariadbsystemctl status mariadbnetstat -nplt |grep mysqld
4. 确认版本
mysql -vmysql -h 192.168.64.147 -uroot -paa123456.mariadb [(none)]> select version();mariadb [(none)]> \q
5. 其他业务相关的测试
版本信息复测为防止探测过程中出现错误连接次数太多导致ip被锁定,建议先提高允许的max_connection_errors数量;
或使用清楚缓存的方法,把计数清理掉
mysql -h 127.0.0.1 -urootmariadb [(none)]> show global variables like '%max_connect_errors%';mariadb [(none)]> set global max_connect_errors=1000;mariadb [(none)]> show global variables like '%max_connect_errors%';mariadb [(none)]> flush hosts;mariadb [(none)]> \q
复测结果
telnet 192.168.64.147 3306nmap -t4 -sc -sv -p 3306 192.168.64.147



推荐学习:《mysql视频教程》
以上就是怎么隐藏mysql版本的详细内容。
其它类似信息

推荐信息