select version();" 2. Démarrez le service MySQL et ajoutez une politique de pare-feu 3. Sauvegardez le fichier " ; mysqld.bak"; 4. Ouvrez le fichier "/usr/sbin/mysqld" et remplacez-y les informations de version."/> select version();" 2. Démarrez le service MySQL et ajoutez une politique de pare-feu 3. Sauvegardez le fichier " ; mysqld.bak"; 4. Ouvrez le fichier "/usr/sbin/mysqld" et remplacez-y les informations de version.">

Maison  >  Article  >  base de données  >  Comment masquer la version MySQL

Comment masquer la version MySQL

藏色散人
藏色散人original
2023-02-14 10:08:473692parcourir

Méthodes pour masquer la version de MySQL : 1. Vérifiez la version actuelle de MySQL via la commande "mysql -uroot -p> select version();" 2. Démarrez le service MySQL et ajoutez une politique de pare-feu ; fichier « mysqld.bak » ; 4. Ouvrez le fichier « /usr/sbin/mysqld » et remplacez-y les informations de version.

Comment masquer la version MySQL

L'environnement d'exploitation de ce tutoriel : système CentOS 7.6, MySQL version 5.7, ordinateur Dell G3.

Masquer les informations sur la version réelle de MySQL/MariaDB

Dans le projet, la partie A a effectué une analyse de sécurité sur le serveur et a découvert qu'il existait de nombreuses vulnérabilités de la version basse de MySQL et a nécessité leur réparation. Cependant, compte tenu de l'impact sur l'entreprise, il n'est pas pratique de mettre à niveau directement la version actuelle, et notre entreprise est déployée dans un environnement intranet et dispose de restrictions d'accès au réseau, de sorte que les risques de sécurité réels sont relativement faibles. Ici, nous essayons de trouver d'autres moyens de le contourner, c'est-à-dire de modifier le numéro de version de MySQL et de masquer ses véritables informations de version.
Le processus de test est enregistré comme suit, Opérations à risque, à titre de référence uniquement.

Détecter les informations de version MySQL/MariaDB

Il existe de nombreuses façons de vérifier la version actuelle, les plus courantes sont :

  • Exécuter sur le serveurmysql -V
  • Connectez-vous à MySQL et utilisez la requête d'instruction SQL
mysql -uroot -p> select version();

Sans autorisations de connexion, vous pouvez également utiliser les outils telnet ou nmap pour la détection et l'analyse afin d'obtenir les informations de version de MySQL :

  • telnet
telnet [host] [port]
  • nmap
nmap -T4 -sC -sV -p [port] [ip]

Masquer les informations sur la version réelle de MySQL

Environnement de test

Numéro de série Nom Version Remarques
1 Système d'exploitation Linux CentOS 7.6 IP 192. 168.64.147
2 Base de données MySQL 5.7.22 rpm Installation

安装过程

  1. 下载安装 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

Comment masquer la version MySQL
Comment masquer la version MySQL
Comment masquer la version MySQL
2. 开启 MySQL 服务,添加防火墙策略

systemctl start mysqld && systemctl status mysqld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all

Comment masquer la version MySQL
3. 设置密码

passwd=`grep 'password' /var/log/mysqld.log|awk '{print $NF}'`mysqladmin -u root -p$passwd password Aa123456.

Comment masquer la version MySQL
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;

Comment masquer la version MySQL
5. 查看当前版本

mysql> select version();mysql> \q
mysql -V

Comment masquer la version MySQL

版本信息探测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Comment masquer la version MySQL

修改版本信息

  1. 备份文件
cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/sbin/mysqld /usr/sbin/mysqld.bak

Comment masquer la version MySQL
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

Comment masquer la version MySQL
Comment masquer la version MySQL
Comment masquer la version MySQL

vi /usr/sbin/mysqld
# 搜索关键字“--language”快速定位,修改版本号,建议改为官网最新的稳定版本
H^P1öéz¬,ÿ1Òëõ^@^@Hì^HHÄ^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^P1öéz¬,ÿ1Òëõ^@^@Hì^HHÄ^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)

Comment masquer la version MySQL
Comment masquer la version MySQL
Comment masquer la version MySQL
3. 重启服务

systemctl restart mysqld
systemctl status mysqldnetstat -nplt |grep mysqld

Comment masquer la version MySQL
4. 确认版本

mysql -V
mysql -h 192.168.64.147 -uroot -pAa123456.
mysql> select version();mysql> \q

Comment masquer la version MySQL
5. 其他业务相关的测试

版本信息复测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Comment masquer la version MySQL

隐藏MariaDB真实版本信息

测试环境

序号 名称 版本 备注
1 Linux操作系统 CentOS 7.6 IP:192.168.64.147
2 MariaDB数据库 5.5.68 rpm安装

安装过程

  1. yum安装
yum -y install mariadb-server telnet nmap net-tools

Comment masquer la version MySQL
2. 开启 MySQL 服务,添加防火墙策略

systemctl start mariadb && systemctl status mariadb
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all

Comment masquer la version MySQL
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;

Comment masquer la version MySQL
Comment masquer la version MySQL
4. 查看当前版本

MariaDB [mysql]> select version();MariaDB [mysql]> \q
mysql -V

Comment masquer la version MySQL

版本信息探测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Comment masquer la version MySQL

修改版本信息

  1. 备份文件
cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/libexec/mysqld /usr/libexec/mysqld.bak

Comment masquer la version MySQL
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

Comment masquer la version MySQL
Comment masquer la version MySQL
Comment masquer la version MySQL

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)

Comment masquer la version MySQL
Comment masquer la version MySQL
3. 重启服务

systemctl restart mariadb
systemctl status mariadbnetstat -nplt |grep mysqld

Comment masquer la version MySQL
4. 确认版本

mysql -V
mysql -h 192.168.64.147 -uroot -pAa123456.
MariaDB [(none)]> select version();MariaDB [(none)]> \q

Comment masquer la version MySQL
5. 其他业务相关的测试

版本信息复测

为防止探测过程中出现错误连接次数太多导致IP被锁定,建议先提高允许的max_connection_errors数量;
或使用清楚缓存的方法,把计数清理掉

mysql -h 127.0.0.1 -uroot
MariaDB [(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

Comment masquer la version MySQL
复测结果

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Comment masquer la version MySQL

推荐学习:《MySQL视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn