Web安全與Rational AppScan入門
Web 應(yīng)用的基礎(chǔ)概念
在討論 Web 應(yīng)用安全之前,先簡單介紹一下 Web 應(yīng)用基礎(chǔ)概念,這樣便于理解為什么 Web 應(yīng)用是脆弱的,容易受到攻擊。
1、 什么是 Web 應(yīng)用
Web 應(yīng)用是由動態(tài)腳本、編譯過的代碼等組合而成。它通常架設(shè)在 Web 服務(wù)器上,用戶在 Web 瀏覽器上發(fā)送請求,這些請求使用 HTTP 協(xié)議,經(jīng)過因特網(wǎng)和企業(yè)的 Web 應(yīng)用交互,由 Web 應(yīng)用和企業(yè)后臺的數(shù)據(jù)庫及其他動態(tài)內(nèi)容通信。
2、 Web 應(yīng)用的架構(gòu)
盡管不同的企業(yè)會有不同的 Web 環(huán)境搭建方式,一個典型的 Web 應(yīng)用通常是標(biāo)準(zhǔn)的三層架構(gòu)模型,如圖 1 所示。
圖 1: Web 應(yīng)用通常是標(biāo)準(zhǔn)的三層架構(gòu)模型
Web
在這種最常見的模型中,客戶端是第一層;使用動態(tài) Web 內(nèi)容技術(shù)的部分屬于中間層;數(shù)據(jù)庫是第三層。用戶通過 Web 瀏覽器發(fā)送請求(request)給中間層,由中間層將用戶的請求轉(zhuǎn)換為對后臺數(shù)據(jù)的查詢或是更新,并將最終的結(jié)果在瀏覽器上展示給用戶。
Web 應(yīng)用安全全景
當(dāng)討論起 Web 應(yīng)用安全,我們經(jīng)常會聽到這樣的回答:
“我們使用了防火墻”、“我們使用了網(wǎng)絡(luò)脆弱掃描工具”、“我們使用了 SSL 技術(shù)”、“我們每個季度都會進(jìn)行滲透測試”……所以,“我們的應(yīng)用是安全的”?,F(xiàn)實真是如此嗎?讓我們一起來看一下 Web 應(yīng)用安全的全景圖。
圖 2: 信息安全全景
信息安全全景
在企業(yè) Web 應(yīng)用的各個層面,都會使用不同的技術(shù)來確保安全性。為了保護客戶端機器的安全,用戶會安裝防病毒軟件;為了保證用戶數(shù)據(jù)傳輸?shù)狡髽I(yè) Web 服務(wù)器的傳輸安全,通信層通常會使用 SSL(安全套接層)技術(shù)加密數(shù)據(jù);企業(yè)會使用防火墻和 IDS(入侵診斷系統(tǒng))/IPS(入侵防御系統(tǒng))來保證僅允許特定的訪問,不必要暴露的端口和非法的訪問,在這里都會被阻止;即使有防火墻,企業(yè)依然會使用身份認(rèn)證機制授權(quán)用戶訪問 Web 應(yīng)用。
但是,即便有防病毒保護、防火墻和 IDS/IPS,企業(yè)仍然不得不允許一部分的通訊經(jīng)過防火墻,畢竟 Web 應(yīng)用的目的是為用戶提供服務(wù),保護措施可以關(guān)閉不必要暴露的端口,但是 Web 應(yīng)用必須的 80 和 443 端口,是一定要開放的??梢皂樌ㄟ^的這部分通訊,可能是善意的,也可能是惡意的,很難辨別。這里需要注意的是,Web 應(yīng)用是由軟件構(gòu)成的,那么,它一定會包含缺陷(bugs),這些 bug 就可以被惡意的用戶利用,他們通過執(zhí)行各種惡意的操作,或者偷竊、或者操控、或者破壞 Web 應(yīng)用中的重要信息。
因此可以看出,企業(yè)的回答,并不能真正保證企業(yè)的應(yīng)用安全:
網(wǎng)絡(luò)脆弱性掃描工具,由于它僅僅用來分析網(wǎng)絡(luò)層面的漏洞,不了解應(yīng)用本身,所以不能徹底提高 Web 應(yīng)用安全性;
防火墻可以阻止對重要端口的訪問,但是 80 和 443 端口始終要開放,我們無法判斷這兩個端口中通訊數(shù)據(jù)是善意的訪問還是惡意的攻擊;
SSL 可以加密數(shù)據(jù),但是它僅僅保護了在傳輸過程中數(shù)據(jù)的安全性,并沒有保護 Web 應(yīng)用本身;
每個季度的滲透測試,無法滿足處于不斷變更之中的應(yīng)用。
只要訪問可以順利通過企業(yè)的防火墻,Web 應(yīng)用就毫無保留的呈現(xiàn)在用戶面前。只有加強 Web 應(yīng)用自身的安全,才是真正的 Web 應(yīng)用安全解決之道。
常見的 Web 應(yīng)用攻擊
兩個重要的國際應(yīng)用安全組織
在討論常見的 Web 應(yīng)用攻擊之前,我們需要先了解兩個組織:WASC 和 OWASP。這兩個組織在呼吁企業(yè)加強應(yīng)用安全意識和指導(dǎo)企業(yè)開發(fā)安全的 Web 應(yīng)用方面,起到了重要的作用。
主站蜘蛛池模板:
凤台县|
达州市|
阜康市|
德保县|
旺苍县|
静安区|
会昌县|
措美县|
平陆县|
石景山区|
南木林县|
廊坊市|
锦州市|
安福县|
高淳县|
和龙市|
永新县|
佳木斯市|
利辛县|
襄城县|
鹤峰县|
进贤县|
四子王旗|
右玉县|
绥阳县|
项城市|
宁城县|
安岳县|
阿巴嘎旗|
罗平县|
乌拉特后旗|
通渭县|
安福县|
龙山县|
定边县|
孟连|
建阳市|
商水县|
武陟县|
南充市|
三门峡市|
Web Application Security Consortium(WASC),是一個由安全專家、行業(yè)顧問和諸多組織的代表組成的國際團體。他們負(fù)責(zé)為 WWW 制定被廣為接受的應(yīng)用安全標(biāo)準(zhǔn)。WASC 組織的關(guān)鍵項目之一是“Web 安全威脅分類”,也就是將 Web 應(yīng)用所受到的威脅、攻擊進(jìn)行說明并歸納成具有共同特征的分類。該項目的目的是針對 Web 應(yīng)用的安全隱患,制定和推廣行業(yè)標(biāo)準(zhǔn)術(shù)語。WASC 將 Web 應(yīng)用安全威脅分為如下六類:
Authentication(驗證)
用來確認(rèn)某用戶、服務(wù)或是應(yīng)用身份的攻擊手段。
Authorization(授權(quán))
用來決定是否某用戶、服務(wù)或是應(yīng)用具有執(zhí)行請求動作必要權(quán)限的攻擊手段。
Client-Side Attacks(客戶側(cè)攻擊)
用來擾亂或是探測 Web 站點用戶的攻擊手段。
Command Execution(命令執(zhí)行)
在 Web 站點上執(zhí)行遠(yuǎn)程命令的攻擊手段。
Information Disclosure(信息暴露)
用來獲取 Web 站點具體系統(tǒng)信息的攻擊手段。
Logical Attacks(邏輯性攻擊)
用來擾亂或是探測 Web 應(yīng)用邏輯流程的攻擊手段。
可以通過如下的網(wǎng)址訪問該組織網(wǎng)站,獲得更多詳細(xì)信息:[url]www.webappsec.org[/url]。也可以通過參考資料中鏈接,具體了解“Web 安全威脅分類”項目。
Open Web Application Security Project(OWASP),該組織致力于發(fā)現(xiàn)和解決不安全 Web 應(yīng)用的根本原因。它們最重要的項目之一是“Web 應(yīng)用的十大安全隱患”,總結(jié)了目前 Web 應(yīng)用最常受到的十種攻擊手段,并且按照攻擊發(fā)生的概率進(jìn)行了排序。這個項目的目的是統(tǒng)一業(yè)界最關(guān)鍵的 Web 應(yīng)用安全隱患,并且加強企業(yè)對 Web 應(yīng)用安全的意識。
圖 3: Web 應(yīng)用十大安全隱患
Web
可以通過如下的網(wǎng)址訪問該組織。
IBM Rational,是上述兩個組織的成員。
常見的 Web 應(yīng)用攻擊示例
在 OWASP 組織列舉的十大 Web 應(yīng)用安全隱患中,有兩個概率最高的攻擊手段,它們分別是“跨站點腳本攻擊”(Cross-Site Scripting)和“注入缺陷”(Injection Flaws)。下面將通過舉例來說明這兩種攻擊是如何實施的。
1、 跨站點腳本攻擊
首先來看一下跨站點腳本的利用過程,如圖 4。
圖 4: 跨站點腳本攻擊的過程
跨站點腳本攻擊的過程
在上圖中,惡意攻擊者(這里使用 Evil.org 表示)通過 E-mail 或 HTTP 將某銀行的網(wǎng)址鏈接發(fā)給用戶(銀行用 bank.com 表示),該鏈接中附加了惡意的腳本(上圖步驟一);用戶訪問發(fā)來的鏈接,進(jìn)入銀行網(wǎng)站,同時,嵌在鏈接中的腳本被用戶的瀏覽器執(zhí)行(上圖步驟二、三);用戶在銀行網(wǎng)站的所有操作,包括用戶的 cookie 和 session 信息,都被腳本收集到,并且在用戶毫不知情的情況下發(fā)送給惡意攻擊者(上圖步驟四);惡意攻擊者使用偷來的 session 信息,偽裝成該用戶,進(jìn)入銀行網(wǎng)站,進(jìn)行非法活動(上圖步驟五)。
因此,只要 Web 應(yīng)用中,有可被惡意攻擊者利用執(zhí)行腳本的地方,都存在極大的安全隱患。黑客們?nèi)绻梢宰層脩魣?zhí)行他們提供的腳本,就可以從用戶正在瀏覽的域中偷到他的個人信息、可以完全修改用戶看到的頁面內(nèi)容、跟蹤用戶在瀏覽器中的每一個動作,甚至利用用戶瀏覽器的缺陷完全控制用戶的機器。
目前,跨站點腳本攻擊是最大的安全風(fēng)險。
2、 注入缺陷
目前的 Web 應(yīng)用中,絕大多數(shù)都會向用戶提供一個接口,用來進(jìn)行權(quán)限驗證、搜索、查詢信息等功能。比如一個在線銀行應(yīng)用,首先會有對注冊客戶進(jìn)行身份驗證的登錄界面,在正確登錄后,會提供更多交互功能,如根據(jù)客戶的銀行卡號信息,查詢客戶的最近交易、轉(zhuǎn)賬細(xì)節(jié)等。這些都是注入缺陷的最佳利用場景。所謂注入缺陷,就是在上述場景中,用戶輸入的數(shù)據(jù)被當(dāng)做命令和查詢的一部分,送到后端的解釋器中解釋執(zhí)行。如果用戶的輸入是正常合法的,Web 應(yīng)用自然會返回正常合理的結(jié)果,但是,如果惡意攻擊者,利用輸入數(shù)據(jù)可被后臺執(zhí)行的原理,偷梁換柱,使用非法的輸入,脆弱的 Web 應(yīng)用會怎樣呢?
下面我們舉一個例子來說明注入缺陷是如何進(jìn)行的。在一個交易網(wǎng)站中,用戶必須輸入產(chǎn)品 ID 號才可以查看該產(chǎn)品的詳細(xì)信息。為了實現(xiàn)這個需求,通常會用 SQL 語句查詢數(shù)據(jù)庫來實現(xiàn)。開發(fā)人員在編寫應(yīng)用程序時,可能會使用如下的 SQL 語句來實現(xiàn)上述目的(這里僅為示例):
1) Select * from products where product_id = ` + 用戶輸入的 ID + `
這里的 products 是數(shù)據(jù)庫中用來存放產(chǎn)品信息的表,+號表示 SQL 語句需要和用戶輸入的真實 ID 進(jìn)行拼接。如果用戶輸入 325,則該語句在執(zhí)行時變?yōu)椋?/div>
Select * from products where product_id = ` 325 `
數(shù)據(jù)庫會將 ID 為 325 的產(chǎn)品信息返回給用戶。
2) 在界面上,需要用戶輸入產(chǎn)品 ID 的地方,黑客會輸入如下數(shù)據(jù):
` or `1`= `1
可以看到,黑客并沒有輸入正常合法的產(chǎn)品編號。
3) 通過黑客的非法輸入,需要執(zhí)行的 SQL 語句變?yōu)椋?/div>
Select * from products where product_id = ` ` or `1`=`1`
可以看出,SQL 語句的意義就完全改變了,當(dāng)產(chǎn)品 ID 為空或者 1=1 時,返回產(chǎn)品所有信息,而 1=1 是永遠(yuǎn)成立的條件,因此,黑客并沒有輸入任何產(chǎn)品編號,就可以返回數(shù)據(jù)庫中所有產(chǎn)品的詳細(xì)信息。
通過這個例子,我們可以看出,注入缺陷是風(fēng)險非常高的安全漏洞,一旦 Web 應(yīng)用中給用戶提供了需要其輸入數(shù)據(jù)的接口,就有可能遭到攻擊,將后臺的數(shù)據(jù)完全暴露在用戶的面前。
上述說明的“跨站點腳本攻擊”和“注入缺陷攻擊”,是目前 Web 應(yīng)用中比例最高的兩種攻擊手段,按照 OWASP 的項目排序,還有如下八種風(fēng)險性較高的攻擊方法:
Malicious File Execution(惡意文件執(zhí)行);
Insecure Direct Object Reference(不安全的直接對象引用);
Cross-Site Request Forgery(跨站點的請求偽造);
Information Leakage and Improper Error Handling(信息泄漏和不正確的錯誤處理);
Broken Authentication & Session Management(損壞的認(rèn)證和 Session 管理);
Insecure Cryptographic Storage(不安全的密碼存儲);
Insecure Communications(不安全的通信);
Failure to Restrict URL Access(未能限制 URL 訪問)
在這里,我們就不過多的討論這幾種安全隱患,可以使用 3.1 節(jié)中提供的鏈接得到更多的描述信息。
構(gòu)筑安全的 Web 應(yīng)用
功能和性能,往往是我們衡量應(yīng)用是否滿足需求的指標(biāo),但是,對于載體為 Internet 的特殊應(yīng)用-Web 應(yīng)用而言,安全性也是必要的考量標(biāo)準(zhǔn),皮之不存,毛將焉附?如果失去了安全性,即使功能再完備、性能再可靠的 Web 應(yīng)用,一旦遭到黑客的攻擊和破壞,一切都失去了意義。因此企業(yè),尤其是提供 Web 應(yīng)用的企業(yè),一定要加強對應(yīng)用安全的重視程度。
針對目前 Web 應(yīng)用安全性不高的現(xiàn)狀,IBM Rational 提出了構(gòu)筑安全 Web 應(yīng)用的解決方案。
加強全員應(yīng)用安全性意識
一個根本、底層的戰(zhàn)略手段就是加強企業(yè)全員的應(yīng)用安全意識。正如前面所闡述過的,對于應(yīng)用而言,無論是開發(fā)人員、測試人員、質(zhì)量管理人員還是項目經(jīng)理、企業(yè)高層,都會對其功能和性能做更多的關(guān)注,這也是由于早期應(yīng)用多為 C/S 架構(gòu)的應(yīng)用,安全問題并不突出。但是在當(dāng)今的環(huán)境,就不得不將安全作為應(yīng)用質(zhì)量的基礎(chǔ)。
圖 5 中功能、易用性、可靠性、性能、可支持性,是由 Rational Unified Process(RUP)定義的 FURPS 質(zhì)量模型,它告訴我們應(yīng)用的質(zhì)量需要從這幾個方面著手衡量,對于 Web 應(yīng)用,就必須將安全性作為質(zhì)量模型的基礎(chǔ)條件。
圖 5: 適于 Web 應(yīng)用的質(zhì)量模型
posted on 2014-09-11 10:39 順其自然EVO 閱讀(209) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||