安全研究
安全漏洞
Microsoft Windows DNS服务器RPC接口远程栈溢出漏洞(MS07-029)
发布日期:2007-04-12
更新日期:2007-05-08
受影响系统:
Microsoft Windows Server 2003 SP2描述:
Microsoft Windows Server 2003 SP1
Microsoft Windows 2000 Server SP4
BUGTRAQ ID: 23470
CVE(CAN) ID: CVE-2007-1748
Microsoft Windows是微软发布的非常流行的操作系统。
Microsoft Windows DNS服务器的RPC接口在处理畸形请求时存在栈溢出漏洞。Lookup_ZoneTreeNodeFromDottedName()函数使用固定的本地缓冲区转换Name_ConvertFileNameToCountName()字符串,该字符串中可能包含有反斜线八进制字符。尽管在写入缓冲区时执行了一些边界检查,但攻击者可以使用包含有多个反斜线字符的字符串绕过检查,导致栈溢出。
可通过DNS RPC接口到达有漏洞的函数,执行流如下:
R_DnssrvQuery(pa,buggybuffer,pc,DesiredAccess,pd); // RPC Exported function
R_DnssrvQuery2(0,0,pa,buggybuffer,pc,DesiredAccess,pd);
RpcUtil_FindZone(buggybuffer,1,DesiredAccess);
Zone_FindZoneByName(buggybuffer); // Here we go!
Lookup_ZoneTreeNodeFromDottedName(buggybuffer,0,0x2000000);
Name_ConvertFileNameToCountName(localbuffer,buggybuffer,0); // Using fixed size local buffer
extractQuotedChar(x,x,buggybuffer); // Extract octal number
如果远程攻击者能够向有漏洞的系统发送特制的RPC报文的话,就可以触发这个溢出,导致以DNS服务的安全环境执行任意指令(默认为Local SYSTEM)。
<*来源:Microsoft
链接:http://www.microsoft.com/technet/security/advisory/935964.mspx?pf=true
http://secunia.com/advisories/24871/
http://www.us-cert.gov/cas/techalerts/TA07-103A.html
http://research.eeye.com/html/alerts/zeroday/20070407.html
http://www.microsoft.com/technet/security/bulletin/ms07-029.mspx?pf=true
http://www.us-cert.gov/cas/techalerts/TA07-128A.html
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://www.milw0rm.com/exploits/3737
http://metasploit.com/svn/framework3/trunk/modules/exploits/windows/dcerpc/msdns_zonename.rb
http://www.milw0rm.com/sploits/04152007-dnsxpl.rar
建议:
临时解决方法:
NSFOCUS建议采取如下措施以降低威胁:
* 通过设置注册表禁止通过RPC远程管理DNS服务器:
1. 在开始菜单中点击“运行”,键入Regedit然后点击回车
2. 找到以下注册表位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
3. 在“编辑”菜单中选择“新建”,然后点击DWORD Value
4. 在高亮显示的New Value #1中键入RpcProtocol,然后点击回车
5. 双击新建的值并将该值的数据更改为4
6. 重启DNS服务,更改生效
* 将以下注册表脚本保存为.REG文件并使用regedit.exe以/s命令行开关部署:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters]
"RpcProtocol"=dword:00000004
* 在防火墙上阻断1024到5000端口上所有未经认证的入站通讯
* 在系统上启用高级TCP/IP过滤
* 使用IPsec阻断1024到5000端口
厂商补丁:
Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS07-029)以及相应补丁:
MS07-029:Vulnerability in Windows DNS RPC Interface Could Allow Remote Code Execution (935966)
链接:http://www.microsoft.com/technet/security/bulletin/ms07-029.mspx?pf=true
浏览次数:26441
严重程度:0(网友投票)
绿盟科技给您安全的保障
