Lucene search

K
nessusThis script is Copyright (C) 2006-2018 Tenable Network Security, Inc.SMB_KB917159.NASL
HistoryJul 12, 2006 - 12:00 a.m.

MS06-035: Vulnerability in Server Service Could Allow Remote Code Execution (917159) (uncredentialed check)

2006-07-1200:00:00
This script is Copyright (C) 2006-2018 Tenable Network Security, Inc.
www.tenable.com
194

CVSS2

7.5

Attack Vector

NETWORK

Attack Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

PARTIAL

Availability Impact

PARTIAL

AV:N/AC:L/Au:N/C:P/I:P/A:P

EPSS

0.945

Percentile

99.2%

The remote host is vulnerable to heap overflow in the ‘Server’ service that may allow an attacker to execute arbitrary code on the remote host with ‘SYSTEM’ privileges.

In addition to this, the remote host is also affected by an information disclosure vulnerability in SMB that may allow an attacker to obtain portions of the memory of the remote host.

#
# (C) Tenable Network Security, Inc.
#

include("compat.inc");

if (description)
{
 script_id(22034);
 script_version("1.28");
 script_cvs_date("Date: 2018/11/15 20:50:28");

 script_cve_id("CVE-2006-1314", "CVE-2006-1315");
 script_bugtraq_id(18863, 18891);
 script_xref(name:"TRA", value:"TRA-2006-01");
 script_xref(name:"MSFT", value:"MS06-035");
 script_xref(name:"MSKB", value:"917159");

 script_name(english:"MS06-035: Vulnerability in Server Service Could Allow Remote Code Execution (917159) (uncredentialed check)");
 script_summary(english:"Determines the presence of update 917159");

 script_set_attribute(attribute:"synopsis", value:
"Arbitrary code can be executed on the remote host due to a flaw in the
'Server' service.");
 script_set_attribute(attribute:"description", value:
"The remote host is vulnerable to heap overflow in the 'Server' service
that may allow an attacker to execute arbitrary code on the remote
host with 'SYSTEM' privileges.

In addition to this, the remote host is also affected by an
information disclosure vulnerability in SMB that may allow an attacker
to obtain portions of the memory of the remote host.");
 script_set_attribute(attribute:"see_also", value:"https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2006/ms06-035");
 script_set_attribute(attribute:"see_also", value:"https://www.tenable.com/security/research/tra-2006-01");
 script_set_attribute(attribute:"solution", value:"Microsoft has released a set of patches for Windows 2000, XP and 2003.");
 script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
 script_set_cvss_temporal_vector("CVSS2#E:F/RL:OF/RC:C");
 script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
 script_set_attribute(attribute:"exploit_available", value:"true");
 script_set_attribute(attribute:"exploit_framework_core", value:"true");

 script_set_attribute(attribute:"vuln_publication_date", value:"2006/07/12");
 script_set_attribute(attribute:"patch_publication_date", value:"2006/07/11");
 script_set_attribute(attribute:"plugin_publication_date", value:"2006/07/12");

 script_set_attribute(attribute:"plugin_type", value:"local");
 script_set_attribute(attribute:"cpe", value:"cpe:/o:microsoft:windows");
 script_end_attributes();

 script_category(ACT_GATHER_INFO);
 script_copyright(english:"This script is Copyright (C) 2006-2018 Tenable Network Security, Inc.");
 script_family(english:"Windows");

 script_dependencies("smb_nativelanman.nasl","smb_login.nasl");
 script_require_keys("Host/OS/smb");
 script_require_ports(139, 445);
 exit(0);
}

#

include ("smb_func.inc");

function smb_get_error_code (data)
{
 local_var header, flags2, code;

 # Some checks in the header first
 header = get_smb_header (smbblob:data);
 if (!header)
   return NULL;

 flags2 = get_header_flags2 (header:header);
 if (flags2 & SMB_FLAGS2_32BIT_STATUS)
 {
   code = get_header_nt_error_code (header:header);
 }
 else
 {
   code = get_header_dos_error_code (header:header);
 }

 return code;
}


function smb_trans_and_x2 (extra_parameters, transname, param, data, max_pcount)
{
 local_var header, parameters, dat, packet, ret, pad, trans, p_offset, d_offset, plen, dlen, elen, pad2, socket;

 pad = pad2 = NULL;
 if (session_is_unicode () == 1)
   pad = raw_byte (b:0);
 else
   pad2 = raw_byte (b:0);

 header = smb_header (Command: SMB_COM_TRANSACTION,
                      Status: nt_status (Status: STATUS_SUCCESS));

 trans = cstring (string:transname);

 p_offset = 66 + strlen(trans) + strlen (extra_parameters);
 d_offset = p_offset + strlen (param);

 plen = strlen(param);
 dlen = strlen(data);
 elen = strlen(extra_parameters);

 parameters = raw_word (w:plen)            +   # total parameter count
	      raw_word (w:dlen) +   # total data count
	      raw_word (w:max_pcount)            +   # Max parameter count
	      raw_word (w:0xFFFF)         +   # Max data count
	      raw_byte (b:0)            +   # Max setup count
              raw_byte (b:0)            +   # Reserved
	      raw_word (w:0)            +   # Flags
	      raw_dword (d:0)           +   # Timeout
	      raw_word (w:0)            +   # Reserved
	      raw_word (w:plen)            +   # Parameter count
	      raw_word (w:p_offset)           +   # Parameter offset
	      raw_word (w:dlen) +   # Data count
	      raw_word (w:d_offset)           +   # Data offset
	      raw_byte (b:elen/2)            +   # Setup count
	      raw_byte (b:0);               # Reserved

 parameters += extra_parameters;

 parameters = smb_parameters (data:parameters);

 dat = pad +
       trans +
       pad2 +
       raw_word (w:0) +
       param +
       data;

 dat = smb_data (data:dat);

 packet = netbios_packet (header:header, parameters:parameters, data:dat);

 ret = smb_sendrecv (data:packet);
 if (!ret)
   return NULL;

 return smb_get_error_code (data:ret);
}


###########################
#        Main code        #
###########################

os = get_kb_item ("Host/OS/smb") ;
if ("Windows" >!< os) exit(0);

name = kb_smb_name ();
port = kb_smb_transport ();

soc = open_sock_tcp(port);
if(!soc)exit(0);

session_init (socket:soc,hostname:name);
ret = NetUseAdd (share:"IPC$");
if (ret != 1)
{
 close (soc);
 exit (0);
}

data = raw_word (w:1) +
       raw_word (w:1) +
       raw_word (w:1) ;

code = smb_trans_and_x2 (extra_parameters:data, transname:string("\\MAILSLOT\\NESSUS", rand()) , param:NULL, data:NULL, max_pcount:0);
if (!isnull(code))
{
 if (code == STATUS_OBJECT_NAME_NOT_FOUND)
   security_hole(port);
}

NetUseDel();
VendorProductVersionCPE
microsoftwindowscpe:/o:microsoft:windows

CVSS2

7.5

Attack Vector

NETWORK

Attack Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

PARTIAL

Availability Impact

PARTIAL

AV:N/AC:L/Au:N/C:P/I:P/A:P

EPSS

0.945

Percentile

99.2%