《白帽子讲Web安全》3-跨站脚本攻击(XSS)

第3章 跨站脚本攻击(XSS)

3.1 XSS简介

  1. Cross Site Script,跨站脚本攻击,简称XSS。
  2. XSS攻击,通常是指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在客用户浏览网页时,控制用户浏览器的一种攻击。
  3. XSS分类
    • 反射型XSS
    • 存储型XSS
    • DOM Based XSS

3.2 XSS攻击进阶

  1. XSS Payload
    • JavaScript脚本
    • 最简单的:窃取Cookie的XSS Payload
      • Cookie的“HttpOnly”标识可以防止“Cookie劫持”
  2. 强大的XSS Payload
    • 构造GET与POST请求
      • 删除博客:JacvaScript代码
      • 提交表单:JavaScript发出POST请求
        • HTML代码构造表单
        • XMLHttpRequest发送POST请求
    • 浏览器的扩展和插件
    • CSS History Hack
    • 获取用户的真实IP地址
      • Javascript本身没有此能力。借助第三方软件来完成
      • 如调用Java Applet的接口获取客户端的本地IP地址。
  3. XSS攻击平台
    • Attack API
    • BeEF
    • XSS-Proxy
  4. 终极武器:XSS Worm
    • Samy Worm
      • 一般来说,用户之间发生交互行为的页面,如果存在存储型XSS,则比较容易发起XSS Worm攻击。
    • 百度空间蠕虫
  5. 调试JavaScript
    • 调试JavaScript,需要有很好的JavaScript工地,调试JavaScript是必不可少的技能。
    • Firebug
    • IE 8 Developer Tools
    • Fiddler
    • HttpWatch
  6. XSS构造技巧
    • 利用字符编码
    • 绕过长度限制
      • 利用事件(Event)缩短所需要的字节数
      • 最好的办法是把XSS Payload写到别处,再通过简短的代码加载这段XSS Payload
        • loacation.hash
      • 利用注释符绕过长度限制
    • 使用<base>标签
    • window.name的妙用
  7. 变废为宝:Mission Impossible
    • Apache Expect Header XSS
    • Anehta的回旋镖
  8. 容易被忽视的角落:Flash XSS
    • 在Flash中是可以嵌入ActionScript脚本的
  9. 真的高枕无忧吗:JavaScript框架

3.3XSS的防御

  1. HttpOnly
  2. 输入检查
  3. 输出检查
    • 安全的编码函数
    • 只需一种编码吗
  4. 正确地防御XSS
    • XSS的本质还是一种“HTML”注入,用户的数据被当成了HTML代码一部分来执行,从而混淆了原来的语义,产生了新的语义。
    • 想要根治XSS问题,可以列出所有XSS可能发生的场景,再一一解决。
    • 下面用变量“$var”表示用户数据,它将被填充入HTML代码中。可能存在以下场景:
    • 在HTML标签中输出
    • 在HTML属性中输出
    • <script>标签中输出
    • 在CSS中输出
    • 在地址中输出
  5. 处理富文本
    • HTML
    • CSS
  6. 防御DOM Based XSS
  7. 换个角度看XSS的风险
    • 前面谈到的所有XSS攻击,都是从漏洞形成的原理上看的。下面从业务风险的角度来看。
    • 一般来说,存储型XSS的风险会高于反射型XSS
      • 从攻击过程来说
        • 反射型XSS,一般要求攻击者诱使用户点击一个包含XSS代码的URL链接。
        • 存储型XSS,则只需要让用户查看一个正常的URL链接。
      • 从风险的角度来看
        • 用户之间有互动的页面,是可能发起XSS Worm攻击的地方。
        • 根据不同页面的PageView高低,也可以分析出哪些页面受XSS攻击后的影响会更大。

3.4 小结

理论上,XSS漏洞虽然复杂,但却是可以彻底解决的。

在设计XSS防御方案时,深入理解XSS攻击的原理,针对不同的场景使用不同的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值