关于ASP.NET畸形HTTP请求信息泄露漏洞


       Q&A
       Q:为什么写这篇文章?
       A:那天在群里聊,有个叫lis0的家伙叫我写的……

    这个漏洞是半年前的事了,很老了吧,可是我现在才研究了一下,没办法,谁叫我消息闭塞呢——谁叫学校网络像垃圾一样……(汗~~~)

    好了,首先找个网站看看漏洞信息吧。个人认为绿盟较好,信息更新快,呵呵,毕竟人家有商业利益驱动着啊。看这里:http://www.nsfocus.net/index.php?act=sec_bug&do=view&bug_id=6410&keyword=asp.net

    大意是说攻击者发送的COOKIE头字段中包含“=”号服务器就会泄露敏感信息。网上也有利用工具。看见一些文章里说可以暴库,我也找了几个网站来试,结果什么事都没有。唉,“知其然不知其所以然”真痛苦啊。所以我得好好研究研究。

    原来这个漏洞是由于ASP.NET不能正常访问cookie头字段里的等号造成的。我们提交一个cookie其值为“=”开头,当IIS读取cookie时就会出错,返回“未指定的错误”。这里注意触发条件:IIS读取cookie;IIS支持ASP.NET;IIS的错误提示开启。

    呵呵,读取cookie不就是request.cookie()嘛。好,那就写个asp文件试试。

-----------------------
ys.asp

<%                            'line 1
lis0=request.cookie("lake2")  'line 2
%>                            'line 3

-----------------------

    IE访问正常;提交“cookie: =”将得到一个内部服务器错误:“错误类型:(0x80004005)未指定的错误 /ys/ys.asp, 第 2 行”。呵呵,也就是读取cookie的语句出错,服务器会返回具体的文件及位置。但我实在不知道为什么有人会说数据库路径会暴出来,因为数据库里是不可能有读取cookie的asp语句的。另外,如果这个文件加上了容错语句(On Error Resume Next)就不能得到任何信息了。

    下面是一个asp文件,与前面的ys.asp一起的。

-------------------------------
test.asp

   'line1
-------------------------------

    IE访问仍然正常;提交“cookie: =”得到的是与前面一样的错误信息。这里我们就暴出了test.asp中包含的读取cookie的文件——ys.asp。aspx没试过,我猜测也是大同小异吧。

    呵呵,这个漏洞最多就是暴出一个包含文件,虽然数据库连接文件也是可能是包含文件,不过应该没什么人把读取cookie的语句放在数据库连接文件里吧,即使有也只能知道包含文件路径不能暴库啊。

    一有什么想法我总喜欢拿“洞”网论坛试试。我本地测试的系统是XP+IIS5.1+ASP.NET,提交“cookie: =”给动网论坛,暴出了包含文件/bbs/inc/Dv_ClsMain.asp,打开那个文件找到错误行果然有读取cookie的语句。不过好像没什么意义吧……

    到此关于这个传说中的ASP.NET畸形HTTP请求信息泄露漏洞我总算是弄清楚了,个人觉得这个漏洞只是泄露一些信息而没有什么危害,要防范的话你就关掉IIS的错误提示或者在读cookie的语句前加容错吧。

    全文完。呵呵,真的完了。

    lake2,2004-12-29

你可能感兴趣的:(技术文档)