甚麼是 XSS?簡介黑客常用攻擊技倆
現時甚麼都講互動性,而互動性帶來的安全風險亦隨之提升,事關擁有互動性代表了網站之中已擁有「入口」;所謂的入口就是一些可讓用户輸入文字的地方,例如搜尋欄位、留言位置更甚者是登入位置等等,通過好好利用這些「入口」,黑客便可以作所謂的 XSS(Cross Site Script)攻擊,並從中植入各種惡意指令,例如引導用户至虛假頁面,並從中偷取用户的個人資料。
為甚麼要 XSS?
XSS 很多時都會被人忽略,因為它本身甚小為網站帶來毀滅性攻擊,而且很多人會認為這技術歷史悠久,對現今系統影響不大,所以黑客採用 XSS 技術偷取用户資料的成功率會較高,因此自然地這一種遠古的方式仍然被廣泛採用;不過大家不知的就是黑客採用 XSS 已不是針對系統進行破壞,很多時目的在於偷取用户資料;幸好現時搜尋引擊及瀏灠器已加入了惡意網站偵測技術,當偵測到惡意網站時便會阻止用户進入,但根據筆者經驗,這些防禦機制並非 100% 準確,很多時都會有遺留情況,這並非瀏灠器及搜尋引擊的錯,這是因為黑客的欺騙手段太厲害所致。
那些地方最有機會被植入?
其實網站之中的輸入欄位,例如是搜尋欄位、留言位置如討論區等都是植入 XSS 代碼的最佳位置;除此之外亦需特別留意一下採用 Cookie 等技術暫存用户登入資訊,然後再把資訊傳回數據庫這個過程;同時信用卡與銀行機構連線的過程之中的「Redirect」頁面等。
如何入侵?
Step 1 – 測試網站漏洞
當然,我們不會在此示範如何入侵,只可以簡單說說。其實 XSS 的目的是製造一個引導用户進入虛假頁面的途徑,所以攻擊的方式是先測試網站的程式是否存在漏洞,通過於網站之中的輸入欄位即可進行測試;例如最簡單嘗試令第三方網站更改背景顏色又或者彈出提示 Alert,假如成功亦即代表該網站極大機會存在編程上的問題,而通過這些問題便可作進一步的植入工作。以下為測試的代碼(當中代碼字符經修改,以避免不法份子採用)
xxxxx<script>alert(document.cookie)</script>
xxxxx<script>alert(document.cookie)</script>
%3Csxxcrixxxxpt%xxxxEalert(‘XSS’)%3C/script%3E
<img src=”javascript:alert(‘XSS’)”>
xxxxxxx%0a%xxx0xa<scxxaaaript>alert(\”Vulnerable\”)</script>.jsp
xx%#######e%2####e3#/3#32e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
Step 2 – 為甚麼是常見網頁程式碼?
可能你會問,上方展示的為甚麼會是常見的 JavaScript 代碼?其實這方法主要測試開發者在編寫程式時有否對程式加入一定的防禦機制,例如有否加入防止用户輸入特殊字元,如 ></^@$# 等等;另外有時候網站之中的程式動輒數萬行,開發過程難免會有所漏遺,例如 HTML 之中很多時都會發現遺留了 “<” 或 “>” 等標籤的前後開關部份,這時候只需於留言位置輸入代碼,再替大意的開發者於內容加入 “>”便可輕易於網站內植入惡意代碼,並可直接讓用户進入與真實網站相同的虛假頁面,藉以誘使用户輸入他們的個人資料。
Step 3 – XSS 玩法一 – 植入木馬
接著我們便可在特定位置(請恕筆者不公開那個位置)加入一些代碼,而這些代碼主要當然並非更改網站顏色,而是從外部載入一些惡意檔案,當用户瀏灠網頁時,該頁面有機會自動以第三方程式開啟一些看似極高信任的文件,例如漏洞多多的 PDF,並再通過這些軟件的漏洞從而針對用户電腦植入木馬程式,令其成為彊屍網站一員;然而植入木馬的過程,其實可通過安裝防毒軟件即可預防。
Step 4 – XSS 玩法二 – 偷取資料
有些黑客可能只想偷取用户資料,而對於這些黑客來說,主要會在網站之中可留言的位置植入一個與用户正在瀏灠的網頁幾乎擁有完全相同介面的頁面,而這些頁面之中主要會需要用户輸入一些資料;由於這種方法往往能於相同網址之中載入輸入用户資料頁面,所以很容易便會令用户「中招」;這種通過虛假方式偷取用户資料的過程原來有一個美輪美奐的形容詞 -「社會工程學」。
Step 5 – 社會工程學
所謂的社會工程學其實是通過合法的方式進行互動,並從而欺騙用户心理,令其作出某些動作或透露機密資料;其原理與釣魚虛假網站無分別。於維基百科之中,便將現時的社會工程學區分出多種不同的手段,如下:
1. 假託(pretexting)
2. 調虎離山(diversion theft)
3. 釣魚(phishing)
4. 在線聊天/電話釣魚(IVR/phone phishing,IVR: interactive voice response)
5. 下餌(Baiting)
6. 等價交換(Quid pro quo)
結論
其實這很大部份的責任在於開發者一方。因為開發者在編寫程式時的一些遺留又或者採用了安全性較低的方式編寫程式時,往往便令網站容易成為 XSS 攻擊目標,所以作為開發者亦應該在網站正式投入服務前先針對網站進行攻擊測試,從而確保網站不能讓黑客進行 XSS 攻擊;另外用户亦應安裝防毒軟件,通過防毒軟件將有效預防黑客通過 XSS 植入文件檔案,並降低用户安全風險;而作為用户亦應提高安全意識,這樣便可有效地降低整體危機。
鳴謝:Lapcom
1 Response
[…] http://www.hkitblog.com/?p=23318 […]