xss漏洞学习

1.xss漏洞简介

跨站脚本(Cross-Site Scripting),本应该缩写为CSS,但是该缩写已被层叠样式脚本Cascading Style Sheets所用,所以改简称为XSS。也称跨站脚本或跨站脚本攻击。

原理:跨站脚本攻击XSS通过将恶意得Script代码注入到Web页面中,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的

特点:本质上是一种针对网站应用程序攻击的技术,同属于代码注入。主要基于JavaScript语言进行恶意攻击,因为js非常灵活操作html、css、浏览器。

攻击对象被攻击者的浏览器。当用户进行最简单的动作也就是使用浏览器上网,并且浏览器中有javascript解释器,可以解析javascript,然后浏览器不会判断代码是否恶意,也就是说xss的对象是用户的浏览器。

2.漏洞攻击过程

        攻击者将恶意代码注入到服务器中(如论坛、留言板、邮件等)——用户在没有防备的情况下访问了被注入了恶意代码的服务器——服务器将含有恶意代码的网页响应给客户端——在客户端浏览器中触发JS恶意代码。
       微博、留言板、聊天室等等收集用户输入的地方,都可能被注入xss代码,都存在遭受xss的风险,只要没有对用户的输入进行严格过滤,就会被注入xss代码。当攻击者可以将恶意代码注入到服务器中,我们就认为其存在xss漏洞。

3.xss漏洞危害

(1)窃取cookie

        大部分人喜欢将密码储存到浏览器当中,黑客一般渗透的时候就会先来浏览器查看已保存的cookie 来盗取各种用户账号密码,对用户造成进一步危害

(2)未经授权的操作

       js特性很强大,黑客会直接代替用户在html进行各类操作。比如劫持会话,刷流量,执行弹窗广告,还能记录用户的键盘输入。

(3)传播蠕虫病毒

4.xss漏洞分类

(1)反射型xss

         反射型XSS,也称为非持久性XSS,是最常见的一种XSS。

        XSS代码常常出现在URL请求中,当用户访问带有XSS代码的URL请求时,服务器端接收请求并处理,然后将带有XSS代码的数据返回给浏览器,浏览器解析该段带有XSS代码的数据并执行,整个过程就像一次反射,故称为反射型XSS。

         该类攻击的主要特点是它的及时性和一次性,即用户提交请求后,响应信息会立即反馈给用户。该类攻击常发生在搜索引擎、错误提示页面等对用户的输入做出直接反应的场景中。

数据流量走向:浏览器---->后端---->浏览器

(2)存储型xss

       被保存到服务器上,显示到HTML页面中,经常出现在用户评论的页面,攻击者将XSS代码保存到数据库中,当用户在此访问这个页面时,就会触发并执行XSS代码,窃取用户的敏感信息。

    特点:危害性最大:持久的保存在服务器上
持久型XSS
js代码不在某个参数中,而是被写进了数据库或文件可以永久保存数据的介质中,如留言板等。

    攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中 。 当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行 。所以需要浏览器从服务器载入恶意的xss代码,才能真正触发xss。

数据流量走向:浏览器—>后端—>数据库—>后端—>浏览器

(3)DOM型XSS

        DOM全称Document Object Model,中文为文档对象模型,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式 

       DOM常用来表示在HTML和XML中的对象。DOM可以允许程序动态的访问和更新文档的内容、结构等。客户端JavaScript可以访问浏览器的文档对象模型。也就是说,通过JavaScript代码控制DOM节点就可以不经过服务器端的参与重构HTML页面。

       该类攻击是反射型XSS的变种。它通常是由于客户端接收到的脚本代码存在逻辑错误或者使用不当导致的。比如Javascript代码不正确地使用各种DOM方法(如document.write)和Javascript内部函数(如eval函数),动态拼接HTML代码和脚本代码就容易引发DOM型的跨站脚本攻击。

         因此,DOM型XSS与前面两种XSS的区别就在于DOM型XSS攻击的代码不需要与服务器端进行交互,DOM型XSS的触发基于浏览器端对DOM数据的解析来完成,也就是完全是客户端的事情。

HTML 的标签都是节点,而这些节点组成了 DOM 的整体结构一一节点树。

判断是哪一种XSS

        发送一次带XSS代码的请求,若只能在当前返回的数据包里发现XSS代码,则是反射型;若以后这个页面的返回包里都会有XSS代码,则是存储型;若在返回包里找不到XSS代码,则是DOM型。

实操

这里我以xss-uplods靶场为例

1.level1

(1)发现有个name参数值为test;

(2)改变name的值发现在页面上进行输出,name我们就对name参数进行payload注入           ' ''><script>alert('aini');<script>    最后跳了个弹窗发现成功

2.第二关

(1)发现有个输入框,输入的内容也会在输入框显示出来

(2)查看源码发现我们输入的内容是一个文本框的value值,这样浏览器是不会执行我们的注入语句的,所以我们要构造标签闭合

(3)这里需要构造一个onclick属性 

" οnclick="alert(123)
 

<input name="keyword" value="aini"> 

上面payload的做右边的" 可以闭合调value属性,οnclick="alert(123跟value属性本来的右引号形成闭合,下面就是payload注入后的效果

<input name="keyword" value="" οnclick="alert(123)"> 

(4)到这里文本出现点击事件,点击一下就通关了

3.第三关

(1)先随便输入一个试试,发现跟上一关差不多

(2)按照同样的步骤来试试

(3)发现使用onclick并不能成功

(4)这里尝试使用onfocus成功绕过去了

注;前端事件有很多onclick,onfocus,onblur等,简单了解了一下,记住这几个常用的

' οnfοcus='alert(123)'
' οnblur='alert(123)'  
// 或者下面的写法也行
' onBlur=javascript:alert('aini')

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

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

相关文章

项目文档:基于JavaFX + Maven的桌面扫雷软件打包exe【小白可做,文章末尾有包教安装有源代码可运行,可打包】

微信公众号: 科研小条 前言 用于学习javafx做桌面软件&#xff0c;熟悉maven构建项目的最佳选择 效果展示&#xff1a; 1. 项目概述 本项目是一个基于Java和JavaFX构建的桌面扫雷游戏软件。扫雷游戏是一种经典的单人益智游戏&#xff0c;玩家需要根据已知的雷区信息&…

Golang Colly爬取图片gorm存储数据

语言:Golang 库:Iris/Colly/gorm 运行结果 text/html; charset=utf-8 It is image 20240429222029_0_0.jpg Saved file: images\20240429222029_0_0.jpg text/html; charset=utf-8 It is image 20240429222030_1_0.jpg Saved file: images\20240429222030_1_0.jpg It is ima…

动态切换数据源的最佳实践

序言 本文和大家聊聊在开发中&#xff0c;动态切换多数据源的方案。 一、多数据源需求 随着应用程序的发展和复杂性增加&#xff0c;对于多数据源的需求也变得越来越普遍。在某些场景下&#xff0c;一个应用程序可能需要连接和操作多个不同的数据库或数据源。常见的场景包括…

Qt QThreadPool线程池

1.简介 QThreadPool类管理一个QThread集合。 QThreadPool管理和重新设计单个QThread对象&#xff0c;以帮助降低使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象&#xff0c;可以通过调用globalInstance来访问该对象。 要使用其中一个QThreadPool…

深度学习入门(4)

神经网络的构建 import numpy as np import matplotlib.pyplot as plt def sigmoid(x):return 1/(1np.exp(-x)) def identity_function(x):#恒等函数return x def init_network():#进行权重和偏置的初始化&#xff0c;并保存到字典中network{}network[W1]np.array([[0.1,0.3,0…

ezplot--Matlab学习

目录 一、代码 二、效果 ​编辑 三、ezplot讲解 四、如何自定义一个函数 一、代码 clc; clear; t0:32; x4(t) cos(2*pi*t/4).*sin(2*pi*t/4); x8(t) cos(2*pi*t/8).*sin(2*pi*t/8); x16(t) cos(2*pi*t/16).*sin(2*pi*t/16); subplot(3,1,1) ezplot(x4,[0,32]); subplot…

POCEXP编写—多线程

POC&EXP编写—多线程 1. 前言2. 多进程&多线程2.1. 多进程2.1.1. 案例 2.2. 多线程2.2.1. 案例&#xff1a; 2.3. POC的案例&#xff08;模板&#xff09; 3. UA头设置3.1. 随机UA头3.1.1. 案例3.1.2. 模板拼接 4. 代理Proxy4.1. 单代理案例4.2. 多代理案例4.2.1. 请求…

【AI心理咨询应用】继Woebot之后,国内诞生的“LLM+CBT”应用:白小喵

导言 AI认知行为疗法&#xff08;Cognitive Behavioral Therapy&#xff0c;CBT&#xff09;早在2017年便有了首例&#xff0c;即美国知名CBT治疗机器人Woebot。 然而&#xff0c;Woebot在CBT的完整落地上仍有缺陷问题&#xff0c;LLM的出现促进了对该问题的解决&#xff0c;…

【机器学习基础1】什么是机器学习、预测模型解决问题的步骤、机器学习的Python生态圈

文章目录 一. 什么是机器学习1. 概念2. 机器学习算法分类 二. 利用预测模型解决问题的步骤三. 机器学习的Python生态圈 一. 什么是机器学习 1. 概念 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是一门多领域的交叉学科&#xff0c;涉及概率论、统计学、…

服务器数据恢复—Storwize V3700存储数据恢复案例

服务器存储数据恢复环境&#xff1a; 某品牌Storwize V3700存储&#xff0c;10块硬盘组建了2组Mdisk加入到一个存储池中&#xff0c;一共创建了1个通用卷来存放数据&#xff0c;主要数据为oracle数据库。 服务器存储故障&#xff1a; 其中一组Mdisk中两块磁盘出现故障离线&…

【每日刷题】Day28

【每日刷题】Day28 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; ​ 1. 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 2. 205. 同构字符串 - 力扣…

关于discuz论坛网址优化的一些记录(网站地图sitemap提交)

最近网站刚上线&#xff0c;针对SEO做了些操作&#xff0c;为了方便网站网页百度被收录&#xff0c;特此记录下 discuz有免费的sitemap插件可以用&#xff0c;打开后台管理&#xff0c;找到插件栏&#xff0c;然后找到更多插件&#xff0c;进入插件市场。 选择这个免费的sitem…

【数据分析面试】34.填充NaN值 (Python:groupby/sort_value/ffill)

题目&#xff1a;填充NaN值 &#xff08;Python) 给定一个包含三列的DataFrame&#xff1a;client_id、ranking、value 编写一个函数&#xff0c;将value列中的NaN值用相同client_id的前一个非NaN值填充&#xff0c;按升序排列。 如果不存在前一个client_id&#xff0c;则返…

Linux详解:进程等待

文章目录 进程等待等待的必要性进程等待的方法waitwaitpid获取子进程status阻塞等待 与 非阻塞等待 进程等待 等待的必要性 子进程退出&#xff0c;父进程不进行回收的话&#xff0c;就可能造成僵尸进程&#xff0c;进而造成内存泄露 如果进程进入了僵尸状态&#xff0c;kill…

GITEE 基于OAuth2的API V5版本

为了构建更好的码云生态环境&#xff0c;我们推出了基于OAuth2的API V5版本。 API V5接口使用方式以及Url都参照GitHub&#xff0c;为了各位开发者更好的兼容已经存在的第三方应用。 API 使用条款 OSCHINA 用户是资源的拥有者&#xff0c;需尊重和保护用户的权益。不能在应用…

基于SpringBoot+Vue高校竞赛管理系统的设计与实现

项目介绍&#xff1a; 高校竞赛管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、竞赛公告管理、获奖管理、老师管理、评审管理、评审分配管理、评审打分管理、赛事管理、赛事提交管理、赛事报名管理、用户管理、专家管理、管理员管理。用…

如何安装最新版Docker Compose?

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YAML 文件来配置应用服务&#xff0c;然后只需一个简单的命令便能创建和启动所有服务。在本篇博客中&#xff0c;我们将详细介绍如何在 Linux 系统上安装 Docker Compos…

可以向同事炫耀的10个Python技巧

Python 是一种用途极为广泛的编程语言&#xff0c;有大量的库和框架为其提供支持。然而&#xff0c;在庞大的 Python 生态系统中&#xff0c;还存在一些鲜为人知的编码技巧和库&#xff0c;它们可以显著增强您的开发体验并优化您的代码。我们将探讨一些鲜为人知的 Python 技巧&…

与Apollo共创生态:七周年大会深有体会!

前言 百度从2013年开始涉足自动驾驶领域。2017年3月1日&#xff0c;百度通过内部邮件宣布&#xff0c;将现有业务和资源整合&#xff0c;成立智能驾驶事业群组&#xff08;简称IDG&#xff09;。同年&#xff0c;在上海车展上&#xff0c;百度发布了“Apollo计划”&#xff0c…

Git:克隆代码,提交流程,分支提交流程

1.克隆代码 git clone http://…(代码地址&#xff09; 克隆代码到本地 2.提交流程&#xff08;不牵涉分支&#xff09; 1&#xff09;git add . 将本地修改的文件暂存到缓存区 2&#xff09;git commit -m "当次提交解释说明备注" 在日志中显示 3&#xff09;git…