On Nov 29, 2005, at 16:20, jsk wrote:

I have searched all over trying to find the answer to
this problem.  Hopefully someone can help me or
implement this.

Here's a patch to logins.nasl and smb_login.nasl which implements this. It creates multiples additional prefs under Prefs -> Logins -> Additional SMB Logins (N).

Does this help ?



                                        -- Renaud


Index: logins.nasl
===================================================================
RCS file: /usr/local/cvs/nessus-plugins/scripts/logins.nasl,v
retrieving revision 1.20
diff -c -r1.20 logins.nasl
*** logins.nasl 20 Sep 2005 00:11:45 -0000      1.20
--- logins.nasl 3 Dec 2005 02:01:58 -0000
***************
*** 6,11 ****
--- 6,14 ----
  # See the Nessus Scripts License for details
  #
  
+ 
+ MAX_ADDITIONAL_SMB_LOGINS = 3;
+ 
  default_http_login = "";
  default_http_password = "";
  
***************
*** 99,104 ****
--- 102,116 ----
   script_add_preference(name:"SMB account :", type:"entry", 
value:default_smb_login);
   script_add_preference(name:"SMB password :", type:"password", 
value:default_smb_password);
   script_add_preference(name:"SMB domain (optional) :", type:"entry", 
value:default_smb_domain);
+ 
+  for ( i = 1 ; i <= MAX_ADDITIONALS_SMB_LOGINS ; i ++ )
+  {
+  script_add_preference(name:"Additional SMB account (" + i + ") :", 
type:"entry", value:default_smb_login);
+  script_add_preference(name:"Additional SMB password (" + i + ") :", 
type:"password", value:default_smb_password);
+  script_add_preference(name:"Additional SMB domain (optional) (" + i + ") :", 
type:"entry", value:default_smb_password);
+  }
+ 
+ 
   if(defined_func("MD5")) script_add_preference(name:"Never send SMB 
credentials in clear text", type:"checkbox", value:"yes");
   if(defined_func("MD5")) script_add_preference(name:"Only use NTLMv2", 
type:"checkbox", value:"no");
   exit(0);
***************
*** 233,235 ****
--- 245,258 ----
   set_kb_item(name:"SMB/domain_filled", value:smb_domain);
  }
  
+ j = 0;
+ for ( i = 1 ; i <= MAX_ADDITIONAL_SMB_LOGINS ; i ++ )
+ {
+  l = script_get_preference("Additional SMB account (" + i + ") :");
+  p = script_get_preference("Additional SMB password (" + i + ") :");
+  d = script_get_preference("Additional SMB domain (optional) (" + i + ") :");
+  if ( l ) set_kb_item(name:"SMB/login_filled/" + j, value:l);
+  if ( p ) set_kb_item(name:"SMB/password_filled/" + j, value:p);
+  if ( d ) set_kb_item(name:"SMB/domain_filled/" + j, value:d);
+  if ( l || p ) j ++;
+ }
Index: smb_login.nasl
===================================================================
RCS file: /usr/local/cvs/nessus-plugins/scripts/smb_login.nasl,v
retrieving revision 1.77
diff -c -r1.77 smb_login.nasl
*** smb_login.nasl      20 Oct 2005 21:18:59 -0000      1.77
--- smb_login.nasl      3 Dec 2005 02:01:58 -0000
***************
*** 111,116 ****
--- 111,131 ----
  if(!strlen(user_password)) user_password = "";
  user_domain = string(get_kb_item("SMB/domain_filled"));
  
+ 
+ for ( i = 0 ; TRUE ; i ++ )
+ {
+  l = get_kb_item("SMB/login_filled/" + i );
+  p = get_kb_item("SMB/password_filled/" + i );
+  d = get_kb_item("SMB/domain_filled/" + i );
+  if ( l || p )
+  {
+   logins[i + 1] = l;
+   passwords[i + 1] = p;
+   if ( d ) domains[i + 1] = d;
+  }
+  else break;
+ }
+ 
  smb_domain = string(get_kb_item("SMB/workgroup"));
  
  if ( user_domain )
***************
*** 118,123 ****
--- 133,143 ----
   user_domain = ereg_replace(pattern:"([^ ]*) *$", string:user_domain, 
replace:"\1");
  }
  
+ 
+ logins[0] = user_login;
+ passwords[0] = user_password;
+ domains[0] = user_domain;
+ 
  if (smb_domain)
  {
   smb_domain = ereg_replace(pattern:"([^ ]*) *$", string:smb_domain, 
replace:"\1");
***************
*** 153,160 ****
  
  supplied_login_is_correct = FALSE;
  
! if ( user_login )
  {
   if ((login(lg:user_login, pw:user_password, dom:smb_domain) == TRUE )  && ( 
session_is_guest() == 0 ))
    supplied_login_is_correct = TRUE;
   else
--- 173,184 ----
  
  supplied_login_is_correct = FALSE;
  
! for ( i = 0 ; logins[i] && supplied_login_is_correct == FALSE ; i ++ )
  {
+   user_login = logins[i];
+   user_password = passwords[i];
+   user_domain = domains[i];
+ 
   if ((login(lg:user_login, pw:user_password, dom:smb_domain) == TRUE )  && ( 
session_is_guest() == 0 ))
    supplied_login_is_correct = TRUE;
   else
_______________________________________________
Nessus mailing list
[email protected]
http://mail.nessus.org/mailman/listinfo/nessus

Reply via email to