xss 漏洞


1、XSS类型

XSS攻击大致上分为3类:
反射型xss,DOM型xss,存储型xss。前两类为非持久性xss,后者为持久型xss。

1.1 非持久型xss:

1)反射型 XSS

攻击相对于访问者而言是一次性的,具体表现在恶意脚传递给了服务器,而服务器则只是不加处理的把脚本“反射”回访问者的浏览器而使访问者的浏览器执行相应的脚本。也就是说想要触发漏洞,需要访问特定的链接才能够实现。

2)DOM 型 XSS

是基于文档对象模型 Document Objeet Model,DOM)的一种漏洞。DOM 是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。

DOM 中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer 等。客户端的脚本程序可以通过 DOM 动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得 DOM 中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生 DOM XSS 漏洞。DOM 型 XSS 不会把恶意代码传给服务器,因此只会对受害者产生一次性的攻击。

1.2 持久型xss:

1)储存型 XSS

与反射型XSS最大的不同就是服务器再接收到恶意脚本时会储存到数据库中,再次访问相同页面时,服务器将恶意脚本从数据库中取出并返回给浏览器执行。因此只要访问了这个页面的访客,都有可能会执行这段恶意脚本,所以储存型XSS的危害会更大。

2)带外型 XSS

指将 payload 注入某个站点中,但显示在一个无关的网站或应用程序中,是持久的,也是有状态的。当浏览器不是应用程序的主要组成部分时,也会出现带外型 XSS 攻击。例如:B 网站可能要从受信任网站 A 读取数据,而 A 遭到了 XSS 攻击,使得数据被污染,从而影响 B 网站。


2、XSS注入点

任何来自浏览器的数据包都可能会被攻击者修改,当 web 应用程序使用了一些来自用户的信息,这些位置会是一个潜在的注入点。最直观的便是用户输入的内容被原封不动地显示到了网页上。

注入点

说明

URI的位置

Web 服务器会对URI中的目录名、文件名、参数、参数值进行解析,而URI中的参数能够包含 XSS payload。

表单字段

最明显的是希望用户填写的字段,如登录名、email 等,不明显的是不希望用户修改的字段,如在 DOM 元素中带有hidden、disable属性的输入字段。

HTTP 请求头及 Cookie

最常见的注入攻击标头为User-Agent和Refer,自定义标头通过X-标识。Cookie是 HTTP 标头特例,大部分网站用Cookie存储与用户相关的数据、应用程序状态及其他跟踪信息。

JSON

站点可以使用JSON获取消息或通讯录,其他网站可以使用 JSON 向数据库收发命令和数据。JSON站点的最好方法是依赖JavaScript开发框架。

DOM属性

即DOM-Based XSS,属性包含用于请求页面的 URI,攻击者只需将其构造成恶意 URI,攻击就会在浏览器发生。

CSS

CSS 中能够引入恶意链接。

用户生成的内容

用户能够上传类似图片、视频、PDF 文件等二进制内容,其中可能会带有嵌入的JavaScript,或将要在浏览器内执行其他代码。

3、XSS 常见 payload
标签 、属性
payload
 
  • XSS