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

📄 relative_field_vulnerability.nasl

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 NASL
字号:
## This script was written by Noam Rathaus <noamr@securiteam.com>## See the Nessus Scripts License for details## Changes by rd : issue an alert only if some relation# has been found.#if(description){ script_id(10201); script_version ("$Revision: 38 $"); name["english"] = "Relative IP Identification number change"; script_name(english:name["english"]);  desc["english"] = "The remote host uses non-random IP IDs, that is, it ispossible to predict the next value of the ip_id field ofthe ip packets sent by this host.An attacker may use this feature to determine traffic patternswithin your network.   A few examples (not at all exhaustive) are: 1. A remote attacker can determine if the remote host sent a packet in reply to another request.  Specifically, an attacker can use your server as an unwilling participant in a blind portscan of another network.  2. A remote attacker can roughly determine server requests at certain times of the day.  For instance, if the server is sending much more traffic after business hours, the server may be a reverse proxy or other remote access device.  An attacker can use this information toconcentrate his/her efforts on the more critical machines.3. A remote attacker can roughly estimate the number of requests that a web server processes over a period of time.Solution : Contact your vendor for a patchRisk factor : Low"; script_description(english:desc["english"]);  summary["english"] = "Relative IP Identification number change"; script_summary(english:summary["english"]);  script_category(ACT_GATHER_INFO);  script_copyright(english:"This script is Copyright (C) 1999 SecuriTeam"); family["english"] = "General"; script_family(english:family["english"]); script_dependencies("os_fingerprint.nasl", "snmp_sysDesc.nasl"); script_require_keys("Settings/ThoroughTests");  exit(0);}## The script code starts here#include('global_settings.inc');# localhost results are bogusif(islocalhost())exit(0);if ( thorough_tests == 0 ) exit(0);os = get_kb_item("Host/OS/icmp");if(os){ if(egrep(pattern:"Solaris|Linux Kernel 2\.4", string:os, icase:TRUE))exit(0); }else{ os = get_kb_item("SNMP/sysDesc"); if(os) { if(egrep(pattern:"SunOS|Linux 2\.4", string:os))exit(0); }}srcaddr = this_host();dstaddr = get_host_ip();IPH = 20;IP_LEN = IPH; ip = forge_ip_packet(   ip_v : 4,			ip_hl : 5,			ip_tos : 0,			ip_len : IP_LEN, 		        ip_id : 0xABA,			ip_p : IPPROTO_TCP,			ip_ttl : 255,		        ip_off : 0,			ip_src : srcaddr,			ip_dst : dstaddr);port = get_host_open_port();if(!port)port = 137;soc = open_sock_tcp(port);if ( ! soc ) exit(0);close ( soc ); tcpip = forge_tcp_packet(    ip       : ip,                             th_sport : port,                             th_dport : port,                             th_flags : TH_SYN,                             th_seq   : 0xF1C,                             th_ack   : 0,                             th_x2    : 0,                             th_off   : 5,                             th_win   : 512,                             th_urp   : 0);filter = string("tcp and src host ", dstaddr, " and dst host ", srcaddr, " and dst port ", port, " and src port ", port); relative = "-1";  answer_count = 0;for(i=0;i<10;i=i+1){	r[i]="";	o[i]="";	}for (packet_count = 0; packet_count < 10; packet_count = packet_count + 1)  { result = send_packet(tcpip, pcap_active:TRUE, pcap_filter:filter); if ((packet_count > 3) && (answer_count == 0)) {  exit(0); } if (result) {  ip_id = get_ip_element(ip:result, element:"ip_id");  if(ip_id != 0 )  {   answer_count = answer_count + 1;   if (relative == "-1")   {    relative = ip_id;   }   else   {   if(ip_id > relative){   	max = ip_id;	min = relative;	}   else {   	max = relative;	min = ip_id;	}   relative = max - min;   r[answer_count-1] = relative;   o[answer_count-1] = ip_id;   relative = ip_id;   }  } }}ok = 1;if(answer_count){## Added by rd :### if the ids are relative, then, we have a relation such as :## #  n      =  n   +  m#   i + 1      i### with n   = i'th ip_id#       i #### so, we have :# #  n      = n   + k*m#   i + k    i ### So it's pretty easy to find if ip_ids are relatives or not.#ni = 0;m  = 0;start = 0;for(i=0;i<10;i=i+1){ if(o[i]){ 	start = i;	ni = o[i];	i = 10;	}}for(i=start+1;i<10;i=i+1){ if(o[i]) 	{	 if(o[i] > ni)	  {	   mx = o[i];	   mn = ni;	  }	 else	  {	   mx = ni;	   mn = o[i];	  }	  	  m = mx - mn;	  start = i;	  i = 10;	 }}ok = 1;for(i=start+1;i<10;i=i+1){ if(o[i]) {   if(o[i] > ni)	  {	   mx = o[i];	   mn = ni;	  }	 else	  {	   mx = ni;	   mn = o[i];	  }	  	  km = mx - mn;	  	  #	  # n  = n  + k x m	  #  k    i 	  #	  # This implies that km % m = 0	  # 	  if(km % m){	  	ok = 0;		i = 1000;		}	 } }##  end of rd's addition#  #if(ok)security_warning(0);}

⌨️ 快捷键说明

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