Code Injection Attack – Cross-Site Scripting Attack

【Cross-Site Scripting Attack】

繼上次介紹SQL Injection之後,相信大家對於Code Injection應該都有初步的認知了。接著小編要為大家介紹注入式攻擊中赫赫有名的跨站腳本攻擊-XSS Attack(Cross-Site Scripting Attack),也有人稱它為Javascript Injection攻擊。而跨站腳本攻擊,顧名思義就是在使用者瀏覽的第三方網站中植入惡意程式代碼,將使用者導致惡意的網頁或是竊取個人資料,如照片、密碼、信用卡資訊等。[1][2]

在百分之八十的網站中,肯定發現過XSS弱點,這項攻擊主要是利用動態網頁的漏洞,讓使用者在不知不覺中執行了攻擊者所植入的惡意程式。通常是透過HTML或是Javascript這類在User端瀏覽器執行的程式碼,而在攻擊成功後,駭客可能得到較高的權限或是竊取用戶的cookie、私密網頁內容,甚至是假冒使用者。[3]

目前XSS攻擊的種類大致上最常見的可以分為兩種類型,接著小編會以實例為大家展示:

  1. Reflected XSS(反射型)
  2. Stored XSS(儲存型)

【Reflected XSS反射型】

駭客將惡意程式碼注入到網頁後,透過社交郵件等方式散布這些惡意網頁的轉址連結,而Relected XSS是指當使用者點擊此設計過的連結時,就有可能觸發執行特定的Javascript語法,進而達到攻擊目的。以下利用實例為大家解釋Reflected XSS。

這是一個正常的網頁輸入欄位,但當我們在這個欄位輸入某些不正常的輸入行為時,就可能達到XSS攻擊,譬如說:

<script> alert(‘you are hacked!’); </script>

在輸入欄位內,刻意植入Javascript語法,如果網頁確實執行此段程式語法,那表示該網站含有XSS攻擊。

這一類型的攻擊方式,常用來竊取使用者的cookie,只要把輸入的程式代碼改成:

<script>alert(document.cookie);</script>

就能取得使用者的cookie資料。[4]

【Stored XSS儲存型】

如字面上的意思,儲存型XSS是指攻擊者能將惡意的程式代碼保存在伺服器的資料庫當中,當使用者在網站上瀏覽特定頁面時恐觸發該程式代碼,達到攻擊目的。而常見的攻擊方式就是將這些程式碼植入在論壇文章、或是留言板中。以下為攻擊手法:

將惡意的程式代碼透過留言讓伺服器寫入資料庫。

如圖,惡意程式代碼確實儲存於網頁伺服器中,當使用者瀏覽到此頁面時,就會觸發程式碼達到攻擊目的。[5]

【防護方法】

上述兩種不同類型的XSS攻擊皆可以讓駭客在第三方網站上注入惡意程式代碼,當使用者在瀏覽網頁時就會觸發這些惡意攻擊代碼,讓駭客達到竊取使用者的cookie等機敏資料。

面對XSS攻擊該如何防範呢?!其實這項攻擊大部分的責任應該歸究於開發者端,因為這項漏洞常常會因為開發的程式設計師的疏忽,而讓網站淪落為XSS攻擊目標。以下小編會針對開發者與使用者給大家一些小小的防禦建議:

開發者端:
1.建議程式設計師在撰寫網站的時候,嚴格限制回傳的參數。
2.對於網站中,使用者所有輸入的資料加上資料型態判別以及特殊字元的過濾(例如:「%」、「<」、「?」、「>」、「&」、「/」、「’」、「”」。
3.不將特殊字元輸出至網頁以及限定輸入的資料長度。

使用者端:
1.建議將瀏覽器更新至最新版本。
2.避免點擊來路不明的網址。

Ref.
[1]https://www.qa-knowhow.com/?p=2992
[2]https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=563
[3]https://www.gss.com.tw/index.php/security/956-gss0067
[4]https://ithelp.ithome.com.tw/articles/10188646
[5]https://forum.gamer.com.tw/Co.php?bsn=60292&sn=11267

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。