当前位置: 首页 > news >正文

3-10〔OSCP ◈ 研记〕❘ WEB应用攻击▸XSS攻击理论基础

      郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
Whoami!-CSDN博客🚀

​​​​​​


𖤐 嘿,经过前面的预热,我们正式打开这扇门,来吧 ! 

𖤐 𝓗𝓮𝔂, 𝓪𝓯𝓽𝓮𝓻 𝔀𝓪𝓻𝓶-𝓾𝓹,𝔀𝓮'𝓻𝓮 𝓷𝓸𝔀 𝓸𝓯𝓯𝓲𝓬𝓲𝓪𝓵𝓵𝔂 𝓸𝓹𝓮𝓷𝓲𝓷𝓰 𝓽𝓱𝓲𝓼 𝓭𝓸𝓸𝓻,𝓒𝓸𝓶𝓮 𝓸𝓷 ! 


→ 信息收集

→ 漏洞检测

→ 初始立足点▸WEB应用攻击▸XSS攻击理论基础-----我们在这儿~ 🔥🔥🔥

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  


目录

1.跨站脚本攻击(XSS)

1.1 XSS类型

1.1.1 存储型XSS(持久型XSS)

1.1.2  反射型XSS(非持久型XSS)

1.1.3 基于DOM的XSS

1.1.3.1 什么是DOM

1.DOM可视化表示

2.HTML文件与DOM树的区别

3.DOM树的三大特点

4.示例说明

1.1.3.2 DOM XSS概述

1.与传统XSS的对比

2.DOM型XSS攻击流程

1.1.3.3 防御策略与最佳实践

1.关键防御措施

2.框架安全实践

3.检测与排查建议

1.2 JavaScript概述

1.2.1 JavaScript在Web中的角色

​1.2.2 JavaScript 的双面性:功能与风险

1.2.3 JavaScript概述

1.3 识别XSS漏洞

1.3.1 XSS漏洞识别流程

1.3.2 常见XSS入口点

1.3.3 特殊字符过滤检测

 1.3.4 Web应用程序编码方式

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1.跨站脚本攻击(XSS)

        跨站脚本攻击(XSS)是一种利用网站对用户信任的安全漏洞,攻击者通过注入恶意脚本(如:JavaScript)到网页中,当其他用户访问时执行这些脚本。曾经被认为是低风险漏洞,如今XSS已成为高风险且普遍的安全威胁。
        XSS漏洞根源在于数据清理不足:即Web应用程序未能正确处理用户输入,未删除或转换危险字符和字符串,导致攻击者能够注入并执行恶意代码。

1.1 XSS类型

 XSS类型对比表:

类型存储机制影响范围持久性触发方式
🔒 存储型XSS恶意代码存储在服务器数据库所有访问受影响页面的用户长期存在用户浏览正常页面
↪️ 反射型XSS不存储,通过URL参数传递仅点击恶意链接的用户一次性用户点击特制链接

1.1.1 存储型XSS(持久型XSS)

解释:存储型XSS是将恶意内容“存储”在服务器上,之后当任何人访问该页面时,恶意代码就会自动执行,影响到所有访问该页面的用户。

比喻:就像把一张恶意纸条放入公共邮箱,所有查看邮箱的人都会受到影响。

详细步骤:

  • 用户输入评论 - 在输入框提交包含恶意JavaScript的文本(如:

    <script>alert('XSS Attack!')</script>
  • 客户端操作 - 点击“提交”按钮,评论内容通过AJAX或表单提交发送到服务器端。

  • 服务器端存储 - 未经充分过滤直接将评论内容存入数据库的某个表中。

  • 数据库保存 - 保存的内容若没有做适当的过滤或转义,恶意的 <script> 标签也会一起存储)。

  • 展示评论 - 其他用户访问时该页面时,网站从数据库读取并展示评论内容,恶意的 <script> 标签可能会被插入到页面中,发给客户端浏览器。

  • XSS攻击发生 - 客户端浏览器渲染页面时,恶意的JavaScript代码就会被执行。例如,恶意的JavaScript代码触发弹出警告框,或者进行其他有害操作(例如窃取用户的Cookies、重定向用户等)。


1.1.2  反射型XSS(非持久型XSS)

比喻:就像收到含恶意链接的邮件,只有点击链接的人才会受到影响。恶意信息就会通过链接进入到你的浏览器中。

详细步骤:

  • 攻击者构造恶意URL
  • 诱导用户点击
  • 服务器返回含恶意代码的响应
  • 浏览器执行恶意脚本

特点:

  • 攻击恶意代码不存储在服务器上
  • 通过URL参数传递恶意载荷
  • 需要社交工程诱导用户点击

1.1.3 基于DOM的XSS

1.1.3.1 什么是DOM

DOM(文档对象模型) 是浏览器用来表示和操作网页的内部数据结构。当网页加载时,浏览器将HTML转换为树形结构(DOM):每个标签、文本和属性都成为树的一个节点。浏览器根据这个结构渲染页面。

1.DOM可视化表示

2.HTML文件与DOM树的区别
特性HTML文件DOM树
本质静态纯文本文件动态树状结构
内容标签、属性和内容节点(Node)及其关系
状态固定不变可动态修改,通过JavaScript修改
用途描述网页结构和内容浏览器内部页面表示

样式:

3.DOM树的三大特点

① 树状结构

  • 每个HTML元素都是一个节点(Node)

  • 节点间形成父子关系

  • html是根节点,headbody是其子节点

② 动态性(⚠️ 安全关键)

  • 可通过JavaScript动态修改

  • 能添加、删除或修改节点

  • 正是这一特性导致DOM XSS攻击的可能性

③ 可访问性

  • 可通过JavaScript访问任何节点

  • 提供丰富的API进行操作

4.示例说明

以上是JavaScript 代码。功能:修改 <h1> 标签内容。该代码通过操作 DOM(文档对象模型),实现对网页中 <h1> 标签文本内容的修改,各部分说明如下:

代码片段类型作用说明
document对象JavaScript 中代表当前网页文档的根对象,是访问和操作整个 DOM 树的入口。
.querySelector('h1')方法document 的内置方法,通过 CSS 选择器查找元素:
'h1' 为 CSS 选择器,匹配所有 <h1> 标签;
- 仅返回第一个匹配的 <h1> 元素。
.textContent属性DOM 元素的内置属性,用于获取或设置元素的纯文本内容(不含 HTML 标签)。
= '你好!'赋值操作将找到的 <h1> 元素的 textContent 属性值设置为 '你好!',替换其原有文本。

1.1.3.2 DOM XSS概述

基于DOM的XSS攻击利用浏览器解析机制,通过修改页面DOM植入恶意JavaScript代码,用户浏览器中触发执行

1.与传统XSS的对比
特性传统XSS(存储型)基于DOM的XSS
执行位置服务器端纯客户端(通过JS操作)
服务器依赖需要服务器返回恶意代码不依赖服务器响应
检测难度相对容易难以检测
数据流服务器-客户端客户端内部
2.DOM型XSS攻击流程
  • 🖊️ 用户输入提交 - 在网页的表单/输入框提交包含恶意脚本的评论内容:

    <script>alert('XSS Attack!');</script>
  • 🔄 客户端处理 - 网站JavaScript代码从网页上获取评论内容,并通过document.getElementById方法动态地将其插入到网页中:

    // 危险示例:未经过滤直接使用
    const userInput = document.getElementById('comment').value;
  • 🌳 DOM操作 - 通过innerHTMLdocument.write()等方法动态插入内容

    document.body.innerHTML += userInput; // 直接插入DOM
  • ⚡ 浏览器解析 - 如果网站的JavaScript代码没有正确处理你的输入,恶意的 <script> 标签会被当做代码直接执行(直接弹框),即在客户端浏览器执行了恶意 <script> 标签。

  • 💥 攻击执行 - 恶意脚本在用户浏览器中执行,比如:窃取cookie、重定向等。


1.1.3.3 防御策略与最佳实践
1.关键防御措施
  • ✅ 输入验证与过滤

    • 对所有用户输入进行严格验证

    • 使用白名单机制允许安全内容

  • ✅ 安全DOM操作

    • 避免使用innerHTMLouterHTMLdocument.write()

    • 优先使用textContentsetAttribute

  • ✅ 使用安全API

    • 采用DOMPurify等库进行HTML清理

    • 实施内容安全策略(CSP)

  • ✅ 编码输出

    • 对动态内容进行适当的编码

    • 区分HTML编码、JavaScript编码和URL编码

2.框架安全实践
// ❌ 危险方式:直接插入HTML
element.innerHTML = userInput;// ✅ 安全方式:文本内容设置
element.textContent = userInput;// ✅ 安全方式:使用专用API
const safeHTML = DOMPurify.sanitize(userInput);
element.innerHTML = safeHTML;
// React示例:自动转义内容
<div>{userInput}</div> // 自动安全处理// Vue示例:安全模板渲染
<template>{{ userInput }}</template>

3.检测与排查建议

代码审查要点

  • 检查所有使用innerHTML的地方

  • 审查eval()setTimeout()setInterval()中的动态代码

  • 检查URL解析和处理逻辑(locationhashsearch

测试方法

  • 使用自动化扫描工具(如OWASP ZAP、Burp Suite)

  • 手动测试:输入特殊字符观察行为

  • 检查数据流:从源点到危险函数调用


1.2 JavaScript概述

JavaScript是一种高级编程语言,已成为现代Web应用程序的核心组成部分。所有现代浏览器都内置JavaScript引擎,能够在浏览器中直接执行JavaScript代码。

1.2.1 JavaScript在Web中的角色

浏览器处理流程


​1.2.2 JavaScript 的双面性:功能与风险

1.正常功能

JavaScript的核心作用:访问和修改页面DOM(文档对象模型),从而实现:

  • 交互式用户体验(如点击按钮后即时更新内容)
  • 动态页面效果(无需重新加载整个页面即可更新内容)
  • 提升网页的交互性和响应速度

2.安全风险(从攻击者角度)

若攻击者成功将恶意JavaScript代码注入应用程序,可利用其DOM访问能力实施不法行为:

  • 篡改页面元素(如重定向登录表单至钓鱼网站)
  • 窃取敏感信息(如提取用户输入的密码)
  • 盗用用户会话(如获取并利用会话 Cookie)

1.2.3 JavaScript概述

函数声明与调用

// 第1-3行:函数声明
function multiplyValues(x, y) {return x * y;
}// 第5行:函数调用
let a = multiplyValues(3, 5);// 第6行:控制台输出
console.log(a); // 输出: 15

🔤 弱类型语言特性

JavaScript是弱类型语言,变量类型由赋值自动推断,无需给变量定义类型:

let variable = 15;     // 数字类型
variable = "文本";     // 现在变为字符串类型
variable = true;       // 现在变为布尔类型

🛠️ 浏览器“开发者工具”实践

  • 在Firefox浏览器打开about:blank空白页

  • 通过以下方式打开开发者工具:

    • 菜单:Web开发者 → Web控制台

    • 快捷键:Ctrl+Shift+K (Windows) / Cmd+Shift+K (Mac)

    • 在控制台中,执行函数并检索输出。将值打印到浏览器的控制台console。


1.3 识别XSS漏洞

1.3.1 XSS漏洞识别流程

1.3.2 常见XSS入口点

入口点类型示例风险等级
🔍 搜索框网站搜索功能🔴 高风险
💬 评论框博客评论、论坛回复🔴 高风险
📝 表单字段联系表单、注册表单🔴 高风险
👤 用户资料用户名、个人描述🟡 中风险
🌐 URL参数?search=keyword🔴 高风险
📊 文件上传文件名、元数据🟡 中风险

💡 检测提示:重点关注所有接受用户输入的区域,特别是那些会将输入内容返回给用户的功能。


1.3.3 特殊字符过滤检测

如果应用程序不删除或编码这些字符,说明它容易受到XSS攻击。因为应用程序将这些字符解释为代码,从而使额外的代码得以执行。

关键测试字符集:

字符HTML用途XSS测试意义编码表示
< >标签界定脚本标签注入&lt; &gt;
' "字符串界定属性逃逸&apos; &quot;
{ }代码块界定JS函数注入&#123; &#125;
&实体引用编码绕过&amp;
;语句结束多语句注入&#59;

测试方法:

  1. 输入基本测试载荷

    <script>alert('XSS')</script>   # 弹框效果
  2. 检查响应

  • 如果弹窗出现 → 说明漏洞存在
  • 如果字符被编码/过滤 → 需要进一步分析

 1.3.4 Web应用程序编码方式

编码(Encoding)在Web应用中的作用,尤其是利用编码方式进行XSS(跨站脚本攻击)。虽然有多种类型的编码,但在Web应用程序中最常遇到的是HTML编码URL编码

📊 编码类型对比表:

编码类型目的示例安全意义

🔗 URL编码

百分比编码

保护URL结构空格 → %20防止URL注入
🌐 HTML编码防止特殊意义的字符(比如 <, >, &, ", ' 等)被误解释为HTML标签、属性或脚本的一部分< → &lt;XSS防护关键
📝 JavaScript编码JS字符串安全" → \x22防止JS注入

🛡️ HTML编码详解:

字符编码说明
<&lt;小于号
>&gt;大于号
&&amp;和号
"&quot;双引号
'&apos;单引号

HTML编码示例

<!-- 原始文本: -->
<script>alert("XSS")</script><!-- HTML编码后: -->
&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

URL编码示例:

原始URL:https://example.com/search?q=<script>
编码后:https://example.com/search?q=%3Cscript%3E

又例如:
如果想在网页上显示 <>,直接写 < 和 >会让浏览器误认为它们是HTML标签的标记。需要使用HTML编码来显示这些字符。即:<和>以文本方式输出,而非HTML标签的标记。


💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!


文章转载自:

http://84WrAVrX.dbddm.cn
http://uqUnqJNF.dbddm.cn
http://fLdMI3Kb.dbddm.cn
http://Utd2ffXz.dbddm.cn
http://eEc2inH1.dbddm.cn
http://JjS4M2uA.dbddm.cn
http://IlyJ6q2q.dbddm.cn
http://YuHvvyim.dbddm.cn
http://wzpKFsTc.dbddm.cn
http://kseHvUkT.dbddm.cn
http://mu0e22qp.dbddm.cn
http://vyTZu20b.dbddm.cn
http://D68vRLXs.dbddm.cn
http://EosypIlt.dbddm.cn
http://yXGi8W4j.dbddm.cn
http://iCzNGBC5.dbddm.cn
http://CES1VPGs.dbddm.cn
http://Md8s7ifx.dbddm.cn
http://oJ3HbUbS.dbddm.cn
http://rpqc2OQd.dbddm.cn
http://ewZjwat1.dbddm.cn
http://9iCzULsZ.dbddm.cn
http://2tc1il2Q.dbddm.cn
http://VJKcUXZT.dbddm.cn
http://XN8VFRyY.dbddm.cn
http://BhkoGyOe.dbddm.cn
http://vrzOaC5E.dbddm.cn
http://CMVUMZni.dbddm.cn
http://XvtDqsD9.dbddm.cn
http://kPgsKD5V.dbddm.cn
http://www.dtcms.com/a/378138.html

相关文章:

  • 微信小程序开发笔记(01_小程序基础与配置文件)
  • ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 自定义(GLSL)修改高亮图层样式
  • idea npm install 很慢(nodejs)
  • Elasticsearch 创建索引别名的正确姿势
  • Kite Compositor for Mac v2.1.2 安装教程|DMG文件安装步骤(Mac用户必看)
  • 深入探索 Unity 错误排查过程:从“滚动条问题”到“鼠标悬浮异常”
  • 【设计模式】从游戏角度开始了解设计模式 --- 抽象工厂模式
  • 南京大学实现非线性光学新范式丨《Light》报道光电可调谐液晶二次谐波衍射研究
  • 【Java】Hibernate-5:Hibernate的一级缓存
  • 【C#】理解.NET内存机制:堆、栈与装箱拆箱的底层逻辑及优化技巧
  • 【软件设计师】信息安全
  • Mac本地docker安装Kibana+ElasticSearch
  • 使用VMware Workstation Pro搭建Ubuntu服务器虚拟机
  • 对于统计类sql是否应该在原业务表进行操作的分析
  • vite+vue+js项目使用ts报错
  • SGLang简介
  • 信息检索技术综述:从传统稀疏检索到现代深度学习方法
  • 我对rabbitmq的理解(第一次)
  • 算法练习——跳跃游戏II
  • binlog 的事件类型
  • CKA01--HPA自动扩缩容
  • Vue加载资源‘如图片’的“直接引入“方式和“request()“的区别
  • 豆瓣网影视数据分析与应用
  • 多技术融合提升环境生态水文、土地土壤、农业大气等领域的数据分析与项目科研水平
  • 基于 Apache Doris 的用户画像数据模型设计方案
  • Windows Node.js 安装及环境配置详细教程
  • Pandas与SQL融合:用pandasql高效分析Uber数据
  • spark sql之from_json函数
  • Shoptnt 促销计算引擎详解:策略模式与责任链的完美融合
  • 第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑