5.1 - Web漏洞 - XSS漏洞详解

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

XSS漏洞

  • 一、什么是XSS?
  • 二、XSS概述
  • 三、靶场练习
  • 四、XSS使用步骤
  • 五、XSS攻击类型
  • 六、XSS流量特征
  • 七、XSS的危害
  • 八、XSS的防御
    • 1、实体转换
    • 2、字符过滤

一、什么是XSS?

首先,我们通过一个案例来认识一下XSS:

1)下面这几行PHP代码,功能很简单:获取「地址栏」的参数,然后打印出来。

在这里插入图片描述

2)我们访问这个页面,提交「value参数」,页面就会显示出我们提交的内容:

在这里插入图片描述
3)如果我们提交JS代码,页面就会执行我们提交的代码,比如下面这样「弹窗」,就是触发了XSS漏洞:

在这里插入图片描述

看到这里,你已经对XSS有了一个基本的了解,接下来,我们正式认识一下XSS漏洞。


二、XSS概述

XSS(Cross Site Scripting)也叫跨站脚本攻击。利用浏览器的「解析漏洞」,在前端页面执行JS代码。

原理:尖括号<>是HTML标签的语法,网页中插入的包含尖括号<>的内容都会被浏览器当做HTML标签来解析,如果插入的标签中包含JavaScript代码,浏览器也会执行它。

XSS的核心是「参数可控」,就是用户可以控制提交的参数内容,在提交的内容中构造出前端可以执行的JavaScript代码。

弹窗是XSS最基础的一种「触发形式」,常用来验证XSS漏洞是否存在。我们可以通过修改提交的代码,执行其他操作,比如获取cookie,记录键盘等。

由于XSS执行的是JS代码,所以它主要是作用在「前端浏览器」,受害的是网站用户而不是服务器本身。


三、靶场练习

接下来,我们通过XSS-Game靶场,来学习一下XSS的使用技巧和绕过技巧。

XSS使用的第一步是寻找「输入和输出点」,也就是用户从什么地方输入内容?输入的内容会输出到页面的什么位置?

以第一关为例,用户从地址栏输入名字,输入的名字会显示在欢迎用户的位置,那输入和输出点就是下图中标记的地方:

在这里插入图片描述

找到输入点以后,第二步就是查看「网页源代码」,分析输出点的代码有没有被「过滤」,如果内容被输出到属性当中,还要考虑怎么去「闭合」

这里我输入了一个基础符号,从源代码可以看到,内容没有被过滤,而且是输出到标签里面,也不用考虑闭合。

在这里插入图片描述

这里要提示一点:右键检查并不能有效的查看过滤情况,一定要用网页源代码。

分析完输出点,第三步就可以提交JS代码来验证XSS是否存在,最常用的验证方式就是用 alert() 进行「弹窗测试」,如果页面弹窗,就证明存在XSS。

在这里插入图片描述
确定注入点存在后,第四步就是利用了,这里我们的目的是学习,就不给大家演示了。

XSS-Game 靶场的其他关卡可以看我的另一篇文章: XSS-Game靶场通关教程

初学者建议过前十关或前十三关,做完靶场后,我们总结一下XSS的使用步骤。


四、XSS使用步骤

XSS使用的关键在于「输入和输出」,输入是指用户可以提交代码的功能点,输出是用户提交的内容被输出到了页面的什么位置。

1)寻找输入点和输出位置
2)打开网页源代码,分析输出位置的代码,构造闭合脚本。
3)利用altet(1)进行弹窗测试,确认XSS注入点是否存在.
4)利用注入点完成各种操作。


五、XSS攻击类型

根据XSS代码插入的位置,可以将XSS分为三种类型:反射型、存储型、DOM型。

1)「反射型XSS」通过url提交XSS代码,服务器响应回来的代码被插入到HTML页面的标签或属性中,这种类型通常是一次性的,也就是非持久型XSS。

反射型XSS参考练习靶场

2)「存储型XSS」会将XSS代码写入后台的数据库,服务器从数据库中查询数据再展示到页面中,这种类型可以一直触发,也叫持久型XSS。

存储型XSS参考练习靶场

3)「DOM型XSS」会将XSS代码插入到HTML页面的DOM树里面,通常不与服务器交互。

DOM型XSS参考练习靶场

提示:DOM树从网页的根节点开始,逐级向下表示网页的结构。根节点对应的是HTML文档的标签,下面是标签,然后是标签和标签,接着是一些标记,最后是文本节点。这些节点可以相互包含和嵌套,形成一个树状结构。

六、XSS流量特征

XSS的payload通常会包含以下特征:

  1. <script></script>标签
  2. 标签的一些事件,比如:onclick、ondbclick、onload、onchange、onmouseover、onerror、onblur等。
  3. 标签的超链接属性,比如:href、src。

七、XSS的危害

XSS控制浏览器进行操作,受限于浏览器的权限,主要通过JS代码来发挥作用,常见的危害有以下几种:

  1. 获取cookie,比如获取管理员Cookie,进行越权。
  2. 钓鱼网站,比如写一个假的登录页面,获取用户的登录信息,再跳转到真实的网站。
  3. DDOS,比如在网站植入JS代码,向指定网站发送请求,当用户数量大了以后,就能实现DDOS。
  4. 网页挂马、挖矿等
  5. 删除、修改文章等数据
  6. 劫持用户Web行为,渗透内网
  7. Web2.0蠕虫
  8. 蠕虫式DDOS
  9. 蠕虫式挂马、刷广告、刷流量

八、XSS的防御

XSS的防御手段主要有两种:实体转换和字符过滤

1、实体转换

使用htmlspecialchars()函数把内容中的预定义字符转换成HTML实体,转换后的字符会被当做转译字符输出在页面,而不是被当成代码执行。

预定义的字符有5个: ><'"&

我们修改一下文章开头的代码,打印之前先转译内容,会发现页面不再弹窗,<> 被转换了 &lt;&gt;

在这里插入图片描述

2、字符过滤

转换成HTML实体后,还是存在绕过的可能性。

htmlspecialchars() 默认只过滤双引号,可以用单引号绕过。

即使过滤了单引号, htmlspecialchars() 也只能过滤 ><'"& 这5个预定义字符,JavaScript:alert(1) 这种伪协议仍然可以绕过,因此,转换内容后,还要配合正则表达式过滤更多的字符。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

影响代理ip纯净度的原因及目标网站如何识别代理ip

网络上代理ip很多&#xff0c;但真正可以为我们所用的大部分都是付费ip&#xff0c;那为什么免费ip不能为我们所用呢&#xff1f;下面我们就纯净度和目标网站是如何识别代理ip来分析一下。 一、纯净度 ip纯净度是什么意思呢&#xff1f;简单一点开始就是指使用这个ip的人少&…

如果你当架构师,从0开始,如何做一个后台项目的架构?

前言 在40岁老架构师 尼恩的读者社群(50)中&#xff0c;很多小伙伴要拿高薪&#xff0c;这就要面试架构师&#xff0c;要完成架构的升级&#xff0c;进入架构赛道。 在架构师的面试过程中&#xff0c;常常会遇到下面的问题&#xff1a; 如果给你一个项目要你从0到1做架构&…

数字化艺术时代的新趋势:虚拟数字展厅的崛起

引言&#xff1a; 艺术与技术的融合正带领我们进入一个全新的数字化艺术时代。在这个时代中&#xff0c;虚拟数字展厅正在以惊人的速度崛起&#xff0c;并引领着展览的新趋势。 一&#xff0e;虚拟数字展厅的定义和特点 虚拟数字展厅是一种基于虚拟现实和全景技术的数字化艺术…

pycharm2018如何关闭自动更新提示

1.点击左上角File,如图进入Settings(或者按CtrlAlts) 2.搜索到updates选项,把Automatically check updates for(自动检查更新以…规则) 前面够选去掉即可.

两天搞定计算机专业毕业设计,附源码

两天搞定计算机专业毕业设计&#xff0c;附源码 适用者毕设专业 使用要求具备基本Unity 基本操作小白即可&#xff0c;无需编码 博主诉求快乐毕业 点赞 关注 收藏 资源说明Free资源太多了&#xff0c;看截图目录就知道了 适用者 毕设专业 鄙人也是计算机狗一只&#xff0c;会…

电脑关闭自动更新

1.winr 打开运行窗口输出services.msc,点击确定 2.在服务窗口中&#xff0c;我们找到Windows update选项,双击打开 3.在启动类型选择禁用 4.点击上面的恢复&#xff0c;在恢复选项里面&#xff0c;我们把第一、第二、后续失败&#xff0c;都改为无操作&#xff0c;后点击应用…

ubuntu20关闭自动更新

1、在GUI上关闭自动更新。设置-关于-软件更新-更新&#xff0c;能关的关&#xff0c;不能关的改成最低频率。 2、阻止软件更新弹窗&#xff08;眼不见为净~&#xff09; 打开终端执行命令&#xff1a; sudo chmod a-x /usr/bin/update-notifier 如果想恢复弹窗执行下面的命令…

vscode配置html页面自动刷新,Vscode关闭自动更新设置

如何关闭Vscode自动更新&#xff1f; 有时侯在使用Vscode时会发现自己都不知道它就自已更新了&#xff0c;如何关闭Vscode的自动更新呢&#xff1f;下面介绍一下关闭Vscode自动更新的方法步骤&#xff1a; 打开Vscode&#xff0c;点击文件》首选项》设置&#xff0c;在打开的设…

关闭Postman v5.0自动更新

Postman大约每1个月&#xff0c;就会在后台更新一次&#xff0c;这种更新是可以屏蔽的。 在Postman的[设置]页面 --> Update —> Disable 即可&#xff0c;如图(1)所示。 图(1) 设置自动更新为Disabled 需要说明的是&#xff0c;此操作只对Postman v5.0以下的版本有效&am…

Chrome浏览器如何关闭自动更新

首先是【右键计算机->管理】&#xff0c;在【计算机管理(本地)->系统工具->任务计划程序->任务计划程序库】中找到两个和Google自动更新相关的任务计划【GoogleUpdateTaskMachineCore】与【GoogleUpdateTaskMachineUA】&#xff0c;并把它俩禁用掉。印象中介绍这方…

Windows Server 2016关闭自动更新

场景描述 平时使用系统时总提示需要更新系统&#xff0c;而更新系统后发现有些功能会出现新的异常&#xff0c;故而关闭自动更新的需求产生&#xff0c;这里介绍如何再Windos server 2016中关闭自动更新~ 解决方法 Step 1&#xff1a;进入cmd&#xff0c;之后输入sconfig St…

eclipse如何关闭自动更新

一、问题描述 eclipse如何关闭自动更新 二、解决方法 1. Window --> Preferences --> General --> Startup and Shutdown -->在列表项里面找到"Automatic Updates Scheduler " 项去掉前面的勾 2. Window --> Preferences --> Myeclips…

windows10 关闭自动更新

暂停自动更新 打开Windows更新的高级选项 win10专业版即以上关闭自动更新 Windows10专业版及其以上版本的操作系统可以使用组策略编辑器&#xff0c;可以在组策略编辑器中配置Windows更新。首先按下winR&#xff0c;在命令窗口中输入“gpedit.msc”&#xff0c;打开组策略编辑…

Chrome浏览器关闭自动更新

背景是&#xff1a; 在用Python抓取的时候&#xff0c;经常会遇到Chrome浏览器版本和Chromedriver版本不一致的情况&#xff0c;为此有必要关闭Chrome的自动更新功能。 1、在Windows电脑桌面上&#xff0c;右键点击“此电脑” -》选择“管理”&#xff0c;弹出下面&#xff1a;…

Intellig idea关闭自动更新

idea关闭自动更新 idea是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 IDEA是…

如何关闭电脑自动更新?

方法一 步骤1.电脑左下角有一个【开始】图标&#xff0c;右键它后点击“运行”&#xff1b; 步骤2.在弹出的运行界面里的框内输入services.msc后点击确定或者抨击键盘的回车键&#xff0c;随后在弹出的界面我们需要找到并双击“Windows Update”&#xff1b; 步骤3.在弹出的界…

怎么关闭服务器系统自动更新,自动更新怎么关闭 如何关闭window自动更新提高运行速度...

我们知道安装的系统默认是开启系统自动更新的。对于绝多数个人用户甚至企业用户来说windows自带的自动更新功能并不实用&#xff0c;经常会自动下载系统内部一些补丁程序并安装&#xff0c;造成过多系统垃圾&#xff0c;甚至造成系统出错&#xff0c;影响系统稳定与速度。因此我…

腾讯会议关闭自动更新

20221009 可以用 转载于PC端腾讯会议怎么关闭自动更新&#xff1f; - 知乎用户的回答 - 知乎&#xff0c;如有侵权可联系删除 需要下载火绒&#xff0c;此方法仅限于Windows., 不想安装或者没有可以跳过 首先, 新建一个文本文档, 扩展名重命名为.json, 将代码段的内容粘贴进去…

Ubuntu关闭自动更新

文章目录 前言一、基本概念二、操作步骤1.打开软件与更新2.修改配置2.注意事项 总结 前言 Ubuntu自动更新会使现有开发环境受到影响&#xff0c;甚至找不到显卡驱动。 一、基本概念 Ubuntu基于Debian发行版和GNOME桌面环境&#xff0c;与Debian的不同在于它每6个月会发布一个…

Windows10彻底关闭自动更新

文章目录 前言无赖步骤关闭自动更新服务关闭自动更新策略 效果总结 前言 在写这篇总结之前&#xff0c;我已经尝试过多次关闭Win10的自动更新了&#xff0c;一般来说更新之后可以使操作系统更加健壮&#xff0c;但总会有一些原因让我们不想更新&#xff0c;比如我最近总是需要…