web基础漏洞-xss

发布时间 2023-10-20 17:30:40作者: 挖洞404

1、介绍

xss,cross site script跨站脚本攻击,是指攻击者构造payload,使其在用户的浏览器上解析为脚本执行,从而造成危害。

  • 脚本一般是指js,但广义上vbscript和actionscript(flash)等其它脚本可以造成xss。
  • xss一般发生在浏览器,但广义上任何支持脚本解析的应用都有可能造成xss。
  • 危害是由脚本执行造成的,想要实现什么样的效果就需要构造对应的脚本,但注意脚本相对于一般编程语言来说,存在一定的不足,比如无法读写本地文件。

2、构造payload与执行

从payload的角度理解,xss实际是攻击者可以控制目标域下的某数据,在用户的浏览器上实现js执行场景。

2.1 js执行场景

参考js的基础知识。大致可以分为两类:

  • payload直接嵌入html文档中,作为元素、属性、事件或js代码,然后浏览器直接解析为脚本执行
  • 浏览器基于响应中的js去读取payload,间接解析为脚本执行
    • payload在响应之前,保存到了浏览器的地址栏、cookie等数据中
    • payload在响应中,作为任意数据,包括js变量、注释、元素文本
    • payload在响应之后,再进行请求获取

2.2 传递

(1)攻击者构造包含payload的url,其直接指向目标域,基于聊天工具、网站通信、邮件等传递给用户,诱使其点击

(2)攻击者控制第三方网站,用户访问时被迫向目标域跳转

  • 请求方法可以是GET或POST
  • 请求可以是直接基于url跳转,或者表单请求。不能是ajax
  • payload可以在url中,也可以在请求体部中

(3)攻击者访问目标域,将payload存储,为公开数据。然后用户访问该数据

3、分类

网络上,一般将xss分为三类,实际可以看作是以上js执行场景和传递方式的组合

  • 反射型,payload在请求中包含,然后在响应中返回
  • 存储型,payload保存到服务端,然和其它用户访问
  • dom型,payload以js加载的形式解析为脚本

4、漏洞防护

html实体编码