初识XSS漏洞

目录

一、XSS的原理和分类

二、Xss漏洞分类

1. 反射性xss

简单的演示:

2.基于DOM的XSS

简单的演示:

3.存储型XSS

​编辑简单的演示

4、self xss

三、XSS漏洞的危害

四、XSS漏洞的验证

五、XSS漏洞的黑盒测试

六、XSS漏洞的白盒测试

七、XSS防御


xss的产生原因:编写的代码没有对用户输入的内容进行危险字符的过滤和检测,导致用户输入恶意内容,导致不安全事件。

一、XSS的原理和分类

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS

。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

二、Xss漏洞分类

1. 反射性xss

危害比较小

反射型XSS 是非持久性(进入不到数据库中)、参数型的跨站脚本。

反射型XSS 的JS 代码在Web 应用的参数(变量)中,如搜索框的反射型XSS。

在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS。

下面这幅图片展示了反射型XSS的攻击流程:

简单的演示:

验证环境:DVWA

我们查看low状态下的反射型xss的源码

<?php
header ("X-XSS-Protection: 0");
#关闭了浏览器的防御机制
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end user$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
?>

将等级修改为low后构造这样的script弹窗代码 ,点击submit

然后就会看到这样的弹窗

2.基于DOM的XSS

DOM XSS 比较特殊。

owasp 关于DOM 型号XSS 的定义是基于DOM 的XSS 是一种XSS 攻击,其中攻击的payload由于修改受害者浏览器页面的DOM 树而执行的。

其特殊的地方就是payload 在浏览器本地修改DOM 树而执行, 并不会传到服务器上,这也就使得DOM XSS 比较难以检测。

简单的演示:

在dvwa中我们点击DOMXSS这里然后在url框中的get传参中default传入下面的弹窗代码

回车后可以看到进行了弹窗

3.存储型XSS

存储型XSS 是持久性跨站脚本。

持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。

存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。

此时,需要我们模拟网站后台管理员的身份,查看留言。

下面这幅图片是存储型xss的攻击流程:

简单的演示

(1)在DVWA平台中选择存储型xss,然后在message中输入恶意内容,尝试进行弹窗

可以看到提交完成后,确实进行了弹窗

(2)查看数据库

从这里可以看出刚才输入的数据确实已经存储到数据库中了

(3)也可以刷新页面,就会每次刷新都会弹窗,说明这个恶意代码是存储在数据库中了

4、self xss

严格意义上来说,self-xss不算是web应用漏洞,因为攻击者没有办法直接将恶意代码注入页面,而是利用社会工程学欺骗用户,让它自己去复制恶意代码并且粘贴到浏览器中

三、XSS漏洞的危害

四、XSS漏洞的验证

我们可以使用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做Poc(Proof of concept)。验证XSS漏洞的Poc如下

(1)scriptalert(/xss/)/script
(2)scriptconfirm('xss')/script
(3)scriptprompt('xss')/script

五、XSS漏洞的黑盒测试

尽可能的找到一切用户可控并且能够输出在页面代码的地方,比如下面这些:

URL的每一个参数、URL本身、表单、搜索框、常见业务场景
重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等

六、XSS漏洞的白盒测试

关于XSS的代码审计主要就是从接收参数的地方和一些关键词入手。

PHP中常见的接收参数的方式有$GET$POST、$_REQUEST等等,可以搜索所有接收参数的地方。然后对接收到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和html编码等处理。

也可以搜索类似echo这样的输出语句,跟踪输出的变量是从哪里来的,我们是否能控制,如果从数据库中取的,是否能控制存到数据库中的数据,存到数据库之前有没有进行过滤等等。

大多数程序会对接收参数封装在公共文件的函数中统一调用,我们就需要审计这些公共函数看有没有过滤,能否绕过等等

七、XSS防御

目的:

  1. 阻止恶意代码注入

  2. 阻止恶意操作执行

不管是反射型还是存储型xss,都鞥够通过服务端进行过滤进行防御:

  • 黑名单:对用户的输入过滤特殊符号及字符

    • 如:< > % / " ' ; ( ) script svg object on事件等
  • 白名单:只允许用户输入特定类型或者符号

    • 即,根据输入的数据特征限制使用的类型,如年龄就限制为数字类型;输入类型字符串限制为仅可以使用大小写的26个字母及其数字-和_;等

  • 编码及转义

    • 输出在标签或者属性中进行HTML编码;

    • 输出在script标签或者事件中进行JavaScript编码;

    • 输出在URL中进行URL编码

  • Cookie中设置httponly

    • setcookie将httponly选项设置为true,就可以防范cookie劫持

  • 确保执行脚本源可信

    • 开发者明确告诉客户端,那些外部资源可以加载和执行(CSP策略)

  • 不使用有缺陷的第三方库

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

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

相关文章

html+JavaScript的媒体元素

<video src"conference.mpg" id"myVideo">Video player not available.</video> <!-- 嵌入音频 --> <audio src"song.mp3" id"myAudio">Audio player not available.</audio> - 属性 每个元素至少…

JavaScript深拷贝与浅拷贝的全面解析

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ 目录 ✨ 前言 ✨ 正文 浅拷贝 对象的浅拷贝 数组的浅拷贝 浅拷贝的问题 深拷贝 什么是深拷贝…

如何激活数据要素价值

文章目录 前言一、数据作为生产要素的背景二、数据作为新型生产要素&#xff0c;是价值创造的重要源泉&#xff08;一&#xff09;生产要素是经济活动中的基本要素&#xff08;二&#xff09;激活数据要素价值&#xff0c;要从理论上认识数据要素的基本特征&#xff08;三&…

CMU15-445-Spring-2023-Project #2 - B+Tree

前置知识&#xff1a;参考上一篇博文 CMU15-445-Spring-2023-Project #2 - 前置知识&#xff08;lec07-010&#xff09; CHECKPOINT #1 Task #1 - BTree Pages 实现三个page class来存储B树的数据。 BTree Page internal page和leaf page继承的基类&#xff0c;只包含两个…

C语言辨析——深入理解字符常量与表达式

1. 问题 今天看到一个题目&#xff0c;截图如下。 从答题情况来看&#xff0c;本题的答案是B&#xff0c;那么就意味着A、C、D是错的。但我认为这4个选项都是对的。当然&#xff0c;如果要从4个选项中挑选一个的话&#xff0c;那还是选择B妥当一些。 2. 分析 字符常量的定义…

【漏洞复现】优卡特脸爱云一脸通智慧管理平台权限绕过漏洞CVE-2023-6099(1day)

漏洞描述 脸爱云一脸通智慧管理平台1.0.55.0.0.1及其以下版本SystemMng.ashx接口处存在权限绕过漏洞,通过输入00操纵参数operatorRole,导致特权管理不当,未经身份认证的攻击者可以通过此漏洞创建超级管理员账户。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

CAN总线报文格式———扩展数据帧

扩展数据帧由帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束等组成。 一、总线空闲&#xff08;Bus Idle&#xff09; CAN总线空闲时&#xff0c;总线上会输出持续的高电平“1”。当总线空闲时任何连接的单元都可以开始发送新的报文。 二、帧起始&#xff08;Start o…

鱼哥赠书活动第⑤期:《ATTCK视角下的红蓝对抗实战指南》《智能汽车网络安全权威指南》上下册 《构建新型网络形态下的网络空间安全体系》《Kali Linux高级渗透测试》

鱼哥赠书活动第⑤期&#xff1a; 《ATT&CK视角下的红蓝对抗实战指南》1.1介绍&#xff1a; 《智能汽车网络安全权威指南》上册1.1介绍&#xff1a; 《智能汽车网络安全权威指南》下册1.1介绍&#xff1a; 《构建新型网络形态下的网络空间安全体系》1.1介绍&#xff1a; 《K…

遭受慢速连接攻击怎么办?怎么预防

慢速连接攻击是一种常见的网络攻击方式&#xff0c;其原理是利用HTTP协议的特性&#xff0c;在建立了与Http服务器的连接后&#xff0c;尽量长时间保持该连接&#xff0c;不释放&#xff0c;达到对Http服务器的攻击。 慢速连接攻击的危害包括以下几个方面&#xff1a; 1.资源…

推荐一款.NET开发的物联网开源项目

物联网&#xff08;IoT&#xff09;是一个正在快速发展的技术领域&#xff0c;它涉及到各种设备、物体和系统的互联。所以各种物联网平台和物联网网关项目层出不穷&#xff0c;在物联网&#xff08;IoT&#xff09;领域&#xff0c;.NET平台扮演着重要的角色。作为一款广泛使用…

管理软件供应链中网络安全工具蔓延的三种方法

软件开发组织不断发展&#xff0c;团队成长&#xff0c;项目数量增加。技术堆栈发生变化&#xff0c;技术和管理决策变得更加分散。 在这一演变过程中&#xff0c;该组织的 AppSec 工具组合也在不断增长。在动态组织中&#xff0c;这可能会导致“工具蔓延”。庞大的 AppSec 工…

Colab 谷歌免费的云端Python编程环境初体验

最新在学习AIGC的过程中&#xff0c;发现很多教程&#xff0c;demo使用到了Colab这个谷歌工具。 Colab 是什么&#xff1f; Google Colab是一个强大且免费的云端Python编程环境&#xff0c;为学生、研究人员和开发者提供了一个便捷的平台来开展数据科学、机器学习和深度学习项…

《最新出炉》系列入门篇-Python+Playwright自动化测试-9-页面(page)

1.简介 通过前边的讲解和学习&#xff0c;细心认真地小伙伴或者童鞋们可能发现在Playwright中&#xff0c;没有Element这个概念&#xff0c;只有Page的概念&#xff0c;Page不仅仅指的是某个页面&#xff0c;例如页面间的跳转等&#xff0c;还包含了所有元素、事件的概念&#…

redis夯实之路-主从复制详解

Redis中可以通过执行slaveof命令或者设置slaveof选项&#xff0c;让一个服务器区复制另一个服务器&#xff0c;被复制的为主服务器&#xff0c;复制的为从服务器。 复制 Redis中可以通过执行slaveof命令或者设置slaveof选项&#xff0c;让一个服务器区复制另一个服务器&#…

LLVM系列(1): 在微软Visual Studio下编译LLVM

参考链接&#xff1a; Getting Started with the LLVM System using Microsoft Visual Studio — LLVM 18.0.0git documentation 1.安装visualstudio&#xff0c;版本需要大于vs2019 本机环境已安装visual studio2022&#xff0c;省略 2安装Makefile&#xff0c;版本需要大…

C++力扣题目617--合并二叉树

给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重叠&#…

YOLOv5改进 | 二次创新篇 | 结合iRMB和EMA形成全新的iEMA机制(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是二次创新的机制,二次创新是我们发表论文中关键的一环,为什么这么说,从去年的三月份开始对于图像领域的论文发表其实是变难的了,在那之前大家可能搭搭积木的情况下就可以简单的发表一篇论文,但是从去年开始单纯的搭积木其实发表论…

Spring Boot - JaCoCo Code Coverage

文章目录 概述如何集成pom添加插件Code Demo排除不相关的类CI/CD中使用完整POM 概述 JaCoCo&#xff08;Java Code Coverage&#xff09;是一个开源的Java代码覆盖率工具&#xff0c;它主要用于评估Java程序的测试完整性。通过跟踪测试过程中执行的代码&#xff0c;JaCoCo能够…

【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

大学期末考前复习卷(上)

第一题&#xff1a; 泰勒展开式求sin(x) 【问题描述】 已知sin(x)的泰勒展开式为&#xff1a; sin(x) x/1! - x^3/3! x^5/5! - x^7/7! …… 当某一项的绝对值小于ξ时&#xff0c;停止计算。 输入x及ξ的值&#xff0c;输出sin(x)的值&#xff0c;小数点后保留5位小数。…