白帽子讲web安全03-XSS攻击

XSS安全

Posted by Claire on May 17, 2021

ROUND-03 XSS攻击

一、xss攻击的构造技巧

  1. 利用字符编码来插入执行脚本
  2. 通过绕过长度限制来插入执行脚本
  3. 通过使用一些不受同源策略限制的标签,触发执行脚本,例如
  4. 利用window浏览器窗体,不受同源策略限制的介质,来实现跨域、跨页面传递数据

二、xss防御

针对攻击技巧,来制定防御方式

  1. 设定httpOnly, 能够禁止读取数据和cookie
  2. 输入检查,针对一些特殊字符做xss filter(通过过滤器,针对一些特殊的字符进行编解码,表单类型/json类型),参考1-转义formdata中部分html字符, 参考2-转义json中部分html字符
  3. 输出检查 当数据输出到页面的时候,需要做html encode /js encode/url encode/ css encode,避免注入的代码通过闭合引号、使用伪协议等注入执行脚本 4)html 富文本的处理更为困难,使用页面元素黑白名单,避免使用<div>这种能够进行请求的标签 5)防止DOM BASED XSS ,需要针对嵌入的html\js\css 进行编码,避免脚本的注入
  4. xss 攻击总结 存储型xss通常会比反射型xss更具有杀伤力, 存储型XSS长期存在并出发,不改变URL,并且会绕过一些IE和firefox的 xss filter检测,风险更大 攻击的角度,反射型XSS通常会诱导用户去点击一个链接,存储型是会在用户做不同操作的过程中都可能植入playload进行攻击 用户交互性操作,更能够引发XSS WORM 蠕虫攻击 4、 CSRF cross site request forgery 跨站点请求伪造 1)本质:拿到用户的身份,替用户执行操作 2)前提:请求的可预测性,比如请求的参数可知或可穷举,比如请求的规律性 3)case: 用户身份凭证 cookie 3.1)session cookie, 跟随浏览器的生命周期,浏览器不关闭就可以跨页面存在 3.2)第三方cookie,特点就是有过期时间,一些跨域操作会禁止第三方的cookie进行传递 3.3)P3P头,能够允许一个跨域请求携带第三方cookie,由于浏览器业务的不断丰富,这种需求也是越来越多,随着第三方cookie的广泛使用,以及安全性不断降低,风险也随之而来 4)跨站点请求伪造并不是能够通过post简单避免,用户如果处于登录的情况下,拦截到了用户的cookie,也能够模拟出post请求来进行入侵.例子与flash post漏洞、csrf蠕虫、百度短消息漏洞 5、csrf防御 5.1)验证码,简介有效的方法,但是新特性 5.2)referer check,通过查看固定referer进行限制,但是一些条件下,referer无法被传递 5.3) anti csrf token: 通过一个随机的token无规则可循,能够大大减少攻击者获取用户凭证的可能 6、token设计的原则 6.1)不可预测性,足够随机 6.2)保证其有效性,不能让真正的用户也无法进行操作 6.3)保证其保密性,只有不可知才是最大的安全 7、点击劫持 1)通过交互,能够利用一个随机浮动的iframe劫持用户操作,在用户不知情的情况发出请求 2)flash点击劫持,通过设计一款简单的游戏,能够将用户的页面数据通过一个透明iframe将用户数据窃取 3)图片覆盖攻击:通过页面图片没有固定,修改图片的style,让其覆盖页面的任意位置,进行点击劫持,例如一些图片上修改联系电话的上当用户比较多 4)拖拽劫持&数据窃取:页面拖拽是当下便利的操作,但是新的特性不受浏览器同源策略的限制,因而能够通过拖拽入透明Iframe而进行数据窃取 5)触屏劫持,是通过一个透明iframe劫持用户的触屏操作 8、预防点击劫持 1)禁止跨域iframe 2)禁止iframe嵌套 3)frame busting 4)x-frame-options,可以进行禁止、或者允许同源域名、或者允许指定域名地址页面 9、html5安全 1)由于h5的新特性的更新,对之而来的安全性也需要不断更新 1.1)新标签列表,更新xss filter的标签列表 1.2)iframe sandbox特性,只允许操作和请求仅在iframe内部 1.3)link_types noreferer特性 ,如果标签指定noreferer,则不受referer安全限制 1.4)canvas特性 能够允许在浏览器页面生成一块画布,攻击者能够轻松拷贝验证码图片,扔到后端进行识别比对,验证码的安全性就大大降低 1.5)cross origin resource sharing特性 允许跨域请求 1.6)postMessage 跨窗口传递消息特性,使得跨窗口playload更为灵活 1.7)web storage:包含session storage & local storage,受到同源策略约束,每个域都是独立的,身份信息的安全性也得到了保障