MySQL写webshell的限制

mysql 5.7新特性:secure_file_priv

作用:用于限制文件的import/export操作。

参考:

  • https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
  • https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_file
  • 关于MySQL注入读写文件的限制

mysql 5.7.16引入。
默认值与平台相关。

  • Windows上, NULL (>= MySQL 5.7.16), ‘’ (< MySQL 5.7.16)
  • Linux(DEB, RPM)上的是:/var/lib/mysql-files

可选值:

  • 1: ‘’,即空字符串,表示没有对文件import/export进行限制;
  • 2: 路径名,表示只能import/export这个目录下的文件;
  • 3: NULL,表示禁用文件import/export操作。

1、由于默认情况下secure_file_priv为"/var/lib/mysql-files",不为"“或者”/",所以不能写入到任意目录;
解决方法:修改mysql配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,将secure_file_priv="/“或者”"添加到最后一行,然后重启。
2、普通用户尝试写文件,碰到错误:

RROR 1045 (28000): Access denied for user 'cqq'@'localhost' (using password: YES)

解决方法:给某用户ALL的权限,或者至少FILE的权限。然后重启mysql客户端(否则不生效)。
查看权限方法:

select file_priv,user,host from mysql.user where user='cqq'; 

或者

show grants for cqq@'localhost';

在这里插入图片描述
在这里插入图片描述
无FILE权限:
在这里插入图片描述
在这里插入图片描述
有FILE权限(或者ALL权限):
在这里插入图片描述
在这里插入图片描述

总结mysql写webshell的限制

  • 1、从可解析webshell的容器角度,知道web绝对路径,且容器可解析上传的文件(php或jsp);
  • 2、mysql应用层面,拿到的用户具有file权限(root用户本身就有);
  • 3、mysql应用层面,mysql没有secure_file_priv权限限制(5.7.16之后默认会限制),或者web目录为secure_file_priv设置的目录范围内;
  • 4、操作系统层面,启动mysqld的用户具有向web目录写文件的权限(如果启动mysqld的用户为root当然可以,不过如果是mysql,而web目录的权限为apache之类的用户则不行);

猜你喜欢

转载自blog.csdn.net/caiqiiqi/article/details/106840955
今日推荐