XSS三类型
2023-4-18
| 2023-4-18
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password

反射型XSS

形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输出到前端时被浏览器当做有效代码解析执行从而产生危害。
XSS攻击流程大致如下:
1,发现存在webXSS漏洞web,
2,恶意用户通过该漏洞将javascrip插入到该web的脚本中,等待或欺骗新用户去访问。当用户打开此含有XSS漏洞的页面,脚本运行。如果这个代码是用来获取用户的个人信息,就返回一个信息输入页面,当用户将个人用户信息输入后,当窃取到用户信息后,将该信息发送到恶意用户自行搭建的获取信息的接口。
寻找漏洞
1。首先寻找漏洞输入点,一般在客户端界面显示为留言板或查询接口等。
2。当找到这样类似的漏洞输入点后,并不急于去构造相应的payload,而是通过输入一组字符外加一个特殊的识别符(可以是数字组合),提交后查看返回的源码,看是否服务器端做出了上述所说的处理即是否从客户端提交的数据有做相应的过滤或对返回的数据做相应的代码转译。而特殊的识别符就是观察点。如果输入的识别符被原封不动的返回,就说明有很大的几率存在XSS漏洞。
3。最后,根据输出点所在的html译文或者javascrip代码的上下文去构造闭合,最后构造payload

存储型XSS

存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS。

DOM型XSS

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。
可能触发DOM型XSS的属性:
document.referer属性
window.name属性
location属性
innerHTML属性
documen.write属性
······
notion image
跨越
在协议,域名,和端口任意不同时,称为跨域。
notion image
notion image
notion image
notion image

xss注入技巧

Location允许url编码 location对象允许url用JavaScript编码。这允许你通过双重编码进一步掩饰XSS注入。
复制 将它们与转义字符结合能够很好地隐藏字符串。
复制 第一个例子是可行的,因为Opera的地址栏可以识别编码的地址串。通过用URL编码,你可以隐藏JavaScript代码。这点很有用,特别是当传递XSS攻击代码的时候,我们为了更进一步地屏蔽过滤,可以进行双重URL编码。
第二个例子结合了第一个例子利用转义字符的技巧。所以,当你对字符串解码时,就会导致alert函数以这样的形式显示:
HTML实体编码
浏览器会对一些字符进行特殊识别处理,比如将 < > 识别为标签的开始结束。
要想在HTML页面中呈现出特殊字符,就需要用到对应的字符实体。比如在HTML解析过程中,如果要求输出值为 < > ,那么输入值应该为其对应的实体 < >
Javascript编码
Unicode 是字符集,而 utf-8,utf-16,utf-32 是编码规则
最常用的如“\uXXXX”这种写法为Unicode转义序列,表示一个字符,其中xxxx表示一个16进制数字
如”<” Unicode编码为“ ”,不区分大小写
URL编码
%加字符的ASCII编码对于的2位16进制数字,如”/”对应的URL编码为%2f
常见XSS payload位置 大小写不敏感
嵌套绕过
svg 注入(HTML5 支持内联 SVG)
执行代码转换成unicode编码,再通过eval执行
notion image
自行闭合双引号构造闭合标签:
构造on事件:
增加注释符//:
利用html5 autofocus功能进行XSS:
Form标签闭合引号:
2.2 两个常见的输出例子
实际上, onxxxx="[输出]" 和 href="javascript:[输出]" 与 <script>[输出]</script> 没有太大区别。因为[输出]所在的地方,都是javascript脚本。
但是<script>[输出]</script> 如果被过滤,往往没有太好的办法。而上面这2种情况,则有一个很好的办法绕过过滤。
由于单引号'被过滤,我们可以将'写为'
接着我们把代码转换为 url 的编码。 &-> %26, # -> %23最后
缺陷点是发生在 onkeydown 或 a 标签的 href 属性中,无法自动触发,因而使得威胁减小,如果是发生在 img 的 onload 属性,则非常可能导致自动触发
js内容中(<script>标签中)
用户输入内容直接显示在<script></script>代码执行上下文中,我们可以 首先判断,是否过滤了* < , > , /* 等特殊符号,如果没有被过滤可以XSS可能性就很高
尽量不要在JS的注释里输出内容, 还挺危险的。
防御方式:将一下特殊字符进行转义 防御方式: 对这些输出的特殊字符进行编码
notion image
XSS定位器
在大多数存在漏洞且不需要特定XSS攻击代码的地方插入下列代码会弹出包含“XSS”字样的对话框。使用URL编码器来对整个代码进行编码。小技巧:如果你时间很紧想要快速检查页面,通常只要插入“<任意文本>”标签,然后观察页面输出是否明显改变了就可以判断是否存在漏洞:
. XSS定位器(短)
如果你没有足够的空间并且知道页面上没有存在漏洞的JavaScript,这个字符串是一个不错的简洁XSS注入检查。注入后查看页面源代码并且寻找是否存在<XSS 或<XSS字样来确认是否存在漏洞
pikachu靶场通关
  • 靶场
  • 服务器跨站请求伪造(SSRF)动态端口冲突(can''t bind to 127.0.0.1:XXX)
    目录