# frozen_string_literal: true ## # This file is part of WhatWeb and may be subject to # redistribution and commercial restrictions. Please see the WhatWeb # web site for more information on licensing and terms of use. # http://www.morningstarsecurity.com/research/whatweb ## WhatWeb::Plugin.define "PROLiNK-Router" do @author = "Brendan Coles " # 2011-06-21 @version = "0.1" @description = "PROLiNK Router" @website = "http://www.prolink.co.id/" # ShodanHQ results as at 2011-06-21 # # 299 for virtual web # Google results as at 2011-06-21 # # 37 for "ADSL Router Status" intitle:"PROLiNK ADSL Router" "This page shows the current status and some basic settings of the device" # Dorks # @dorks = [ '"ADSL Router Status" intitle:"PROLiNK ADSL Router" "This page shows the current status and some basic settings of the device"' ] # Matches # @matches = [ # HTML Comment { text: '' }, # Title { text: 'PROLiNK ADSL Router' }, { text: 'RFwell ADSL Router Status' }, # Frameset # FRAME SRC="attention.htm" { text: '' }, # /images/logo.gif { md5: "8be83109b0aaabae7737b28e666ba116", url: "/images/logo.gif" }, ] # Passive # def passive(target) m = [] # HTTP Server Header if /^Virtual Web/.match?(target.headers["server"]) m << { certainty: 25, name: "HTTP Server Header" } # status.asp or /admin/status.asp # Model Detection m << { model: target.body.scan(/\s+Alias Name<\/b><\/td>\s+PROLiNK ([^<]+)<\/td>\s+<\/tr>/).flatten } if target.body =~ /\s+Alias Name<\/b><\/td>\s+PROLiNK ([^<]+)<\/td>\s+<\/tr>/ # status.asp or /admin/status.asp # Firmware Detection m << { firmware: target.body.scan(/\s+Firmware Version<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/).flatten } if target.body =~ /\s+Firmware Version<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/ # status.asp or /admin/status.asp # DSP Version Detection m << { version: target.body.scan(/\s+DSP Version<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/).flatten } if target.body =~ /\s+DSP Version<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/ # status.asp or /admin/status.asp # MAC Address Detection m << { string: "MAC:" + target.body.scan(/\s+MAC Address<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/).flatten } if target.body =~ /\s+MAC Address<\/b><\/td>\s+([^<]+)<\/td>\s+<\/tr>/ end # Return passive matches m end end