十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
不但企業(yè)的門戶網(wǎng)站被篡改、資料被竊取,而且還成為了病毒與木馬的傳播者。有些Web管理員采取了一些措施,雖然可以保證門戶網(wǎng)站的主頁不被篡改,但是卻很難避免自己的網(wǎng)站被當(dāng)作肉雞,來傳播病毒、惡意插件、木馬等等。筆者認(rèn)為,這很大一部分原因是管理員在Web安全防護(hù)上太被動。他們只是被動的防御。為了徹底提高Web服務(wù)器的安全,筆者認(rèn)為,Web安全要主動出擊。具體的來說,需要做到如下幾點(diǎn)。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為咸豐等服務(wù)建站,咸豐等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為咸豐企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
一、在代碼編寫時就要進(jìn)行漏洞測試
現(xiàn)在的企業(yè)網(wǎng)站做的越來越復(fù)雜、功能越來越強(qiáng)。不過這些都不是憑空而來的,是通過代碼堆積起來的。如果這個代碼只供企業(yè)內(nèi)部使用,那么不會帶來多大的安全隱患。但是如果放在互聯(lián)網(wǎng)上使用的話,則這些為實(shí)現(xiàn)特定功能的代碼就有可能成為攻擊者的目標(biāo)。筆者舉一個簡單的例子。在網(wǎng)頁中可以嵌入SQL代碼。而攻擊者就可以利用這些SQL代碼來發(fā)動攻擊,來獲取管理員的密碼等等破壞性的動作。有時候訪問某些網(wǎng)站還需要有某些特定的控件。用戶在安裝這些控件時,其實(shí)就有可能在安裝一個木馬(這可能訪問者與被訪問者都沒有意識到)。
為此在為網(wǎng)站某個特定功能編寫代碼時,就要主動出擊。從編碼的設(shè)計到編寫、到測試,都需要認(rèn)識到是否存在著安全的漏洞。筆者在日常過程中,在這方面對于員工提出了很高的要求。各個員工必須對自己所開發(fā)的功能負(fù)責(zé)。至少現(xiàn)在已知的病毒、木馬不能夠在你所開發(fā)的插件中有機(jī)可乘。通過這層層把關(guān),就可以提高代碼編寫的安全性。
二、對Web服務(wù)器進(jìn)行持續(xù)的監(jiān)控
冰凍三尺、非一日之寒。這就好像人生病一樣,都有一個過程。病毒、木馬等等在攻擊Web服務(wù)器時,也需要一個過程?;蛘哒f,在攻擊取得成功之前,他們會有一些試探性的動作。如對于一個采取了一定安全措施的Web服務(wù)器,從攻擊開始到取得成果,至少要有半天的時間。如果Web管理員對服務(wù)器進(jìn)行了全天候的監(jiān)控。在發(fā)現(xiàn)有異常行為時,及早的采取措施,將病毒與木馬阻擋在門戶之外。這種主動出擊的方式,就可以大大的提高Web服務(wù)器的安全性。
筆者現(xiàn)在維護(hù)的Web服務(wù)器有好幾十個?,F(xiàn)在專門有一個小組,來全天候的監(jiān)控服務(wù)器的訪問。平均每分鐘都可以監(jiān)測到一些試探性的攻擊行為。其中99%以上的攻擊行為,由于服務(wù)器已經(jīng)采取了對應(yīng)的安全措施,都無功而返。不過每天仍然會遇到一些攻擊行為。這些攻擊行為可能是針對新的漏洞,或者采取了新的攻擊方式。在服務(wù)器上原先沒有采取對應(yīng)的安全措施。如果沒有及時的發(fā)現(xiàn)這種行為,那么他們就很有可能最終實(shí)現(xiàn)他們的非法目的。相反,現(xiàn)在及早的發(fā)現(xiàn)了他們的攻擊手段,那么我們就可以在他們采取進(jìn)一步行動之前,就在服務(wù)器上關(guān)掉這扇門,補(bǔ)上這個漏洞。
筆者在這里也建議,企業(yè)用戶在選擇互聯(lián)網(wǎng)Web服務(wù)器提供商的時候,除了考慮性能等因素之外,還要評估服務(wù)提供商能否提供全天候的監(jiān)控機(jī)制。在Web安全上主動出擊,及時發(fā)現(xiàn)攻擊者的攻擊行為。在他們采取進(jìn)一步攻擊措施之前,就他們消除在萌芽狀態(tài)。
三、設(shè)置蜜罐,將攻擊者引向錯誤的方向
在軍隊中,有時候會給軍人一些“偽裝”,讓敵人分不清真?zhèn)巍F鋵?shí)在跟病毒、木馬打交道時,本身就是一場無硝煙的戰(zhàn)爭。為此對于Web服務(wù)器采取一些偽裝,也能夠?qū)⒐粽咭蝈e誤的方向。等到供給者發(fā)現(xiàn)自己的目標(biāo)錯誤時,管理員已經(jīng)鎖定了攻擊者,從而可以及早的采取相應(yīng)的措施。筆者有時候?qū)⑦@種主動出擊的行為叫做蜜罐效應(yīng)。簡單的說,就是設(shè)置兩個服務(wù)器。其中一個是真正的服務(wù)器,另外一個是蜜罐?,F(xiàn)在需要做的是,如何將真正的服務(wù)器偽裝起來,而將蜜罐推向公眾。讓攻擊者認(rèn)為蜜罐服務(wù)器才是真正的服務(wù)器。要做到這一點(diǎn)的話,可能需要從如下幾個方面出發(fā)。
一是有真有假,難以區(qū)分。如果要瞞過攻擊者的眼睛,那么蜜罐服務(wù)器就不能夠做的太假。筆者在做蜜罐服務(wù)器的時候,80%以上的內(nèi)容都是跟真的服務(wù)器相同的。只有一些比較機(jī)密的信息沒有防治在蜜罐服務(wù)器上。而且蜜罐服務(wù)器所采取的安全措施跟真的服務(wù)器事完全相同的。這不但可以提高蜜罐服務(wù)器的真實(shí)性,而且也可以用來評估真實(shí)服務(wù)器的安全性。一舉兩得。
二是需要有意無意的將攻擊者引向蜜罐服務(wù)器。攻擊者在判斷一個Web服務(wù)器是否值得攻擊時,會進(jìn)行評估。如評估這個網(wǎng)站的流量是否比較高。如果網(wǎng)站的流量不高,那么即使被攻破了,也沒有多大的實(shí)用價值。攻擊者如果沒有有利可圖的話,不會花這么大的精力在這個網(wǎng)站服務(wù)器上面。如果要將攻擊者引向這個蜜罐服務(wù)器的話,那么就需要提高這個蜜罐服務(wù)器的訪問量。其實(shí)要做到這一點(diǎn)也非常的容易?,F(xiàn)在有很多用來交互流量的團(tuán)隊。只要花一點(diǎn)比較小的投資就可以做到這一點(diǎn)。
四、專人對Web服務(wù)器的安全性進(jìn)行測試
俗話說,靠人不如靠自己。在Web服務(wù)器的攻防戰(zhàn)上,這一個原則也適用。筆者建議,如果企業(yè)對于Web服務(wù)的安全比較高,如網(wǎng)站服務(wù)器上有電子商務(wù)交易平臺,此時最好設(shè)置一個專業(yè)的團(tuán)隊。他們充當(dāng)攻擊者的角色,對服務(wù)器進(jìn)行安全性的測試。這個專業(yè)團(tuán)隊主要執(zhí)行如下幾個任務(wù)。
一是測試Web管理團(tuán)隊對攻擊行為的反應(yīng)速度。如可以采用一些現(xiàn)在比較流行的攻擊手段,對自己的Web服務(wù)器發(fā)動攻擊。當(dāng)然這個時間是隨機(jī)的。預(yù)先Web管理團(tuán)隊并不知道?,F(xiàn)在要評估的是,Web管理團(tuán)隊在多少時間之內(nèi)能夠發(fā)現(xiàn)這種攻擊的行為。這也是考驗(yàn)管理團(tuán)隊全天候跟蹤的能力。一般來說,這個時間越短越好。應(yīng)該將這個時間控制在可控的范圍之內(nèi)。即使攻擊最后沒有成功,Web管理團(tuán)隊也應(yīng)該及早的發(fā)現(xiàn)攻擊的行為。畢竟有沒有發(fā)現(xiàn)、與最終有沒有取得成功,是兩個不同的概念。
二是要測試服務(wù)器的漏洞是否有補(bǔ)上。畢竟大部分的攻擊行為,都是針對服務(wù)器現(xiàn)有的漏洞所產(chǎn)生的。現(xiàn)在這個專業(yè)團(tuán)隊要做的就是,這些已發(fā)現(xiàn)的漏洞是否都已經(jīng)打上了安全補(bǔ)丁或者采取了對應(yīng)的安全措施。有時候我們都沒有發(fā)現(xiàn)的漏洞是無能為力,但是對于這些已經(jīng)存在的漏洞不能夠放過。否則的話,也太便宜那些攻擊者了。
一、SQL注入漏洞
SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL注入,被廣泛用于非法獲取網(wǎng)站控制權(quán),是發(fā)生在應(yīng)用程序的數(shù)據(jù)庫層上的安全漏洞。在設(shè)計程序,忽略了對輸入字符串中夾帶的SQL指令的檢查,被數(shù)據(jù)庫誤認(rèn)為是正常的SQL指令而運(yùn)行,從而使數(shù)據(jù)庫受到攻擊,可能導(dǎo)致數(shù)據(jù)被竊取、更改、刪除,以及進(jìn)一步導(dǎo)致網(wǎng)站被嵌入惡意代碼、被植入后門程序等危害。
通常情況下, SQL 注入的位置包括:
(1)表單提交,主要是POST 請求,也包括GET 請求;
(2)URL 參數(shù)提交,主要為GET 請求參數(shù);
(3)Cookie 參數(shù)提交;
(4)HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些邊緣的輸入點(diǎn),比如.mp3 文件的一些文件信息等。
SQL注入的危害不僅體現(xiàn)在數(shù)據(jù)庫層面上, 還有可能危及承載數(shù)據(jù)庫的操作系統(tǒng);如果SQL 注入被用來掛馬,還可能用來傳播惡意軟件等,這些危害包括但不局限于:
(1)數(shù)據(jù)庫信息泄漏:數(shù)據(jù)庫中存放的用戶的隱私信息的泄露。作為數(shù)據(jù)的存儲中心,數(shù)據(jù)庫里往往保存著各類的隱私信息, SQL 注入攻擊能導(dǎo)致這些隱私信息透明于攻擊者。
(2)網(wǎng)頁篡改:通過操作數(shù)據(jù)庫對特定網(wǎng)頁進(jìn)行篡改。
(3)網(wǎng)站被掛馬,傳播惡意軟件:修改數(shù)據(jù)庫一些字段的值,嵌入網(wǎng)馬鏈接,進(jìn)行掛馬攻擊。
(4)數(shù)據(jù)庫被惡意操作:數(shù)據(jù)庫服務(wù)器被攻擊,數(shù)據(jù)庫的系統(tǒng)管理員帳戶被篡改。
(5)服務(wù)器被遠(yuǎn)程控制,被安裝后門。經(jīng)由數(shù)據(jù)庫服務(wù)器提供的操作系統(tǒng)支持,讓黑客得以修改或控制操作系統(tǒng)。
(6)破壞硬盤數(shù)據(jù),癱瘓全系統(tǒng)。
二、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發(fā)生在客戶端,可被用于進(jìn)行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術(shù)主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB服務(wù)器雖無直接危害,但是它借助網(wǎng)站進(jìn)行傳播,使網(wǎng)站的使用用戶受到攻擊,導(dǎo)致網(wǎng)站用戶帳號被竊取,從而對網(wǎng)站也產(chǎn)生了較嚴(yán)重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型??缯敬a一般存在于鏈接中,請求這樣的鏈接時,跨站代碼經(jīng)過服務(wù)端反射回來,這類跨站的代碼不存儲到服務(wù)端(比如數(shù)據(jù)庫中)。上面章節(jié)所舉的例子就是這類情況。 (2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲于服務(wù)端(比如數(shù)據(jù)庫中)。常見情況是某用戶在論壇發(fā)貼,如果論壇沒有過濾用戶輸入的Javascript代碼數(shù)據(jù),就會導(dǎo)致其他瀏覽此貼的用戶的瀏覽器會執(zhí)行發(fā)貼人所嵌入的Javascript代碼。 (3)DOM跨站(DOM XSS):是一種發(fā)生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因?yàn)榭蛻舳四_本處理邏輯導(dǎo)致的安全問題。
三、弱口令漏洞
弱口令(weak password) 沒有嚴(yán)格和準(zhǔn)確的定義,通常認(rèn)為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設(shè)置密碼通常遵循以下原則:
(1)不使用空口令或系統(tǒng)缺省的口令,這些口令眾所周知,為典型的弱口令。
(2)口令長度不小于8個字符。
(3)口令不應(yīng)該為連續(xù)的某個字符(例如:AAAAAAAA)或重復(fù)某些字符的組合(例如:tzf.tzf.)。
(4)口令應(yīng)該為以下四類字符的組合,大寫字母(A-Z)、小寫字母(a-z)、數(shù)字(0-9)和特殊字符。每類字符至少包含一個。如果某類字符只包含一個,那么該字符不應(yīng)為首字符或尾字符。
(5)口令中不應(yīng)包含本人、父母、子女和配偶的姓名和出生日期、紀(jì)念日期、登錄名、E-mail地址等等與本人有關(guān)的信息,以及字典中的單詞。
(6)口令不應(yīng)該為用數(shù)字或符號代替某些字母的單詞。
(7)口令應(yīng)該易記且可以快速輸入,防止他人從你身后很容易看到你的輸入。
(8)至少90天內(nèi)更換一次口令,防止未被發(fā)現(xiàn)的入侵者繼續(xù)使用該口令。
四、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規(guī)范定義了HTTP TRACE方法,主要是用于客戶端通過向Web服務(wù)器提交TRACE請求來進(jìn)行測試或獲得診斷信息。當(dāng)Web服務(wù)器啟用TRACE時,提交的請求頭會在服務(wù)器響應(yīng)的內(nèi)容(Body)中完整的返回,其中HTTP頭很可能包括Session Token、Cookies或其它認(rèn)證信息。
攻擊者可以利用此漏洞來欺騙合法用戶并得到他們的私人信息。該漏洞往往與其它方式配合來進(jìn)行有效攻擊,由于HTTP TRACE請求可以通過客戶瀏覽器腳本發(fā)起(如XMLHttpRequest),并可以通過DOM接口來訪問,因此很容易被攻擊者利用。
五、Struts2遠(yuǎn)程命令執(zhí)行漏洞
ApacheStruts是一款建立Java web應(yīng)用程序的開放源代碼架構(gòu)。Apache Struts存在一個輸入過濾錯誤,如果遇到轉(zhuǎn)換錯誤可被利用注入和執(zhí)行任意Java代碼。 網(wǎng)站存在遠(yuǎn)程代碼執(zhí)行漏洞的大部分原因是由于網(wǎng)站采用了Apache Struts Xwork作為網(wǎng)站應(yīng)用框架,由于該軟件存在遠(yuǎn)程代碼執(zhí)高危漏洞,導(dǎo)致網(wǎng)站面臨安全風(fēng)險。
六、文件上傳漏洞
文件上傳漏洞通常由于網(wǎng)頁代碼中的文件上傳路徑變量過濾不嚴(yán)造成的,如果文件上傳功能實(shí)現(xiàn)代碼沒有嚴(yán)格限制用戶上傳的文件后綴以及文件類型,攻擊者可通過Web訪問的目錄上傳任意文件,包括網(wǎng)站后門文件( webshell ),進(jìn)而遠(yuǎn)程控制網(wǎng)站服務(wù)器。因此,在開發(fā)網(wǎng)站及應(yīng)用程序過程中,需嚴(yán)格限制和校驗(yàn)上傳的文件,禁止上傳惡意代碼的文件。同時限制相關(guān)目錄的執(zhí)行權(quán)限,防范webshell攻擊。
七、私有IP地址泄露漏洞
IP地址是網(wǎng)絡(luò)用戶的重要標(biāo)示,是攻擊者進(jìn)行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網(wǎng)絡(luò)情況采取不同的方法,如:在局域網(wǎng)內(nèi)使用Ping指令, Ping對方在網(wǎng)絡(luò)中的名稱而獲得IP;在Internet上使用IP版的QQ直接顯示。最有效的辦法是截獲并分析對方的網(wǎng)絡(luò)數(shù)據(jù)包。攻擊者可以找到并直接通過軟件解析截獲后的數(shù)據(jù)包的IP 包頭信息,再根據(jù)這些信息了解具體的IP。
針對最有效的“數(shù)據(jù)包分析方法”而言,就可以安裝能夠自動去掉發(fā)送數(shù)據(jù)包包頭IP信息的一些軟件。不過使用這些軟件有些缺點(diǎn), 譬如:耗費(fèi)資源嚴(yán)重,降低計算機(jī)性能;訪問一些論壇或者網(wǎng)站時會受影響;不適合網(wǎng)吧用戶使用等等。
現(xiàn)在的個人用戶采用最普及隱藏IP 的方法應(yīng)該是使用代理,由于使用代理服務(wù)器后,“轉(zhuǎn)址服務(wù)”會對發(fā)送出去的數(shù)據(jù)包有所修改,致使“數(shù)據(jù)包分析”的方法失效。一些容易泄漏用戶IP 的網(wǎng)絡(luò)軟件(QQ 、MSN 、IE 等)都支持使用代理方式連接Internet ,特別是QQ 使用“ ezProxy ”等代理軟件連接后, IP版的QQ都無法顯示該IP地址。雖然代理可以有效地隱藏用戶IP,但攻擊者亦可以繞過代理, 查找到對方的真實(shí)IP地址,用戶在何種情況下使用何種方法隱藏IP,也要因情況而論。
八、未加密登錄請求
由于Web 配置不安全, 登陸請求把諸如用戶名和密碼等敏感字段未加密進(jìn)行傳輸,攻擊者可以竊聽網(wǎng)絡(luò)以劫獲這些敏感信息。
九、敏感信息泄露漏洞
SQL 注入、XSS、目錄遍歷、弱口令等均可導(dǎo)致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。
Web應(yīng)用漏洞原理
Web應(yīng)用攻擊是攻擊者通過瀏覽器或攻擊工具,在URL或者其它輸入?yún)^(qū)域(如表單等),向Web服務(wù)器發(fā)送特殊請求,從中發(fā)現(xiàn)Web應(yīng)用程序存在的漏洞,從而進(jìn)一步操縱和控制網(wǎng)站,查看、修改未授權(quán)的信息。
web服務(wù)面臨的安全威脅:
1、安全信息被破譯:WEB服務(wù)器的安全信息如口令、密鑰等被破譯,導(dǎo)致攻擊者進(jìn)入WEB服務(wù)器。
2、非法訪問:未授權(quán)者非法訪問了WEB上的文件。
3、交易信息被截獲:當(dāng)用戶向服務(wù)器傳輸交易信息時被截獲。
4、軟件漏洞被攻擊者利用:系統(tǒng)中的軟件錯誤被攻擊者利用,使系統(tǒng)被破壞和損壞,甚至引起系統(tǒng)崩潰。
5、用CGI腳本編寫的程序或其他涉及遠(yuǎn)程用戶從瀏覽器中輸入表格并進(jìn)行像檢索之類在主機(jī)直接操作命令時,給WEB主機(jī)系統(tǒng)造成危險。
一、在代碼編寫時就要進(jìn)行漏洞測試。
二、對Web服務(wù)器進(jìn)行持續(xù)的監(jiān)控。
三、設(shè)置蜜罐,將攻擊者引向錯誤的方向。
四、專人對Web服務(wù)器的安全性進(jìn)行測試。
在Web服務(wù)器的攻防戰(zhàn)上,這一個原則也適用。筆者建議,如果企業(yè)對于Web服務(wù)的安全比較高,如網(wǎng)站服務(wù)器上有電子商務(wù)交易平臺,此時最好設(shè)置一個專業(yè)的團(tuán)隊。他們充當(dāng)攻擊者的角色,對服務(wù)器進(jìn)行安全性的測試。這個專業(yè)團(tuán)隊主要執(zhí)行如下幾個任務(wù)?!?/p>
一是測試Web管理團(tuán)隊對攻擊行為的反應(yīng)速度。如可以采用一些現(xiàn)在比較流行的攻擊手段,對自己的Web服務(wù)器發(fā)動攻擊。當(dāng)然這個時間是隨機(jī)的。預(yù)先Web管理團(tuán)隊并不知道?,F(xiàn)在要評估的是,Web管理團(tuán)隊在多少時間之內(nèi)能夠發(fā)現(xiàn)這種攻擊的行為。這也是考驗(yàn)管理團(tuán)隊全天候跟蹤的能力。一般來說,這個時間越短越好。應(yīng)該將這個時間控制在可控的范圍之內(nèi)。即使攻擊最后沒有成功,Web管理團(tuán)隊也應(yīng)該及早的發(fā)現(xiàn)攻擊的行為。畢竟有沒有發(fā)現(xiàn)、與最終有沒有取得成功,是兩個不同的概念。
二是要測試服務(wù)器的漏洞是否有補(bǔ)上。畢竟大部分的攻擊行為,都是針對服務(wù)器現(xiàn)有的漏洞所產(chǎn)生的。現(xiàn)在這個專業(yè)團(tuán)隊要做的就是,這些已發(fā)現(xiàn)的漏洞是否都已經(jīng)打上了安全補(bǔ)丁或者采取了對應(yīng)的安全措施。有時候我們都沒有發(fā)現(xiàn)的漏洞是無能為力,但是對于這些已經(jīng)存在的漏洞不能夠放過。否則的話,也太便宜那些攻擊者了。