本文目錄一覽:
mysql 許可權設置
背景
在了解動態許可權之前,我們先回顧下 MySQL 的許可權列表。
許可權列表大體分為服務級別和表級別,列級別以及大而廣的角色(也是MySQL 8.0 新增)存儲程序等許可權。我們看到有一個特殊的 SUPER 許可權,可以做好多個操作。比如 SET 變數,在從機重新指定相關主機信息以及清理二進位日誌等。那這裡可以看到,SUPER 有點太過強大,導致了僅僅想實現子許可權變得十分困難,比如用戶只能 SET 變數,其他的都不想要。那麼 MySQL 8.0 之前沒法實現,許可權的細分不夠明確,容易讓非法用戶鑽空子。
那麼 MySQL 8.0 把許可權細分為靜態許可權和動態許可權,下面我畫了兩張詳細的區分圖,圖 1 為靜態許可權,圖 2 為動態許可權。
圖 1- MySQL 靜態許可權的許可權管理圖
圖 2-動態許可權圖
那我們看到其實動態許可權就是對 SUPER 許可權的細分。 SUPER 許可權在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 ‘ytt2@localhost’, 有 SUPER 許可權。
mysql show grants for ytt2@’localhost’;+———————————————————————————+| Grants for ytt2@localhost |+———————————————————————————+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+———————————————————————————+1 row in set (0.00 sec)
但是現在我只想這個用戶有 SUPER 的子集,設置變數的許可權。那麼單獨給這個用戶賦予兩個能設置系統變數的動態許可權,完了把 SUPER 給拿掉。
mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@’localhost’;Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@’localhost’;Query OK, 0 rows affected, 1 warning (0.02 sec)
我們看到這個 WARNINGS 提示 SUPER 已經廢棄了。
mysql show warnings;
+———+——+———————————————-+
| Level | Code | Message |
+———+——+———————————————-+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+———+——+———————————————-+
1 row in set (0.00 sec)`
mysql show grants for ytt2@’localhost’;
+———————————————————————————–+
| Grants for ytt2@localhost |
+———————————————————————————–+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost |
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+———————————————————————————–+
2 rows in set (0.00 sec)
當然圖 2 上還有其它的動態許可權,這裡就不做特別說明了。
怎麼給mysql用戶File許可權
查看MySQL用戶許可權:
show grants for 你的用戶比如:
show grants for root@’localhost’;Grant 用法GRANT USAGE ON *.* TO ‘discuz’@’localhost’ IDENTIFIED BY PASSWORD ‘*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB’;
GRANT ALL PRIVILEGES ON `discuz`.* TO ‘discuz’@’localhost’;
我先按我的理解解釋一下上面兩句的意思
建立一個只可以在本地登陸的 不能操作的用用戶名 discuz 密碼為 ***** 已經加密了的
然後第二句的意思是 ,給這個discuz用戶操作discuz資料庫的所有許可權使用GRANTGRANT命令用來建立新用戶,指定用戶口令並增加用戶許可權。其格式如下:
mysql GRANT privileges ON what
– TO user [IDENTIFIED BY password]
– [WITH GRANT OPTION];
正如你看到的源碼天空
,在這個命令中有許多待填的內容。讓我們逐一地對它們進行介紹,並最終給出一些例子以讓你對它們的協同工作有一個了解。
privileges是一個用逗號分隔的你想要賦予的MySQL用戶許可權的列表。你可以指定的許可權可以分為三種類型:
資料庫/數據表/數據列許可權: Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的資料庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或資料庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。
全局管理MySQL用戶許可權:
file: 在MySQL伺服器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
特別的許可權:
ALL: 允許做任何事(和root一樣)。
MYSQL提權(LINUX)
select @@global.secure_file_priv;
查看MySQL伺服器的文件讀寫許可權
如果是NULL就是完全禁止
udf提權用到的so文件(linux)在kali下默認集成,路徑為 /usr/share/sqlmap/udf/mysql/linux/64(32)
或者 searchsploit mysql udf
把對應的內容編譯出來
mysql創建函數命令
原創文章,作者:SMHN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144422.html