◆譚志超
Web應用的安全形勢與防護策略研究
◆譚志超
(湖南大眾傳媒職業(yè)技術學院圖文信息中心 湖南 410100)
近年來,Web應用得到了飛速發(fā)展,但絕大部分Web應用存在安全漏洞。攻擊者出于經(jīng)濟、政治等目的,利用SQL注入、Webshell、跨站腳本XSS、弱口令等漏洞對Web站點實施篡改、掛馬、攻擊、數(shù)據(jù)竊取等惡意行為,得到了國家和全社會的高度重視。在安裝專業(yè)安全設備的基礎上,還應通過參數(shù)化查詢、過濾用戶輸入、使用輸入驗證與輸出編碼、加強服務器權限管理、過濾可執(zhí)行函數(shù)入口、限制連接數(shù)與請求數(shù)等方法從源頭上加以防護。
Web應用;安全;形勢;防護
隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,基于瀏覽器訪問的Web應用得到迅速推廣,覆蓋了政府、金融、通訊、能源、教育、醫(yī)療、電子商務等各行各業(yè),涉及了工作、學習、生活、工控等方方面面,給人們的生產(chǎn)生活帶來了巨大的改變,為經(jīng)濟社會向前發(fā)展起到了重大的推進作用。但在互聯(lián)網(wǎng)應用與互聯(lián)網(wǎng)經(jīng)濟發(fā)展如火如荼的同時,來自互聯(lián)網(wǎng)的安全威脅也越來越多,利用操作系統(tǒng)漏洞、SQL注入、Webshell、跨站腳本XSS等手段奪得控制權,對Web站點實施篡改、掛馬、攻擊、數(shù)據(jù)竊取等行為時有發(fā)生,安全事件出現(xiàn)的頻次居高不下,帶來的破壞性、影響力在不斷增大,呈現(xiàn)出波及范圍廣、傳播速度快、破壞力強等特點?;ヂ?lián)網(wǎng)應用的良性發(fā)展,需要Web應用的安全性、健壯性得到保證。Web應用安全不僅要從提高安全意識、加裝防護軟件、部署安全設備上入手,還得不斷創(chuàng)新技術手段從源頭上進行加固和防護。
2014年,在我國接入國際互聯(lián)網(wǎng)20周年之際,我國網(wǎng)民的總?cè)藬?shù)突破了6億,各類網(wǎng)站接近400余萬家,參與網(wǎng)絡購物的人數(shù)達到了3億,我國已然成為互聯(lián)網(wǎng)大國,但與互聯(lián)網(wǎng)強國還有較大差距。2月27日,中共中央網(wǎng)絡與信息化領導小組正式成立,中共中央總書記、國家主席、中央軍委主席習近平親自擔任組長,將網(wǎng)絡安全上升為國家戰(zhàn)略。在中央網(wǎng)絡安全和信息化領導小組第一次會上,習近平強調(diào)“網(wǎng)絡安全和信息化是一體之兩翼、驅(qū)動之雙輪”,做出了“沒有網(wǎng)絡安全就沒有國家安全,沒有信息化就沒有現(xiàn)代化”的重要論斷。
2015年6月,網(wǎng)絡安全企業(yè)與國家互聯(lián)網(wǎng)應急中心、基礎電信企業(yè)、重要行業(yè)部門、安全廠商和民間漏洞平臺等單位在北京簽訂了《中國互聯(lián)網(wǎng)協(xié)會漏洞信息披露和處置自律公約》,進一步規(guī)范漏洞接入、處置與發(fā)布等工作。2015年7月,網(wǎng)絡安全法草案向全社會公開征求意見,新的國家安全法明確了要建設網(wǎng)絡與信息安全保障體系并在十二屆全國人大常委會第十五次會議上獲得通過,中國刑法修正案(九)加入了維護網(wǎng)絡信息安全的相關內(nèi)容并于十二屆全國人大常委會第十六次會議審議通過。
2016年3月,中國首個網(wǎng)絡安全領域的全國性社會團體——網(wǎng)絡空間安全協(xié)會在北京成立,4月19日,中共中央網(wǎng)絡與信息化領導小組組長習近平主持召開網(wǎng)絡安全和信息化工作座談會,并發(fā)表了4.19重要講話,提出我國網(wǎng)信事業(yè)發(fā)展要適應按照創(chuàng)新、協(xié)調(diào)、綠色、開放、共享的發(fā)展理念推動我國經(jīng)濟社會發(fā)展這個大趨勢,推進網(wǎng)絡強國建設。8月,中央網(wǎng)信辦、國家市場監(jiān)督管理總局、國家標準委為加強網(wǎng)絡安全標準化聯(lián)合印發(fā)了《關于加強國家網(wǎng)絡安全標準化工作的若干意見》。11月,保障網(wǎng)絡安全,維護網(wǎng)絡空間主權和國家安全、社會公共利益的《中華人民共和國網(wǎng)絡安全法》發(fā)布。12月,為了貫徹落實習近平主席關于推進全球互聯(lián)網(wǎng)治理體系變革的“四項原則”和構建網(wǎng)絡空間命運共同體的“五點主張”,《國家網(wǎng)絡空間安全戰(zhàn)略》出臺并發(fā)布,闡明了我國關于網(wǎng)絡空間發(fā)展和安全的重大立場。
2017年6月1日,期盼已久的《中華人民共和國網(wǎng)絡安全法》正式施行,填補了我國網(wǎng)絡安全方面的法律空白,網(wǎng)絡安全進入有法可依時代,為打擊網(wǎng)絡犯罪、保障網(wǎng)絡與信息安全供了法律依據(jù)。
綜上表明,網(wǎng)絡與信息安全已經(jīng)上升為國家戰(zhàn)略,將其作為了國家安全的重要內(nèi)容,并進行了立法,實現(xiàn)了有法可依。網(wǎng)絡安全由民間自發(fā)行為為主轉(zhuǎn)變?yōu)閲抑鲗鐣耖g團體共同參與,群策群力、聯(lián)防聯(lián)治、統(tǒng)一共享的工作局面,全社會的重視程度得了前所未有的提升。
據(jù)國家互聯(lián)網(wǎng)應急中心《2016年中國互聯(lián)網(wǎng)網(wǎng)絡安全報告》顯示,2016年,網(wǎng)頁仿冒數(shù)量、網(wǎng)頁篡改數(shù)量、DDoS攻擊數(shù)量、僵尸網(wǎng)絡和木馬程序感染數(shù)與2015年相比均有所下降,但安全漏洞數(shù)量、網(wǎng)站后門攻擊數(shù)量、移動互聯(lián)網(wǎng)惡意程序數(shù)量與2015年相比均有所上升。我國有約1699萬臺主機被木馬和僵尸網(wǎng)絡控制服務器控制,其中境外控制了約1499萬臺,排名前3的分別美國、中國臺灣和荷蘭,相比2015年控制服務器數(shù)量有所下降。移動互聯(lián)網(wǎng)惡意程序數(shù)量達到205萬個,相比2015年增長了39.0%,發(fā)展趨勢持續(xù)增長,惡意程序排在首位的是流氓行為類,其次是惡意扣費類和資費消耗類。CNVD(國家信息安全漏洞共享平臺)2016年共收錄通用軟硬件漏洞10822 個,相比2015 年增長了33.9%,其中應用程序漏洞占到了60.0%,Web 應用漏洞占到16.8%。仿冒我國境內(nèi)網(wǎng)站頁面達到17.8萬個,其中85.4%位于境外。2016 年,我國境內(nèi)有約8萬個網(wǎng)站被植入后門,其中有84.9%來自境外植入,美國、中國香港、俄羅斯分列前3位。我國境內(nèi)約1.7萬個網(wǎng)站被篡改,被篡改主要方式是植入暗鏈[1]。
2017年,我國網(wǎng)站最大現(xiàn)實威脅來自挖礦木馬,最大安全隱患是弱口令問題,并且普遍存在。國內(nèi)網(wǎng)站安全典型事件有某社會管理服務機構遭受挖礦木馬攻擊、某知名軟件企業(yè)服務器遭到惡意部署、某大型機構門戶網(wǎng)站頁面被惡意篡改等。國外著名的網(wǎng)站安全事件有美國聯(lián)邦調(diào)查局網(wǎng)站遭到黑客入侵、日本國內(nèi)有10萬余條信用卡信息被泄露、馬士基航運公司遭遇勒索軟件損失數(shù)億美元、黑客入侵薩克拉門托地區(qū)運輸局網(wǎng)站30%的文件遭到刪除等,這些事件的涉及各個行業(yè)各個領域,需要引起高度的重視。360《2017中國網(wǎng)站安全形勢分析報告》顯示,2017年前10個月,360網(wǎng)站安全檢測平臺共掃出69.1萬余個網(wǎng)站存在安全漏洞,占總掃描網(wǎng)站的66%,其中跨站腳本攻擊漏洞的數(shù)量排名首位,其后是SQL注入漏洞、SQL注入漏洞(盲注)、PHP錯誤信息泄露、數(shù)據(jù)庫運行時錯誤等類型,教育培訓類網(wǎng)站、政府機構類網(wǎng)站、事業(yè)單位類網(wǎng)站存在的漏洞最多。截止到2017年10月,共有79.8萬余個網(wǎng)站遭受了漏洞攻擊,平均每月約有8.0萬余個網(wǎng)站被攻擊,360網(wǎng)站衛(wèi)士共為187.5萬個網(wǎng)站攔截各類漏洞攻擊26.4億次,平均每天攔截漏洞攻擊868.9萬次,其中SQL注入攻擊排名第一,其后分別是Webshell、通用漏洞、nginx攻擊、跨站腳本XSS、掃描器、信息泄露、代碼注入等。2017年全年,補天平臺SRC共收錄各類網(wǎng)站安全漏洞報告22706個,共涉及14416個網(wǎng)站。其中,排名首位的是SQL注入漏洞,其次分別是命令執(zhí)行、信息泄露、弱口令、代碼執(zhí)行等。DDoS 攻擊主要由受控的僵尸網(wǎng)絡發(fā)動,360威脅情報中心的數(shù)據(jù)顯示有626.2萬余個IP被攻擊了1064.3萬余次[2]。
Trustwave(面向企業(yè)和公共部門提供信息安全性與遵規(guī)性管理解決方案的全球性供應商)發(fā)布的《2017全球安全報告》顯示,99.7%的應用至少存在一個漏洞,Web應用中的平均漏洞數(shù)量為11個[3]。從OWASP(開放式Web應用程序安全項目)發(fā)布的2017年Web應用威脅Top 10榜單中可以看出,排名榜首仍然是注入攻擊漏洞,其次分別是失效的身份認證、敏感信息泄露、XXE漏洞、失效的訪問控制、安全配置錯誤、跨站腳本XSS、不安全反序列化漏洞、使用含有已知漏洞的組件等,與2013年威脅排名相比,跨站腳本XSS已從第3位下降到第7位威脅程度有所減弱,但失效的訪問控制、安全配置錯誤、敏感信息泄露等威脅有所上升[4]。美國Imperva公司在《Imperva 2017 Web應用安全報告》中表示,2017年新發(fā)現(xiàn)Web應用漏洞數(shù)量共計14082個,與2016年相比增加了212%,有50%以上的Web應用存在可以利用的攻擊,跨站腳本(XSS)錯誤仍然是最常見、最基本的漏洞[5]。
從以上數(shù)據(jù)可以看出,Web應用安全漏洞普遍存在,安全威脅覆蓋各個地區(qū)、行業(yè)和領域,Web應用安全漏洞占比呈現(xiàn)上升趨勢,且新型安全漏洞不斷涌現(xiàn)。從主要攻擊來源來看,絕大部分的攻擊來自境外,以美國、中國臺灣、中國香港、荷蘭、俄羅斯等為主。攻擊者的主要目的是非法獲取經(jīng)濟利益、竊取信息、從事間諜活動,以及達到某種政治目的或主張、實現(xiàn)某種訴求等,不管是勒索軟件,還是挖礦木馬和惡意程序都是以非法獲取經(jīng)濟利益為主要目的,并將成為未來的一種發(fā)展趨勢。攻擊者的主要手段是利用SQL注入漏洞、跨站腳本XSS、Webshell、遠程命令執(zhí)行、僵尸網(wǎng)絡、弱口令、木馬、網(wǎng)站后門、代碼注入等。受攻擊后的主要表現(xiàn)形式為網(wǎng)頁被篡改、數(shù)據(jù)被破壞、信息被泄露、遭受DDoS攻擊、運行變慢甚至崩潰等。
一個完整的Web應用從上到下由操作系統(tǒng)、數(shù)據(jù)存儲、Web服務器(容器)、Web服務器端開發(fā)語言、Web開發(fā)框架、Web應用程序、Web前端框架、第三方服務、瀏覽器等構成,通過URL完成定位,內(nèi)容與信息的傳輸需HTTP支持,內(nèi)容與信息的表達由HTML支持。Web數(shù)據(jù)在各層次間進行傳輸,每一層都有可能帶來一定的安全問題,比如,出現(xiàn)最多SQL注入源于數(shù)據(jù)存儲層的安全問題,最基本的跨站腳本(XSS)漏洞存在于Web前端,遠程命令執(zhí)行的威脅是由于Web開發(fā)框架或Web應用程序存在問題,nginx攻擊是利用了Web服務器(容器)的漏洞,最底層的操作系統(tǒng)層也存在OS命令執(zhí)行帶來的安全問題。面對復雜的安全問題,除了加裝通用防火墻、Web防護設備、漏洞掃描設備、堡壘機等安全設備之外,還可以針對主要安全威脅實施以下防護措施。
SQL注入包括代碼層注入、平臺層注入兩種,利用用戶輸入過濾漏洞,將特殊字符作為表單提交參數(shù)或URL參數(shù)傳遞給Web應用程序,再利用SQL語句調(diào)用上的漏洞,完成對惡意SQL語句的執(zhí)行,達到篡改數(shù)據(jù)、規(guī)避認證、非法調(diào)閱、執(zhí)行數(shù)據(jù)庫關聯(lián)程序等目的。數(shù)據(jù)庫安全性配置、數(shù)據(jù)類型處理、查詢集處理、轉(zhuǎn)義字符處理、錯誤信息處理等方面存在不合理、不恰當?shù)膯栴}是能完成SQL注入的主要原因。SQL注入防護可以從以下幾點入手:
(1)參數(shù)化查詢
在進行SQL注入時經(jīng)常會在用戶輸入中加上“or+恒真表達式”來繞過認證,數(shù)據(jù)庫系統(tǒng)將用戶輸入當作指令進行執(zhí)行,這樣就帶來了安全問題。一種有效的解決策略就是采用預編譯語句集,數(shù)據(jù)庫系統(tǒng)和Web開發(fā)語言都能支持。首先將SQL語句進行編譯,再把用戶輸入作為指令參數(shù)傳入,避免了將用戶輸入作為指令來執(zhí)行,安全性得到了極大的提高。在SQL SERVER中查詢值前會加上“@”,在MySQL中查詢值前會加上“?”。
(2)使用正則表達式
使用正則表達式將用戶輸入進行過濾,把用戶輸入中包括單引號和雙"-"的轉(zhuǎn)換字符及SQL保留字等字符過濾掉。在JSP中首先要使用“import java.util.regex.*”引入外部包,然后再使用正則表式進行檢測。在.NET中提供了IsMatch()方法用于判斷字符串與正則表達式是否匹配,可對字符串進行直接檢測。
(3)非法字符過濾
使用函數(shù)對用戶輸入、URL中的非法字符進行過濾,比如檢測過濾“*、/、\、and、or、insert、delete”等非法字符或字符串。
(4)其他方法
在PHP中使用函數(shù)addslashes()對SQL語句進行轉(zhuǎn)換、將“register_globals” 設置成“off”不允許注冊全局變量。錯誤信息不直接輸出到瀏覽器,代碼書寫規(guī)范。
在進行Web前端開發(fā)時,由于開發(fā)者對用戶提交信息的缺少必要的限制與過濾操作,導致用戶在瀏覽Web頁時執(zhí)行攻擊者在該頁中植入的惡意代碼,達到劫持會話完成用戶頁面跳轉(zhuǎn)或破壞站點的目的。XSS通常嵌入在JavaScript中,也有可能嵌入在VBScript、ActiveX等其他腳本中[6]。通過XSS攻擊,攻擊者可以竊取用戶Cookie中的授權信息,冒充授權用戶與Web服務端進行會話,將惡意代碼存儲到Web應用關聯(lián)的數(shù)據(jù)庫中,實現(xiàn)持久性攻擊[7]。跨站腳本攻擊(XSS)的主要防護方法有:
(1)嚴格進行輸入驗證與輸出編碼
該方法是OWASP認為最有效的XSS防護方法,對從表單、隱藏表單、數(shù)據(jù)庫中獲得的數(shù)據(jù)及URL中傳遞的參數(shù)等Web應用輸入數(shù)據(jù),在存儲或被顯示之前進行類型、長度、語法規(guī)則等方面的驗證,對輸入數(shù)據(jù)進行攻擊檢測與過濾。對寫入到數(shù)據(jù)庫與輸出至用戶瀏覽器端的數(shù)據(jù)等Web應用輸出數(shù)據(jù)進行entity編碼防止植入腳本在瀏覽器端運行。可以使用HtmlEncode進行編碼,使用JavaScriptEncode實現(xiàn)對特殊字符的轉(zhuǎn)義。
(2)使用HttpOnly防止Cookie會話被劫持
設置Cookie中的HttpOnly屬性為Ture,防止Cookie被JS腳本訪問,保護Cookie信息免受竊取,防止Cookie會話被劫持。
Webshell是由asp、jsp、php等動態(tài)腳本語言編寫而成,以網(wǎng)頁形式存在,攻擊者通過非法手段上傳至Web服務器,通過遠程瀏覽器訪問這些后門網(wǎng)頁構造命令執(zhí)行環(huán)境,達到取得服務器操作控制權的目的。由于Webshell與正常網(wǎng)頁相似,并采取了一些偽裝措施,經(jīng)常規(guī)避了安全防護軟件的檢測。針對Webshell的主要防護措施為:
(1)加強文件上傳管理
盡量不使用asp、jsp、php等腳本語言編寫的文件上傳程序進行文件上傳或文件管理,網(wǎng)站文件管理盡量使用Ftp工具完成。文件上傳采取白名單管理策略,不在許可名單之內(nèi)的IP或用戶禁此上傳。設置文件類型白名單,對前臺文件格式、Content-Type參數(shù)類型、服務器文件類型進行檢測,嚴格控制白名單之外的類型上傳,禁止上傳動態(tài)腳本文件。對文件內(nèi)容進行檢測,過濾一句話木馬、圖片木馬。
(2)加強服務器權限管理
使用訪問控制列表(ACL)對Web目錄的各種權限進行嚴格控制,所有Web應用都不運行在超級用戶之下,同一服務器多個站點之間配置不同的用戶權限。在Windows系統(tǒng)中,系統(tǒng)敏感目錄和Web目錄只有超級用戶具有寫入權限,其他寫入權限分配合System用戶;分配給Web匿名賬戶只有讀取文件的權限,限制上傳目錄只有寫入權沒有執(zhí)行權。在Linux系統(tǒng)中,TOMCAT、WEBLOGIC、WEBSPHERE等Web容器不以超級用戶直接運行,而是運行在經(jīng)過特殊安全配置的用戶之下。
(3)其他安全防范措施
使用IIS容器的要禁用WebDEV,防止攻擊者利用iisput工具上傳websheell文件,必須開啟WebDEV的必須選用安全的驗證方式對訪問用戶進行身份驗證。使用ftp進行網(wǎng)站文件管理的,禁止使用匿名訪問,并不將Serv-U安裝在默認路徑。在Windows平臺下,對cmd.exe、net.exe、netstat.exe、ftp.exe、telnet.exe等命令進行嚴格的使用權限管理或?qū)ζ溥M行改名處理。最后還可以使用NeoPI、LOKI、Shell Detector、D盾、360主機衛(wèi)士等專業(yè)工具進行檢測查殺。
攻擊者利用Web開發(fā)框架的漏洞或Web應用在開發(fā)時對exec()、eval()等特殊可執(zhí)行函數(shù)入口未做過濾操作的漏洞,通過瀏覽器提交和執(zhí)行惡意構造代碼。對于因開發(fā)框架存在漏洞引起的遠程命令執(zhí)行安全威脅(如Struts2遠程命令執(zhí)行漏洞)只能通過安裝漏洞補丁的方法來解決。Web應用開發(fā)禁止使用用戶傳入?yún)?shù)調(diào)用系統(tǒng)函數(shù),在Web前端和服務端對輸入數(shù)據(jù)和輸出數(shù)據(jù)進行數(shù)據(jù)內(nèi)容、類型、長度等進行檢測和過濾,最好對用戶輸入數(shù)據(jù)進行編碼處理,同時對從數(shù)據(jù)庫取出的數(shù)據(jù)進行必要的安全檢測。
nginx是一種高性能、輕量級的Web服務器軟件,nginx攻擊是指當nginx在處理輸入輸出數(shù)據(jù)時誤將一些數(shù)據(jù)當作指令來執(zhí)行,以及一些不安全的配置而引起的DDoS流量攻擊和遠程溢出等安全問題。使用正則達表式對URL參數(shù)、user-agent信息進行匹配將“scan、echo、nmap”等特殊字符或關鍵字進行過濾。在nginx.conf中限制客戶端可用緩沖區(qū)的大小防范緩沖區(qū)溢出攻擊。利用nginx自帶http_limit_conn和http_limit_req模塊限制單IP連接數(shù)和請求數(shù),同時配合黑白名單,對DDoS攻擊進行防范。訪問網(wǎng)站必須使用域名防范IP掃描。
以上從我國的網(wǎng)絡安全背景、國際國內(nèi)網(wǎng)絡安全事件和網(wǎng)絡安全攻擊形式與方式等方面分析了Web應用所面臨的安全形勢,介紹了SQL注入、跨站腳本攻擊(XSS)、Webshell、遠程命令執(zhí)行、nginx攻擊等幾種主要的攻擊手段和防護措施,需要Web應用開發(fā)者、運營者和使用者,從多方面著手加強安全防護,維護好廣大用戶的權益。
[1]國家計算機網(wǎng)絡應急技術處理協(xié)調(diào)中心.2016年中國互聯(lián)網(wǎng)網(wǎng)絡安全報告[M].北京:人民郵電出版社,2017:15-25.
[2]360威脅情報中心. 2017中國網(wǎng)站安全形勢分析報告[EB/OL].http://zt.#/1101061855.php?dtid=1101062368&did=490995546,2018-01-23.
[3]安全優(yōu)佳.2017全球安全報告:Web應用中平均包含11個漏洞[EB/OL] .http://www.sohu.com/a/151620330_ 765820,2017-06-24.
[4]劉亞瓊.2017 Top 10 Web 應用安全威脅,你的企業(yè)正在經(jīng)歷哪些?[EB/OL].http://blog.csdn. net/u013424982/article/details/78700928,2017-12-03日.
[5] darkreading. 2018年1月4日 Imperva 2017 Web應用安全報告新出現(xiàn)的Web應用漏洞增長212%[EB/OL].http://toutiao. secjia.com/2017-web-application-vulnerabilities,2018-01-04.
[6]竇浩,武艷文,段升強. Web應用安全風險防護分析與防護研究[J].西安建筑科技大學學報(自然科學版),2012(3):446-451.
[7]龍興剛. Web 應用的安全現(xiàn)狀與防護技術研究[J].通信技術,2013(7):63-66.