1. 程式人生 > >Web安全系列(二):XSS 攻擊進階(初探 XSS Payload)

Web安全系列(二):XSS 攻擊進階(初探 XSS Payload)

什麼是 XSS Payload

上一章我談到了 XSS 攻擊的幾種分類以及形成的攻擊的原理,並舉了一些淺顯的例子,接下來,我就闡述什麼叫做 XSS Payload 以及從攻擊者的角度來初探 XSS 攻擊的威力。

在黑客 XSS 攻擊成功之後,攻擊者能夠對使用者當前瀏覽的頁面植入各種惡意指令碼,通過惡意指令碼來控制瀏覽器,這些指令碼實質上就是 JavaScript 指令碼(或者是其他瀏覽器可以執行的指令碼),這種惡意植入且具有完成各種具體功能的惡意指令碼就被稱為 XSS Payload

初探 XSS Payload

一個最常見的 XSS Payload ,就是通過瀏覽器讀取 Cookie 物件,進而發起 Cookie 劫持

攻擊。

一般一個網站為了防止使用者無意間關閉頁面,重新開啟需要重新輸入賬號密碼繁雜的情況下,一般都會把登入資訊(登入憑證)加密儲存在 CooKie 中,並且設定一個超時時間,在此時間段內,使用者利用自己賬號資訊隨意進出該網站。如果該網站遭到 XSS Payload ,黑客盜取了該使用者的 Cookie 資訊,往往意味著該使用者的登入憑證丟失了,換句話說,攻擊者不需要知道該使用者的賬號密碼,直接利用盜取的 Cookie 模擬憑證,直接登入到該使用者的賬戶。

如下所示,攻擊者先在一個社群發表一篇文章:

image

你有意無意點了一下 點我得大獎 這個時候,XSS Payload 就生效了:

image

image

XSS Payload

會請求一個 img 圖片,圖片請求地址即為黑客的伺服器地址, url 引數帶上 Cookie ,我們在後臺伺服器接收到了這個請求:

image

這個時候,黑客就可以獲取到此 Cookie,然後模擬 CooKie 登陸。

當然傳輸的內容可以是任何內容,只要能獲取到的,全都可以傳輸給後臺伺服器。

如何利用竊取的 Cookie 登陸目標使用者的賬戶呢?這和利用自定義Cookie訪問網站的過程是一樣的,參考如下:

當沒有登陸的時候,Cookie 內容是空的:

image

當我們手動新增 Cookie 後,登陸的內容如下:

image

此時,我們就已經登陸上了該使用者的賬戶。

所以,通過 XSS 攻擊,可以完成 Cookie 劫持 攻擊,直接登陸進使用者的賬戶。

其實都不需要帶上引數,黑客就能獲取到所有資料,這是因為當前 Web 中,Cookie 一般是使用者憑證,瀏覽器發起的所有請求都會自動帶上 Cookie 。

image

image

那麼該如何預防 Cookie 劫持 呢?

Cookie 的 HttpOnly 標識可以有效防止 Cookie 劫持,我們會在稍後章節具體介紹。