mysql udf禁用_Mysql数据库UDF的安全问题利用
最近一直在休假,沒有寫博客,轉眼十一還剩最后一天,時間真的很快。今天想談談數據庫的安全問題。
對于數據庫的安全問題,首先,重要的生成庫千萬不能放在公網上,一旦被******后果不堪設想,輕則數據丟失,重則被***(整庫被打包導出),如果恰恰又以明文存儲了用戶的密碼,那么就太可怕了,去年轟動一時的某幾個大型網站的用戶數據泄漏事件都是因為明文的方式存儲了用戶的密碼。
其次是大量的數據庫弱口令問題存在,造成這個問題的原因往往是sa或者dba對安全問題疏忽,只為方便。
今天無意掃到一個弱口令的mysql數據庫,我的話題也從這個弱口令mysql庫開始。首先遠程登錄數據庫,居然還是mysql數據庫里root用戶的弱口令,毫不客氣的進入了數據庫,執行一條sql語句查看ip地址和/etc/passwd文件的內容
這里主要是用到了load_file()函數,當然這個函數是可以被禁用的。以上可以輕松看到/etc/passwd文件的信息和ip地址,當然其他的文件內容都可以被看到。
由于load_file()函數只能實現類似系統命令cat的查看文件功能,但是想執行系統命令的功能,那么只能用UDF了,也就是User defined Function,用戶定義函數。
查看mysql的plugin,plugin_dir的路徑為/usr/lib/mysql/plugin
如果像我遇到這個數據庫服務器一樣,plugin_dir的路徑為空也無所謂了。
執行以下sql語句,把udf.txt里面的十六進制的文件內容導出到/usr/lib/mysqludf.so
查看下這個udf庫所支持的函數
創建函數并且查看是否創建成功,可以看到一個名叫sys_eval的UDF創建成功了。
最后利用UDF執行更高權限的功能
剩下的就用這個UDF獲得系統權限吧,提示可以用nc反彈,在自己的主機上執行nc -vv -l -p 12345,在數據庫上執行一下sql語句
就可以成功反彈出linux shell了,再往下就。不過UDF的利用也有局限性,需要有mysql庫的操作權限,在mysql庫下必須有func表;在skip ?grant ?tables開啟的情況下,UDF會被禁止。
PS:mysqludf.so是我已有的一個庫文件,利用它生成了udf.txt,執行以下sql語句即可
mysql>?select?hex(load_file('/usr/lib/mysqludf.so'))?into?outfile?'/tmp/udf.txt';
Query?OK,?1?row?affected?(0.04?sec)
總結
以上是生活随笔為你收集整理的mysql udf禁用_Mysql数据库UDF的安全问题利用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 组件之间函数传递_组件之间相互传
- 下一篇: mysql 导出用户权限_MySQL中导