当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2011-01413

漏洞标题:微软ASP拒绝服务漏洞

相关厂商:微软

漏洞作者: 爱梅小礼

提交时间:2011-02-24 12:12

修复时间:2011-03-26 15:00

公开时间:2011-03-26 15:00

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-02-24: 积极联系厂商并且等待厂商认领中,细节不对外公开
2011-03-26: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

加入容错语句的程序一旦发生非致命性错误,可能导致某些变量被异常赋值。当某种条件满足时,程序会产生死循环,占用大量系统资源直至脚本超时,此间会产生拒绝服务的现象。

详细说明:

一段演示代码:

<%
on error resume next
connstr="DBQ="+server.mappath("data/nxnews.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set conn=Server.CreateObject("ADODB.CONNECTION")
conn.open connstr
id=request("id")
Set rs= Server.CreateObject("ADODB.Recordset")
sql="select * from NEWS where id="&id
rs.open sql,conn,1,1
if not rs1.EOF then
Response.Write ("当前指针没在结尾<br />")
end if
if rs1.EOF then
Response.Write ("当前指针在结尾<br />")
end if
if not rs1.BOF then
Response.Write ("当前指针没在开头<br />")
end if
if rs1.BOF then
Response.Write ("当前指针在开头<br />")
end if
'do while not rs.eof
'Response.write("这段代码将循环输出")
'rs.movenext
'loop
rs.close
set rs=nothing
%>


正常情况下提交参数id=1,返回正常:


当前指针指向一个存在的记录,所以它既没在数据集的开头也没在结尾,所以此时的返回结果是正常的。但是如果提交错误的参数强制数据查询报错,那么将会是另外一种情形。
在看结果前我们先了解一下如何使数据库查询出错,以上诉代码为例:
提交单引号,不过防注入措施可能将其过滤
提交空数据,不对id赋值,直接访问search.asp
如果是MSSQL,可以提交注释符“--”试试。
本例为数字型查询,因此通过提交字符串可使其运行出错:


在代码中加入On errot resume next这条容错语句。再次访问,发现四个数据集变量被异常赋值:


这样的异常赋值可能导致程序陷入死循环。去掉代码中的注释,可以看出死循环的的效果:


它大量的占用了系统资源


经过测试,本程序与所用数据库无关。

漏洞证明:

demo:下载这个图片,用rar打开


如有问题,可联系本人邮箱

修复方案:

严格校验输入参数

版权声明:转载请注明来源 爱梅小礼@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:5 (WooYun评价)


漏洞评价:

评论

  1. 2011-02-25 17:04 | 蚊虫 ( 实习白帽子 | Rank:36 漏洞数:12 | 我装逼这么牛可还是没妞喜欢我)

    response.Redirect"t.asp"/t.asp为当前页/这样也可以使服务器处理器占用100%/asp的许多地方都考虑不足

  2. 2011-03-26 18:09 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    = = ||

  3. 2011-11-26 00:05 | tpu01yzx ( 实习白帽子 | Rank:58 漏洞数:8 | test)

    这个完全就是你的代码写得有问题……这就好比有些人喜欢用for(;;);来做死循环一样,是个人的代码问题,与脚本语言以及系统组件无关。

  4. 2011-12-07 10:19 | piaoye ( 普通白帽子 | Rank:343 漏洞数:53 | ww)

    代码问题,还有就是asp内置组建有timeout选项,一旦超时就停止执行

  5. 2014-11-19 13:54 | 快到碗裏來 ( 路人 | Rank:6 漏洞数:4 | 這傢伙很懶,什麼也沒有留下!)

    這樣都能通過....