■
單位的某臺服務器遭到了黑客入侵,黑客對運行在其中的網站進行了非法修改,造成了數據丟失的情況。幸好之前進行了數據備份,才恢復了網站的運行。事后經過分析,找到了黑客入侵的通道——原來該網站采取是ASP.NET+MS SQL Server結構,由于開發者存在疏忽,對黑客防范的安全性不高,致使某些頁面存在注入漏洞,黑客對該網站檢測時,發現了上述漏洞,通過手工注入猜測或者使用啊D等注入工具,對網站進行了滲透,通過數據庫差異備份技術,得到了WebShell接口,通過相應的提權操作,獲得了更大的操作權限,進而控制了整臺服務器。
我們知道,對于網站來說,所有的數據全部存放在后臺數據庫中,一般我們使用的是Access或者MS SQL Server數據庫。注入技術對后者危害最大,如果該數據庫連接用戶的名稱為SA,那么黑客只需借助一個注入點,就可以控制整臺服務器。即使數據庫的連接用戶是DB_Owner,黑客同樣可以或者Web Shell接口。例如,黑客使用數據庫差異備份技術,就可以將ASP木馬上傳到網站中,進而獲得WebShell接口,來執行各種命令,對網站進行更深層次的入侵。例如,對于存在注入漏洞的網址“http://www.xxx.net/news_list.aspx?typeid=109”來說,黑客使用專業工具對其進行檢測時,就會發現其存在注入漏洞,并讓黑客獲得訪問數據庫的SA權限或DB_Owner級別權限。
在本例中,黑客獲得DB_Owner級別的訪問權限。接下來,黑客會借助工具嘗試列目錄來找到網站物理路徑。能否找到網站的真實路徑,是黑客入侵能夠得手的關鍵點。當獲取實際路徑后,黑客就可以通過數據庫差異備份實施入侵了。其慣用手法是先在MS SQL Server數據庫中創建一個表,例如訪問網址“http://www.xxx.net/news_list.aspx?typeid=109’;drop table [tk_tmp];create table[dbo].[tk_tmp]([cmd][image])”等,然后執行數據庫備份操作,接著將一句話木馬(例如“<%execute(request(“1”))%>”等,當然,實際采取的是其16進制格式)插入到預設上述創建的表中。最后執行數據庫差異備份,將備份文件(即ASP木馬文件)存放到指定的路徑中,該路徑位于網站物理路徑之內。操作完成后,刪除上述數據表(例如訪問網址“http://www.xxx.net/news_list.aspx?typeid=109’;drop table[tk_tmp]--”),掃除入侵痕跡。黑客接下來使用一句話木馬的客戶端連接預設的上述網頁地址,就可以輕松獲得WebShell接口了。
了解了黑客的入侵手段后,對網站相關文件進行修改,就可以堵住非法注入通道。不過,百密必有一疏,面對復雜的網站結構,難免出現這樣或者那樣的問題。因此,需要禁止黑客利用數據庫差異備份技術,對發起的網絡攻擊,才是根本解決之道。要堵住該漏洞,可以采取多種手段,其中最重要的是禁用數據庫備份功能,在MS SQL Server企業管理器中,在其左側打開“SQL Server組”→“(Local)”→“數據庫”項,在窗口右側顯示數據庫列表信息。在和網站關聯的數據庫右鍵菜單上點擊“屬性”項,在彈出窗口中的“權限”面板中可以看到,針對不同的用戶/角色,可以控制創建表,創建視圖,備份DB,備份日志等權限。在默認情況下,Public或者其它用戶/角色賬戶擁有全部權限,這就為數據庫安全帶了隱患。因此,選中和網站數據庫對應的用戶/角色,在其對應的“備份DB”,“備份日志”列中點擊,使其出現紅叉標記,就禁止了該賬戶上述權限。我們可以對其測試一下,在MS SQL Server內置的查詢分析器選擇網站數據庫,執行備份指令“declare@a sysname select @a=db_name() backup database @a to disk=’d: k’”,MS SQL Server就會彈出禁止備份的提示信息。
當然,如果單純禁用了數據庫備份功能,多少顯得有些簡單粗暴。因為作為網管員,是需要經常對數據庫進行備份的。如果禁用了備份功能,恐怕就連網管員自己也無法備份了。根據對黑客入侵手段的分析,不難看出黑客必須先在數據庫中創建一個臨時數據表,才可以打開入侵的通道。“Create Table”是創建數據表必須用到的命令。如果禁用了數據表創建動作,黑客就無計可施了。而且這對網站運行沒有任何影響,因為在網站創建時,的確需要創建各種數據表,但是網站運行成功后,基本就不再創建數據表。當然,如果對網站進行升級的話,涉及到新表的創建,還是需要使用該操作的。根據以上操作,在MS SQL Server企業管理器中打開對應數據庫的屬性窗口,在“權限”面板中選擇和網站數據庫對應的用戶/角色賬戶,在其對應的“創建表”列中點擊,使其出現紅叉標記,禁用創建表的權限。之后在在MS SQL Server內置的查詢分析器選擇網站數據庫,執行諸如“Create Table Tktmp(Tkname nvarchar(200))”等命令創建數據表時,MS SQL Server就會提示拒絕創建數據表操作。
禁用了數據表的創建操作,并不能高枕無憂。因為黑客對網站的探測是全方面的,前面已經談到,黑客執行數據庫差異化備份獲得WebShell的關鍵是取得網站的物理路徑,如果黑客通過別的手段獲得了網址物理路徑,并探測到數據庫中表和字段信息,完全可以將一句話木馬插入到某個表的某個字段中,然后進行數據庫備份,同樣可以達到目的。例如,可以在查詢分析器中執行“insert into [table](ziduan)value (0x一句話木馬的16進制代碼))”等語句,可以看到成功的將一句話木馬插入到了某個表的指定字段中。接著黑客會使用“Backup Database”命令備份網站數據庫,之后通過瀏覽器訪問備份出來的ASP文件,同樣可以獲得WebShell。該如何防御這種入侵伎倆呢?
我們可以借助于在數據庫中創建“nodown”表的辦法來應對。在查詢分析器中執行“Create Table [dbo].[nodown]([tkqwe] image);Insert into[dbo].[notdown](tkqwe)value(0x3C25)” 命 令,就 在網站數據庫中創建了名為“nodown”的數據表,在其中包含“tkqwe”字段,其類型為“image”,并在其中插入了“0x3c25”的數據,“3c25”就是“<%”的十六進制內容。
為了防止黑客隨意操作該表,需要在MS SQL Server的企業管理器中選擇網站數據庫,在“表”對象中選擇該數據表,在其屬性窗口中點擊“權限”按鈕,在彈出窗口中針對目標用戶/角色賬戶,禁用所有的操作命令,包括Select,Insert,Update,Delete 等。 接著重復上述測試操作,將一句話木馬插入到某個表中的某個字段中,然后將數據庫備份到網站指定路徑中,得到包含ASP木馬的ASP文件。當客戶端使用瀏覽器訪問該ASP文件時,就會出現“編譯器錯誤,缺少語句”等信息。類似的,使用差異備份方式,執行一句話木馬的插入和備份操作,在客戶端訪問木馬是同樣出現上述錯誤提示,讓黑客無法獲得WebSHell。
其實,上述技術同樣適用于Access數據庫,在基于ASP+Access結構的網站中,管理員最擔心的是黑客暴庫技術,直接下載Access數據庫,這樣網站幾乎沒有秘密可言。為了防止非法下載數據庫,可以在Access數據庫中創建名為“notdown”的數據表,其中的字段類型為“OLE對象”,內容就是“0x3c25”。按照ASP的語法特點,如果存在“<%”而沒有對應的“>%”,在運行ASP文件時就會出現錯誤。這樣就可以保護Access數據庫不被非法卸載了。根據以上分析,通過采用創建“nodown”數據表,可以堵住數據庫備份或者差異備份所產生的漏洞。禁用數據庫的“Create table”命令,可以禁止創建數據表,防止黑客讀取磁盤目錄獲得網站真實路徑。禁用數據庫的“備份日志”功能,可以屏蔽和數據庫備份有關的漏洞。將上述三點聯合起來使用,黑客就無法通過數據庫備份技術來創建WebShell了。