Day9-新手的Web系列XSS 0x2
正文
XSS分類
- XSS根據特性與攻擊手法主要分為兩大種,一種是反射型跨網站腳本,另一種是持久型跨網站腳本。
反射型跨網站腳本
反射型跨網站腳本(Reflected Cross-site Scripting)也稱為非持久型跨網站腳本,這種跨網站腳本是最常見的。
- 特點是,只會執行一次,非持久型,所以它會比持久型XSS的攻擊成本要來的高許多。
- 反射型XSS是攻擊者透過透定手法,如Email...等,誘使使用者點擊包含惡意腳本的URL,當使用者按下包含惡意腳本的連結後,惡意腳本就會在使用者的瀏覽器開始執行。
- 一般反射型XSS比較常出現在網站的搜尋欄或是使用者登入介面...等地方,常用來竊取Cookie或釣魚欺騙。
- 雖然說反射型XSS只要有點資安意識的人就會被發現,因為惡意程式碼都暴露在URL中了或是還需要使用者去點擊觸發,但還是不能小看它,暴露在URL的問題是可以透過編碼去改善的,像是十進位、十六進位...等,要小心被迷惑啊!
DOM-Based XSS
- 在了解這種XSS前,要先知道DOM(Document Object Model)是什麼,DOM中文為文件物件模型
- 用來描述 HTML文件的表示法,它讓我們可以使用 JavaScript 動態產生完整的網頁,而不必透過伺服器。
- 會發生DOM-Based XSS是因為網頁上的JavaScript在執行過程中,沒有詳細檢查資料使得操作DOM的過程代入了惡意指令。
持久型跨網站腳本
持久型跨網站腳本(Persistent Cross-site Scripting)也等同於儲存型跨網站腳本(Stored Cross-site Scripting)。
- 持久型XSS比反射型XSS更具有威脅性,因為它可能危害到web伺服器!
- 持久型XSS不需要使用者去點擊觸發,而是攻擊者事先把惡意腳本上傳到有漏洞的伺服器資料庫中或是儲存到使用者端,當使用者瀏覽到有惡意腳本的網頁,網頁會從資料庫中讀取惡意腳本,然後顯示在頁面中,並立即在使用者的瀏覽器執行惡意腳本。
- 持久型XSS通常會出現在網站的留言、評論、部落格...等地方。
- 持久型XSS可以編寫XSS蠕蟲,跨網站蠕蟲是使用javascript或是Ajax去編寫,能夠在網站中進行傳播!只要是這個網站出現XSS漏洞,整個網站的使用者都有可能受到蠕蟲感染。
測試XSS的方法
- 看source code,看看是否有過濾字元
- 通常會以alert(1)當作測試
來試試看XSS的小遊戲吧
- 看到他是一個留言板,可以試試看上傳圖片看看能不能彈出什麼
- 可以試試這個語句
<img= "00.jpg" onerror="alert(1)"/>
- onerror就是在圖片的網址請求出錯時可以執行javascript程式
- 我們可以從他給的程式碼中發現,你點的image1、image2就是num,所以我們把num換成
' onerror=alert(1) //
,用'
把前面關掉,然後用onerror彈出視窗,後面註解掉。
"<img src='/static/level3/cloud" + num + ".jpg' />"