Web 漏洞分析:Reflected / Stored / DOM XSS 实战(完整翻译)

🧠 Web 漏洞分析:Reflected / Stored / DOM XSS 实战(完整翻译)

原始来源:Medium XSS Writeup + Hacklido 实战博客整理 (Medium1)


📄 1. 实验背景(Overview)

🔹 原文核心

该实验展示了一种基础的 Web 漏洞 ------ 反射型 XSS(Reflected XSS),漏洞存在于 Web 应用的搜索功能中。 (Medium1)

🔹 中文翻译

在本实验中,我们分析一种经典 Web 安全漏洞:

跨站脚本攻击(XSS)

该漏洞出现在应用的"搜索功能"中:

  • 用户输入内容
  • 被服务器直接返回到页面
  • 没有任何过滤或编码

👉 这就导致用户输入可以被当作代码执行


🧠 技术解读

这是 XSS 最典型的触发条件:

text 复制代码
用户输入 → 服务端返回 → 浏览器执行

如果没有处理:

html 复制代码
?q=<script>alert(1)</script>

浏览器就会执行 JS


📄 2. 漏洞原理(Vulnerability Explanation)

🔹 原文核心

Reflected XSS occurs when user input is immediately returned without validation. (Medium1)

🔹 中文翻译

反射型 XSS 的本质:

  • 用户输入被立即返回
  • 没有过滤 / 编码
  • 浏览器解析为 HTML / JS

🧠 技术解读

例如:

html 复制代码
<h1>Search: user_input</h1>

如果输入:

html 复制代码
<script>alert(1)</script>

变成:

html 复制代码
<h1>Search: <script>alert(1)</script></h1>

👉 浏览器执行 JS


📄 3. 漏洞利用步骤(Exploit Steps)

🔹 原文步骤(简化翻译)

  1. 打开目标 Web 应用

  2. 找到搜索框

  3. 输入恶意 payload:

    html 复制代码
    <script>alert(1)</script>
  4. 提交搜索

  5. 页面执行 JS

(Medium1)


🔥 中文逐段翻译 + 扩展

Step 1:访问目标网站

进入存在搜索功能的页面

👉 通常 URL 类似:

复制代码
/search?q=test

Step 2:输入恶意代码

html 复制代码
<script>alert(1)</script>

👉 这是最基础的 XSS payload


Step 3:触发漏洞

点击搜索后:

  • 页面返回你的输入
  • 浏览器执行 JS

🧠 技术关键点

✔ 成功条件:

  • 输入被反射
  • 没有 HTML 编码
  • 在 HTML 上下文中执行

📄 4. Stored XSS(存储型 XSS)

🔹 原文核心

Stored XSS occurs when input is stored and later executed. (Medium1)


🔹 中文翻译

存储型 XSS:

  • 用户输入被存储(数据库)
  • 其他用户访问时触发

🧠 示例场景

评论区:

html 复制代码
<script>alert(document.cookie)</script>

被存储后:

👉 所有用户访问页面都会执行


⚠️ 危害

  • 窃取 cookie
  • 会话劫持
  • 钓鱼攻击

👉 比反射型更危险


📄 5. DOM XSS(前端型 XSS)

🔹 原文核心

DOM XSS happens in browser JavaScript (document.write / innerHTML). (Medium1)


🔹 中文翻译

DOM XSS:

  • 不经过服务器
  • 发生在前端 JS

🔥 示例漏洞代码

javascript 复制代码
document.write(location.search)

如果 URL:

复制代码
?q=<script>alert(1)</script>

👉 浏览器直接执行


🧠 技术本质

text 复制代码
漏洞 = 不安全 DOM 操作

常见危险函数:

  • innerHTML ❌
  • document.write ❌

安全替代:

  • textContent ✅ (Pentest-Tools.com2)

📄 6. XSS 类型总结

类型 特点 危险性
Reflected 即时返回 ⭐⭐
Stored 存储触发 ⭐⭐⭐⭐
DOM 前端执行 ⭐⭐⭐

📄 7. 漏洞利用思路(攻击方法)

🔹 原文总结

攻击者通过构造 payload 并诱导用户点击触发攻击 (Pentest-Tools.com2)


🔥 常见攻击方式

1️⃣ 诱导点击(Reflected)

text 复制代码
http://site.com?q=<script>steal()</script>

2️⃣ 存储 payload

html 复制代码
评论区注入

3️⃣ DOM 注入

javascript 复制代码
location.search → innerHTML

🎯 攻击目标

  • 窃取 cookie
  • 劫持 session
  • 执行任意 JS

(Vulnify3)


📄 8. 防御方法(Defense)

🔹 原文核心

Use input validation and output encoding (Vulnify3)


🔥 实战防御

✅ 1. 输入过滤

text 复制代码
过滤 <script>

✅ 2. 输出编码

html 复制代码
< → &lt;

✅ 3. 安全 DOM API

javascript 复制代码
element.textContent = input

✅ 4. CSP(内容安全策略)

限制 JS 执行来源


📄 9. 总结(Conclusion)

🧠 核心一句话

XSS 的本质是:用户输入被当作代码执行


🔥 渗透测试思路总结

text 复制代码
1. 找输入点
2. 看是否回显
3. 构造 payload
4. 绕过滤
5. 提权利用
相关推荐
To_OC3 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus4 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮4 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
徐小夕6 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
kyriewen8 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz8 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒8 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱8 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
zandy10119 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
罗超驿9 小时前
JavaEE进阶之路:从Web架构原理到HTML标签全解析
前端·html·web·javaee