由于管理SQL注入頗為復雜,并且使漏洞利用過程自動化的大量工具幾乎都可免費獲得,所以惡意攻擊者將繼續利用SQL注入漏洞對付面向公眾的網站,作為其獲取關鍵基礎架構系統和網絡的一種方式。
與其它網絡漏洞利用的復雜方法相比,SQL注入所使用的技術相對易于學習。它易于實施,但其造成的危害卻可能會使系統完全癱瘓,面向互聯網的企業仍極易遭受這種攻擊。訪問遭受損害網站的訪問者有可能無意識中安裝了惡意代碼,并被重定向到一個惡意網站,損害其系統中的其它漏洞,或其系統被用于攻擊第三方網站。受感染數據的業務價值和敏感性決定了SQL注入損害的長期影響,并隨著每個被損害對象和每次損害而變化。由于這些漏洞的持續流行,如今的有許多工具都可以使SQL漏洞的利用更容易,這些工具的傳播對于理解關鍵基礎架構的當前風險非常有益。
A公司有一個存在多年的購物網站,當然,其多數客戶使用的是一個更新的更安全的網站。在搭建新網站時,許多客戶并不遵循新網站的數據處理和加密需求,所以老購物網站被用于適應這些客戶。
隨著越來越多的客戶使用新網站,在服務等級合約到期后,對老網站的維護也就終止了。此外,由于多數通信被集中到新網站,管理員開始將其努力更多地放在新網站,最終完全忘記了老的購物網站。但是,它仍位于互聯網上,企業也不再管理它,不為它打補丁,幾乎把它忘掉,但它仍有連接到內部網絡的關鍵連接。
此外,由于老購物網站仍在使用,該公司的基礎架構(DMZ、防火墻)需要進行配置,以使系統(僅使用簡單的加密和認證協議)能夠到達后端數據庫。這會導致企業的架構產生多個安全漏洞。
同時,正準備攻擊某個主要防御代理服務器的攻擊者了解到該代理服務器與A公司有連接。攻擊者判定到達防御代理服務器的最佳方法是利用A公司的防御漏洞,并開始執行對A公司的網絡偵察,知道了到該公司公開注冊的IP地址空間,利用自動的Web漏洞掃描器掃描A公司所有面向公眾的機器。
攻擊者很快就發現了有漏洞的老購物網站,并利用了一個可免費獲得的SQL注入漏洞工具,進而獲得了后端數據庫的訪問。攻擊者很快地就向數據庫服務器上傳了特權提升和憑據竊取工具,利用DMZ和防火墻中的漏洞,然后,就可以訪問管理員的登錄憑據,創建其自己的管理員賬戶,并且上傳后門文件,以便于以后隨意進行遠程訪問,并可以在網絡中跳轉。由于A公司網絡的架構存在這種缺陷,所以攻擊者能夠訪問整個網絡,并隨意訪問任何機器和上傳自己需要的任何工具或程序。攻擊者還可以控制整個網絡,洞悉A公司與主要防御代理服務器的連接,并將訪問A公司網絡當作一個跳板。可以說,SQL注入攻擊代表著任何由數據庫驅動網站的嚴重威脅。其背后的方法易于學習,而其造成的危害卻相當巨大。雖然有這些風險,但網絡上仍有大量的系統易于遭受這種攻擊。但是,管理員通過計劃和正確的實施,幾乎可以完全預防這種威脅。
SQL注入攻擊由SQL查詢的注入組成,它通過由客戶端向應用程序輸入數據來實施。成功的SQL注入可以從數據庫中讀取敏感數據,修改(插入、更新、刪除)數據庫的數據、對數據庫執行管理操作(如關閉數據庫管理系統)、恢復數據庫管理系統中特定文件的內容,有時還可以向操作系統發布命令。
圖1顯示了前文所述的攻擊者最終完全損害網絡的步驟及其影響,也列舉了企業可用以對付攻擊的可擴展防御。
許多企業的網絡實施了其中的部分防御;為更好地保護網絡資源,企業應盡量多地實施防御。企業必須使用深度防御策略來防御攻擊的所有階段。

這種方法可以使網絡所有者看出哪里易受攻擊。但這種方法需要花費不少時間并要求一定的技巧,而且掃描有可能引起不必要的警告。
網絡所有者和操作人員都應當對其網絡的狀態保持警惕。很重要的一點是,系統管理員使用可靠的漏洞掃描器,并制定和實施可以掃描所有公共Web服務器的計劃,能夠查找常見漏洞。在發現漏洞后,管理人員應當修復系統或打補丁。對于那些安裝老Web應用程序的網絡來說,這尤其重要,因為隨著網站越來越老,會有越來越多的漏洞被發現或暴露。
為實現更強健的防御,建議企業掃描如下漏洞或缺陷:SQL注入、本地文件包含、跨站腳本攻擊、一般的編碼和輸入錯誤。
在SQL服務器前面實施Web應用防火墻和網絡入侵檢測系統可以防止或阻止多種常見的注入企圖。
雖然修復Web應用程序中的SQL注入漏洞很重要,但Web應用防火墻可用作一種防止SQL注入企圖的重要措施。使用Web防火墻時,白名單是一種重要技術,因為攻擊者總是設法找到繞過黑名單的方法。
通過SQL注入,攻擊者可以使用三種主要方法破壞系統:
方法一,代碼的執行特權(mysql中的存儲過程、oracle中java函數的創建、sql server中xp_cmdshell等等)
如果攻擊者可以通過數據庫直接執行文件系統上的命令,而數據庫用戶又擁有系統的“執行”特權,攻擊者就有能力看到并執行他期望的任何操作。因為允許用戶地執行“dir”命令是很危險的,所以請不要將“執行”特權交給普通的數據庫用戶。
方法二,寫入或讀取文件系統上的文件(“INTO OUTFILE”命令)
如果攻擊者擁有文件系統的寫入許可,他就可以在網站上創建可執行文件,并通過瀏覽器向其發送命令。
方法三,竊取SSH或telnet的登錄憑證
這并不是一種通過數據庫對系統攻擊的直接方法,而是一種獲取登錄憑據的方法,這種憑據可通過其它方式(SSH、telnet)用于登錄嘗試。
強化Web應用是防止漏洞被利用的最有效方法,但這種方法的使用要求進行測試,并往往需要重新編碼和對Web應用進行維護。
不安全的購物網站在攻擊者的攻擊中扮演著一種重要角色,尤其需要注意的是,這種網站可以充當進入后端數據庫的通道。強化這些Web應用是防止入侵的一種關鍵措施,這應當成為每個企業全局操作和減輕威脅策略的一部分。
雖然SQL注入可能允許攻擊者竊取數據,甚至刪除企業的數據庫,但企業應當部署恰當的控制,目的是為了防止攻擊者“脫離”數據庫本身而進入網絡。如果企業正在使用SQL Server,就要確保Web用戶的許可盡可能受到限制。要保證數據庫用戶賬戶并沒有給與系統特權,因為這是攻擊者脫離數據庫進入網絡的主要方法之一。
對于SQL Server而言,管理員應當關注如下問題,一是要保證SA賬戶有一個強健的口令,二是要清除SQL的臨時用戶賬戶,三是要清除BUILTINAdministrators的服務器登錄,四是不能將許可授與公共角色。
許多攻擊者使用SQL注入獲得數據庫用戶的登錄憑據,其目的是使用這些憑據和SSH(或telnet)進入系統。管理員要確保數據庫用戶賬戶的口令不同于系統的特權賬戶的口令,用以避免攻擊者進入系統;還要保證所有的口令滿足最佳實踐所要求的復雜性,并改變數據庫賬戶上的所有默認口令。如果企業還沒有加密數據庫或哈希用戶的口令,應立即修復。
以下措施的目的在于減輕SQL注入的威脅、文件上傳、命令執行以及其它已知的Web服務器漏洞。管理員必須注意,除傳統的服務器、桌面之外,開發和測試環境往往運行可公共訪問的服務器,如果這些服務器被利用了漏洞,也會導致網絡攻擊和破壞。
不同的企業和角色都要積極地保證Web應用程序的安全。下面的這些減輕威脅的措施可根據不同的企業和角色進行分組,并根據具體的企業結構和本地策略而變化。
SA應實施的減輕威脅的措施包括:確認企業網絡上的所有Web服務器和Web應用,并保證其管理控制臺的安全;使正在運行的Web服務器和Web應用的數量最小化;強化系統,減少漏洞被利用的機會,使攻擊者破壞系統的影響最小化;啟用日志,經常檢查日志。
與SA和開發人員有關的減輕威脅的措施有:實施Web應用防御,其方法是投資購買Web應用防火墻,打開URL掃描或其它Web過濾器選項;限制攻擊者所造成的損害,要點是確保所有的Web應用都通過最少特權進行連接,限制并監視在所有可訪問的Web目錄中的文件創建;減少攻擊者的成功機會,其方法是限制可以使用的字符輸入集,并設置最大的參數大小,從Web服務器中移除非必須的HTTP命令;運行Web應用漏洞掃描器,確認漏洞。Web應用開發人員可實施的減輕威脅的措施包括三方面:確認已部署的代碼,要確保運行在網站上的所有代碼都是最新版本;用最佳方法編程;執行定期的代碼檢查,即檢查Web應用源代碼中的漏洞。
應用程序白名單是一種主動的安全技術,它僅允許經許可的有限的程序運行,同時默認地阻止所有的其它程序(包括多數惡意軟件)。相比之下,多數操作系統所實施的標準策略允許所有用戶下載并運行大量非授權的(或惡意的)應用程序。應用程序的白名單僅準許管理員而不是用戶來決定運行哪些程序運行。
基于路徑的應用程序白名單僅允許從文件系統中的特定位置運行程序。這種方法不需要確認每個獨立程序和可執行庫。管理員必須保護路徑,只有獲得授權的管理員可以安裝或修改文件,防止標準用戶和惡意活動繞過應用程序的白名單策略。這些規則對系統性能的影響最小,并允許多數程序實施更新和打補丁,而不需要變更任何規則,同時可以防止新的未授權程序和多數最新的惡意軟件。基于文件的應用白名單可以使管理員根據文件名決定允許哪些文件運行。有些應用程序有可能并不位于由基于位置的應用白名單所確定的位置,用基于文件的白名單可以使管理員允許位于這些位置的文件運行。但由于文件名易被欺騙(篡改),實施應用白名單的更安全方法是基于哈希的方法。在這種方法中,文件的哈希被用于指定是否允許一個文件運行。由于哈希不易被欺騙,所以這種方法可用于向應用白名單策略提供更高的精細度和特異性。不過,這種方法還要求更多的工作,才能確保文件的哈希保持更新。
對于微軟的一些較新的操作系統,AppLocker是一種內建的特性,它可以強化由管理員定義的白名單策略。AppLocker策略可通過標準的Windows組策略管理應用進行創建和管理。AppLocker可用于Windows Server 2012、Windows Server 2008 R2、Windows 8、Windows 7等操作系統。此外,有些主機入侵防御系統產品還可以執行應用白名單功能。
實施這種系統可以更廣泛進行保護,并可以限制惡意軟件的行為。但主機入侵防御系統較難以建立,并需要耗費較多時間進行監視和管理。
計算機和系統安全的一個基本目標就是保持每一臺主機的健康運行或完整性,而主機入侵防御系統可用于保護主機的完整性。在企業的部署中,主機入侵防御系統是集中管理的,而SA(超級管理員)會將策略和規則發布給每一臺主機。主機上惡意或異常行為都被反饋給管理系統,進而據以采取行動。
為保證其有效性,非常關鍵的一點是主機入侵防御系統要擁有一套定義精細的策略或規則。廠商在其產品中定義了許多規則,但是要由SA調整這些策略才能滿足其具體的環境和解決所面臨的特定風險。有些規則可能與業務操作相沖突,因而企業最好在測試網絡中測試所有的規則,在將其安裝到生產網絡中之前,先模擬生產環境。如果某條規則的變更影響了生產環境,企業就應創建一種例外規則,重新定義規則直至沒有沖突產生,或者完全禁用規則。為使主機入侵防御系統的有效性最大化,并減少花費在部署主機入侵防御系統上的時間,企業應預先構建一個可管理的網絡。這包括移除或卸載不必要的應用,清除或禁用不必要的服務,并確認不正常的網絡通信的源頭。
多數主機入侵防御系統都有一種學習模式,它可以使設備被動地監視網絡通信,以便于決定應用程序如何實現功能以及什么才是正常通信。這種模式最好用于未遭受破壞的環境中。
控制管理特權可以減少特權賬戶的暴露程度,并限制惡意軟件的訪問,但有可能導致用戶的抱怨,并有可能喪失一些靈活性。計算機系統的管理特權可以使用戶訪問多數用戶無法訪問的資源,并可以執行本應受到限制的操作。如果企業沒有正確地管理這種管理特權,特權的授權面又很大,再加上沒有嚴格的審核,攻擊者就能夠利用這種漏洞,并輕而易舉地在網絡中遷移。獲得管理特權一般都通過一種被稱為“特權提升”的技術而實現。特權提升是利用漏洞和設計缺陷的一種操作,它也能夠利用操作系統或應用軟件中的配置錯誤,進而訪問普通用戶無法訪問的資源。對管理特權的管理不善可以使攻擊者更容易地執行這種技術。
非常重要的一點是,企業部署正確的控制可以防止攻擊者利用數據庫進入網絡。如果企業正使用SQL Server,就應確保Web用戶的許可盡可能受到限制。還要保證數據庫用戶的賬戶不會得到系統特權,因為這是攻擊者利用數據庫進入網絡的主要方法之一。
在此,筆者提供如下建議:
將企業管理員與域管理員分離開;如果有可能,將活動目錄的管理員賬戶從企業管理員賬戶和域管理員賬戶分離開;不要允許本地賬戶訪問網絡,要從這些賬戶尤其是管理員賬戶中清除網絡交互登錄特權或遠程交互登錄特權;如果無法實現物理管理,應將遠程登錄限制給少數特權用戶,并且僅允許從安全有保障的工作站進行訪問;禁止本地賬戶訪問網絡;限制特權賬戶可以訪問的系統,對這些高級特權賬戶進行限制,使其只能登錄到安全系統;從本地管理員組中清除標準用戶,不要將本地管理員組的成員資格授與標準用戶賬戶;確保管理員賬戶不能擁有電子郵件賬戶或互聯網的訪問;遵循最小特權原則,僅給與用戶只能完成其工作的許可;使用多因素認證,為許可用戶訪問網絡資源,要使其證明自己的身份;要有效的管理口令,管理員賬戶的口令應當保證復雜性,要包含由字母、數字、特別字符的組合,而且至少包含14個字符;要求所有的管理員賬戶和其它特權賬戶經常變更口令;指定專用系統,管理活動目錄并阻止通過互聯網訪問這些系統;禁止企業管理員和域管理員的服務登錄;禁用企業和域管理員的本地登錄;從本地管理員組清除企業和域管理員組;禁止委托特權賬戶;審查活動目錄用戶和計算機中的所有特權賬戶的屬性。
這種方法的好處是減少哈希傳遞的技術,但設置難度較大,且有時會造成一些網絡中斷。準許工作站之間的通信可以使網絡攻擊者輕易地擴展到多個系統,并可以在網絡內建立一種有效的陣地,然后,攻擊者還可以建立進出網絡的多種通信通道或后門,便于其日后的持久訪問。
對攻擊者來說,高價值的系統可能更難以訪問和利用其漏洞,所以攻擊者會企圖在網絡內部進行橫向移動(從網絡內的一個工作站跳轉到另一個工作站),其目標是找到進入這些目標的方法。攻擊者可以使用多種方法在網絡中水平移動,例如,他可以通過連接到工作站上一個開放的保護不善的共享目錄,或者通過一種更具有破壞性的哈希傳遞方法。
所有實施單點登錄環境中都存在一種嚴重漏洞:哈希傳遞以及重新利用合法憑據的其它形式。例如,在Windows、Linux 7、Mac 8中。哈希傳遞可以使攻擊者再次利用合法的管理員或用戶憑據,從網絡上的一個系統移動到另一個系統,卻無需破解口令。在攻擊者破壞了一臺主機后,他就可以重新利用竊取的哈希憑據進而擴展到網絡上的其它系統,訪問特權用戶的工作站,獲取域管理員的登錄憑據,然后控制整個網絡環境。
利用防火墻規則限制通信,主要是設置Windows防火墻規則,特別是通過組策略防止工作站之間的通信。其關鍵是打開并啟用Windows防火墻或類似產品,還要設置防火墻,用以阻止非主動請求的進入連接。如果企業還使用了其它防火墻,還要對其進行同樣的設置。
企業必須控制管理特權,即要實施最少特權的管理模式,僅授與用戶完成其工作所必需的特權,并通過限制特權憑證的使用方式和使用地點來實施保護。管理人員還要利用私有VLAN從邏輯上隔離網段,即通過端口限制實施私有VLAN。
網絡由具有不同功能、目的、敏感程度的互聯設備組成,網絡也可能由多個網絡分段組成,這些網段包含Web服務器、數據庫服務器、開發環境以及將不同部分連接起來的基礎設施。由于這些網段有不同的功能和安全問題,所以正確地隔離不同的網段對于防止網絡遭受漏洞利用和惡意企圖非常重要。如果攻擊者能夠獲得訪問,而網絡又沒有正確分段,他就能夠擴展其訪問,并在網絡中自由移動。在將網絡隔離成小的部分并限制不同部分的通信時,攻擊者的訪問范圍就受到了限制,而且他在網絡中橫向移動也受到嚴格限制。
阻止入侵者進一步訪問網絡的能力對于保護敏感信息和更輕松地修復危害是至關重要的。限制設備的通信可以更好地監視和發現入侵者從一個領域擴展到另一個領域的企圖。
為此,筆者提供如下建議:
1.如果有可能盡可能從物理上隔離網段,敏感功能應當擁有與遠程或可公共訪問的Web環境相分離的基礎架構中。
2.利用私有VLAN從邏輯上隔離網段。利用支持端口限制的私有VLAN,防止主機與同一子網上的其它主機通信。
3.利用VPN,建立通過公共或私有網絡的隧道,安全地擴展主機或網絡。
4.利用虛擬路由轉發(VRF)對虛擬基礎架構上的網絡進行分段,并且將網絡通信隔離成不同的區域。
5.在隔離的網絡和功能中保護敏感賬戶,限制這些特權賬戶和憑據可以進一步阻止未授權的訪問。
“千里之堤,毀于蟻穴”。SQL注入漏洞有可能被攻擊者利用來進入并破壞整個企業的網絡資源。安全管理者只有防微杜漸,實施深度防御,從物理上和邏輯上雙管齊下,才能真正有效地保護網絡,真正將攻擊者阻擋于網絡之外。