你的浏览器不支持canvas

Enjoy life!

XSS - 反射型

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

一、反射型 XSS

1.1 反射型 XSS 介绍

  • 反射型(非持久型)XSS:诱导用户 点击恶意链接 来造成一次性攻击。详情请看下图:

safe

  1. 当我们将恶意链接发送给客户端,并诱导用户点击这个恶意链接,从而使用户访问这个带有恶意脚本代码参数的 URL
  2. 当服务端获取到请求的时候,它会获取请求参数并且 直接使用直接使用 意味着服务端不做任何的检查以及防范,就信任了这个请求参数
  3. 服务器使用这个请求参数并且生成相应的结果页返回给用户,这里称:服务器“反射”回结果页。
    • 为什么称为“反射”?那是因为,事实上,恶意脚本代码参数是由客户端发送给服务端,服务端直接就使用这个参数,并且返回给客户端,所以有“反射”这个概念。
  4. 当客户端获取到带有恶意脚本代码的结果页的时候,打开并浏览,就会导致 XSS 攻击,简单来说,就是用户中招了!!!

1.2 反射性 XSS 的特点

  1. 一次性(非持久型):
    • 即:用户点击 一次 链接就会生成 一次 攻击,并且脚本数据是通过 URL 传送给服务端的,并不会存储在服务端
  2. 通过用户点击链接引起的。
    • 即:如果用户不点击这个带有恶意脚本代码的链接,就不会引起 XSS 攻击。因此,为了更好诱导用户点击这些链接,我们通常会对这些链接进行修饰、隐藏,从而使用户不能短时间内辨认这些链接是好还是坏的

二、反射型demo

点击下载demo,详细的操作可以阅读 readme.md 文件。

  • 操作过程如下:(一开始展示的是chrome浏览器,之后是ie浏览器)

demo

三、总结

  • 很多浏览器如 Chrome 都内置了相应的 XSS 过滤器,来防范用户点击了反射型 XSS 的恶意链接。(从示例可以看出,浏览器会将一些特殊字符如 <> 之类的转码)
  • 反射型 XSS 归根到底:就是 由于不可信的用户输入被服务器在没有安全防范处理,然后就直接使用到响应页面中,然后反射给用户而导致代码在浏览器执行的一种 XSS 漏洞。

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。