揭秘Web應(yīng)用服務(wù)的四大弱點(diǎn) |
發(fā)布時(shí)間: 2012/9/12 15:24:31 |
知己知彼,方能百戰(zhàn)百勝。在提升Web服務(wù)安全性的同時(shí),需要先了解Web服務(wù)自身的弱點(diǎn)。然后再根據(jù)弱點(diǎn)來(lái)采取對(duì)應(yīng)的措施。在這篇文章中,筆者就將根據(jù)自己的工作經(jīng)歷,分析一下Web服務(wù)的弱點(diǎn),并且這些弱點(diǎn)是容易被人用來(lái)進(jìn)行攻擊的。相信這些內(nèi)容對(duì)于大家提高Web的安全性會(huì)有很大的幫助。 弱點(diǎn)一:不可靠的默認(rèn)值 在Web應(yīng)用程序設(shè)計(jì)時(shí),為了提高用戶的輸入效率,會(huì)設(shè)置比較多的默認(rèn)值。但是這些默認(rèn)值是把雙刃劍。即可以提高用戶輸入的速度,但是也會(huì)影響Web應(yīng)用程序的安全性。舉一個(gè)簡(jiǎn)單的例子。Web服務(wù)器的默認(rèn)端口是什么?80。正確。這個(gè)信息只要稍微有點(diǎn)Web 知識(shí)的人都知道,F(xiàn)在的問(wèn)題是,大家都知道這個(gè)信息,那么攻擊者就可以輕而易舉的通過(guò)這個(gè)端口來(lái)進(jìn)行攻擊。如可以利用工具掃描80端口是否開(kāi)啟來(lái)判斷服務(wù)器是否啟用了Web服務(wù)。為此如果Web服務(wù)沒(méi)有改變這個(gè)默認(rèn)的端口值,那么就將導(dǎo)致很多安全問(wèn)題。再如,有些管理員在設(shè)置用戶名與密碼的時(shí)候,可能給用戶的默認(rèn)用戶名為空或者跟管理員帳戶相同的名字。雖然他們可能提醒用戶需要盡快的去更改密碼。但是根據(jù)筆者的經(jīng)驗(yàn),不少用戶都沒(méi)有這個(gè)安全意識(shí)。 可見(jiàn),為Web應(yīng)用程序設(shè)置默認(rèn)值時(shí),并不怎么可靠。為此筆者建議,對(duì)于一些關(guān)鍵的應(yīng)用,如端口、管理員帳戶名、密碼等信息最好不要采用默認(rèn)值。這會(huì)降低Web應(yīng)用程序的安全性能。 弱點(diǎn)二:關(guān)鍵信息沒(méi)有采取加密處理 筆者以前研究過(guò)一款Compiere的ERP系統(tǒng),其有B/S與C/S兩種架構(gòu)。在登陸的時(shí)候,需要用戶輸入用戶名與密碼。在輸入這個(gè)信息的時(shí)候,密碼采用了掩碼的形式,這確實(shí)可以起到一定的保護(hù)效果。但是用戶名在后臺(tái)數(shù)據(jù)庫(kù)中存儲(chǔ)的,以及從網(wǎng)頁(yè)客戶端傳輸?shù)綉?yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器的過(guò)程中,采用的都是明碼的形式。這也就是說(shuō),只要攻擊者采用一些嗅探工具、或者攻破了數(shù)據(jù)庫(kù),那么對(duì)于這個(gè)應(yīng)用來(lái)說(shuō),攻擊者就可以暢通無(wú)阻的進(jìn)行一些破壞行為。相反,如果我們對(duì)于這些關(guān)鍵信息都采取了加密處理。那么即使攻擊者有了這些數(shù)據(jù),對(duì)于他們來(lái)說(shuō),也是沒(méi)用任何用處。 無(wú)論是在數(shù)據(jù)庫(kù)服務(wù)器,還是在客戶端的Cookies中,不直接存儲(chǔ)沒(méi)有加密的掛念信息(如密碼或者其他私有數(shù)據(jù)),這是提高數(shù)據(jù)安全性的一個(gè)首要的原則。如果這些數(shù)據(jù)暴露了,但是所采用的加密方案將防止暴露用戶的密碼。 了解這個(gè)基本的原則之后,那么管理人員就需要關(guān)注,該選擇使用哪種加密技術(shù)。選擇的加密技術(shù)的不同,直接影響到Web服務(wù)的安全性。但是需要注意的是,加密技術(shù)也是一把雙刃劍。一般來(lái)說(shuō),在同等條件下,加密級(jí)別越高,其需要的資源開(kāi)銷(xiāo)也就越大。簡(jiǎn)單的說(shuō),加密的級(jí)別與系統(tǒng)的性能是成反向變動(dòng)的。 弱點(diǎn)三:Web服務(wù)的溢出 這是最傳統(tǒng)的、也是危害最大的一個(gè)弱點(diǎn)。最早遭受破壞的、且仍舊普遍的攻擊來(lái)源于開(kāi)發(fā)人員對(duì)最終用戶輸入的數(shù)據(jù)的可信任假設(shè)。其實(shí)這種假設(shè)是非常危險(xiǎn)的。我們做安全的人員,應(yīng)該保持一種執(zhí)業(yè)的懷疑態(tài)度。即將用戶假設(shè)為攻擊者。只有如此,才能夠做好安全工作。但是不少開(kāi)發(fā)人員沒(méi)有這種安全意識(shí)。舉一個(gè)簡(jiǎn)單的例子。如果一個(gè)用戶了解PowerPoint文件格式的相關(guān)內(nèi)容,他們就可以利用文本編輯器來(lái)編寫(xiě)一個(gè)PowerPoint的文件。編輯的工作相當(dāng)簡(jiǎn)單,只是讓內(nèi)部字段中擁有的數(shù)據(jù)比系統(tǒng)允許的更多的數(shù)據(jù),此時(shí)就會(huì)導(dǎo)致系統(tǒng)崩潰。然后攻擊者就可以執(zhí)行任何想要執(zhí)行的程序。這種攻擊手段就叫做溢出攻擊。其適用于大部分Web服務(wù)器。 簡(jiǎn)單地說(shuō),溢出性攻擊是由于將太多的數(shù)據(jù)放入原始程序設(shè)計(jì)人員認(rèn)為足夠的空間中導(dǎo)致。額外的數(shù)據(jù)溢出將包存儲(chǔ)到附近的內(nèi)存中,并且覆蓋與這個(gè)區(qū)域的原始用途無(wú)關(guān)的數(shù)據(jù)。當(dāng)執(zhí)行其他應(yīng)用程序時(shí),程序就會(huì)使用新的數(shù)據(jù)。這也就是說(shuō),如果攻擊者能夠使用錯(cuò)誤的數(shù)據(jù)填充足夠的空間,并在數(shù)據(jù)中添加一些惡意的代碼,那么應(yīng)用程序就可能會(huì)執(zhí)行惡意代碼,從而實(shí)現(xiàn)其攻擊的目的。如刪除數(shù)據(jù)、更新網(wǎng)站主頁(yè)等等。如果受到攻擊的應(yīng)用程序是有系統(tǒng)管理員啟動(dòng)的,此時(shí)惡意代碼就可能作為原始程序的一部分執(zhí)行,從而給攻擊者管理員特權(quán)。當(dāng)攻擊者獲取管理員特權(quán)時(shí),那么后果就可想而知了。 對(duì)于Web服務(wù)來(lái)說(shuō),需要特別注意緩沖區(qū)溢出攻擊。在緩沖區(qū)溢出攻擊實(shí)例中,程序的內(nèi)部值將會(huì)被溢出,從而改變程序的運(yùn)行方式。在應(yīng)用程序的正常操作過(guò)程中,當(dāng)調(diào)用一個(gè)函數(shù)時(shí),被調(diào)用函數(shù)的所有參數(shù)以及返回位置的指針就會(huì)被存儲(chǔ)在內(nèi)存中。當(dāng)完成這個(gè)函數(shù)規(guī)定的作業(yè)之后,使用返回指針將會(huì)回到原來(lái)到位置并繼續(xù)執(zhí)行其他的程序。利用緩沖區(qū)溢出進(jìn)行攻擊就可以改變這個(gè)過(guò)程。即讓函數(shù)執(zhí)行攻擊者所希望執(zhí)行的程序或者代碼。通過(guò)輸入足夠多的數(shù)據(jù)來(lái)覆蓋原有的參數(shù),以及輸入到不同函數(shù)的新返回指針就可以實(shí)現(xiàn)。 可見(jiàn),溢出這個(gè)弱點(diǎn),對(duì)于Web服務(wù)來(lái)說(shuō)是非常致命的。不過(guò)要彌補(bǔ)這個(gè)漏洞難度也不是很大。一般來(lái)說(shuō),開(kāi)發(fā)人員只需要在開(kāi)發(fā)過(guò)程中做好相關(guān)的檢查工作,就可以彌補(bǔ)。如在文本框中,在用戶保存數(shù)據(jù)之前進(jìn)行必要的檢查。包括數(shù)據(jù)類(lèi)型、數(shù)據(jù)中是否包含著不允許的特殊字符等等。這也就是說(shuō),在開(kāi)發(fā)Web應(yīng)用程序的時(shí)候,應(yīng)該對(duì)用戶保持必要的懷疑態(tài)度。只有如此,才會(huì)去思考如何來(lái)檢驗(yàn)用戶的數(shù)據(jù)。這么操作完成之后,就可以在很大程度上避免溢出攻擊,提高應(yīng)用服務(wù)器的安全。 弱點(diǎn)四:SQL注入式攻擊 SQL注入式攻擊漏洞是與緩沖區(qū)溢出攻擊,可以稱兄道弟。除了溢出弱點(diǎn),SQL注入是另一類(lèi)依賴于開(kāi)發(fā)人員沒(méi)有測(cè)試輸入數(shù)據(jù)而導(dǎo)致的攻擊。如大多數(shù)人擁有字符數(shù)字或者秘密,或者有安全意識(shí)的人,擁有附帶其他鍵盤(pán)符號(hào)的字符數(shù)字式密碼,這可以提高密碼的安全程度。出于這種安全的考慮,開(kāi)發(fā)人員可能會(huì)允許用戶輸入任何字符作為密碼。但是如果在開(kāi)發(fā)過(guò)程中,沒(méi)有做好嚴(yán)格的檢查,那么就可能會(huì)造成Web服務(wù)器的SQL注入式攻擊。 SQL注入式攻擊的原理非常的簡(jiǎn)單。在網(wǎng)絡(luò)上關(guān)于其的資料也有一大把。為此筆者不在這里過(guò)多的闡述。筆者只是強(qiáng)調(diào)一下,在開(kāi)發(fā)Web應(yīng)用程序時(shí),SQL注入式攻擊應(yīng)該引起開(kāi)發(fā)人員的重視。采取積極的措施來(lái)消除這個(gè)弱點(diǎn)。 根據(jù)以前的攻擊案例,可以知道這個(gè)弱點(diǎn)是針對(duì)Web應(yīng)用程序最有效的攻擊手段之一。而且隨著大家對(duì)Web應(yīng)用程序信任的增加(如網(wǎng)上轉(zhuǎn)帳等業(yè)務(wù)的應(yīng)用),其危害性也就越來(lái)越大。 其實(shí)要防止這個(gè)攻擊也比較簡(jiǎn)單。主要就是應(yīng)用程序在開(kāi)發(fā)時(shí),要加強(qiáng)對(duì)用戶輸入數(shù)據(jù)的檢測(cè)。如對(duì)于用戶輸入字符的長(zhǎng)度、字符的格式等等內(nèi)容進(jìn)行比較嚴(yán)格的限制,并在用戶輸入數(shù)據(jù)后、保存數(shù)據(jù)之前進(jìn)行嚴(yán)格的檢查。只要做好輸入檢查這一段,基本上就可以消除這個(gè)弱點(diǎn)所帶來(lái)的安全威脅。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |