◆楊京 田嘉豪
淺談Web應用的文件包含漏洞與防護
◆楊京 田嘉豪
(陜西省網絡與信息安全測評中心 陜西 710065)
隨著網絡Web2.0、網絡移動社交等一系列新型的互聯網信息技術和網絡產品的不斷出現,基于Web網絡環(huán)境下的互聯網新技術應用越來越廣泛,政府在投入發(fā)展信息化建設的整個過程中,越來越多的應用都鋪設在Web平臺上。Web應用迅速發(fā)展的同時,不斷加深人們對其的依賴,也吸引了互聯網黑客的注意。由于Web應用能夠讓任何登錄互聯網的人訪問,所以這些Web應用程序就成了大量黑客攻擊的目標,Web安全威脅態(tài)勢逐步升級。為了得到Web服務器的控制權限并開展攻擊活動,互聯網黑客利用各類Web漏洞進行網站篡改、數據竊取,更有甚者為了控制網站或服務器,插入惡意代碼,對人民財產和公眾利益造成嚴重侵害。如今,學習、挖掘及防范Web應用安全漏洞已是越來越多的企業(yè)、用戶關注的重點。
Web安全;文件包含;防護
Web應用程序在其開發(fā)的過程中,技術人員通常都是將一些可重復使用的函數寫到某個目錄文件中,在需要使用特定的函數時,對此類信息文件進行調用,而不必再次進行編寫,這種調用信息文件的整個過程通常被我們所稱為“包含”。如果包含的文件是動態(tài)的,通過一種動態(tài)包含的方式進行引入文件時,由于針對所傳入的文件名未通過過濾與校驗,導致對其他的文件進行了非授權操作,例如調用了一些已經定義好的類或者是函數,就很容易導致意外的文件泄露甚至惡意的代碼注入,而正是因為可以包含其他文件從而有可能會產生文件包含漏洞。
大多數Web語言都可以使用文件包含操作。目前,大部分Web應用由PHP開發(fā),由于PHP語言的文件包含功能強大因此也容易出現文件包含漏洞。
文件包含,包括本地文件包含和遠程文件包含兩種形式,下面對這兩種形式進行介紹。
第一,本地文件包含漏洞(Local File Include,本地文件包含故名包含的文件在本地服務器),它是PHP中一種較為典型的高危漏洞。本地文件包含就是通過瀏覽器包含Web服務器上的文件,當瀏覽器包含文件沒有進行嚴格的過濾時,允許遍歷目錄的字符注入瀏覽器并執(zhí)行,由于技術人員未對用戶輸入的內容進行有效過濾與檢查,導致惡意用戶可以控制被包含的文件,一旦成功,Web應用服務器將一些特定文件當成php執(zhí)行,從而導致惡意用戶可獲取一定的服務器權限。
第二,遠程文件包含漏洞(Remote File Inclusion,遠程文件包含故名包含的文件不在本地服務器,而需要遠程訪問其他服務器)。它其實也屬于“代碼注入”的一種,其原理就是注入一段用戶能控制的腳本或代碼,由于瀏覽器對于用戶輸入沒有進行有效的過濾與檢查,導致其在服務端執(zhí)行惡意文件的代碼。該漏洞利用的前提是PHP開啟了遠程包含功能,且被包含的變量前沒有目錄的限制。
文件包含漏洞一旦被互聯網黑客進行惡意利用,不僅會暴露Web應用的配置文件,也會暴露自身的源代碼,為黑客進一步發(fā)掘Web應用漏洞提供條件,最終導致黑客控制整個網站甚至服務器。
因為文件包含漏洞的利用并不困難,往往是黑客常用的攻擊手段,下面列出幾點常見的防護措施。
使用白名單或者黑名單過濾,不要直接導入用戶輸入的內容,同時也可以在做好過濾在包含的文件名前后加固定后綴。
使用目錄限制的方式,用固定好的路徑來規(guī)定用戶輸入的變量內容,將被包含的文件限制在特定的目錄內,并設置禁止目錄跳轉,以達到限制用戶可調用的目錄范圍的目的。比如,開啟 open_basedir 函數,將其設置為指定目錄,則只有該目錄的文件允許被訪問,但是開啟 open_basedir 會影響性能。
限制用戶訪問目錄范圍:php.ini 中通過限制設置,比如 open_basedir 等等來限制目錄用戶能夠訪問特定目錄文件的目標以及范圍等,另外,apache中間件也有相關配置可進行限制。
設置用戶的訪問權限:在中間件中我們針對不同的用戶,可以限制當前中間件的用戶訪問權限,例如在Web 服務器中設置獨立的用戶,限制其僅可以訪問特定目錄和使用中間件的權限,從而也就能夠有效地避免惡意用戶越權訪問其他目錄文件。
本文簡要介紹了何為文件包含漏洞、文件包含漏洞分類及防護。面對文件包含漏洞,并不是無計可施,需要多注意維護Web應用的安全,發(fā)現異常及時采取措施。沒有絕對的安全,只有不斷加強安全防護。
[1]平小紅,惠鑫,容杰,劉攀.Web及網絡數據庫系統(tǒng)的安全漏洞與應對技術探究[J].網絡安全技術與應用,2020(08):16-17.
[2]梁本來.Web應用安全漏洞與防御機制研究綜述[J].電腦知識與技術,2021,17(01):54-55+68.
[3]袁勇,池靜.網站建設中網頁設計的安全漏洞及解決對策[J].網絡安全技術與應用,2006(07):76-77.