- 網站入侵與腳本攻防修煉
- 肖遙編著
- 456字
- 2019-03-01 22:12:20
第1章 網站腳本入侵與防范概述
在網絡異常發達的今天,網絡上各種大大小小的網站已經隨處可見。博客、文章系統、論壇、相冊、留言本、投票系統等,各種各樣的站點為網絡平添許多色彩。無論是從公司、企業,還是個人,往往都會擁有自己的網站,網站已經成為交流溝通、展示個性、商業宣傳等必不可少的手段。
然而,在網絡豐富而精彩的世界中,也正潛藏著一道道危險的暗流。各種各樣的網站攻擊事件層出不窮,大到國家政府部門,小到單位、個人的站點,都常常出現被入侵攻擊事件的報道。
為何網站如此難以確保安全?為何一個學習了幾個小時的“腳本小子”,竟能輕易地入侵控制你的網站?為何擁有眾多安全專家的大型網站,卻也防不住一個狡猾黑客的攻擊?—這一切,源于網站腳本的脆弱性,也有眾多網站程序設計者與管理員對網站入侵技術的陌生有著重要的關系。
Web應用程序的代碼,并不像意想中的那樣安全;但維護Web網站程序的安全性,也并非無章可尋。本書要帶給大家的,將是揭示各種網站腳本入侵技術行為,并詳細分析其原理與相關的防護方案,為網站程序設計者及管理人員找到一條安全之道。
1.1 危害嚴重,難于防范的Web腳本入侵攻擊
盡管網絡在不斷的發展,網站服務器安全意識與知識的普及狀況也比幾年前好了很多,但是各種網絡腳本入侵攻擊事件反而愈演愈烈。
據統計,大約每20秒就有一次網絡入侵事件發生,全球每年因網絡安全問題造成的經濟損失高達數百億美元。在我國,90%以上的網站存在安全漏洞,很多網站都曾受到過黑客的攻擊和計算機病毒的侵害。
雖然許多網站做了大量的安全工作,安裝防火墻保護服務器,給系統打上最新的補丁,安裝各種攻擊檢測系統,但依然不能阻擋黑客的入侵攻擊。而這一切攻擊來源最猛烈之處,就是網站上的各種Web應用程序。
各種Web應用程序,讓網站陷入異常尷尬的局面——網站在不得不提供相應服務的同時,卻又無法保證程序的安全性。這是一個兩難的問題。
的確如此,各種針對Web應用程序的腳本攻擊技術,將各種大大小小的網站服務器都置于極為危險的境地。這種攻擊方式破壞性極強,輕者讓網站無法正常服務和訪問,重者直接導致服務器數據丟失,被黑客控制!
1.1.1 Web腳本攻擊概述及特點
Web站點默認80為服務端口,關于它的各種安全問題不斷地發布出來,這些漏洞中一些甚至允許攻擊者獲得系統管理員的權限進入站點內部。許多黑客甚至可以突破SSL加密和各種防火墻,攻入Web網站的內部,進而竊取信息。黑客可以僅憑借瀏覽器和幾個技巧,就能獲取Web網站的客戶保密資料,甚至控制整個網站服務器。
簡單來說,針對網站服務器80端口的Web服務進行的各種攻擊行為,就叫做Web腳本攻擊。
Web腳本攻擊入侵,在網絡上非常泛濫,原因也在于其特殊性,見如下說明。
1.暴露的目標
由于網絡上各種大大小小的網站數不勝數,因此給Web腳本攻擊者提供了眾多的攻擊目標。同時Web腳本攻擊的目標不僅在于公司和政府等大型網站,同時也威脅著各種個人網站;而Web腳本攻擊不僅應用在常見的Windows操作系統上,對于UNIX、Tomcat等眾多類型操作系統的服務器上,Web腳本攻擊也能順利地展開實施。同時無論是任何Web服務程序,都有存在可攻擊漏洞的可能。
可以這么說,只要用網站的地方,就存在著Web腳本攻擊。正是由于Web腳本攻擊的目標極為眾多,也導致了Web腳本攻擊事件的頻繁發生。
2.危害嚴重
普通的木馬攻擊和程序溢出漏洞攻擊等,都可以獲得攻擊目標主機操作系統的控制權利,而Web腳本攻擊的危害同樣嚴重。
使用Web腳本攻擊,不僅可以輕易地更改目標主頁信息,導致網站服務無法正常進行,重者可以盜取網站用戶中的重要數據,造成整個網站癱瘓,甚至還可以控制整個網站服務器。
同時,由于網站服務器一般都屬于目標網絡系統中比較重要的主機,因此在滲透入侵攻擊整個目標網絡時,Web腳本攻擊都將起到極具破壞力的作用。
Web腳本攻擊的危害嚴重,還體現在Web腳本攻擊的簡單性上。由于Web腳本攻擊采取的手段往往很簡單,也許一句話的代碼就可以讓網站服務器被黑客控制掌握于掌指之中。而許多網站管理員門往往只是對系統的安全特性比較重視,卻忽略了網站Web程序方面的漏洞,由于防范的疏忽,因此使用的Web腳本攻擊比一般的攻擊方式更易進行,對網站服務器造成的危害更大。
3.攻擊方式多樣
由于Web網站服務器各異,使用的網站程序也不盡相同,不同的Web網站服務器和不同的網站程序都可能存在不同的漏洞,因此使用Web腳本攻擊方式極為多樣。
Web腳本攻擊者可能從網站的文章系統、下載系統、留言板等部分進行攻擊,也可能針對網站的數據庫進行操作,也可能在網頁中寫入攻擊性的代碼等。甚至于通過網站上的一幅圖片,都可以進行攻擊,因此Web腳本攻擊可謂無孔不入。
4.難于防范
對于普通的攻擊方式,如木馬攻擊、溢出攻擊等,網絡管理員可以通過為操作系統打上各種安全漏洞補丁、安裝防火墻和殺毒軟件等進行防范,而這些防范措施也往往是有效的。但是對于Web腳本攻擊來說,這些防范方式往往很難有較好的效果。
由于每個網站采用的Web程序都不相同,因此每個網站可能存在的漏洞也不相同,很難采用統一的方式為網站進行補漏、打補丁。
與一般的入侵攻擊方式相比,Web腳本攻擊不會在防火墻和系統日志中留下任何入侵痕跡,即使經歷豐富的網絡管理員,也很難從網站日志中追查出入侵者的足跡。
5.不易檢測
一般的入侵攻擊方式,往往會由于攻擊目標上安裝了防火墻而導致失敗,但是使用Web腳本攻擊的話,防火墻卻形同虛設。由于Web腳本攻擊的所有操作都是通過系統中的80端口來進行的,而通過該端口的數據都是被防火墻所許可的,因此防火墻不會對Web腳本攻擊進行攔截,使得Web腳本攻擊可以順利地通過防火墻進行。
同時入侵者通過Web腳本攻擊入侵后,往往是通過在網站中放置一些ASP或腳本代碼文件作為后門,這些文件往往很難像普通的病毒那樣可以通過殺毒軟件查殺。更有甚者,在合法的網頁文件中插入一段隱蔽的代碼,致使殺毒軟件完全無法識別這樣的后門存在。還有的入侵者直接修改網頁源代碼,取消某些密碼驗證等,使入侵者可以隨意自由地進入服務器,對于這些留后門的方式,殺毒軟件可以說是完全無效了。
1.1.2 入侵者是怎樣進入的
Web腳本攻擊的一個突出特點,就是攻擊手段方式多種多樣,攻擊者在進行Web腳本攻擊入侵時,通常會采取哪些步驟呢?
1.踩點
所謂“踩點”,與普通入侵方式中的系統掃描類似,就是通過各種手段來對要入侵的網站服務器進行分析和判斷,從而尋找到服務器可能存在的漏洞,并決定采取何種入侵方式才能最快、最隱蔽地成功入侵網站服務器。
踩點所要獲取的信息包括以下內容。
1)操作系統與服務器版本
不同的網站服務器采用的操作系統不同,主要有Windows系統、UNIX系統、Linux系統及Tomcat系統等。
在Windows操作系統中常見的網站服務程序為IIS,版本也不盡相同,比如Windows 2000系統使用的是IIS 5.0,而Windows XP系統使用的則是IIS 6.0版本。在UNIX系統、Linux系統中常見的網站服務程序是Apache,版本也不相同。而許多JSP網站程序服務器則使用了比較少見的Tomcat系統。
不同的操作系統入侵方式也不同,如在Tomcat 3.0版本中就存在一個目錄路徑泄露漏洞,而在IIS服務器中則有可能存在暴庫、腳本備份后門等漏洞,因此攻擊者在實施Web入侵攻擊前,首先會獲得網站服務器的操作系統及網頁服務器版本信息,并制訂出合適的入侵方案來。
2)Web程序結構
由于每個網站使用的Web程序不同,有可能是公開的源代碼,也有可能是網站自己撰寫的程序。攻擊者首先要了解到Web程序的各種信息,如首頁等使用什么,是否采用整站系統,如常用的動力文章系統、喬客等;網站是否有論壇,論壇又是采用什么程序架設的,它的版本號,如常見的動網論壇、PHPwind論壇等。
如果網站是使用公開源代碼的Web程序,攻擊者可能直接判斷該版本程序是否有漏洞,并進行攻擊;如果使用的是自寫的代碼,攻擊者就會進行各種檢測,尋找出是否存在各種漏洞。
2.Web腳本攻擊常見方式
Web腳本攻擊的方式多種多樣,但最常見的Web腳本攻擊主要分為以下幾種。
1)SQL腳本注入攻擊
從2004年開始,SQL注入攻擊技術逐步發展并迅速流行起來。由于技術的成熟加上各種利用工具的出現,使得SQL注入攻擊成為腳本黑客必會的一項入侵技術。SQL注入學習起來非常簡單,利用一個SQL注入工具,剛接觸入侵技術的“腳本小子”們,都可能在幾分鐘之內攻陷一個網站服務器。
出現SQL腳本注入攻擊漏洞的原因,主要是由于許多網頁程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,從而使網頁應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL腳本注入。
SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區別,所以目前市場的防火墻都不會對SQL注入發出警報,如果管理員沒查看IIS日志的習慣,可能被入侵很長時間都不會發覺,因此SQL注入攻擊手法非常隱蔽。
國內的網站用ASP+Access或SQL Server的占70%以上,PHP+MySQL占20%,其他的不足10%,因此SQL注入攻擊按網站類型主要可分為ASP注入和PHP注入兩種,此外還有JSP、CGI注入攻擊等。
2)文件上傳漏洞攻擊
網站的上傳漏洞是由于網頁代碼中的文件上傳路徑變量過濾不嚴造成的,利用這個上傳漏洞就可以任意上傳如.ASP的網頁木馬,然后連接上傳的網頁即可控制該網站系統。
網頁編寫者未對文件上傳路徑變量或文件名變量進行任何過濾,因此用戶可以任意修改變量值,將具有攻擊性的網頁后門程序上傳到網站服務器上,并控制整個網站服務器。
上傳漏洞最初出現于大名鼎鼎的動網論壇,危害性極大,曾經致使整個網絡中的諸多網站遭受攻擊。
3)數據庫入侵
數據庫入侵包括利用默認數據庫下載和暴庫下載,在數據庫里面插入代碼等通過網站程序數據庫進行的攻擊。
默認數據庫漏洞,是指許多網站在使用一些公開源代碼的網站程序時,由于未對數據庫路徑及數據庫文件名進行修改,導致攻擊者可以直接下載或操作默認的數據庫文件進行攻擊。
暴庫是指利用%5c之類的編碼轉換,讓網站顯示出數據庫文件名。數據庫如果是.mdb格式的則直接下載,利用數據庫查看的工具進行查找賬號和密碼;如果對方數據庫為.asp后綴的,可以直接在數據庫中寫入可執行的ASP代碼,將數據庫變為后門使用。
4)跨站腳本攻擊與木馬網頁
跨站腳本攻擊是指,攻擊者在遠程Web頁面的HTML代碼中插入有危害性的代碼語句。用戶認為該頁面是可信賴的,但是當瀏覽器下載該頁面,嵌入其中的腳本將被解釋執行。
跨站腳本漏洞攻擊方式最常見的是,通過盜取cookie或欺騙打開木馬網頁等取得重要資料;也可以直接在存在跨站漏洞的網站中寫入腳本代碼,在網站掛上木馬網頁等。
5)其他腳本攻擊
網站服務器的漏洞主要集中在各種網頁上面,由于網頁程序的編寫不嚴謹,因而出現了各種腳本漏洞,比如前面提到的暴庫漏洞、動網文件上傳漏洞、Cookie欺騙漏洞等,都是屬于腳本漏洞攻擊中的某一種類型。但是除了這幾類常見的腳本漏洞外,還有一些專門針對某些網站程序出現的腳本程序漏洞,最常見的有用戶輸入數據過濾不嚴、網站源代碼暴露等。
總之,Web腳本攻擊技術種類很多,而且各種新的腳本技術又不斷地被發掘出來,因此作為網站安全人員,及時地了解各種Web腳本攻擊技術與漏洞防范是必需的。