首页 > 其他分享 >xss反射型和存储型

xss反射型和存储型

时间:2023-04-15 23:25:54浏览次数:160  
标签:脚本 xss 存储 包含 反射 元素 响应 html payload

1、反射型

1.1 发生场景

目标网站某处,用户可以get或post基于url的直接参数或路径参数提交数据,或者get或post基于表单form提交数据。(具体取决于服务端接收的编程方法)

服务端接收到数据后,未经过充分检测,将其写入到响应的html页面中。

如果该数据是攻击者构造的payload,可以包含某些敏感字符,造成响应html文档的结构的改变,从而payload的部分文本解析为js脚本执行。

1.2 利用过程

攻击者在测试发现目标网站某处存在反射型xss漏洞后,可以构造包含执行危害功能的脚本代码的payload。

(1)payload在url中

攻击者将url通过聊天工具、邮件、短信、站内通信等将url发送给受害者,其点击之后访问目标网站,自动触发漏洞。

还可以是用户访问攻击者控制的网站,主动点击页面中链接或者基于脚本被动跳转,从而请求包含payload的url。

(2)payload在表单中

只能是用户访问攻击者控制的网站,主动点击页面中按钮或者基于脚本被动向目标网站,提交体部以form形式包含payload的请求。

1.3 测试步骤

(1)分析请求-响应的基本信息

  • 状态码并不严格要求是200,404和500等也有可能
  • 需要存在参数,一般是url的直接参数和请求体部参数,路径参数也有可能
  • 响应类型必须是html,即响应content-type必须包含text/html关键字
  • 响应体部长度必须大于0,不能为空

(2)测试响应中是否包含返回

  • 测试是先对一个参数进行完全的测试,再测试下一个参数
  • 如果待测参数在响应中并不包含,那么就完全不可能存在反射型xss。只有存在,才进行后续测试
  • 注意,这里的待测参数的值
    • 一般是设置为abx、zaz这种短小、不包含敏感字符、且在响应中不固定包含的关键词
    • 另一种情况,是设置为包含敏感字符或特殊的,以使响应为异常状态而包含关键词作为提示,比如500、404、防火墙或搜索未发现、参数异常提示

(3)分析输出点情况

如果响应中包含测试的一般文本,可能并不只一处输出,而这些输出点的类型可能不同。

不同输出点类型,需要采取不同的构造payload的策略。

  • 输出到一般html元素的文本中
    • 可以尝试构造script元素,直接引入外部脚本
    • 可以尝试构造script元素,编写内部脚本
    • 可以尝试构造img等元素,基于事件编写脚本
  • 输出到特殊html元素的文本中
    • 比如title、style元素
    • 在这些元素中,其他元素并不会被解析执行,因此必须先使用结束标签关闭,然后构建新的元素
  • 输出到script标签的内容中
    • 任意处,如果能够写入</script>,那么可以关闭script标签再构建新的元素
    • 可能是作为注释内容,也可能是变量字面值,或者方法实参
    • 一般的措施是关闭当前结构,比如引号、括号,然后基于;或+或\n拼接新的脚本代码
  • 输出到html元素的属性或事件中
    • 可以考虑关闭当前元素的开始标签,构建新的元素。还可以再关闭当前元素的结束标签,再构建新的元素
    • 当然,也可以在某些特殊的元素的特殊属性进行篡改,比如form的action
    • 还可以直接在当前元素的事件中写入脚本
    • 需要注意,如果服务端是对敏感字符'转写为\',在html元素的开始标签中是不起作用的。正确的应该是进行html实体编码
  • 输出到html注释中
    • 关闭注释,构建新的元素

(3)测试敏感字符

payload一般会使用到以下敏感字符,而服务端的检查代码和防护墙一般也是针对这些字符进行。

在正式测试前,测试敏感字符哪些被过滤可以减轻测试任务量。

'"<>\/

(4)分析返回的输出点以及敏感字符过滤情况,构造或筛选payload集合

  • 能够直接引入外部js的payload作为优先测试
  • 其次是构造script内部脚本、事件脚本、地址属性

(5)对payload集合进行遍历测试,分析是否测试成功,注意防火墙基于关键词的干扰因素

(6)构造可造成危害的脚本

1.4 防护

(1)编码

  • 输出到各处时,结合输出点类型进行编码
  • 一般场景是进行html实体编码,包括元素属性值、元素事件中的字面量、元素包含的文本
  • 对于script内的脚本的字面量,进行js转义编码,即添加\前缀
  • 某些方案中,对元素的地址属性值中的敏感字符,会使用url编码,即%编码。比如a的href、form的action、script的src、link的href等

(2)cookie添加httponly标志,以避免脚本读取

(3)一些响应字段的设置

XSS(跨域脚本攻击)应对之道 | XSS (lmlphp.com)

 

2、存储型

xss反射型和存储型具有很大的类似性。

2.1 发生场景

目标网站某处,用户可以基于ajax或非ajax保存数据到服务端。

其他用户可以请求访问包含该数据的html页面,服务端未经过严格检查,将其写入到响应的html页面中。

如果该数据是攻击者构造的payload,可以包含某些敏感字符,造成响应html文档的结构的改变,从而payload的部分文本解析为js脚本执行。

 

反射型是在一个请求-响应中发生。而存储型是两个请求-响应。

2.2 利用过程

攻击者在测试发现目标网站某处存在存储型xss漏洞后,可以构造包含执行危害功能的脚本代码的payload保存到服务端。

可能的触发过程:用户自然状态下浏览到包含payload的页面,或者主动在通信工具中点击链接,或者在攻击者控制站点跳转。

注意相比包含payload的反射型xss请求,存储型xss中受害者提交的请求中,服务端并不会检查到恶意参数。

2.3 测试步骤

和反射型基本一致,区别是作为分析的响应应该是提交payload后的第二个请求的响应

2.4 防护

和反射型基本一致,都是在服务端对参数输出到html页面中时,进行转码处理,当然也包括其他措施。

 

 

标签:脚本,xss,存储,包含,反射,元素,响应,html,payload
From: https://www.cnblogs.com/wd404/p/17322227.html

相关文章

  • 深度学习Pytorch中组卷积的参数存储方式与剪枝的问题
    写这个主要是因为去年做项目的时候需要对网络进行剪枝普通卷积倒没问题涉及到组卷积通道的裁剪就对应不上当时没时间钻研现在再看pytorch钻研了一下仔细研究了一下卷积的weight.data的存储1.搭建网络这里先随便搭建一下网络放几个深度可分离卷积和普通卷积import......
  • xss
    1、定义xss,crosssitescript跨站脚本攻击,是在用户的客户端上解析攻击者构造的payload作为脚本执行,从而造成危害。(1)用户的客户端xss攻击的实际阶段,发生在客户端一侧,而非服务端。当然,攻击过程可能会要求服务端的参与客户端一般是指浏览器,但广义上包括其他可以解析脚本的程序......
  • 存储引擎-InnoDb介绍
    存储引擎特点:InnoDB:是一种兼顾高可靠性和高性能的通用存储引擎,在mysql5.5之后,InnoDb是默认的mysql存储引擎特点:1.DNL操作遵循ACID模型,支持事务 2.行级锁,提高并发访问性能 3.支持外键(foreignkey)约束,保证数据的完整性和正确性文件:xxx.ibd:xxx代表的是表名,innoDb引擎的每......
  • 存储引擎-简介
    存储引擎简介:是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被成为表类型 ......
  • 电子文件的线上存储工具,你了解多少?
    信息化时代的来临,企业也纷纷跟随时代步伐进入现代化办公。信息时代最显著的特征就是纸质文件到电子文件的转变。企业一天的办公中,可能就会产出无数的电子文件,其中很多文件都是珍贵的业务经验,因此线上存储是企业需要考虑的问题。关于电子文件的线上存储工具,最常见的选择就是企业网盘......
  • 存储引擎-mysql体系结构
    mysql体系结构:连接层:最上层是一些客户端和链接服务,主要完成一些连接处理,授权认证,以及相关的安全方案,服务器也会为安全接入的每一个客户端验证它所具有的操作权限服务层:第二层架构主要用于完成大多数的核心服务功能,如sql接口,并完成缓存的查询,sql的分析和优化,部分内置函数的执行......
  • 集成电路IC(4Gbit)IS46TR16256BL-125KBLA1动态随机存取存储器
    IS46TR16256BL-125KBLA14GBitDDR3SDRAM提供紧凑型BGA-96封装的高速SDRAM。IS46TR16256BL具有256Mx16结构,电源电压为1.45V或1.3V,最大时钟频率为800MHz。该SDRAM具有8个内部银行并发操作和8nBit预取架构。IS46TR16256BL是电信和网络、汽车和工业嵌入式计算的理想选择。应用汽车;......
  • kubernetes-nfs共享存储
    搭建nfs服务端#修改权限chmod-R777/nfs/data#编辑export文件vim/etc/exports/nfs/data*(rw,no_root_squash,sync)(“*“代表所有人都能连接,建议换成具体ip或ip段,如192.168.20.0/24)#配置生效exportfs-r#查看生效exportfs#启动rpcbind、nfs服务systemctlresta......
  • MySQL存储过程入门使用
    一、存储过程概述存储过程的英文是StoredProcedure。它的思想很简单,就是一组经过预先编译的SQL语句的封装。执行过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行......
  • 阿里云1+X云计算开发与运维——分布式存储理论
    一,主流存储类型的概述1,主流存储分类按照存储类型可以分为块存储,文件存储,对象存储1、块存储典型设备:磁盘阵列,硬盘主要是将裸磁盘空间映射给主机使用的。使用场景:docker容器、虚拟机远程挂载磁盘存储分配。日志存储。文件存储。2、文件存储典型设备:FTP、NFS服务器为了克......