做营销网站推广,义乌商城网站开发,固原网络营销网络推广方案,优化公司哪家好郑重声明#xff1a; 本文所有安全知识与技术#xff0c;仅用于探讨、研究及学习#xff0c;严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任#xff0c;本人不承担任何责任。 如需转载#xff0c;请注明出处且不得用于商业盈利。 … 郑重声明 本文所有安全知识与技术仅用于探讨、研究及学习严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任本人不承担任何责任。 如需转载请注明出处且不得用于商业盈利。 点赞❤️ 关注 收藏⭐️ 评论 更多文章戳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的文本如 scriptalert(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是根节点head和body是其子节点
② 动态性⚠️ 安全关键 可通过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攻击流程 ️ 用户输入提交 - 在网页的表单/输入框提交包含恶意脚本的评论内容 scriptalert(XSS Attack!);/script 客户端处理 - 网站JavaScript代码从网页上获取评论内容并通过document.getElementById方法动态地将其插入到网页中 // 危险示例未经过滤直接使用
const userInput document.getElementById(comment).value; DOM操作 - 通过innerHTML、document.write()等方法动态插入内容 document.body.innerHTML userInput; // 直接插入DOM ⚡ 浏览器解析 - 如果网站的JavaScript代码没有正确处理你的输入恶意的 script 标签会被当做代码直接执行直接弹框即在客户端浏览器执行了恶意 script 标签。 攻击执行 - 恶意脚本在用户浏览器中执行比如窃取cookie、重定向等。 1.1.3.3 防御策略与最佳实践
1.关键防御措施 ✅ 输入验证与过滤 对所有用户输入进行严格验证 使用白名单机制允许安全内容 ✅ 安全DOM操作 避免使用innerHTML、outerHTML、document.write() 优先使用textContent、setAttribute ✅ 使用安全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解析和处理逻辑location、hash、search
测试方法 使用自动化扫描工具如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控制台 快捷键CtrlShiftK (Windows) / CmdShiftK (Mac) 在控制台中执行函数并检索输出。将值打印到浏览器的控制台console。
1.3 识别XSS漏洞
1.3.1 XSS漏洞识别流程 1.3.2 常见XSS入口点
入口点类型示例风险等级 搜索框网站搜索功能 高风险 评论框博客评论、论坛回复 高风险 表单字段联系表单、注册表单 高风险 用户资料用户名、个人描述 中风险 URL参数?searchkeyword 高风险 文件上传文件名、元数据 中风险 检测提示重点关注所有接受用户输入的区域特别是那些会将输入内容返回给用户的功能。 1.3.3 特殊字符过滤检测
如果应用程序不删除或编码这些字符说明它容易受到XSS攻击。因为应用程序将这些字符解释为代码从而使额外的代码得以执行。
关键测试字符集:
字符HTML用途XSS测试意义编码表示 标签界定脚本标签注入lt; gt; 字符串界定属性逃逸apos; quot;{ }代码块界定JS函数注入#123; #125;实体引用编码绕过amp;;语句结束多语句注入#59;
测试方法: 输入基本测试载荷 scriptalert(XSS)/script # 弹框效果 检查响应
如果弹窗出现 → 说明漏洞存在如果字符被编码/过滤 → 需要进一步分析 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编码示例
!-- 原始文本 --
scriptalert(XSS)/script!-- HTML编码后 --
lt;scriptgt;alert(quot;XSSquot;)lt;/scriptgt;
URL编码示例
原始URLhttps://example.com/search?qscript
编码后https://example.com/search?q%3Cscript%3E
又例如 如果想在网页上显示 和 直接写 和 会让浏览器误认为它们是HTML标签的标记。需要使用HTML编码来显示这些字符。即和以文本方式输出而非HTML标签的标记。
创作不易求一波暴击点赞❤️ 关注 收藏⭐️ 评论
您的支持是我创作最大的动力