在nt-bugtraq的邮件列表上首先报告的security bug in .net forms authentication适用于asp.net 1.0 (rtm, sp1, sp2, sp3)和asp.net 1.1 (rtm, sp1).
当form authentication被使用时,匿名用户在试图访问被保护的页面如http://localhost/webapplication2/secret.aspx时会被redirect到登录网页如http://localhost/webapplication2/login.aspx?returnurl=%2fwebapplication2%2fsecret.aspx.
但是如果使用mozilla,匿名用户可以这样未经认证就访问被保护的页面:http://localhost/webapplication2\secret.aspx;对ie,可以使用%5c达到类似的效果:http://localhost/webapplication2%5csecret.aspx
微软在10月5日发布了what you should know about a reported vulnerability in microsoft asp.net网页以提供针对此安全漏洞的对策。当前的对策主要是如kb887459所描述的那样在global.asax或其code-behind中在application_beginrequest中增加检查
if (request.path.indexof(\\) >= 0 || system.io.path.getfullpath(request.physicalpath) != request.physicalpath) { throw new httpexception(404, “not found”); }
显然每个application都需要有这样的检查以应对此安全漏洞。微软还会提供其他的对策,请关注what you should know about a reported vulnerability in microsoft asp.net网页更新。
对asp.net 2.0 beta1,并没有此漏洞而是得到404错误。
贴子以”现状”提供且没有任何担保也没有授予任何权利
发表于 thursday, october 07, 2004 1:53 am
评论
# re: asp.net form authentication安全漏洞及对策 10/7/2004 8:49 am tommywoo
http://localhost/webapplication2%5csecret.aspx
试过了,不行。ie 版本问题?
# re: asp.net form authentication安全漏洞及对策 10/7/2004 9:40 am r2
啊,好可怕!幸好我用beta1
# re: asp.net form authentication安全漏洞及对策 10/7/2004 9:43 am r2
难道微软的这种form认证这么脆弱??
# re: asp.net form authentication安全漏洞及对策 10/7/2004 10:09 am wonge
windows 2003下不会出现这种错误:http://localhost/webapplication2%5csecret.aspx ?
# re: asp.net form authentication安全漏洞及对策 10/7/2004 10:12 am 孙展波
我是使用xpsp2的os及其带的ie6验证的。
从what you should know about a reported vulnerability in microsoft asp.net网页,windows 2003 server也有这个问题。这是asp.net的bug而不是os的bug.
# re: asp.net form authentication安全漏洞及对策 10/7/2004 10:44 am lostinet
可怕的漏洞啊~~~
解决方法可以做个简单的ihttpmodule,把它注册到gac和machine.config中.
# re: asp.net form authentication安全漏洞及对策 10/7/2004 1:21 pm flashtoy
我按方法试了.怎么没有这个问题.
吓的我半死!
http://www.creva.org.cn/creva/orgshow.aspx
# re: asp.net form authentication安全漏洞及对策 10/7/2004 6:19 pm tommywoo
楼上的朋友,,我想到了。。
因为我们用的是ie,ie要用这个漏洞,得使用%5c来代替\符号。。。
我们两个都是在根目录的第一级子目录加验证的,比如你的,得用http://www.creva.org.cn%5ccreva/orgshow.aspx
显然这里有一个问题,域名是什么?这里域名被表示成了“www.creva.org.cn%5ccreva”,而不是实际域名“www.creva.org.cn”。
我想问题应该在这里,展波用的是,虚拟目录下的子目录,所以出现了那个漏洞。
你可以用mozilla的\符号试试。
# re: asp.net form authentication安全漏洞及对策 10/7/2004 6:25 pm 蓝色空间
确实有问题,赶快修正
# re: asp.net form authentication安全漏洞及对策 10/7/2004 6:38 pm libber
为什么我测试不出来呢? .net framework 1.1 sp1
# re: asp.net form authentication安全漏洞及对策 10/7/2004 8:28 pm kwklover
我也测试过了,没有这个问题啊
大家可以测试一下这个网站
# re: asp.net form authentication安全漏洞及对策 10/7/2004 8:33 pm erictang2003
我也没测试出来,用ie6 和 firefox1.0 都没试出来.
不过还是改了代码以防万一
# re: asp.net form authentication安全漏洞及对策 10/8/2004 12:10 am xiaoheng
测试了,没发现问题!!!!
# re: asp.net form authentication安全漏洞及对策 10/8/2004 9:09 am gigabyte
可以在global.asax里面加上这么一段解决:
void application_beginrequest(object source, eventargs e) {
if (request.path.indexof(\\) >= 0 ||
system.io.path.getfullpath(request.physicalpath) != request.physicalpath) {
throw new httpexception(404, “not found”);
}
}
这里有ms的解释:
http://www.kbalertz.com/kb_887459.aspx
# re: asp.net form authentication安全漏洞及对策 10/8/2004 1:14 pm michael lee
god ! 噩耗!!!
这种毛病都能出。还有前一阵的那个gdi+的bug,更是让人匪夷所思。