Lucene search
+L

Microsoft SMB Transaction Parsing RCE Vulnerability

🗓️ 06 Mar 2012 00:00:00Reported by Copyright (C) 2012 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 45 Views

Microsoft SMB Transaction Parsing RCE Vulnerability. Remote attackers can execute arbitrary code by sending a malformed SMB request. Critical security update missing

Related
Refs
Code
# SPDX-FileCopyrightText: 2012 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

if(description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.902660");
  script_version("2026-04-28T06:28:06+0000");
  script_cve_id("CVE-2011-0661");
  script_tag(name:"last_modification", value:"2026-04-28 06:28:06 +0000 (Tue, 28 Apr 2026)");
  script_tag(name:"creation_date", value:"2012-03-06 11:57:33 +0530 (Tue, 06 Mar 2012)");
  script_tag(name:"cvss_base", value:"10.0");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:C/I:C/A:C");
  script_name("Microsoft SMB Transaction Parsing RCE Vulnerability");
  script_category(ACT_ATTACK);
  script_copyright("Copyright (C) 2012 Greenbone AG");
  script_family("Windows : Microsoft Bulletins");
  script_dependencies("secpod_ms_smb_accessible_shares.nasl", "os_detection.nasl", "smb_nativelanman.nasl", "netbios_name_get.nasl");
  script_mandatory_keys("SMB/Accessible_Shares", "Host/runs_windows");
  script_require_ports(139, 445);
  script_exclude_keys("SMB/samba");

  script_xref(name:"URL", value:"http://www.securitytracker.com/id?1025329");
  script_xref(name:"URL", value:"http://www.securityfocus.com/bid/47198");
  script_xref(name:"URL", value:"http://www.us-cert.gov/cas/techalerts/TA11-102A.html");
  script_xref(name:"URL", value:"https://docs.microsoft.com/en-us/security-updates/securitybulletins/2011/ms11-020");

  script_tag(name:"impact", value:"Successful exploitation could allow remote attackers to execute arbitrary
  code on the system.");

  script_tag(name:"affected", value:"- Microsoft Windows 7 SP1 and prior

  - Microsoft Windows 2008 SP2 and prior

  - Microsoft Windows Vista SP2 and prior

  - Microsoft Windows 2008 R2 SP1 and prior

  - Microsoft Windows XP Service Pack 3 and prior

  - Microsoft Windows 2003 Service Pack 2 and prior");

  script_tag(name:"insight", value:"The flaw is due to improper validation of field in SMB request,
  which allows remote attackers to execute arbitrary code on the system by
  sending a malformed SMB request.");

  script_tag(name:"solution", value:"The vendor has released updates. Please see the references for more information.");

  script_tag(name:"summary", value:"This host is missing a critical security update according to
  Microsoft Bulletin MS11-020.");

  script_tag(name:"qod_type", value:"remote_app");
  script_tag(name:"solution_type", value:"VendorFix");

  script_xref(name:"URL", value:"https://docs.microsoft.com/en-us/security-updates/securitybulletins/2011/ms11-020");
  exit(0);
}

include("smb_nt.inc");
include("host_details.inc");

if( kb_smb_is_samba() ) exit( 0 );

name   = kb_smb_name();
domain = kb_smb_domain();
port   = kb_smb_transport();
login  = kb_smb_login();
pass   = kb_smb_password();

soc1 = open_sock_tcp(port);
if(!soc1){
  exit(0);
}

if(!login)login = "anonymous";
if(!pass) pass = "";

shares = get_kb_list("SMB/Accessible_Shares");
if (isnull(shares))
{
  close(soc1);
  exit(0);
}

prot = smb_neg_prot(soc:soc1);
if(!prot){
  close(soc1);
  exit(0);
}

if(strlen(prot) < 5 ) {
  exit(0);
}

##Currently Only SMB1 is supported, For SMB2 ord(prot[4]) == 254
if(ord(prot[4]) == 254)
{
  close(soc1);
  soc1 = open_sock_tcp(port);
  if(!soc1){
   exit(0);
  }

  r = smb_session_request(soc:soc1, remote:name);
  if(!r) { close(soc1); exit(0); }

  prot = smb_neg_prot_NTLMv1(soc:soc1);
  if(!prot)
  {
    close(soc1);
    exit(0);
  }
}

if(!get_kb_item("login/SMB/kerberos/success")) {
  r = smb_session_setup(soc:soc1, login:login, password:pass, domain:domain, prot:prot);
  if(!r) {
    close(soc1);
    exit(0);
  }
} else {
  kdc = kb_smb_kdc();
  host = kb_smb_hostname();

  if(kdc && host && defined_func("krb5_gss_init")) {

    r = krb5_gss_init();

    context = krb5_gss_prepare_context(kdc:kdc, realm:domain, host:host, service:"cifs", user:login, password:pass);

    if(krb5_is_failure(context)) {
      close(soc1);
      exit(0);
    }
    r = krb5_gss_update_context();

    if(krb5_is_failure(r)) {
      close(soc1);
      exit(0);
    }

    krb5_blob = krb5_gss_update_context_out();
  } else {
    close(soc1);
    exit(0);
  }

  r = smb_session_setup(soc:soc1, login:login, password:pass, domain:domain, prot:prot, kerberos:krb5_blob);
  if(!r) {
    close(soc1);
    exit(0);
  }
}

uid = session_extract_uid(reply:r);
if(!uid)
{
  close(soc1);
  exit(0);
}

foreach share (shares)
{
  r = smb_tconx(soc:soc1, name:name, uid:uid, share:share);

  if(!r){
    continue;
  }

  tid = tconx_extract_tid(reply:r);
  if(!tid)
  {
    continue;
  }

  tid_high = tid / 256;
  tid_low  = tid % 256;
  uid_high = uid / 256;
  uid_low  = uid % 256;

  resp = FindFirst2(socket:soc1, uid:uid, tid:tid, pattern: "\*");

  if (!resp){
    continue;
  }

  foreach file (resp)
  {

    # FindFirst2 returns filenames without a starting slash
    file = "\" + file;

    fid = OpenAndX(socket:soc1, uid:uid, tid:tid, file:file);

    if(!fid){
      continue;
    }

    fid_high = fid / 256;
    fid_low  = fid % 256;

    # nb: SMB Read AndX Request trying to read at a very high offset
    smb_read_andx_req = raw_string(0x00, 0x00, 0x00, 0x3c,           ## Netbios Session
                                   0xff, 0x53, 0x4d, 0x42,           ## Server Component : SMB
                                   0x2e,                             ## SMB Command : Read AndX
                                   0x00, 0x00, 0x00, 0x00,           ## NT Status : Success
                                   0x18, 0x07, 0xc8,                 ## Flags
                                   0x00, 0x00,                       ## Process ID
                                   0x01, 0x00, 0x00, 0x00, 0x00,
                                   0x00, 0x00, 0x00, 0x00, 0x00,     ## Signature & Reserver
                                   tid_low, tid_high,                ## Tree ID
                                   0x33, 0x0c,
                                   uid_low, uid_high, 0x80, 0x01,    ## User ID
                                   0x0c,                             ## Read AndX Word Count
                                   0xff, 0x00,                       ## AndXCommand : No further cmds & Reserved
                                   0x00, 0x00,                       ## AndXoffset
                                   fid_low, fid_high,                ## FID
                                   0xff, 0xff, 0xff, 0xff,           ## Offset : Should be set to large value
                                   0x0a, 0x00, 0x0a, 0x00,           ## Max & Min Count
                                   0xff, 0xff, 0xff, 0xff,           ## File offset & File RW length
                                   0x0a,
                                   0x00, 0xff, 0xff, 0xff, 0x7f,     ##  High Offset
                                   0x00, 0x00, 0x00);                ##  Byte Count

    send(socket:soc1, data: smb_read_andx_req);
    read_resp = smb_recv(socket:soc1);

    smb_close_request(soc:soc1, uid:uid, tid:tid, fid:fid);
    if( strlen( read_resp ) < 13 ) continue;

    ## nb: Check if SMB NT_STATUS is STATUS_INVALID_PARAMETER (0xc000000d)
    if(read_resp && ord(read_resp[9]) == 13 && ord(read_resp[10]) == 0
                 && ord(read_resp[11]) == 0 && ord(read_resp[12]) == 192)
    {
      security_message(port);
      close(soc1);
      exit(0);
    }
  }
}

close(soc1);

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

28 Apr 2026 00:00Current
5Medium risk
Vulners AI Score5
CVSS 210
EPSS0.44581
45