不久之前我經(jīng)常去的一家音樂網(wǎng)站突然宣布無限期關(guān)閉,但保留對VIPs下載的權(quán)利.這個消息對于我這種狂熱的音樂愛好者猶如晴天霹靂.但是沒有辦法,別人的站關(guān)不關(guān)是別人的事,而我如果想要得到這些音樂,只能操起許久不動的"邪惡"手段了.
一般來說在滲透一個網(wǎng)站之前,腦海中總要有一個大致的滲透思路,將以前對這個站了解的信息全部挖掘出來,分析有用的部分組合應(yīng)用.我首先想到的是利用以前這個站點的BBS攻擊,記得是Phpwind的,因為最近出了一些漏洞,可以很方便的得到WebShell.然后想到的是以前的一些遺留頁面.但是這些想法都失敗了,因為關(guān)站之后,除了首頁上幾個關(guān)站通知以外,好象沒有別的信息了.似乎在腳本上攻擊不太現(xiàn)實.
這個站沒有可以利用的地方并不代表別的站點不存在漏洞,我的第二個思路則是旁注,但是等我仔細一查,發(fā)現(xiàn)這個IP上只綁定了一個頂級域名,其他的2級域名也無法通過nslookup列出,看來旁注的想法也告吹.一切看來都像走著背運.沒有辦法,有點想放棄了..腳本上不行,只能看看主機的安全性了.
如果要對主機進行探測的話,就需要手工的探測一些基本的開放端口,然后整理一個列表,這樣可以更詳細的了解主機的設(shè)置情況,比使用掃描器要方便多了.于是大約在3分鐘之內(nèi),我探測出來一些開放的端口:21(FTP),80(IIS),3372(MSTDS),3389(Terminal Service),8080(Apache).
對于這些端口,總體來分析一下吧.
FTP上,我沒有用戶名與密碼,采用的是Serv-U Ftp Server 6.0,如果有這個東西的密碼的話,主機基本上就下來了.但是似乎得到密碼很麻煩.
80端口上配備著IIS 5.0,但是除了端口和一個index.asp就沒有任何有價值的東西了.從這里下手也很難.
從開放的3372端口來看,主機并沒有做一些安全策略和TCP/IP篩選,或者沒有裝防火墻,因為憑經(jīng)驗,這個端口一般有安全意識的管理員是不會開放出來的.同時證明這臺主機是Server系列版本的.
3389,這個誰都知道,是終端服務(wù)的默認端口.登入進去以后發(fā)現(xiàn)是Win2000 Advanced Server.
還有一個8080,從Telnet中得到的反饋結(jié)果來看,很有可能是Apache的WEB服務(wù)器.難說這上面有一些別的什么頁面可以瀏覽的..于是我就打開這個IP的8080端口...居然返回一個Magic WinMail Server..
記得這個WinMail曾經(jīng)在25端口有個helo的漏洞,但是那個是老漏洞,新版本應(yīng)該可以避免了.于是省去了找Exploit的打算.不過為了證實,我還是寫了一個段程序,發(fā)送了20000字節(jié)的數(shù)據(jù)包,服務(wù)器沒有掛,說明漏洞已經(jīng)修補掉了.
似乎走到這里沒轍了.但是我想,既然來了,就這么走太沒意思了吧.于是準備對這個Magic WinMail Server進行一翻測試.
從網(wǎng)上下載了一個Maigc WinMail,然后安裝后進行了一番黑盒測試,結(jié)果全部失敗.想想這個程序?qū)懙膽?yīng)該是不錯的.但是它的WebMail是用PHP寫成的,如果代碼不嚴謹,PHP上就難免出漏洞.至少是明文的代碼,可以輕松的找到漏洞.
簡單的看了一下各個PHP中的腳本和函數(shù),找到幾個似乎可以利用的地方,但是由于一些限制,沒有成功,但是很多地方寫的的確不是很嚴謹.當我看到download.php的時候,突然發(fā)覺到了一段奇怪的代碼.代碼如下
----------------------------------------codz start---------------------
$html_compress = "false";
// load session management
require("./inc/inc.php");
// check for all parameters
if( $part == "" || $folder == ""
|| $ix == "")
Header("Location: error.php?err=3&sid=$sid&tid=$tid&lid=$lid&retid=$retid\r\n");
$mail_info = $sess["headers"][base64_encode($folder)][$ix];
$localname = $mail_info["localname"];
// check if the file exists, otherwise, do a error
if($cache) {
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].'_'.md5(base64_decode($bound))."_".$filename;
if (!file_exists($fullfilename))
exit;
clearstatcache();
$fp = fopen($fullfilename,"rb");
$email = fread($fp, filesize($fullfilename));
fclose($fp);
echo($email);
exit;
}
else {
if (0 == 'nonmime'){
$filename = base64_decode($filename);
$filename = str_replace("\\","",$filename);
$filename = str_replace("/","",$filename);
$filename = str_replace("|","",$filename);
$filename = str_replace("<","",$filename);
$filename = str_replace(">","",$filename);
$filename = str_replace(":","",$filename);
$filename = str_replace("*","",$filename);
$filename = str_replace("?","",$filename);
$filename = str_replace("\"", "", $filename);
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].'_'.md5(base64_decode($bound))."_".$filename;
if (file_exists($fullfilename)) {
header("Content-Type: application/rfc822");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
clearstatcache();
$fp = fopen($fullfilename,"rb");
$email = fread($fp, filesize($fullfilename));
fclose($fp);
echo($email);
exit;
}
}
// othe codz..................
?>
----------------------------codz stop----------------------
其中存在問題的代碼是這一段.
if($cache) {
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].'_'.md5(base64_decode($bound))."_".$filename;
if (!file_exists($fullfilename))
exit;
clearstatcache();
$fp = fopen($fullfilename,"rb");
$email = fread($fp, filesize($fullfilename));
fclose($fp);
echo($email);
exit;
讓我來講解一下這段代碼吧:
首先,從瀏覽器中取得cache的值,如果值不為空,那么就開始組合$fullfilename.然后就是fopen,再是讀出所有內(nèi)容并輸出到瀏覽器中,
我發(fā)現(xiàn)的Magic WinMail Server漏洞
,電腦資料
《我發(fā)現(xiàn)的Magic WinMail Server漏洞》(http://www.lotusphilosophies.com)。但是這里就出現(xiàn)了問題了...我們的$filename變量沒有經(jīng)過任何處理就組合到了讀取的文件中。如果我們的$filename中包含目錄的跳轉(zhuǎn)符號的話,那么我們就可以跨越目錄讀取文件了....似乎是個好兆頭.先去利用一下看看.
到了那個網(wǎng)站的8080端口,從WebMail注冊一個用戶進去.提示成功,然后從我的郵箱中發(fā)一封帶附件的郵件到這個新的郵箱中,得到收到郵件以后,我們就開始來利用一下這個漏洞吧.
在收到的郵件中點開附件,然后按F11將全屏掉IE窗口,再地址欄后輸入&cache=kevin1986&filename=/../../../index.php 回車一下,果然讀出了index.php的內(nèi)容.(圖P1)
這一下好辦了,我只要去讀一些默認的配置文件就可以讀到比如Metabase.bin,因為在默認配置下,Magic Winmail是以LocalSystem權(quán)限啟動的,所以相應(yīng)的Apache服務(wù)也是以LocalSystem權(quán)限啟動的.所以metabase.bin是可以讀到的
但是我要下載,文件名這些東西是必要的,從那個中讀到路徑可以,但是文件名就不行了.所以我得想別的辦法..先看看這個Magic WinMail的安裝目錄吧,猜一個.多加幾個../來到根目錄,然后讀boot.ini,結(jié)果正確返回其中的內(nèi)容,說明Magic WinMail的目錄安裝在C盤,似乎Magic WinMail本身不是很好玩,干脆去讀讀別的東西吧...比如Serv-U...
試著讀/../../../../../program files/Serv-U/Readme.txt
發(fā)現(xiàn)存在,說明Serv-U安裝在C盤里.那么讀讀ServUDeamon.ini吧.
果然不出我所料讀出來了,而且管理員似乎很喜歡在注釋中寫一些很敏感的東西,比如密碼.這不是明擺著放我的水嗎?不管了.先從Serv-U里進去,然后就發(fā)現(xiàn)站點目錄下還有一個vipdownloadsmusic目錄,在IE中一訪問,居然全部是打包好的音樂.足足6個G呀.... .挑選幾個比較喜愛的New Age風格的piano solo專輯下載,然后睡覺去了..有一些興奮,但是總覺得不爽,至少我總覺得有些東西還沒做夠...是什么呢?哦....貪心的壞毛病又來了.拿下主機吧...看看是不是還有別的什么好的音樂...這個站的站長可是收集稀有的音樂碟出名的呀.
從FTP上寫一個WebShell進去,瀏覽了一下C盤,發(fā)現(xiàn)做了限制了,但是從剛才跳轉(zhuǎn)的目錄來看,一般是默認安裝位置,那么就直接進C:\Magic WinMail Server目錄...很好很好,什么都能做,包括在Magic Winmail的Webmail目錄中寫的權(quán)限..
我隨便寫一個PHP代碼進到主機里,然后執(zhí)行命令(圖P2).由于權(quán)限是最高的關(guān)系,很輕松的加進了用戶,并且進入了終端服務(wù)器。..但是很遺憾,別的盤中除了備份文件,再沒有別的東西了.有點沮喪的給管理員發(fā)了封郵件,然后刪除用戶走人...玩網(wǎng)絡(luò)安全的,要玩的適當才有意思.不對嗎?