首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
MS05-010许可证记录服务漏洞允许执行代码的分析
来源:http://www.whitecell.org 作者:Polymorphours 发布时间:2005-11-28  

MS05-010许可证记录服务漏洞允许执行代码的分析

Author: Polymorphours
Email: Polymorphours@whitecell.org
Homepage:http://www.whitecell.org
Date: 2005-11-18


关于MS05-010: 许可证记录服务漏洞允许执行代码的分析

漏洞类型:静态数据区溢出漏洞
分析时间:2005-02-18

llssrv服务是用于许可登陆服务,该漏洞存在于llssrv这个服务中,经过分析发现
当服务器从LlsrLicenseRequestW收到数据后,会将第2个参数LPWSTR ProductID直
接传递给DispatchRequestLicense函数,该函数调用ServiceListAdd函数来添加一
个列表,在将生成的列表接点显示到屏幕上时,产生了溢出。

溢出发生在RegistryDisplayNameGet函数中

text:01006B5B Type = dword ptr -8
.text:01006B5B hKey = dword ptr -4
.text:01006B5B arg_0 = dword ptr 8
.text:01006B5B cbData = dword ptr 0Ch
.text:01006B5B arg_8 = dword ptr 10h
.text:01006B5B
.text:01006B5B push ebp
.text:01006B5C mov ebp, esp
.text:01006B5E push ecx
.text:01006B5F push ecx
.text:01006B60 push ebx
.text:01006B61 mov ebx, ds:lstrcpyW
.text:01006B67 and [ebp+hKey], 0
.text:01006B6B push esi
.text:01006B6C push edi
.text:01006B6D mov edi, offset unk_0_101EA78 <- 一块在BSS区域的内存
.text:01006B72 push [ebp+cbData] ; lpString2
.text:01006B75 push edi ; lpString1
.text:01006B76 call ebx ; lstrcpyW <- 直接将第2个参数的中的数据完全拷贝到了这块BSS中
.text:01006B78 mov esi, offset unk_0_101D868
.text:01006B7D push offset dword_0_1001D2C ; lpString2
.text:01006B82 push esi ; lpString1
.text:01006B83 call ebx ; lstrcpyW
.text:01006B85 push [ebp+arg_0] ; lpString2
.text:01006B88 push esi ; lpString1
.text:01006B89 call ds:lstrcatW


下面来对照一下NT4的原代码

VOID
RegistryDisplayNameGet(
LPTSTR ServiceName,
LPTSTR DefaultName,
LPTSTR *pDisplayName
)

/*++

Routine Description:


Arguments:

Service Name -

Return Value:

None.

--*/

{
HKEY hKey2 = NULL;
DWORD dwType, dwSize;
static TCHAR RegKeyText[512]; //这里只分配了512字节的空间
static TCHAR DisplayName[512];
LONG Status;

#if DBG
if (TraceFlags & TRACE_FUNCTION_TRACE)
dprintf(TEXT("LLS TRACE: RegistryDisplayNameGet\n"));
#endif

lstrcpy(DisplayName, DefaultName);
lstrcpy(RegKeyText, TEXT("System\\CurrentControlSet\\Services\\LicenseInfo\\"));
lstrcat(RegKeyText, ServiceName);
。。。。。。。。。
}

结果很明显,从RegistryDisplayNameGet函数传下来的参数会直接拷贝到BSS中,
造成在BSS中覆盖任意内存但是该漏洞利用有一个条件,win2ksp4+windows20003
默认是不允许匿名访问系统命名管道llsrpc的,但是根据资料显示,从CD安装的
SP4默认允许改管道匿名连接,并且该漏洞存在于NT4中。


WSS(Whitecell Security Systems),一个非营利性民间技术组织,致力于各种系统安全技术的研究。坚持传统的hacker精神,追求技术的精纯。
WSS 主页:http://www.whitecell.org/
WSS 论坛:http://www.whitecell.org/forums/



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·CMailServer邮件系统附件下载模
·openMotif-libUil-Multiple_vuln
·MolyX 漏洞分析
·构造特殊文件名绕过多个反病毒引
·Mozilla Firefox任意命令执行漏
·EXCEL 2000/XP表长度缓冲区溢出
·DriverStudio Remote Control远
·Microsoft Internet Explorer CO
·Windows Firewall存在缺陷 黑客
·Microsoft Internet Explorer文
·发现Linux压缩格式漏洞 达第二最
·Microsoft Internet Explorer HT
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved