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之類的用戶則不行);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章