select version();" 명령을 통해 현재 mysql 버전을 확인합니다. 2. MySQL 서비스를 시작하고 방화벽 정책을 추가합니다. 4. "/usr/sbin/mysqld" 파일을 열고 파일의 버전 정보를 바꿉니다."/> select version();" 명령을 통해 현재 mysql 버전을 확인합니다. 2. MySQL 서비스를 시작하고 방화벽 정책을 추가합니다. 4. "/usr/sbin/mysqld" 파일을 열고 파일의 버전 정보를 바꿉니다.">

>데이터 베이스 >MySQL 튜토리얼 >MySQL 버전을 숨기는 방법

MySQL 버전을 숨기는 방법

藏色散人
藏色散人원래의
2023-02-14 10:08:473801검색

mysql 버전을 숨기는 방법: 1. "mysql -uroot -p> select version();" 명령을 통해 현재 mysql 버전을 확인합니다. 2. MySQL 서비스를 시작하고 방화벽 정책을 추가합니다. 4. "/usr/sbin/mysqld" 파일을 열고 파일의 버전 정보를 바꿉니다.

MySQL 버전을 숨기는 방법

이 튜토리얼의 운영 환경: CentOS 7.6 시스템, MySQL 버전 5.7, Dell G3 컴퓨터.

MySQL/MariaDB 실제 버전 정보 숨기기

프로젝트에서 당사자 A는 서버에 대한 보안 스캔을 실시한 결과 MySQL 하위 버전 취약점이 많이 발견되어 복구를 요구했습니다. 하지만 비즈니스에 미치는 영향을 고려하면 현재 버전을 직접 업그레이드하는 것은 불편하고, 우리 비즈니스는 인트라넷 환경에 배포되고 네트워크 접근 제한이 있기 때문에 실제 보안 위험은 상대적으로 적습니다. 여기에서는 이를 우회하는 다른 방법, 즉 MySQL 버전 번호를 수정하고 실제 버전 정보를 숨기는 방법을 찾으려고 합니다.
테스트 프로세스는 위험 운영, 참고용으로만으로 기록됩니다.

MySQL/MariaDB 버전 정보 감지

현재 버전을 확인하는 방법은 여러 가지가 있으며, 일반적인 방법은 다음과 같습니다.

  • 서버에서 실행mysql -V
  • mysql에 로그인하고 SQL 문 쿼리를 사용하세요
mysql -uroot -p> select version();

Without 로그인 권한이 있으면 telnet 또는 nmap 도구를 사용하여 탐지 및 검색하여 mysql의 버전 정보를 얻을 수도 있습니다.

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

MySQL 실제 버전 정보 숨기기

테스트 환경

일련 번호 이름 Version Remarks
1 Linux 운영 체제 CentOS 7.6 IP: 192. 168.64.147
2 MySQL 데이터베이스 5.7.22 rpm 설치

安装过程

  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

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
2. 开启 MySQL 服务,添加防火墙策略

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

MySQL 버전을 숨기는 방법
3. 设置密码

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

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;

MySQL 버전을 숨기는 방법
5. 查看当前版本

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

MySQL 버전을 숨기는 방법

版本信息探测

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

MySQL 버전을 숨기는 방법

修改版本信息

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

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

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
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)

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
3. 重启服务

systemctl restart mysqld
systemctl status mysqldnetstat -nplt |grep mysqld

MySQL 버전을 숨기는 방법
4. 确认版本

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

MySQL 버전을 숨기는 방법
5. 其他业务相关的测试

版本信息复测

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

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

MySQL 버전을 숨기는 방법
2. 开启 MySQL 服务,添加防火墙策略

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

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;

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
4. 查看当前版本

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

MySQL 버전을 숨기는 방법

版本信息探测

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

MySQL 버전을 숨기는 방법

修改版本信息

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

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

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
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)

MySQL 버전을 숨기는 방법
MySQL 버전을 숨기는 방법
3. 重启服务

systemctl restart mariadb
systemctl status mariadbnetstat -nplt |grep mysqld

MySQL 버전을 숨기는 방법
4. 确认版本

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

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

MySQL 버전을 숨기는 방법
复测结果

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

MySQL 버전을 숨기는 방법

推荐学习:《MySQL视频教程

위 내용은 MySQL 버전을 숨기는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.