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

📄 ospf_detect.nasl

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 NASL
字号:
# This plugin was written by Michel Arboi <arboi@alussinan.org># It is released under the GNU Public Licence (GPLv2)# # RFC 1247 / RFC 2328 (OSPF v2)# The OSPF protocol runs directly over IP, using IP protocol 89.# Routing protocol packets should always be sent with the IP TOS field set# to 0.## Table 8: OSPF packet types.#    1      Hello                  Discover/maintain  neighbors             #    2      Database Description   Summarize database contents              #    3      Link State Request     Database download                        #    4      Link State Update      Database update                          #    5      Link State Ack         Flooding acknowledgment#if(description){  script_id(11906);  script_version ("$Revision: 38 $");  name["english"] = "OSPF detection";  script_name(english:name["english"]);   desc["english"] = "Synopsis :The remote host is running an OSPF (Open Shortest Path First) agent.Description :The remote host is running OSPF, a popular routing protocol.Solution :If the remote service is not used, disable it.  Risk factor : None";  script_description(english:desc["english"]);   summary["english"] = "Listen to OSPF packets";  script_summary(english:summary["english"]);  script_category(ACT_GATHER_INFO);   script_copyright(english:"This script is Copyright (C) 2003 Michel Arboi");  script_family(english:"Service detection");  script_require_keys("Settings/ThoroughTests");  exit(0);}##include("dump.inc");include('global_settings.inc');if ( ! thorough_tests ) exit(0);if ( islocalhost() ) exit(0);if ( ! islocalnet() ) exit(0);if (! defined_func("join_multicast_group")) exit(0);join_multicast_group("224.0.0.5");	# AllSPFRoutersjoin_multicast_group("224.0.0.6");	# AllDRouters# join_multicast_group is necessary, because pcap_next does not put the # interface in promiscuous modefunction on_exit(){  leave_multicast_group("224.0.0.5");  leave_multicast_group("224.0.0.6");}function extract_ip_addr(pkt, off){  # This avoids a dirty warning, but there is definitely a problem somewhere  # Why do I receive short OSPF Hello packets?  if (off + 4 > strlen(pkt))    return '0.0.0.0';  return	strcat(	ord(pkt[off+0]), ".", 		ord(pkt[off+1]), ".", 		ord(pkt[off+2]), ".", 		ord(pkt[off+3]));}f = "ip proto 89 and src " + get_host_ip();p = pcap_next(pcap_filter: f, timeout: 5);if (isnull(p)) exit(0);##dump(ddata: p, dtitle: "IP");hl = ord(p[0]) & 0xF; hl *= 4;ospf = substr(p, hl);##dump(ddata: ospf, dtitle: "OSPF");head = substr(ospf, 0, 24);data = substr(ospf, 24);# OSPH header#    0                   1                   2                   3#    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |   Version #   |     Type      |         Packet length         |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                          Router ID                            |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                           Area ID                             |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |           Checksum            |             AuType            |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                       Authentication                          |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                       Authentication                          |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#ver = ord(head[0]);type = ord(head[1]);len = ord(head[2]) * 256 + ord(head[3]);rep = strcat('\nAn OSPF v', ver, ' agent is running on this host.\n');# OSPF Hello packet#    0                   1                   2                   3#    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                        Network Mask                           |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |         HelloInterval         |    Options    |    Rtr Pri    |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                     RouterDeadInterval                        |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                      Designated Router                        |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                   Backup Designated Router                    |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#   |                          Neighbor                             |#   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+if (type == 1){  mask = extract_ip_addr(pkt: data, off: 0);  rep += strcat('The netmask is ', mask, '\n');  dr = extract_ip_addr(pkt: data, off: 12);  if (dr != '0.0.0.0')    rep += strcat('The Designated Router is ', dr, '\n');  bdr = extract_ip_addr(pkt: data, off: 16);  if (bdr != '0.0.0.0')    rep += strcat('The Backup Designated Router is ', dr, '\n');  n = extract_ip_addr(pkt: data, off: 20);  if (n != '0.0.0.0')    rep += strcat('Neighbor ', n, ' has been seen\n');}rep += '\nRisk factor : Low';security_note(port: 0, protocol: "ospf", data: rep);

⌨️ 快捷键说明

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