小心你的WEB應用程序成為數(shù)據(jù)竊賊的幫兇(4) |
發(fā)布時間: 2012/6/11 19:28:30 |
接管
在很多情況下,攻擊者能夠完全控制SQL服務器的底層操作系統(tǒng);攻擊者甚至可以接管Web應用程序,并最終接管Web服務器。 接管數(shù)據(jù)庫服務器可以導致?lián)p害其它的應用程序,甚至損害DMZ中的其它服務器,F(xiàn)代的Web應用程序架構一般都有數(shù)據(jù)庫集群,與其它系統(tǒng)共享數(shù)據(jù)存儲,或者位于網絡中不太安全的地方。如果攻擊者考慮到這個方面,他就可以使用前面提到的方法繞過防火墻中一般的IP源過濾規(guī)則,從而攻擊內部網絡,甚至還可以使用SQL服務器來存儲病毒、黃色圖片或其它非法內容。 此外,通過首先接管數(shù)據(jù)庫服務器,攻擊者可以篡改Web應用程序的行為。通常,這種行為包括借助Web服務器的服務賬戶在本地服務器上運行命令。如果服務賬戶有了被提升的特權,攻擊者就可以通過數(shù)據(jù)庫服務器,將命令直接發(fā)送給Web服務器的操作系統(tǒng)。 有時,數(shù)據(jù)是根據(jù)計劃例程從DMZ數(shù)據(jù)庫服務器析取出來的。如果通過公司Intranet(內聯(lián)網)中的Web接口來查看數(shù)據(jù),情況就更危險,因為多數(shù)內聯(lián)網的Web應用程序在運行時,其信任等級更高。 不要小看盲目攻擊 通常,控制框架會把SQL錯誤搞得不易分辨,如Java或.NET框架。有時,這些錯誤是由錯誤處理代碼自動處理的,或者是由底層的代碼解釋程序處理的。例如,攻擊者可以使用撇號(‘)而不是合法的輸入: wangzhan.com/userdetail.asp?username=‘ 其結果為:用戶未找到。 這就告訴我們,Web應用程序正在正確地檢查用戶輸入,或者是程序框架正在阻止顯示明顯的錯誤消息。在這種情況下,執(zhí)行SQL注入就變得困難了,但并不是不可能。這就引出了下一種攻擊:盲目SQL注入。 盲目SQL注入攻擊是如何工作的呢?它要查看數(shù)據(jù)庫服務器是否真正地處理請求,或者查看該請求是否會觸發(fā)來自Web服務器或SQL服務器的其它響應。 例如,我們已經看到了能夠向我們提供張三(Zhangsan)用戶細節(jié)的請求,能夠看出該攻擊是否成功。不過,“WAITFOR DELAY”命令要求SQL服務器在用查詢結果響應之前,先暫停一分鐘。 wangzhan.com/userdetail.asp?username=zhangsan;WAITFOR DELAY ‘0:1:0’— 如果網站能夠正確地處理用戶輸入,它應當返回一個消息,說明找不到用戶,或者發(fā)出其它的通知,說明“zhangsan;WAITFOR DELAY ‘0:1:0’--”不是一個合法用戶。 必須指出,只有在將用戶名變量的值被提交給SQL服務器時,并且Web應用程序能夠正確地處理用戶名變量的值時,才會出現(xiàn)這種情況。 傳統(tǒng)的SQL注入將會返回錯誤,讓用戶知道有關查詢失敗的原因的細節(jié)。從本質上講,盲目SQL注入依賴的是一種來自服務器的布爾邏輯響應(是/否,真/假等):查詢請求要么被處理,要么遭遇失敗。盲目SQL注入攻擊一旦得以發(fā)現(xiàn),它就會提供與典型的SQL注入一樣的功能,但它更難以執(zhí)行,為了獲取信息也需要更多的時間。 本文出自:億恩科技【www.allwellnessguide.com】 |