16
前前前前 xss 前前前前前前前

前端顽疾

  • Upload
    wattan

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

前端顽疾. xss 漏洞分析与解决. 顽疾的诊断 ---- 认清危害. 1 、 XSS 漏洞的危害并不因为页面访问量不高而减少。 2 、 XSS 漏洞等于获得了页面的最高管理权限 3 、 XSS 漏洞无需入侵服务器因而有较高的隐密性 4 、 XSS 漏洞扫描通过不代表就没有 XSS 漏洞 5 、后台 CGI 逐渐成为 XSS 攻击主要目标 备注:黑客攻击手段很多, XSS 主要被用于欺骗用户信任,一旦跳转到黑客页面用户的安全则得不到保障。. 顽疾的诊断 ---- 了解漏洞原理 1. 非持久性 XSS 攻击. 顽疾的诊断 ---- 了解漏洞原理 2. - PowerPoint PPT Presentation

Citation preview

Page 1: 前端顽疾

前端顽疾xss 漏洞分析与解决

Page 2: 前端顽疾

顽疾的诊断 ----认清危害

1 、 XSS 漏洞的危害并不因为页面访问量不高而减少。

2 、 XSS 漏洞等于获得了页面的最高管理权限

3 、 XSS 漏洞无需入侵服务器因而有较高的隐密性

4 、 XSS 漏洞扫描通过不代表就没有 XSS 漏洞

5 、后台 CGI 逐渐成为 XSS 攻击主要目标

备注:黑客攻击手段很多, XSS 主要被用于欺骗用户信任,一旦跳转到黑客页面用户的安全则得不到保障。

Page 3: 前端顽疾

顽疾的诊断 ----了解漏洞原理 1

非持久性 XSS 攻击

Page 4: 前端顽疾

顽疾的诊断 ----了解漏洞原理 2

持久性 XSS 攻击

Page 5: 前端顽疾

顽疾的诊断 ----案例分析 1

 http://member1.taobao.com/member/loginByIm.do?&errurl=http://www.koubei.com/export/cate/getstorecardhtml.html?callback=%3Cscript%3Elocation.href='http://gw.afufwtoin.com/a.taobao.com/tb1.asp?idc=7095';%3C%2Fscript%3E  攻击代码: %3Cscript%3Elocation.href='http://gw.afufwtoin.com/a.taobao.com/tb1.asp?idc=7095';%3C%2Fscript%3E

Page 6: 前端顽疾

顽疾的诊断 ----案例分析 2

1 、 http://product.tech.qq.com/simp_search.php?locationid=1&subcatid=27&manuid=0&keyword=</script><script>alert(42)</script>&bgcolor=ffffff&status=1

2 、 http://t.qq.com/p/worldcup?g=1"><script>alert(document.domain)</script>

3 、 http://t.qq.com/p/city?s=44&c=3"><script>alert(1)</script><"

4 、 http://help.paipai.com/mutually_help_null.shtml?query=%3Cscript%3Ealert%281%29%3C/script%3E

信息来源: http://wooyun.org/corps/%E8%85%BE%E8%AE%AF

Page 7: 前端顽疾

顽疾的治疗 ----了解 js的执行环境

• document.write “<script>alert('xss')</script>”;o innerHTML= "<script>alert('xss')</script>" 不执行o 明文出现的 "</script>" 将结束 "<script>", 哪怕是在字符串中。

• html 标签的 onload , onerror , onchange……o on    load 中间加入空白字符、特殊字符、换行符依然能

够被识别为 onloado JaVaScRiPt 大小写一样能够被执行o &#0000106 , &#x16 等 UTF-8 字符也可以被转义后

执行• css expression• link , img , style 引入非 JS 后缀的 js 文件

Page 8: 前端顽疾

顽疾的治疗 ----层层过滤

• 接收参数时:过滤危险代码、限定可处理参数范围• 前台提交前:过滤危险代码、对 HTML 进行转义• 后台接受后:过滤危险代码、对 HTML 进行转义• 后台输出前:过滤危险代码、过滤自定义回调函数名• 前台输出前:过滤危险代码、避免使用 document.write • 反跳页面:只对可信域和白名单进行跳转

Page 9: 前端顽疾

顽疾的治疗 ----对症下药

URL 参数 :不应该带有任何可执行代码,因而强制过滤关键字,对其中符号“ +” 、“ -” 、“ <” 、“ >” 、“ '” 、“ "” 、“ /” 、“ &” 、“ $” 进行转义: encodeURIComponent()说明:escape() 不编码的字符: @*/+encodeURI() 不编码的字符: ~!@&;*()=:/,;?+''encodeURIComponent() 不编码的字符: ~!*()''

Page 10: 前端顽疾

顽疾的治疗 ----对症下药

自定义回调函数名:作为 JS 自定义回调函数名,只应该包含 英文、数字、符号:“ .” 、“ _” ,其余皆为非法字符应予以过滤。

说明:&callback=window.callback1&callback=window.spuInfoCB&callback=</script><script>alert('xss')</script>        

Page 11: 前端顽疾

顽疾的治疗 ----对症下药

HTML 代码过滤:所有符号应转化为 HTML 字符实体

说明:显示结果 描述 实体名称 实体编号  空格 &nbsp; &#160;

< 小于号 &lt; &#60;

> 大于号 &gt; &#62;

& 和号 &amp; &#38;

" 引号 &quot; &#34;

/ 斜杠 &#47;

Page 12: 前端顽疾

顽疾的治疗 ----对症下药

范例:后台数据:{    nickName:"<u> 昊 </u>",    uin:"316448"}模板 :<div>    <p>{#nickName#}</p>    <p>{#uin#}</p></div>

Page 13: 前端顽疾

顽疾的治疗 ----对症下药

后台数据:{    nickName:"<u> 昊 </u>",    uin:"316448"}

转化后:{    nickName:"&#60u&#62 昊 &#60&#47u&#62",    uin:"316448"}

Page 14: 前端顽疾

顽疾的预防 ----警惕疫区

• 搜索关键词• 用户昵称• 富文本编辑器•  url 跳转• cgi 自定义回调函数

Page 15: 前端顽疾

XSS 测试用例分析

http://ha.ckers.org/xss.html

Page 16: 前端顽疾

参考资料

安全漏洞http://wooyun.org/corps/%E8%85%BE%E8%AE%AF

XSS 测试用例http://ha.ckers.org/xss.html

HTML 实体表http://www.w3schools.com/cn/tags/ref_entities.asp