● 徐潔潔 /文
謹防跨站腳本攻擊,保障網站安全
● 徐潔潔 /文
在2007年、2010年、2013年統計的十大Web安全漏洞中,XSS漏洞始終位于前三。
隨著網絡技術的發展及各行業數字化進程的不斷推進,使得Web應用在各行業均得到了廣泛的推廣及應用,但是在Web應用給用戶提供方便快捷服務的同時,不法分子針對Web應用相關安全漏洞的惡意攻擊屢屢出現,因此對Web安全問題進行防范和檢測顯得非常重要。跨站腳本(Cross Site Scripting,簡稱XSS)是一種在Web應用程序中經常出現的安全漏洞,一般是由于Web應用程序對用戶的輸入過濾不足而產生的。世界上最知名的Web安全與數據庫安全研究組織OWASP(Open Web Application Security Project)在 2007年、2010年、2013年統計過十大Web安全漏洞,XSS漏洞始終位于前三。
XSS 的出現通常是由于Web應用程序對用戶的輸入過濾不足,從而使得攻擊者可以利用網站的漏洞把惡意的腳本代碼注入到客戶端網頁中,當用戶瀏覽此網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的。XSS根據用戶輸入數據以何種形式、何時觸發XSS、是否有后端服務器的參與劃分為三種類型:反射型XSS、持久型XSS和DOM XSS。
反射型XSS(Reflected Cross Site Scripting)也被稱為非持久型XSS,一般是攻擊者構造一個包含惡意代碼的URL,然后通過即時通信軟件或電子郵件等方式將該URL發送給用戶,誘使用戶訪問,當用戶點擊這些專門設計的鏈接時,惡意腳本就會在其本地瀏覽器中執行。由于這種攻擊只在用戶點擊訪問URL時觸發一次,是非持久化的,所以稱為反射型XSS。
圖1給出了一個存在反射型XSS漏洞的代碼片段,該程序采用PHP語言編寫。假設訪問地址為http://localhost/test.php,我們構造這樣的url:http://localhost/test.php?key=,其效果相當于在文本框里 輸 入:,然后點擊提交。我們在地址欄輸入該url,則會彈出如圖2所示對話框,這就是由于沒有對輸入參數進行過濾而導致的XSS漏洞。

圖1 反射型X S S案例代碼
在反射型XSS中,由于惡意代碼暴露在URL中,并且要求用戶點擊才可觸發,而稍有安全意識的用戶不會隨意進行點擊,所以反射型XSS的成功率會低一些,但攻擊者也可以通過編碼轉換增加迷惑性,如前面的url我們可以通過編碼轉換為如下形式:http://localhost/test.php?key=%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E。
持久型XSS(persistent Cross Site Scripting)也被稱為存儲型XSS,一般出現在留言板、論壇等交互區,攻擊者將惡意代碼嵌入到提交的信息中,這些信息會被存儲到服務器的數據庫中,當用戶瀏覽網頁時,Web站點即從數據庫匯總讀取攻擊者存入的非法數據,然后顯示在頁面上,這樣在用戶的瀏覽器中就會執行惡意代碼。惡意代碼存儲到服務器后,所有瀏覽對應頁面的用戶都會遭受攻擊,所以其危害性比反射型XSS更大。

圖2 漏洞觸發效果

圖3 基于DOM的XSS案例代碼

圖4 頁面分析
基于DOM的XSS是利用客戶端腳本的漏洞來進行攻擊,與前兩類XSS攻擊不同,這種類型的攻擊不依賴于發送到服務端的惡意數據,而反射型、存儲型都需要服務端的反饋來構造XSS。
圖3給出了一個存在基于DOM的XSS漏洞的代碼片段,該腳本從URL中提取“name=”后面的內容并顯示在頁面上,假定頁面文件名為test.html,我們可以這樣構造name參數:test.html?name=#">,這樣在訪問時就可以觸發XSS。
XSS檢測有靜態分析和動態分析兩類方法,靜態分析需要獲取程序的源代碼,而通常我們無法獲取到源代碼,所以動態分析方法更為常用。動態分析的軟件很多,在免費軟件中ccXSScan是一個不錯的反射型XSS檢測工具。ccXSScan是Fiddler的插件,專門用于掃描和分析反射型XSS的。
用爬蟲或手動訪問一些網頁后,點擊step1下的分析按鈕,可進行分析,查看頁面中哪些內容可能被用戶控制,如圖4所示。
點擊重放請求按鈕對檢查出來的結果進行重放嘗試,最后點擊step2選項卡,點擊分析按鈕,對重放的結果進行分析,如圖5所示。
點擊具體條目可以看到相應的漏洞信息,這里為保護網站對網址進行了處理。
XSS是最常見的計算機安全漏洞之一,即使如Google、Facebook等這樣的知名網站,也曾遭受過XSS漏洞攻擊,雖然XSS屬于被動式攻擊且不易利用,但其危害不容小視,利用它可以劫持瀏覽器用戶會話、竊取客戶端Cookie、進行網絡釣魚等。在淘寶、支付寶的釣魚欺詐案件中,有很多是利用了XSS漏洞。而通過使用ccXSScan軟件,我們可以非常方便地檢測反射型XSS漏洞,該軟件簡單易用,并且不需要用戶有非常專業的安全知識,因此可以幫助我們對反射型XSS攻擊進行防范。
(作者單位:浙江省電子信息產品檢驗所)

圖5 重放請求分析結果