● 徐潔潔 /文
謹防跨站腳本攻擊,保障網(wǎng)站安全
● 徐潔潔 /文
在2007年、2010年、2013年統(tǒng)計的十大Web安全漏洞中,XSS漏洞始終位于前三。
隨著網(wǎng)絡技術(shù)的發(fā)展及各行業(yè)數(shù)字化進程的不斷推進,使得Web應用在各行業(yè)均得到了廣泛的推廣及應用,但是在Web應用給用戶提供方便快捷服務的同時,不法分子針對Web應用相關(guān)安全漏洞的惡意攻擊屢屢出現(xiàn),因此對Web安全問題進行防范和檢測顯得非常重要??缯灸_本(Cross Site Scripting,簡稱XSS)是一種在Web應用程序中經(jīng)常出現(xiàn)的安全漏洞,一般是由于Web應用程序?qū)τ脩舻妮斎脒^濾不足而產(chǎn)生的。世界上最知名的Web安全與數(shù)據(jù)庫安全研究組織OWASP(Open Web Application Security Project)在 2007年、2010年、2013年統(tǒng)計過十大Web安全漏洞,XSS漏洞始終位于前三。
XSS 的出現(xiàn)通常是由于Web應用程序?qū)τ脩舻妮斎脒^濾不足,從而使得攻擊者可以利用網(wǎng)站的漏洞把惡意的腳本代碼注入到客戶端網(wǎng)頁中,當用戶瀏覽此網(wǎng)頁時,腳本就會在用戶的瀏覽器上執(zhí)行,從而達到攻擊者的目的。XSS根據(jù)用戶輸入數(shù)據(jù)以何種形式、何時觸發(fā)XSS、是否有后端服務器的參與劃分為三種類型:反射型XSS、持久型XSS和DOM XSS。
反射型XSS(Reflected Cross Site Scripting)也被稱為非持久型XSS,一般是攻擊者構(gòu)造一個包含惡意代碼的URL,然后通過即時通信軟件或電子郵件等方式將該URL發(fā)送給用戶,誘使用戶訪問,當用戶點擊這些專門設計的鏈接時,惡意腳本就會在其本地瀏覽器中執(zhí)行。由于這種攻擊只在用戶點擊訪問URL時觸發(fā)一次,是非持久化的,所以稱為反射型XSS。
圖1給出了一個存在反射型XSS漏洞的代碼片段,該程序采用PHP語言編寫。假設訪問地址為http://localhost/test.php,我們構(gòu)造這樣的url:http://localhost/test.php?key=,其效果相當于在文本框里 輸 入:,然后點擊提交。我們在地址欄輸入該url,則會彈出如圖2所示對話框,這就是由于沒有對輸入?yún)?shù)進行過濾而導致的XSS漏洞。
圖1 反射型X S S案例代碼
在反射型XSS中,由于惡意代碼暴露在URL中,并且要求用戶點擊才可觸發(fā),而稍有安全意識的用戶不會隨意進行點擊,所以反射型XSS的成功率會低一些,但攻擊者也可以通過編碼轉(zhuǎn)換增加迷惑性,如前面的url我們可以通過編碼轉(zhuǎn)換為如下形式:http://localhost/test.php?key=%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E。
持久型XSS(persistent Cross Site Scripting)也被稱為存儲型XSS,一般出現(xiàn)在留言板、論壇等交互區(qū),攻擊者將惡意代碼嵌入到提交的信息中,這些信息會被存儲到服務器的數(shù)據(jù)庫中,當用戶瀏覽網(wǎng)頁時,Web站點即從數(shù)據(jù)庫匯總讀取攻擊者存入的非法數(shù)據(jù),然后顯示在頁面上,這樣在用戶的瀏覽器中就會執(zhí)行惡意代碼。惡意代碼存儲到服務器后,所有瀏覽對應頁面的用戶都會遭受攻擊,所以其危害性比反射型XSS更大。
圖2 漏洞觸發(fā)效果
圖3 基于DOM的XSS案例代碼
圖4 頁面分析
基于DOM的XSS是利用客戶端腳本的漏洞來進行攻擊,與前兩類XSS攻擊不同,這種類型的攻擊不依賴于發(fā)送到服務端的惡意數(shù)據(jù),而反射型、存儲型都需要服務端的反饋來構(gòu)造XSS。
圖3給出了一個存在基于DOM的XSS漏洞的代碼片段,該腳本從URL中提取“name=”后面的內(nèi)容并顯示在頁面上,假定頁面文件名為test.html,我們可以這樣構(gòu)造name參數(shù):test.html?name=#">,這樣在訪問時就可以觸發(fā)XSS。
XSS檢測有靜態(tài)分析和動態(tài)分析兩類方法,靜態(tài)分析需要獲取程序的源代碼,而通常我們無法獲取到源代碼,所以動態(tài)分析方法更為常用。動態(tài)分析的軟件很多,在免費軟件中ccXSScan是一個不錯的反射型XSS檢測工具。ccXSScan是Fiddler的插件,專門用于掃描和分析反射型XSS的。
用爬蟲或手動訪問一些網(wǎng)頁后,點擊step1下的分析按鈕,可進行分析,查看頁面中哪些內(nèi)容可能被用戶控制,如圖4所示。
點擊重放請求按鈕對檢查出來的結(jié)果進行重放嘗試,最后點擊step2選項卡,點擊分析按鈕,對重放的結(jié)果進行分析,如圖5所示。
點擊具體條目可以看到相應的漏洞信息,這里為保護網(wǎng)站對網(wǎng)址進行了處理。
XSS是最常見的計算機安全漏洞之一,即使如Google、Facebook等這樣的知名網(wǎng)站,也曾遭受過XSS漏洞攻擊,雖然XSS屬于被動式攻擊且不易利用,但其危害不容小視,利用它可以劫持瀏覽器用戶會話、竊取客戶端Cookie、進行網(wǎng)絡釣魚等。在淘寶、支付寶的釣魚欺詐案件中,有很多是利用了XSS漏洞。而通過使用ccXSScan軟件,我們可以非常方便地檢測反射型XSS漏洞,該軟件簡單易用,并且不需要用戶有非常專業(yè)的安全知識,因此可以幫助我們對反射型XSS攻擊進行防范。
(作者單位:浙江省電子信息產(chǎn)品檢驗所)
圖5 重放請求分析結(jié)果