⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smb_hotfixes_fcheck.inc

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 INC
字号:
## (C) 2005 Tenable Network Security## This script is released under one of the Tenable Script Licenses and may not# be used from within scripts released under another license without the# authorization from Tenable Network Security Inc.## See the following licenses for details :#  http://www.nessus.org/plugins/RegisteredFeed.pdf#  http://www.nessus.org/plugins/TenableCommercial.pdf#  http://www.nessus.org/plugins/DirectFeed.pdf#  http://www.nessus.org/plugins/DirectFeedCommercial.pdf### @NOGPL@## smb_hotfixes_fcheck.inc# $Revision: 1.20 $HCF_CONNECT = -1;	# Could not connect to port 139 or 445HCF_NOAUTH =  -2;	# No credentials or share does not existHCF_NOENT  =  -3;	# File does not existHCF_ERR    =  -4;       # Unknown errorHCF_NOVER  =  -5;       # File version does not existHCF_OK	   =   0;  	# No errorHCF_OLDER  =   1;	# The remote file is older than what we wanted	HCF_UNACCESSIBLE_SHARE = 2;HCF_ACCESSIBLE_SHARE   = 3;global_var hcf_init;global_var hcf_report;hcf_report = NULL;function hotfix_get_report(){ return hcf_report;}function hotfix_add_report(){ hcf_report += _FCT_ANON_ARGS[0];}function hotfix_security_hole(){ if ( ! isnull(hcf_report) )  security_hole(port:get_kb_item("SMB/transport"), extra:'\n'+hotfix_get_report()+'\n'); else  security_hole(port:get_kb_item("SMB/transport"));}function hotfix_security_warning(){ if ( ! isnull(hcf_report) ) security_warning(port:get_kb_item("SMB/transport"), extra:'\n'+hotfix_get_report()+'\n'); else security_warning(port:get_kb_item("SMB/transport"));}function hotfix_security_note(){ if ( ! isnull(hcf_report) ) security_note(port:get_kb_item("SMB/transport"), extra:'\n'+hotfix_get_report()+'\n'); else security_note(port:get_kb_item("SMB/transport"));}function hotfix_check_fversion_init(){ local_var soc, port, name; port = kb_smb_transport();  name = kb_smb_name(); soc = open_sock_tcp(port); if  ( ! soc ) return HCF_CONNECT; session_init(socket:soc, hostname:name); hcf_init = 1; return HCF_OK;}function hotfix_check_fversion_end(){ if ( hcf_init != 0 ) {	NetUseDel(); 	hcf_init = 0;	} return HCF_OK;}function hotfix_check_fversion(file, version, path, min_version){ local_var login, pass, domain, share, r, handle, v, str_v,v2, i, backslash; if ( hcf_init == 0 ) 	{		if ( hotfix_check_fversion_init() != HCF_OK ) return 0;	} if ( isnull(path) )  path = hotfix_get_systemroot();  if ( isnull(path) ) return HCF_ERR;  share = ereg_replace(pattern:"^([A-Za-z]):.*", string:path, replace:"\1$"); if ( file[0] == "\" || ( strlen(path) > 0 && path [ strlen(path) - 1 ] == "\") )       backslash = ""; else      backslash = "\"; file = ereg_replace(pattern:"^[A-Za-z]:(.*)", string:path, replace:"\1" + backslash + file); # Get the file version str_v = get_kb_item("SMB/FileVersions" + tolower(str_replace(string:file, find:"\", replace:"/"))); if ( ! isnull(str_v) ) {  v2 = split( str_v, sep:'.', keep:0);  v = make_list(v2[0], v2[1], v2[2], v2[3]); } else   {  login  = kb_smb_login();  pass   = kb_smb_password();  domain = kb_smb_domain();  r = NetUseAdd(login:login, password:pass, domain:domain, share:share);  if ( r != 1 ) return HCF_NOAUTH;  handle = CreateFile(file:file, desired_access:GENERIC_READ, file_attributes:FILE_ATTRIBUTE_NORMAL, share_mode:FILE_SHARE_READ, create_disposition:OPEN_EXISTING);  if ( isnull(handle) ) return HCF_NOENT;   v = GetFileVersion(handle:handle);  CloseFile(handle:handle);  if ( ! isnull(v) )    set_kb_item(name:"SMB/FileVersions" + tolower(str_replace(string:file, find:"\", replace:"/")), value:v[0] + "." + v[1] + "." + v[2] + "." + v[3]);  else return HCF_NOVER; } if ( isnull(min_version) )	min_version = make_list(0,0,0,0); else {	min_version = split(min_version, sep:'.', keep:0);	min_version = make_list(int(min_version[0]), int(min_version[1]), int(min_version[2]), int(min_version[3]));     } version = split(version, sep:'.', keep:0); version = make_list(int(version[0]), int(version[1]), int(version[2]), int(version[3]));  for ( i = 0; i < max_index(version) ; i ++ ) {  if ( (v[i] < version[i]) )	{	 if ( v[i] < min_version[i] ) return HCF_OK;	 else {		hotfix_add_report(strcat('- ', (share - '$'), ':', file, ' has not been patched\n', 					'    Remote version : ', v[0],'.',v[1],'.',v[2],'.',v[3], '\n',					'    Should be : ', version[0], '.',version[1],'.',version[2],'.',version[3]), '\n');		return HCF_OLDER;		}	}  else if (v[i] > version[i])    return HCF_OK; } return HCF_OK;}function hotfix_is_vulnerable(os, sp, file, version, dir, path, min_version){ local_var r; local_var my_sp, my_os; my_os = get_kb_item("SMB/WindowsVersion"); my_sp = get_kb_item("SMB/CSDVersion"); if ( my_sp ) {  my_sp = ereg_replace(pattern:".*Service Pack ([0-9]).*", string:my_sp, replace:"\1");  my_sp = int(my_sp); } else my_sp = 0; if ( os >!< my_os ) return 0; if ( ! isnull(sp) && my_sp != sp ) return 0; r = hotfix_check_fversion(file:dir + "\" + file, version:version, path:path, min_version:min_version); if ( r == HCF_OLDER) 	return 1; else 	return 0;}function is_accessible_share(share){ local_var login, pass, domain, r; if (isnull(share)) {  share = hotfix_get_systemroot();  if ( ! share ) return 0;  share = ereg_replace(pattern:"^([A-Z]):.*", string:share, replace:"\1$"); }   r =  get_kb_item("SMB/AccessibleShare/" + share);  if ( r == HCF_UNACCESSIBLE_SHARE ) return 0; # Not Accessible  else if ( r == HCF_ACCESSIBLE_SHARE ) return 1;    login  = kb_smb_login();  pass   = kb_smb_password();  domain = kb_smb_domain();  if ( hcf_init == 0 ) hotfix_check_fversion_init();  r = NetUseAdd(login:login, password:pass, domain:domain, share:share);  if ( r != 1 ) 	{	 hotfix_check_fversion_end();	 r = HCF_UNACCESSIBLE_SHARE;	}  else 	{  	 NetUseDel(close:FALSE);	 r = HCF_ACCESSIBLE_SHARE;	}  if ( defined_func("replace_kb_item") ) 	replace_kb_item(name:"SMB/AccessibleShare/" + share, value:r);  else	set_kb_item(name:"SMB/AccessibleShare/" + share, value:r);  if (r == HCF_ACCESSIBLE_SHARE)    return 1;  else    return 0;}function hotfix_path2share(path){ return ereg_replace(pattern:"^([A-Z]):.*", string:"\1$");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -