<p><strong>漏洞描述:</strong></p><p>Microsoft DCE/RPC服务可以提供网络管理功能,这些功能提供管理用户帐户和网络资源管理的功能。部分网络管理功能在Windows目录下的"debug"子目录会生成调试日志文件。</p><p>Microsoft Workstation服务在处理日志记录时缺少充分的边界缓冲区检查,远程攻击者可以利用这个漏洞提供超长参数触发缓冲区溢出,以SYSTEM权限在系统上执行任意指令。 </p><p>日志功能中使用vsprintf()在日志文件中生成字符串,日志文件名为"NetSetup.LOG",其保存在Windows "debug"目录中。 </p><p>这个记录函数有部分处理Workstation服务命令的函数调用,如"NetValidateName", "NetJoinDomain"等,在这NetValidateName()中,"computer name"作为第二个参数最终记录在日志文件中。</p><p> 如我们使用NetValidateName() API:NetValidateName(L"\\\\192.168.0.100","AAAAAAAA",NULL,NULL,0); 那么我们可以在远程主机中产生如下记录条目:</p><p>08/13 13:01:01 NetpValidateName: checking to see if '' is valid as type 0 name </p><p>08/13 13:01:01 NetpValidateName: '' is not a valid NetBIOS \\AAAAAAAA name: 0x57 </p><p>如果我们指定超长字符串作为NetValidateName() API的第二个参数,如果调试文件可写就可以在特定主机上发生缓冲区溢出。</p><p> 一般如果是NTFS文件系统,在Windows目录中的"debug"目录不允许所有人可写,这表示不能使用NULL会话来生成日志。WsImpersonateClient()...
<p><strong>漏洞描述:</strong></p><p>Microsoft DCE/RPC服务可以提供网络管理功能,这些功能提供管理用户帐户和网络资源管理的功能。部分网络管理功能在Windows目录下的"debug"子目录会生成调试日志文件。</p><p>Microsoft Workstation服务在处理日志记录时缺少充分的边界缓冲区检查,远程攻击者可以利用这个漏洞提供超长参数触发缓冲区溢出,以SYSTEM权限在系统上执行任意指令。 </p><p>日志功能中使用vsprintf()在日志文件中生成字符串,日志文件名为"NetSetup.LOG",其保存在Windows "debug"目录中。 </p><p>这个记录函数有部分处理Workstation服务命令的函数调用,如"NetValidateName", "NetJoinDomain"等,在这NetValidateName()中,"computer name"作为第二个参数最终记录在日志文件中。</p><p> 如我们使用NetValidateName() API:NetValidateName(L"\\\\192.168.0.100","AAAAAAAA",NULL,NULL,0); 那么我们可以在远程主机中产生如下记录条目:</p><p>08/13 13:01:01 NetpValidateName: checking to see if '' is valid as type 0 name </p><p>08/13 13:01:01 NetpValidateName: '' is not a valid NetBIOS \\AAAAAAAA name: 0x57 </p><p>如果我们指定超长字符串作为NetValidateName() API的第二个参数,如果调试文件可写就可以在特定主机上发生缓冲区溢出。</p><p> 一般如果是NTFS文件系统,在Windows目录中的"debug"目录不允许所有人可写,这表示不能使用NULL会话来生成日志。WsImpersonateClient() API在打开日志文件前调用,如果连接客户端没有有效的权限来写日志文件,那么CreateFile()就会失败,vsprintf()就不会被执行,因此此漏洞在FAT32系统和"%SYSTEMROOT%\debug"目录可写的情况下可被利用。 </p><p>但是部分扩展RPC函数实现在Windows XP上在调用WsImpersonateClient()前打开日志文件,不过这些RPC函数没有提供文档化说明,不过可以观察在WKSSVC.DLL中的函数表观察到。这些扩展命令的RPC号开始于0x1B,如0x1B调用NetpManageComputers(),但在打开日志文件前不调用WsImpersonateClient()。</p><p>NetpManageComputers()的使用没有被公开化,但是我们可以在"LMJoin.h"中找到NetAddAlternateComputerName() API的原型定义,这个API从NETAPI32.DLL导出,这个API也一样没有文档化。我们可以执行这个RPC函数(0x1B)使用如下API产生包:</p><p>NetAddAlternateComputerName(L"\\\\192.168.0.200",long_unicode_string,NULL,NULL,0); </p><p>我们不需要特殊权限在远程主机上写第二个产生到日志文件中,如定义超长Unicode字符串作为第二个参数("AlternateName"),在第一个参数定义的远程系统就会由于缓冲区溢出而崩溃。Unicode字符串"long_unicode_string"会在日志记录函数调用前被转换为ASCII字符串。</p><p><strong>漏洞影响:</strong></p><p>受影响系统:</p><p>•Microsoft Windows 2000 Service Pack 2, Service Pack 3, Service Pack 4 </p><p>•Microsoft Windows XP, Microsoft Windows XP Service Pack 1 </p><p>•Microsoft Windows XP 64-Bit Edition</p><p>不受影响的系统:</p><p>•Microsoft Windows NT Workstation 4.0, Service Pack 6a </p><p>•Microsoft Windows NT Server 4.0, Service Pack 6a </p><p>•Microsoft Windows NT Server 4.0, Terminal Server Edition, Service Pack 6</p><p>•Microsoft Windows Millennium Edition </p><p>•Microsoft Windows XP 64-Bit Edition Version 2003 </p><p>•Microsoft Windows Server 2003 </p><p>•Microsoft Windows Server 2003 64-Bit Edition </p><p><strong>CVE-ID:CVE-2003-0812 </strong></p><p><strong>CNNVD-ID:CNNVD-200312-058</strong></p><p><strong>CNVD-ID:CNVD-2003-3336 </strong></p><p><strong>解决方案:</strong></p><p>Microsoft</p><p> --------- </p><p>Microsoft已经为此发布了一个安全公告(MS03-049)以及相应补丁:</p><p>MS03-049:Buffer Overrun in the Workstation Service Could Allow Code Execution (828749)链接:<a href="http://www.microsoft.com/technet/security/bulletin/MS03-049.asp">http://www.microsoft.com/technet/security/bulletin/MS03-049.asp</a></p><p>补丁下载:Microsoft Windows 2000 Service Pack 2, Service Pack 3, Service Pack 4 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=2467FE46-D167-479C-9638-D4D79483F261&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=2467FE46-D167-479C-9638-D4D79483F261&displaylang=en</a> </p><p>Microsoft Windows XP, Microsoft Windows XP Service Pack 1 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F02DA309-4B0A-4438-A0B9-5B67414C3833&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=F02DA309-4B0A-4438-A0B9-5B67414C3833&displaylang=en</a> </p><p>Microsoft Windows XP 64-Bit Edition <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=2BE95254-4C65-4CA5-80A5-55FDF5AA2296&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=2BE95254-4C65-4CA5-80A5-55FDF5AA2296&displaylang=en</a></p>