diff options
Diffstat (limited to 'nselib/data/http-fingerprints.lua')
-rw-r--r-- | nselib/data/http-fingerprints.lua | 12859 |
1 files changed, 12859 insertions, 0 deletions
diff --git a/nselib/data/http-fingerprints.lua b/nselib/data/http-fingerprints.lua new file mode 100644 index 0000000..e8d2c84 --- /dev/null +++ b/nselib/data/http-fingerprints.lua @@ -0,0 +1,12859 @@ +local io = require "io" +local string = require "string" +local table = require "table" + +---HTTP Fingerprint files, compiled by Ron Bowes with a special thanks to... +-- o Kevin Johnson (@secureideas) for the fingerprints that come with Yokoso +-- http://yokoso.inguardians.com +-- o Jason H. (@jhaddix) for helping out with a whole pile of fingerprints he's +-- collected +-- o Bob Dooling +-- o Robert Rowley for the awesome open source cms and README checks +-- http://www.irvineunderground.org +-- +-- This file is released under the Nmap license; see: +-- https://nmap.org/book/man-legal.html +-- +-- @args http-fingerprints.nikto-db-path Looks at the given path for nikto database. +-- The database is expected to be a CSV file structured as nikto "db_tests". +-- It then converts the records in nikto's database into our Lua table format +-- and adds them to our current fingerprints if they don't exist already. +-- Unfortunately, our current implementation has some limitations: +-- * It doesn't support records with more than one 'dontmatch' patterns for +-- a probe. +-- * It doesn't support logical AND for the 'match' patterns. +-- * It doesn't support sending additional headers for a probe. +-- That means, if a nikto fingerprint needs one of the above features, it +-- won't be loaded. At the time of writing this, 6546 out of the 6573 Nikto +-- fingerprints are being loaded successfully. This runtime Nikto fingerprint integration was suggested by Nikto co-author Chris Sullo as described at http://seclists.org/nmap-dev/2013/q4/292 +-- +-- Although this format was originally modeled after the Nikto format, that ended +-- up being too restrictive. The current format is a simple Lua table. There are many +-- advantages to this technique; it's powerful, we don't need to write custom parsing +-- code, anybody who codes in Lua can easily add checks, and we can write converters +-- to read Nikto and other formats if we want to. +-- +-- The 'fingerprints' table is the key. It's an array of checks that will be run in the +-- order they're given. Each check consists of a path, zero or more matches, output text, +-- and other optional fields. Here are all the currently defined fields: +-- +-- fingerprint.probes +-- A list of one or more probes to send to the server. Each probe is either a table containing +-- the key 'path' (and potentially others), or it's a string indicating the path. +-- +-- fingerprint.probes[i].path +-- The URI to check, optionally containing GET arguments. This should start with a '/' +-- and, if it's a directory, end with a '/'. +-- +-- fingerprint.probes[i].method [optional; default: 'GET'}}] +-- The HTTP method to use when making requests ('GET'}}, 'POST', 'HEAD', 'PUT', 'DELETE', etc +-- +-- fingerprint.probes[i].nopipeline [optional; default: false] +-- Do not use HTTP pipelining to send this request. +-- +-- fingerprint.probes[i].options [optional] +-- An options table as defined in http.lua. Can be used to provide POST data or +-- override defaults. Note that when HTTP pipelining is used, not all of these +-- options will be used. +-- +-- fingerprint.ignore_404 [optional; default: false] +-- If set, the automatic checks for 404 and custom 404 pages are disabled for that check. +-- Every page will be included unless fingerprint.matches.dontmatch excludes it. +-- +-- fingerprint.severity [optional; default: 1] +-- Give a severity rating, if it's a vulnerability. The scale is: +-- 1 - Info +-- 2 - Low priority +-- 3 - Warning +-- 4 - Critical +-- +-- fingerprint.matches +-- An array of tables, each of which contains three fields. These will be checked, starting +-- from the first, until one is matched. If there is no 'match' text, it will fire as long +-- as the result isn't a 404. This match is not case sensitive. +-- +-- fingerprint.matches[i].match +-- A string (specifically, a Lua pattern) that has to be found somewhere in the output to +-- count as a match. The string can be in the status line, in a header, or in the body. +-- In addition to matching, this field can contain captures that'll be included in the +-- output. See: http://lua-users.org/wiki/PatternsTutorial +-- +-- fingerprint.matches[i].dontmatch +-- A string (specifically, a lua pattern) that cannot be found somewhere in the output. +-- This takes precedence over any text matched in the 'match' field +-- +-- fingerprint.matches[i].output +-- The text to output if this match happens. If the 'match' field contains captures, these +-- captures can be used with \1, \2, etc. +-- +-- If you have any questions, feel free to email dev@nmap.org or contact Ron Bowes! +-- +-- CHANGELOG: +-- Added 120 new signatures taken from exploit-db.com archives from July 2009 to July 2011 [Paulino Calderon] +-- Added the option to read nikto's database and make use of its fingerprints. [George Chatzisofroniou] +-- + +fingerprints = {}; + +------------------------------------------------ +---- GENERAL CHECKS ---- +------------------------------------------------ +-- These are checks for generic paths, like /wiki, /images, /admin, etc + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/', + method = 'GET' + } + }, + matches = { + { + match = '<title>Index of .*(Apache.*) Server at', + output = 'Root directory w/ listing on \'\\1\'' + }, + { + match = '<title>Index of', + output = 'Root directory w/ directory listing' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/blog/', + method = 'HEAD' + }, + { + path = '/weblog/', + method = 'HEAD' + }, + { + path = '/weblogs/', + method = 'HEAD' + }, + { + path = '/wordpress/', + method = 'HEAD' + } + }, + matches = { + { + output = 'Blog' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/wiki/', + method = 'HEAD' + }, + { + path = '/mediawiki/', + method = 'HEAD' + }, + { + path = '/wiki/Main_Page', + method = 'HEAD' + } + }, + matches = { + { + output = 'Wiki' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/tikiwiki/', + method = 'HEAD' + } + }, + matches = { + { + output = 'Tikiwiki' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/mj_wwwusr', + method = 'HEAD' + }, + { + path = '/majordomo/mj_wwwusr', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Majordomo2 Mailing List' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/j2ee/examples/servlets/', + method = 'HEAD' + }, + { + path = '/j2ee/examples/jsp/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Oracle j2ee examples' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/dsc/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Trend Micro Data Loss Prevention Virtual Appliance' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/reg_1.htm', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Polycom IP phone' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/adr.htm', + method = 'HEAD' + }, + { + path = '/line_login.htm?l=1', + method = 'HEAD' + }, + { + path = '/tbook.csv', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Snom IP Phone' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/globalSIPsettings.html', + method = 'HEAD' + }, + { + path = '/SIPsettingsLine1.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Aastra IP Phone' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/websvn/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'WEBSVN Repository' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/repos/', + method = 'GET' + }, + { + path = '/repo/', + method = 'GET' + }, + { + path = '/svn/', + method = 'GET' + }, + { + path = '/cvs/', + method = 'GET' + } + }, + matches = { + { + match = 'realm=".-Subversion.-"', + output = 'Subversion Repository' + }, + { + match = '', + output = 'Possible code repository' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/archiva/index.action', + method = 'GET' + }, + { + path = '/index.action', + method = 'GET' + } + }, + matches = { + { + match = '.*">Apache Archiva (.-)</a>', + output = 'Apache Archiva version \\1' + }, + { + match = 'Apache Archiva (%d-%..-)\n', + output = 'Apache Archiva version \\1' + }, + { + match = '<title>Apache Archiva \\', + output = 'Apache Archiva' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/login.stm', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Belkin G Wireless Router' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/tools_admin.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'D-Link DIR-300' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/bsc_lan.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'D-Link DIR-300, DIR-320, DIR-615 revD' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/Manage.tri', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Linksys WRT54G2' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/logo_t.gif', + method = 'HEAD' + } + }, + matches = { + { + match = 'IP_SHARER WEB', + output = 'Belkin/Arris 2307' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '//system.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CMNC-200 IP Camera' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/main_configure.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Intellinet IP Camera' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/OvCgi/Toolbar.exe', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'HP OpenView Network Node Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/frontend/x3/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CPanel' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/awstatstotals/awstatstotals.php', + method = 'HEAD' + }, + { + path = '/awstats/awstatstotals.php', + method = 'HEAD' + }, + { + path = '/awstatstotals.php', + method = 'HEAD' + }, + { + path = '/awstats/index.php', + method = 'HEAD' + }, + { + path = '/awstatstotals/index.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'AWStats Totals' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/egroupware/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'eGroupware' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/calendar/cal_search.php', + method = 'HEAD' + }, + { + path = '/cal_search.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ExtCalendar' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/a_viewusers.php', + method = 'HEAD' + }, + { + path = '/aphpkb/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Andys PHP Knowledgebase' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/webedition/we/include/we_modules/', + method = 'HEAD' + }, + { + path = '/webedition/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Web Edition' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/Examples/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Possible documentation files' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/LightNEasy.php?do=login', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'LightNEasy' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/channel_detail.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'DzTube' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/vcs', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Mitel Audio and Web Conferencing (AWC)' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/ocsreports/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'OCS Inventory' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/vbseo.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'vBSEO' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/forum/', + method = 'HEAD' + }, + { + path = '/forums/', + method = 'HEAD' + }, + { + path = '/smf/', + method = 'HEAD' + }, + { + path = '/phpbb/', + method = 'HEAD' + } + }, + matches = { + { + output = 'Forum' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/manager/', + method = 'HEAD' + }, + { + path = '/admin.php', + method = 'HEAD' + }, + { + path = '/admin/', + method = 'HEAD' + }, + { + path = '/admin/admin/', + method = 'HEAD' + }, + { + path = '/administrator/', + method = 'HEAD' + }, + { + path = '/moderator/', + method = 'HEAD' + }, + { + path = '/webadmin/', + method = 'HEAD' + }, + { + path = '/adminarea/', + method = 'HEAD' + }, + { + path = '/bb-admin/', + method = 'HEAD' + }, + { + path = '/adminLogin/', + method = 'HEAD' + }, + { + path = '/admin_area/', + method = 'HEAD' + }, + { + path = '/panel-administracion/', + method = 'HEAD' + }, + { + path = '/instadmin/', + method = 'HEAD' + }, + { + path = '/memberadmin/', + method = 'HEAD' + }, + { + path = '/administratorlogin/', + method = 'HEAD' + }, + { + path = '/adm/', + method = 'HEAD' + }, + { + path = '/admin/account.php', + method = 'HEAD' + }, + { + path = '/admin/index.php', + method = 'HEAD' + }, + { + path = '/admin/login.php', + method = 'HEAD' + }, + { + path = '/admin/admin.php', + method = 'HEAD' + }, + { + path = '/joomla/administrator', + method = 'HEAD' + }, + { + path = '/login.php', + method = 'HEAD' + }, + { + path = '/admin_area/admin.php', + method = 'HEAD' + }, + { + path = '/admin_area/login.php', + method = 'HEAD' + }, + { + path = '/siteadmin/login.php', + method = 'HEAD' + }, + { + path = '/siteadmin/index.php', + method = 'HEAD' + }, + { + path = '/siteadmin/login.html', + method = 'HEAD' + }, + { + path = '/admin/index.html', + method = 'HEAD' + }, + { + path = '/admin/login.html', + method = 'HEAD' + }, + { + path = '/admin/admin.html', + method = 'HEAD' + }, + { + path = '/admin_area/index.php', + method = 'HEAD' + }, + { + path = '/bb-admin/index.php', + method = 'HEAD' + }, + { + path = '/bb-admin/login.php', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.php', + method = 'HEAD' + }, + { + path = '/admin/home.php', + method = 'HEAD' + }, + { + path = '/admin_area/login.html', + method = 'HEAD' + }, + { + path = '/admin_area/index.html', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.php', + method = 'HEAD' + }, + { + path = '/admincp/', + method = 'HEAD' + }, + { + path = '/admincp/index.asp', + method = 'HEAD' + }, + { + path = '/admincp/index.html', + method = 'HEAD' + }, + { + path = '/admincp/login.php', + method = 'HEAD' + }, + { + path = '/admin/account.html', + method = 'HEAD' + }, + { + path = '/adminpanel.html', + method = 'HEAD' + }, + { + path = '/webadmin.html', + method = 'HEAD' + }, + { + path = '/webadmin/index.html', + method = 'HEAD' + }, + { + path = '/webadmin/admin.html', + method = 'HEAD' + }, + { + path = '/webadmin/login.html', + method = 'HEAD' + }, + { + path = '/admin/admin_login.html', + method = 'HEAD' + }, + { + path = '/admin_login.html', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.html', + method = 'HEAD' + }, + { + path = '/admin/cp.php', + method = 'HEAD' + }, + { + path = '/cp.php', + method = 'HEAD' + }, + { + path = '/administrator/index.php', + method = 'HEAD' + }, + { + path = '/administrator/login.php', + method = 'HEAD' + }, + { + path = '/nsw/admin/login.php', + method = 'HEAD' + }, + { + path = '/webadmin/login.php', + method = 'HEAD' + }, + { + path = '/admin/admin_login.php', + method = 'HEAD' + }, + { + path = '/admin_login.php', + method = 'HEAD' + }, + { + path = '/administrator/account.php', + method = 'HEAD' + }, + { + path = '/administrator.php', + method = 'HEAD' + }, + { + path = '/admin_area/admin.html', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.php', + method = 'HEAD' + }, + { + path = '/admin/admin-login.php', + method = 'HEAD' + }, + { + path = '/admin-login.php', + method = 'HEAD' + }, + { + path = '/bb-admin/index.html', + method = 'HEAD' + }, + { + path = '/bb-admin/login.html', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.html', + method = 'HEAD' + }, + { + path = '/admin/home.html', + method = 'HEAD' + }, + { + path = '/modelsearch/login.php', + method = 'HEAD' + }, + { + path = '/moderator.php', + method = 'HEAD' + }, + { + path = '/moderator/login.php', + method = 'HEAD' + }, + { + path = '/moderator/admin.php', + method = 'HEAD' + }, + { + path = '/account.php', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.html', + method = 'HEAD' + }, + { + path = '/admin/admin-login.html', + method = 'HEAD' + }, + { + path = '/admin-login.html', + method = 'HEAD' + }, + { + path = '/controlpanel.php', + method = 'HEAD' + }, + { + path = '/admincontrol.php', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.html', + method = 'HEAD' + }, + { + path = '/adminLogin.html', + method = 'HEAD' + }, + { + path = '/home.html', + method = 'HEAD' + }, + { + path = '/rcjakar/admin/login.php', + method = 'HEAD' + }, + { + path = '/adminarea/index.html', + method = 'HEAD' + }, + { + path = '/adminarea/admin.html', + method = 'HEAD' + }, + { + path = '/webadmin.php', + method = 'HEAD' + }, + { + path = '/webadmin/index.php', + method = 'HEAD' + }, + { + path = '/webadmin/admin.php', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.html', + method = 'HEAD' + }, + { + path = '/admin.html', + method = 'HEAD' + }, + { + path = '/admin/cp.html', + method = 'HEAD' + }, + { + path = '/cp.html', + method = 'HEAD' + }, + { + path = '/adminpanel.php', + method = 'HEAD' + }, + { + path = '/moderator.html', + method = 'HEAD' + }, + { + path = '/administrator/index.html', + method = 'HEAD' + }, + { + path = '/administrator/login.html', + method = 'HEAD' + }, + { + path = '/user.html', + method = 'HEAD' + }, + { + path = '/administrator/account.html', + method = 'HEAD' + }, + { + path = '/administrator.html', + method = 'HEAD' + }, + { + path = '/login.html', + method = 'HEAD' + }, + { + path = '/modelsearch/login.html', + method = 'HEAD' + }, + { + path = '/moderator/login.html', + method = 'HEAD' + }, + { + path = '/adminarea/login.html', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.html', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.html', + method = 'HEAD' + }, + { + path = '/modelsearch/index.html', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.html', + method = 'HEAD' + }, + { + path = '/admincontrol/login.html', + method = 'HEAD' + }, + { + path = '/adm/index.html', + method = 'HEAD' + }, + { + path = '/adm.html', + method = 'HEAD' + }, + { + path = '/moderator/admin.html', + method = 'HEAD' + }, + { + path = '/user.php', + method = 'HEAD' + }, + { + path = '/account.html', + method = 'HEAD' + }, + { + path = '/controlpanel.html', + method = 'HEAD' + }, + { + path = '/admincontrol.html', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.php', + method = 'HEAD' + }, + { + path = '/wp-login.php', + method = 'HEAD' + }, + { + path = '/wp-json', + method = 'HEAD' + }, + { + path = '/adminLogin.php', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.php', + method = 'HEAD' + }, + { + path = '/adminarea/index.php', + method = 'HEAD' + }, + { + path = '/adminarea/admin.php', + method = 'HEAD' + }, + { + path = '/adminarea/login.php', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.php', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.php', + method = 'HEAD' + }, + { + path = '/modelsearch/index.php', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.php', + method = 'HEAD' + }, + { + path = '/admincontrol/login.php', + method = 'HEAD' + }, + { + path = '/adm/admloginuser.php', + method = 'HEAD' + }, + { + path = '/admloginuser.php', + method = 'HEAD' + }, + { + path = '/admin2.php', + method = 'HEAD' + }, + { + path = '/admin2/login.php', + method = 'HEAD' + }, + { + path = '/admin2/index.php', + method = 'HEAD' + }, + { + path = '/adm/index.php', + method = 'HEAD' + }, + { + path = '/adm.php', + method = 'HEAD' + }, + { + path = '/affiliate.php', + method = 'HEAD' + }, + { + path = '/adm_auth.php', + method = 'HEAD' + }, + { + path = '/memberadmin.php', + method = 'HEAD' + }, + { + path = '/administratorlogin.php', + method = 'HEAD' + }, + { + path = '/account.cfm', + method = 'HEAD' + }, + { + path = '/admin/account.cfm', + method = 'HEAD' + }, + { + path = '/admin/index.cfm', + method = 'HEAD' + }, + { + path = '/admin/login.cfm', + method = 'HEAD' + }, + { + path = '/admin/admin.cfm', + method = 'HEAD' + }, + { + path = '/admin.cfm', + method = 'HEAD' + }, + { + path = '/admin/admin_login.cfm', + method = 'HEAD' + }, + { + path = '/admin_login.cfm', + method = 'HEAD' + }, + { + path = '/adminpanel.cfm', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.cfm', + method = 'HEAD' + }, + { + path = '/admincontrol.cfm', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.cfm', + method = 'HEAD' + }, + { + path = '/admin/cp.cfm', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.cfm', + method = 'HEAD' + }, + { + path = '/admincp/index.cfm', + method = 'HEAD' + }, + { + path = '/admincp/login.cfm', + method = 'HEAD' + }, + { + path = '/admin_area/admin.cfm', + method = 'HEAD' + }, + { + path = '/admin_area/login.cfm', + method = 'HEAD' + }, + { + path = '/moderator/login.cfm', + method = 'HEAD' + }, + { + path = '/administrator/login.cfm', + method = 'HEAD' + }, + { + path = '/moderator.cfm', + method = 'HEAD' + }, + { + path = '/modelsearch/index.cfm', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.cfm', + method = 'HEAD' + }, + { + path = '/adm/admloginuser.cfm', + method = 'HEAD' + }, + { + path = '/adm.cfm', + method = 'HEAD' + }, + { + path = '/adm_auth.cfm', + method = 'HEAD' + }, + { + path = '/administratorlogin.cfm', + method = 'HEAD' + }, + { + path = '/webadmin.cfm', + method = 'HEAD' + }, + { + path = '/webadmin/index.cfm', + method = 'HEAD' + }, + { + path = '/modelsearch/login.cfm', + method = 'HEAD' + }, + { + path = '/login.cfm', + method = 'HEAD' + }, + { + path = '/administrator.cfm', + method = 'HEAD' + }, + { + path = '/administrator/account.cfm', + method = 'HEAD' + }, + { + path = '/adminLogin.cfm', + method = 'HEAD' + }, + { + path = '/siteadmin/login.cfm', + method = 'HEAD' + }, + { + path = '/admin2/index.cfm', + method = 'HEAD' + }, + { + path = '/adm/index.cfm', + method = 'HEAD' + }, + { + path = '/admin_area/index.cfm', + method = 'HEAD' + }, + { + path = '/bb-admin/index.cfm', + method = 'HEAD' + }, + { + path = '/bb-admin/login.cfm', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.cfm', + method = 'HEAD' + }, + { + path = '/siteadmin/index.cfm', + method = 'HEAD' + }, + { + path = '/memberadmin.cfm', + method = 'HEAD' + }, + { + path = '/admin2/login.cfm', + method = 'HEAD' + }, + { + path = '/admloginuser.cfm', + method = 'HEAD' + }, + { + path = '/admincontrol/login.cfm', + method = 'HEAD' + }, + { + path = '/administrator/index.cfm', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.cfm', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.cfm', + method = 'HEAD' + }, + { + path = '/adminarea/login.cfm', + method = 'HEAD' + }, + { + path = '/adminarea/admin.cfm', + method = 'HEAD' + }, + { + path = '/adminarea/index.cfm', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.cfm', + method = 'HEAD' + }, + { + path = '/webadmin/login.cfm', + method = 'HEAD' + }, + { + path = '/webadmin/admin.cfm', + method = 'HEAD' + }, + { + path = '/user.cfm', + method = 'HEAD' + }, + { + path = '/controlpanel.cfm', + method = 'HEAD' + }, + { + path = '/moderator/admin.cfm', + method = 'HEAD' + }, + { + path = '/cp.cfm', + method = 'HEAD' + }, + { + path = '/admin-login.cfm', + method = 'HEAD' + }, + { + path = '/admin/admin-login.cfm', + method = 'HEAD' + }, + { + path = '/admin/home.cfm', + method = 'HEAD' + }, + { + path = '/adm1n/', + method = 'HEAD' + }, + { + path = '/4dm1n/', + method = 'HEAD' + }, + { + path = '/account.asp', + method = 'HEAD' + }, + { + path = '/admin/account.asp', + method = 'HEAD' + }, + { + path = '/admin/index.asp', + method = 'HEAD' + }, + { + path = '/admin/login.asp', + method = 'HEAD' + }, + { + path = '/admin/admin.asp', + method = 'HEAD' + }, + { + path = '/admin_area/admin.asp', + method = 'HEAD' + }, + { + path = '/admin_area/login.asp', + method = 'HEAD' + }, + { + path = '/admin_area/index.asp', + method = 'HEAD' + }, + { + path = '/bb-admin/index.asp', + method = 'HEAD' + }, + { + path = '/bb-admin/login.asp', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.asp', + method = 'HEAD' + }, + { + path = '/admin/home.asp', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.asp', + method = 'HEAD' + }, + { + path = '/admin.asp', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.asp', + method = 'HEAD' + }, + { + path = '/admin/admin-login.asp', + method = 'HEAD' + }, + { + path = '/admin-login.asp', + method = 'HEAD' + }, + { + path = '/admin/cp.asp', + method = 'HEAD' + }, + { + path = '/cp.asp', + method = 'HEAD' + }, + { + path = '/administrator/account.asp', + method = 'HEAD' + }, + { + path = '/administrator.asp', + method = 'HEAD' + }, + { + path = '/login.asp', + method = 'HEAD' + }, + { + path = '/modelsearch/login.asp', + method = 'HEAD' + }, + { + path = '/moderator.asp', + method = 'HEAD' + }, + { + path = '/moderator/login.asp', + method = 'HEAD' + }, + { + path = '/administrator/login.asp', + method = 'HEAD' + }, + { + path = '/moderator/admin.asp', + method = 'HEAD' + }, + { + path = '/controlpanel.asp', + method = 'HEAD' + }, + { + path = '/user.asp', + method = 'HEAD' + }, + { + path = '/admincp/login.asp', + method = 'HEAD' + }, + { + path = '/admincontrol.asp', + method = 'HEAD' + }, + { + path = '/adminpanel.asp', + method = 'HEAD' + }, + { + path = '/webadmin.asp', + method = 'HEAD' + }, + { + path = '/webadmin/index.asp', + method = 'HEAD' + }, + { + path = '/webadmin/admin.asp', + method = 'HEAD' + }, + { + path = '/webadmin/login.asp', + method = 'HEAD' + }, + { + path = '/admin/admin_login.asp', + method = 'HEAD' + }, + { + path = '/admin_login.asp', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.asp', + method = 'HEAD' + }, + { + path = '/adminLogin.asp', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.asp', + method = 'HEAD' + }, + { + path = '/home.asp', + method = 'HEAD' + }, + { + path = '/adminarea/index.asp', + method = 'HEAD' + }, + { + path = '/adminarea/admin.asp', + method = 'HEAD' + }, + { + path = '/adminarea/login.asp', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.asp', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.asp', + method = 'HEAD' + }, + { + path = '/modelsearch/index.asp', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.asp', + method = 'HEAD' + }, + { + path = '/administrator/index.asp', + method = 'HEAD' + }, + { + path = '/admincontrol/login.asp', + method = 'HEAD' + }, + { + path = '/adm/admloginuser.asp', + method = 'HEAD' + }, + { + path = '/admloginuser.asp', + method = 'HEAD' + }, + { + path = '/admin2.asp', + method = 'HEAD' + }, + { + path = '/admin2/login.asp', + method = 'HEAD' + }, + { + path = '/admin2/index.asp', + method = 'HEAD' + }, + { + path = '/adm/index.asp', + method = 'HEAD' + }, + { + path = '/adm.asp', + method = 'HEAD' + }, + { + path = '/adm_auth.asp', + method = 'HEAD' + }, + { + path = '/memberadmin.asp', + method = 'HEAD' + }, + { + path = '/administratorlogin.asp', + method = 'HEAD' + }, + { + path = '/siteadmin/login.asp', + method = 'HEAD' + }, + { + path = '/siteadmin/index.asp', + method = 'HEAD' + }, + { + path = '/account.aspx', + method = 'HEAD' + }, + { + path = '/admin/account.aspx', + method = 'HEAD' + }, + { + path = '/admin/index.aspx', + method = 'HEAD' + }, + { + path = '/admin/login.aspx', + method = 'HEAD' + }, + { + path = '/admin/admin.aspx', + method = 'HEAD' + }, + { + path = '/admin_area/admin.aspx', + method = 'HEAD' + }, + { + path = '/admin_area/login.aspx', + method = 'HEAD' + }, + { + path = '/admin_area/index.aspx', + method = 'HEAD' + }, + { + path = '/bb-admin/index.aspx', + method = 'HEAD' + }, + { + path = '/bb-admin/login.aspx', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.aspx', + method = 'HEAD' + }, + { + path = '/admin/home.aspx', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.aspx', + method = 'HEAD' + }, + { + path = '/admin.aspx', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.aspx', + method = 'HEAD' + }, + { + path = '/admin/admin-login.aspx', + method = 'HEAD' + }, + { + path = '/admin-login.aspx', + method = 'HEAD' + }, + { + path = '/admin/cp.aspx', + method = 'HEAD' + }, + { + path = '/cp.aspx', + method = 'HEAD' + }, + { + path = '/administrator/account.aspx', + method = 'HEAD' + }, + { + path = '/administrator.aspx', + method = 'HEAD' + }, + { + path = '/login.aspx', + method = 'HEAD' + }, + { + path = '/modelsearch/login.aspx', + method = 'HEAD' + }, + { + path = '/moderator.aspx', + method = 'HEAD' + }, + { + path = '/moderator/login.aspx', + method = 'HEAD' + }, + { + path = '/administrator/login.aspx', + method = 'HEAD' + }, + { + path = '/moderator/admin.aspx', + method = 'HEAD' + }, + { + path = '/controlpanel.aspx', + method = 'HEAD' + }, + { + path = '/user.aspx', + method = 'HEAD' + }, + { + path = '/admincp/index.aspx', + method = 'HEAD' + }, + { + path = '/admincp/login.aspx', + method = 'HEAD' + }, + { + path = '/admincontrol.aspx', + method = 'HEAD' + }, + { + path = '/adminpanel.aspx', + method = 'HEAD' + }, + { + path = '/webadmin.aspx', + method = 'HEAD' + }, + { + path = '/webadmin/index.aspx', + method = 'HEAD' + }, + { + path = '/webadmin/admin.aspx', + method = 'HEAD' + }, + { + path = '/webadmin/login.aspx', + method = 'HEAD' + }, + { + path = '/admin/admin_login.aspx', + method = 'HEAD' + }, + { + path = '/admin_login.aspx', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.aspx', + method = 'HEAD' + }, + { + path = '/adminLogin.aspx', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.aspx', + method = 'HEAD' + }, + { + path = '/home.aspx', + method = 'HEAD' + }, + { + path = '/adminarea/index.aspx', + method = 'HEAD' + }, + { + path = '/adminarea/admin.aspx', + method = 'HEAD' + }, + { + path = '/adminarea/login.aspx', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.aspx', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.aspx', + method = 'HEAD' + }, + { + path = '/modelsearch/index.aspx', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.aspx', + method = 'HEAD' + }, + { + path = '/administrator/index.aspx', + method = 'HEAD' + }, + { + path = '/admincontrol/login.aspx', + method = 'HEAD' + }, + { + path = '/adm/admloginuser.aspx', + method = 'HEAD' + }, + { + path = '/admloginuser.aspx', + method = 'HEAD' + }, + { + path = '/admin2.aspx', + method = 'HEAD' + }, + { + path = '/admin2/login.aspx', + method = 'HEAD' + }, + { + path = '/admin2/index.aspx', + method = 'HEAD' + }, + { + path = '/adm/index.aspx', + method = 'HEAD' + }, + { + path = '/adm.aspx', + method = 'HEAD' + }, + { + path = '/adm_auth.aspx', + method = 'HEAD' + }, + { + path = '/memberadmin.aspx', + method = 'HEAD' + }, + { + path = '/administratorlogin.aspx', + method = 'HEAD' + }, + { + path = '/siteadmin/login.aspx', + method = 'HEAD' + }, + { + path = '/siteadmin/index.aspx', + method = 'HEAD' + }, + { + path = '/account.jsp', + method = 'HEAD' + }, + { + path = '/admin/index.jsp', + method = 'HEAD' + }, + { + path = '/admin/login.jsp', + method = 'HEAD' + }, + { + path = '/admin/admin.jsp', + method = 'HEAD' + }, + { + path = '/admin_area/admin.jsp', + method = 'HEAD' + }, + { + path = '/admin_area/login.jsp', + method = 'HEAD' + }, + { + path = '/admin_area/index.jsp', + method = 'HEAD' + }, + { + path = '/bb-admin/index.jsp', + method = 'HEAD' + }, + { + path = '/bb-admin/login.jsp', + method = 'HEAD' + }, + { + path = '/bb-admin/admin.jsp', + method = 'HEAD' + }, + { + path = '/admin/home.jsp', + method = 'HEAD' + }, + { + path = '/admin/controlpanel.jsp', + method = 'HEAD' + }, + { + path = '/admin.jsp', + method = 'HEAD' + }, + { + path = '/pages/admin/admin-login.jsp', + method = 'HEAD' + }, + { + path = '/admin/admin-login.jsp', + method = 'HEAD' + }, + { + path = '/admin-login.jsp', + method = 'HEAD' + }, + { + path = '/admin/cp.jsp', + method = 'HEAD' + }, + { + path = '/cp.jsp', + method = 'HEAD' + }, + { + path = '/administrator/account.jsp', + method = 'HEAD' + }, + { + path = '/administrator.jsp', + method = 'HEAD' + }, + { + path = '/login.jsp', + method = 'HEAD' + }, + { + path = '/modelsearch/login.jsp', + method = 'HEAD' + }, + { + path = '/moderator.jsp', + method = 'HEAD' + }, + { + path = '/moderator/login.jsp', + method = 'HEAD' + }, + { + path = '/administrator/login.jsp', + method = 'HEAD' + }, + { + path = '/moderator/admin.jsp', + method = 'HEAD' + }, + { + path = '/controlpanel.jsp', + method = 'HEAD' + }, + { + path = '/user.jsp', + method = 'HEAD' + }, + { + path = '/admincp/index.jsp', + method = 'HEAD' + }, + { + path = '/admincp/login.jsp', + method = 'HEAD' + }, + { + path = '/admincontrol.jsp', + method = 'HEAD' + }, + { + path = '/admin/account.jsp', + method = 'HEAD' + }, + { + path = '/adminpanel.jsp', + method = 'HEAD' + }, + { + path = '/webadmin.jsp', + method = 'HEAD' + }, + { + path = '/webadmin/index.jsp', + method = 'HEAD' + }, + { + path = '/webadmin/admin.jsp', + method = 'HEAD' + }, + { + path = '/webadmin/login.jsp', + method = 'HEAD' + }, + { + path = '/admin/admin_login.jsp', + method = 'HEAD' + }, + { + path = '/admin_login.jsp', + method = 'HEAD' + }, + { + path = '/panel-administracion/login.jsp', + method = 'HEAD' + }, + { + path = '/adminLogin.jsp', + method = 'HEAD' + }, + { + path = '/admin/adminLogin.jsp', + method = 'HEAD' + }, + { + path = '/home.jsp', + method = 'HEAD' + }, + { + path = '/adminarea/index.jsp', + method = 'HEAD' + }, + { + path = '/adminarea/admin.jsp', + method = 'HEAD' + }, + { + path = '/adminarea/login.jsp', + method = 'HEAD' + }, + { + path = '/panel-administracion/index.jsp', + method = 'HEAD' + }, + { + path = '/panel-administracion/admin.jsp', + method = 'HEAD' + }, + { + path = '/modelsearch/index.jsp', + method = 'HEAD' + }, + { + path = '/modelsearch/admin.jsp', + method = 'HEAD' + }, + { + path = '/administrator/index.jsp', + method = 'HEAD' + }, + { + path = '/admincontrol/login.jsp', + method = 'HEAD' + }, + { + path = '/adm/admloginuser.jsp', + method = 'HEAD' + }, + { + path = '/admloginuser.jsp', + method = 'HEAD' + }, + { + path = '/admin2.jsp', + method = 'HEAD' + }, + { + path = '/admin2/login.jsp', + method = 'HEAD' + }, + { + path = '/admin2/index.jsp', + method = 'HEAD' + }, + { + path = '/adm/index.jsp', + method = 'HEAD' + }, + { + path = '/adm.jsp', + method = 'HEAD' + }, + { + path = '/adm_auth.jsp', + method = 'HEAD' + }, + { + path = '/memberadmin.jsp', + method = 'HEAD' + }, + { + path = '/administratorlogin.jsp', + method = 'HEAD' + }, + { + path = '/siteadmin/login.jsp', + method = 'HEAD' + }, + { + path = '/siteadmin/index.jsp', + method = 'HEAD' + }, + { + path = '/admin1.php', + method = 'HEAD' + }, + { + path = '/administr8.asp', + method = 'HEAD' + }, + { + path = '/administr8.php', + method = 'HEAD' + }, + { + path = '/administr8.jsp', + method = 'HEAD' + }, + { + path = '/administr8.aspx', + method = 'HEAD' + }, + { + path = '/administr8.cfm', + method = 'HEAD' + }, + { + path = '/administr8/', + method = 'HEAD' + }, + { + path = '/administer/', + method = 'HEAD' + }, + { + path = '/administracao.php', + method = 'HEAD' + }, + { + path = '/administracao.asp', + method = 'HEAD' + }, + { + path = '/administracao.aspx', + method = 'HEAD' + }, + { + path = '/administracao.cfm', + method = 'HEAD' + }, + { + path = '/administracao.jsp', + method = 'HEAD' + }, + { + path = '/administracion.php', + method = 'HEAD' + }, + { + path = '/administracion.asp', + method = 'HEAD' + }, + { + path = '/administracion.aspx', + method = 'HEAD' + }, + { + path = '/administracion.jsp', + method = 'HEAD' + }, + { + path = '/administracion.cfm', + method = 'HEAD' + }, + { + path = '/administrators/', + method = 'HEAD' + }, + { + path = '/adminpro/', + method = 'HEAD' + }, + { + path = '/admins/', + method = 'HEAD' + }, + { + path = '/admins.cfm', + method = 'HEAD' + }, + { + path = '/admins.php', + method = 'HEAD' + }, + { + path = '/admins.jsp', + method = 'HEAD' + }, + { + path = '/admins.asp', + method = 'HEAD' + }, + { + path = '/admins.aspx', + method = 'HEAD' + }, + { + path = '/maintenance/', + method = 'HEAD' + }, + { + path = '/Lotus_Domino_Admin/', + method = 'HEAD' + }, + { + path = '/hpwebjetadmin/', + method = 'HEAD' + }, + { + path = '/_admin/', + method = 'HEAD' + }, + { + path = '/_administrator/', + method = 'HEAD' + }, + { + path = '/_administrador/', + method = 'HEAD' + }, + { + path = '/_admins/', + method = 'HEAD' + }, + { + path = '/_administrators/', + method = 'HEAD' + }, + { + path = '/_administradores/', + method = 'HEAD' + }, + { + path = '/_administracion/', + method = 'HEAD' + }, + { + path = '/_4dm1n/', + method = 'HEAD' + }, + { + path = '/_adm1n/', + method = 'HEAD' + }, + { + path = '/_Admin/', + method = 'HEAD' + }, + { + path = '/system_administration/', + method = 'HEAD' + }, + { + path = '/system-administration/', + method = 'HEAD' + }, + { + path = '/system-admin/', + method = 'HEAD' + }, + { + path = '/system-admins/', + method = 'HEAD' + }, + { + path = '/system-administrators/', + method = 'HEAD' + }, + { + path = '/administracion-sistema/', + method = 'HEAD' + }, + { + path = '/Administracion/', + method = 'HEAD' + }, + { + path = '/Admin/', + method = 'HEAD' + }, + { + path = '/Administrator/', + method = 'HEAD' + }, + { + path = '/Manager/', + method = 'HEAD' + }, + { + path = '/Adm/', + method = 'HEAD' + }, + { + path = '/systemadmin/', + method = 'HEAD' + }, + { + path = '/AdminLogin.asp', + method = 'HEAD' + }, + { + path = '/AdminLogin.php', + method = 'HEAD' + }, + { + path = '/AdminLogin.jsp', + method = 'HEAD' + }, + { + path = '/AdminLogin.aspx', + method = 'HEAD' + }, + { + path = '/AdminLogin.cfm', + method = 'HEAD' + }, + { + path = '/admin108/', + method = 'HEAD' + }, + { + path = '/pec_admin/', + method = 'HEAD' + }, + { + path = '/system/admin/', + method = 'HEAD' + }, + { + path = '/plog-admin/', + method = 'HEAD' + }, + { + path = '/ESAdmin/', + method = 'HEAD' + }, + { + path = '/axis2-admin/', + method = 'HEAD' + }, + { + path = '/_sys/', + method = 'HEAD' + }, + { + path = '/admin_cp.asp', + method = 'HEAD' + }, + { + path = '/sitecore/admin/', + method = 'HEAD' + }, + { + path = '/sitecore/login/admin/', + method = 'HEAD' + } + }, + matches = { + { + match = '<title>Index of', + output = 'Possible admin folder w/ directory listing' + }, + { + output = 'Possible admin folder' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/backup/', + method = 'GET' + }, + { + path = '/backup', + method = 'GET' + }, + { + path = '/backup.sql', + method = 'GET' + }, + { + path = '/backup.sql.gz', + method = 'GET' + }, + { + path = '/backup.sql.bz2', + method = 'GET' + }, + { + path = '/backup.zip', + method = 'GET' + }, + { + path = '/backups/', + method = 'GET' + }, + { + path = '/bak/', + method = 'GET' + }, + { + path = '/back/', + method = 'GET' + }, + { + path = '/cache/backup/', + method = 'GET' + }, + { + path = '/admin/backup/', + method = 'GET' + }, + { + path = '/dbbackup.txt', + method = 'GET' + } + }, + matches = { + { + match = '<title>Index of', + output = 'Backup folder w/ directory listing' + }, + { + match = '', + output = 'Possible backup' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/b.sql', + method = 'HEAD' + }, + { + path = '/db.sql', + method = 'HEAD' + }, + { + path = '/ddb.sql', + method = 'HEAD' + }, + { + path = '/users.sql', + method = 'HEAD' + }, + { + path = '/database.sql', + method = 'HEAD' + }, + { + path = '/mysql.sql', + method = 'HEAD' + }, + { + path = '/dump.sql', + method = 'HEAD' + }, + { + path = '/respaldo.sql', + method = 'HEAD' + }, + { + path = '/data.sql', + method = 'HEAD' + }, + { + path = '/old.sql', + method = 'HEAD' + }, + { + path = '/usuarios.sql', + method = 'HEAD' + }, + { + path = '/bdb.sql', + method = 'HEAD' + }, + { + path = '/1.sql', + method = 'HEAD' + }, + { + path = '/admin/download/backup.sql', + method = 'HEAD' + } + + }, + matches = { + { + match = '', + output = 'Possible database backup' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/clientaccesspolicy.xml', + method = 'HEAD' + }, + }, + matches = { + { + output = 'Microsoft Silverlight crossdomain policy' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/atom/', + method = 'HEAD' + }, + { + path = '/atom.aspx', + method = 'HEAD' + }, + { + path = '/atom.php', + method = 'HEAD' + }, + { + path = '/atom.xml', + method = 'HEAD' + }, + { + path = '/atom.jsp', + method = 'HEAD' + }, + { + path = '/rss/', + method = 'HEAD' + }, + { + path = '/rss.aspx', + method = 'HEAD' + }, + { + path = '/rss.php', + method = 'HEAD' + }, + { + path = '/rss.xml', + method = 'HEAD' + }, + { + path = '/rss.jsp', + method = 'HEAD' + } + }, + matches = { + { + output = 'RSS or Atom feed' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/etc/passwd', + method = 'GET' + }, + { + path = '/boot.ini', + method = 'GET' + } + }, + matches = { + { + match = 'root:', + output = 'Webroot appears to be in / (Linux)' + }, + { + match = 'boot loader', + output = 'Webroot appears to be in c:\\ (Windows)' + }, + { + match = '', + output = 'Webroot might be in root folder' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/example/', + method = 'GET' + }, + { + path = '/examples/', + method = 'GET' + }, + { + path = '/iissamples/', + method = 'GET' + }, + { + path = '/j2eeexamples/', + method = 'GET' + }, + { + path = '/j2eeexamplesjsp/', + method = 'GET' + }, + { + path = '/sample/', + method = 'GET' + }, + { + path = '/ncsample/', + method = 'GET' + }, + { + path = '/fpsample/', + method = 'GET' + }, + { + path = '/cmsample/', + method = 'GET' + }, + { + path = '/samples/', + method = 'GET' + }, + { + path = '/mono/1.1/index.aspx', + method = 'GET' + } + }, + matches = { + { + match = '<title>Index of .*(Apache.*) Server at', + output = 'Sample scripts w/ listing on \'\\1\'' + }, + { + match = '<title>Index of', + output = 'Sample scripts w/ directory listing' + }, + { + match = '', + output = 'Sample scripts' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/login/', + method = 'HEAD' + }, + { + path = '/login.htm', + method = 'HEAD' + }, + { + path = '/login.jsp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Login page' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/test.asp', + method = 'HEAD' + }, + { + path = '/test.class', + method = 'HEAD' + }, + { + path = '/test/', + method = 'HEAD' + }, + { + path = '/test.htm', + method = 'HEAD' + }, + { + path = '/test.html', + method = 'HEAD' + }, + { + path = '/test.php', + method = 'HEAD' + }, + { + path = '/test.txt', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Test page' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/webmail/', + method = 'HEAD' + }, + { + path = '/mail/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Mail folder' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/log/', + method = 'HEAD' + }, + { + path = '/log.htm', + method = 'HEAD' + }, + { + path = '/log.php', + method = 'HEAD' + }, + { + path = '/log.asp', + method = 'HEAD' + }, + { + path = '/log.aspx', + method = 'HEAD' + }, + { + path = '/log.jsp', + method = 'HEAD' + }, + { + path = '/logs/', + method = 'HEAD' + }, + { + path = '/logs.htm', + method = 'HEAD' + }, + { + path = '/logs.php', + method = 'HEAD' + }, + { + path = '/logs.asp', + method = 'HEAD' + }, + { + path = '/logs.aspx', + method = 'HEAD' + }, + { + path = '/logs.jsp', + method = 'HEAD' + }, + { + path = '/wwwlog/', + method = 'HEAD' + }, + { + path = '/wwwlogs/', + method = 'HEAD' + }, + { + path = '/mail_log_files/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Logs' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/images/rails.png', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Ruby on Rails' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/mono/', + method = 'HEAD' + }, + }, + + matches = { + { + match = '', + output = 'Mono' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/robots.txt', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Robots file' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/crossdomain.xml', + method = 'HEAD' + }, + }, + matches = { + { + output = 'Adobe Flash crossdomain policy' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/css/cake.generic.css', + method = 'HEAD' + }, + { + path = '/img/cake.icon.gif', + method = 'HEAD' + }, + { + path = '/img/cake.icon.png', + method = 'HEAD' + }, + { + path = '/js/vendors.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CakePHP application' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/ffileman.cgi?', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Ffileman Web File Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/fshow.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Horizon Web App' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/admin/upload.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Admin File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/upload_multiple_js.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'NAS Uploader' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/uploadtester.asp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Free ASP Upload Shell' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/info.php', + method = 'HEAD' + }, + { + path = '/phpinfo.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Possible information file' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/kusabax/manage_page.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Kusabax Image Board' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/plus/lurking.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'phpMyChat Plus' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/adm/barra/assetmanager/assetmanager.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = '360 Web Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/eyeos/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Possible eyeOS installation' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/NETWARE.HTM', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Planet FPS-1101' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/setup.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Linksys Cisco Wag120n or similar' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/debug.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Linksys WRT54G' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/ehcp/?op=applyforftpaccount', + method = 'HEAD' + }, + { + path = '/ehcp/?op=applyforaccount', + method = 'HEAD' + }, + { + path = '/ehcp/?op=applyfordomainaccount', + method = 'HEAD' + }, + { + path = '/vhosts/ehcp/?op=applyforftpaccount', + method = 'HEAD' + }, + { + path = '/vhosts/ehcp/?op=applyforaccount', + method = 'HEAD' + }, + { + path = '/vhosts/ehcp/?op=applyfordomainaccount', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Easy Hosting Control Panel' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/tools_admin.cgi?', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'D-Link WBR-1310' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/level/15', + method = 'HEAD' + }, + { + path = '/exec/show/log/CR', + method = 'HEAD' + }, + { + path = '/level/15/exec/-/configure/http', + method = 'HEAD' + }, + { + path = '/level/15/exec/-', + method = 'HEAD' + } + }, + matches = { + { + match = 'cisco-IOS', + output = 'Cisco 2811' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/appServer/jvmReport.jsf?instanceName=server&pageTitle=JVM%20Report', + method = 'HEAD' + }, + { + path = '/common/appServer/jvmReport.jsf?pageTitle=JVM%20Report', + method = 'HEAD' + }, + { + path = '/common/appServer/jvmReport.jsf?reportType=summary&instanceName=server', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Oracle GlashFish Server Information' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/console/login/loginForm.jsp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Oracle WebLogic Server Administration Console' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/login_img.jpg', + method = 'HEAD' + } + }, + matches = { + { + match = 'RapidLogic', + output = 'AIRAYA WirelessGRID' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cirronetlogo.gif', + method = 'HEAD' + } + }, + matches = { + { + match = 'Cirronet Wavebolt-AP', + output = 'Cirronet Wavebolt' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/browserId/wizardForm.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/forms/callback.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/forms/callbackICM.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/agent/AgentFrame.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/agent/default/badlogin.jhtml', + method = 'HEAD' + }, + { + path = '/callme/callForm.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/multichatui/nowDefunctWindow.jhtml', + method = 'HEAD' + }, + { + path = '/browserId/wizard.jhtml', + method = 'HEAD' + }, + { + path = '/admin/CiscoAdmin.jhtml', + method = 'HEAD' + }, + { + path = '/msccallme/mscCallForm.jhtml', + method = 'HEAD' + }, + { + path = '/webline/html/admin/wcs/LoginPage.jhtml', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Cisco Collaboration Server' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/restoreinfo.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Sagem router' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/confirminvite.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'phpMyBitTorrent' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/sourcebans/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'SourceBans - Steam server application' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/swfupload/index.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'SWFUpload' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/mymarket/shopping/index.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'MyMarket' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/myshop_start.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'FozzCom shopping' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/piranha/secure/passwd.php3', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'RedHat Piranha Virtual Server' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/ck/mimencode', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ContentKeeper Web Appliance' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/masterCGI?', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Alcatel-Lucent OmniPCX Enterprise' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/tiny_mce/plugins/filemanager/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Tiny MCE File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/upload/scp/ajax.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'osTicket / AJAX File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-mod/view_help.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Barracuda Networks Spam & Virus Firewall' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-mod/index.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Barracuda Web Application Firewall' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-mod/smtp_test.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Barracuda IM Firewall' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/TopToolArea.html', + method = 'HEAD' + }, + { + path = '/switchSystem.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Alteon OS BBI (Nortell)' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/intruvert/jsp/module/Login.jsp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'McAfee Network Security Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/ajaxfilemanager/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'AJAX File Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/upload/data/settings.cdb', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CF Image Hosting DB' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/fm.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Simple File Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/nagios3/cgi-bin/statuswml.cgi', + method = 'HEAD' + }, + { + path = '/nagios3/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Nagios3' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/test/logon.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Jetty' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cal_cat.php', + method = 'HEAD' + }, + { + path = '/calendar/cal_cat.php', + method = 'HEAD' + }, + { + path = '/cal/cal_cat.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Calendarix' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/private/sdc.tgz', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'IBM Bladecenter Management Logs' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cacti/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Cacti Web Monitoring' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/cgi-bin/awstats.pl', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'AWStats' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/wiki/rankings.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Bit Weaver' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/reqdetails.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'BtiTracker' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/shared/help.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'OpenBiblio/WebBiblio Subject Gateway System' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/seti.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'PHP SETI@home' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/imc/', + method = 'HEAD' + }, + { + path = '/imcws/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = '3Com Intelligent Management Center' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/partymgr/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Apache OFBiz' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/Base/upload.php', + method = 'HEAD' + }, + { + path = '/Base/example_1.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'MassMirror Uploader' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/YUI-upload/html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'YUI Images / File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/tools/filemanager/skins/mobile/admin1.template.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ispCP Omega' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/Uploadify/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Uploadify' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/syssite/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ShopEx' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/updown.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'PHP Uploader Downloader' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/modules/docmanager/doctypetemplates/myuploadedfile', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Achievo' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/ReqWebHelp/advanced/workingSet.jsp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'IBM Rational RequisitePro/ReqWebHelp' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/dhost/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Novell eDirectory' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/engine/api/api.class.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'DatalifeEngine' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/jsft_resource.jsf', + method = 'HEAD' + }, + { + path = '/scales_static_resource.jsf', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'JSFTemplating/Mojarra Scales/GlassFish Application Server' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/setup/password_required.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = '2WIRE GATEWAY' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/zp-core/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Zen Photo' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/amember/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'aMember' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/.hgignore', + method = 'HEAD' + }, + { + path = '/.gitignore', + method = 'HEAD' + }, + { + path = '/.bzrignore', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Revision control ignore file' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/debug.seam', + method = 'GET' + } + }, + matches = { + { + match = 'JBoss Seam Debug Page', + output = 'JBoss Seam Debug Page' + } + } + }); + +------------------------------------------------ +---- SECURITY SOFTWARE ---- +------------------------------------------------ +-- These checks will find specific installed software. If possible, it will also +-- find versions, etc. + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/CSS/Miniweb.css', + method = 'GET' + } + }, + matches = { + { + match = 'ad_header_form_sprachauswahl', + output = 'SCADA Siemens SIMATIC S7' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/S7Web.css', + method = 'GET' + }, + { + path = '/Portal0000.htm', + method = 'GET' + } + }, + matches = { + { + match = '<td class="Title_Area_Name">(.-)</td>', + output = 'SCADA Siemens PCS7: \\1' + }, + { + match = '', + output = 'SCADA Siemens PCS7' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/arcsight/', + method = 'HEAD' + }, + { + path = '/arcsight/images/logo-login-arcsight.gif', + method = 'HEAD' + }, + { + path = '/arcsight/images/navbar-icon-logout-on.gif', + method = 'HEAD' + }, + { + path = '/images/logo-arcsight.gif', + method = 'HEAD' + }, + { + path = '/logger/monitor.ftl', + method = 'HEAD' + }, + }, + matches = { + { + output = 'Arcsight' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/beef/', + method = 'HEAD' + }, + { + path = '/BEEF/', + method = 'HEAD' + }, + { + path = '/beef/images/beef.gif', + method = 'HEAD' + } + }, + matches = { + { + output = 'BeEF Browser Exploitation Framework' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/gfx/form_top_left_corner.gif', + method = 'HEAD' + }, + { + path = '/gfx/logout_24.png', + method = 'HEAD' + }, + { + path = '/gfx/new_logo.gif', + method = 'HEAD' + }, + { + path = '/javascript/sorttable.js', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Secunia NSI' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/images/btn_help_nml.gif', + method = 'HEAD' + }, + { + path = '/images/hdr_icon_homeG.gif', + method = 'HEAD' + }, + { + path = '/spControl.php', + method = 'HEAD' + }, + { + path = '/images/isslogo.gif', + method = 'HEAD' + }, + { + path = '/deploymentmanager/', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'IBM Proventia' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/i18n/EN/css/foundstone.css', + method = 'HEAD' + }, + { + path = '/i18n/EN/images/external_nav_square.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Foundstone' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/officescan/console/html/cgi/cgiChkMasterPwd.exe', + method = 'HEAD' + }, + { + path = '/officescan/console/html/ClientInstall/officescannt.htm', + method = 'HEAD' + }, + { + path = '/officescan/console/html/images/icon_refresh.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Trend Micro OfficeScan Server' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/picts/BC_bwlogorev.gif', + method = 'HEAD' + }, + { + path = '/picts/menu_leaf.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'BlueCoat Reporter' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/theme/images/en/login1.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Fortinet VPN/Firewall' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/', + method = 'GET' + }, + }, + matches = { + { + match = 'id="NessusClient"', + output = 'Nessus' + }, + { + match = 'NessusClient.swf', + output = 'Nessus' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/NessusClient.swf', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Nessus' + } + } + }); + +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/dotDefender/', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'dotDefender Web Application Firewall' + } + } + }); + +-- http://www.rapid7.com/db/modules/payload/windows/meterpreter/reverse_hop_http +-- "GET /hop.php?/control" will grab all pending messages, but is unreliable if +-- there are no pending messages. +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/hop.php?/12345', + method = 'GET' + }, + }, + matches = { + { + -- TODO: this only works for Meterpreter payloads. Find a more generic means? + match = 'METERPRETER_TRANSPORT_HTTP', + output = 'Metasploit reverse_hop_http hop point' + }, + } + }); + +-- http://carnal0wnage.attackresearch.com/2015/02/cisco-asa-version-grabber-cve-2014-3398.html +table.insert(fingerprints, { + category = 'security', + probes = { + { + path = '/CSCOSSLC/config-auth', + method = 'GET' + }, + }, + matches = { + { + match = '<version who="sg">([^<]+)</version>', + output = 'Cisco ASA, firmware \\1' + }, + } + }); + +------------------------------------------------ +---- MANAGEMENT SOFTWARE ---- +------------------------------------------------ +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/actuator/', + method = 'GET' + }, + { + path = '/auditevents/', + method = 'GET' + }, + { + path = '/autoconfig/', + method = 'GET' + }, + { + path = '/beans/', + method = 'GET' + }, + { + path = '/configprops/', + method = 'GET' + }, + { + path = '/env/', + method = 'GET' + }, + { + path = '/flyway/', + method = 'GET' + }, + { + path = '/health/', + method = 'GET' + }, + { + path = '/healthcheck/', + method = 'GET' + }, + { + path = '/healthchecks/', + method = 'GET' + }, + { + path = '/loggers/', + method = 'GET' + }, + { + path = '/liquibase/', + method = 'GET' + }, + { + path = '/metrics/', + method = 'GET' + }, + { + path = '/mappings/', + method = 'GET' + }, + { + path = '/trace/', + method = 'GET' + } + }, + matches = { + { + output = 'Spring Boot Actuator endpoint' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/heapdump/', + method = 'GET' + }, + { + path = '/jolokia/', + method = 'GET' + } + }, + matches = { + { + output = 'Spring MVC Endpoint' + } + } + }); + + + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/vmware/', + method = 'HEAD' + }, + { + path = '/vmware/imx/vmware_boxes-16x16.png', + method = 'HEAD' + }, + { + path = '/ui/', + method = 'HEAD' + }, + { + path = '/ui/imx/vmwareLogo-16x16.png', + method = 'HEAD' + }, + { + path = '/ui/imx/vmwarePaperBagLogo-16x16.png', + method = 'HEAD' + }, + { + path = '/ui/vManage.do', + method = 'HEAD' + }, + { + path = '/client/VMware-viclient.exe', + method = 'HEAD' + }, + { + path = '/en/welcomeRes.js', + method = 'HEAD' + } + }, + matches = { + { + output = 'VMWare' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/citrix/', + method = 'HEAD' + }, + { + path = '/Citrix/', + method = 'HEAD' + }, + { + path = '/Citrix/MetaFrame/auth/login.aspx', + method = 'HEAD' + }, + { + path = '/images/ctxHeader01.jpg', + method = 'HEAD' + }, + { + path = '/images/Safeword_Token.jpg', + method = 'HEAD' + }, + { + path = '/sw/auth/login.aspx', + method = 'HEAD' + }, + { + path = '/vpn/images/AccessGateway.ico', + method = 'HEAD' + }, + { + path = '/citrix/AccessPlatform/auth/clientscripts/', + method = 'HEAD' + }, + { + path = '/AccessPlatform/auth/clientscripts/', + method = 'HEAD' + }, + { + path = '/Citrix//AccessPlatform/auth/clientscripts/cookies.js', + method = 'HEAD' + }, + { + path = '/Citrix/AccessPlatform/auth/clientscripts/login.js', + method = 'HEAD' + }, + { + path = '/Citrix/PNAgent/config.xml', + method = 'HEAD' + }, + }, + matches = { + { + output = 'Citrix' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/cgi-bin/image/shikaku2.png', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'TeraStation PRO RAID 0/1/5 Network Attached Storage' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/config/public/usergrp.gif', + method = 'HEAD' + }, + { + path = '/pictures/buttons/file_view_mark.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'AXIS StorPoint' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/cpqlogin.htm?RedirectUrl=/&RedirectQueryString=', + method = 'HEAD' + }, + { + path = '/hplogo.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'HP System Management Homepage' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/ie_index.htm', + method = 'HEAD' + }, + { + path = '/ilo.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'HP Integrated Lights Out' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/images/icon_server_connected.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'HP Blade Enclosure' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/mxhtml/images/signin_logo.gif', + method = 'HEAD' + }, + { + path = '/mxhtml/images/status_critical_15.gif', + method = 'HEAD' + }, + { + path = '/mxportal/home/en_US/servicetools.gif', + method = 'HEAD' + }, + { + path = '/mxportal/home/MxPortalFrames.jsp', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'HP Insight Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/xymon/menu/menu.css', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Xymon' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rrc.htm', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Raritan Remote Client' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/manager/html/upload', + method = 'HEAD' + }, + { + path = '/manager/html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Apache Tomcat' + } + } + }); + +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/axis2/axis2-web/HappyAxis.jsp', + method = 'HEAD' + }, + { + path = '/axis2/', + method = 'HEAD' + }, + { + path = '/happyaxis.jsp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Apache Axis2' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/web-console/ServerInfo.jsp', + method = 'HEAD' + }, + { + path = '/web-console/Invoker', + method = 'HEAD' + }, + { + path = '/invoker/JMXInvokerServlet', + method = 'HEAD' + }, + { + path = '/invoker/', + method = 'HEAD' + }, + { + path = '/jmx-console/', + method = 'HEAD' + }, + { + path = '/admin-console/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'JBoss Console' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/CFIDE/administrator/enter.cfm', + method = 'HEAD' + }, + { + path = '/CFIDE/administrator/entman/index.cfm', + method = 'HEAD' + }, + { + path = '/cfide/install.cfm', + method = 'HEAD' + }, + { + path = '/CFIDE/administrator/archives/index.cfm', + method = 'HEAD' + }, + { + path = '/CFIDE/wizards/common/_logintowizard.cfm', + method = 'HEAD' + }, + { + path = '/CFIDE/componentutils/login.cfm', + method = 'HEAD' + }, + { + path = '/CFIDE/Administrator/startstop.html', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'ColdFusion Admin Console' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/common/help/en/go/login_ts.html', + method = 'HEAD' + }, + { + path = '/system/login/', + method = 'HEAD' + }, + { + path = '/system/login/reset?next=%2Fsystem%2Flogin&set-lang=en', + method = 'HEAD' + }, + { + path = '/common/images/logos/img_logoMain.jpg', + method = 'HEAD' + }, + }, + matches = { + { + match = 'URL=http://www.macromedia.com/go/breeze_login_help_en', + output = 'Adobe Acrobat Connect Pro' + }, + { + match = '<title>Connect Pro Central Login</title>', + output = 'Adobe Acrobat Connect Pro' + }, + { + match = '<title>Forgot your password?</title>', + output = 'Adobe Acrobat Connect Pro' + }, + { + match = 'Server: JRun Web Server', + output = 'Adobe Acrobat Connect Pro' + }, + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/Dashboard/Dashboard.html', + method = 'GET' + } + }, + matches = { + { + match = 'Server: Kodak-RulesBasedAutomation', + output = 'Prinergy Dashboard Client Login' + }, + { + match = '<title>Dashboard</title>', + output = 'Prinergy Dashboard Client Login' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/flexfm/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Flex File Manager' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/lib/usermanagement/userInfo.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Testlink TestManagement' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/security/xamppsecurity.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'XAMPP' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/system/console', + method = 'HEAD' + }, + }, + matches = { + { + match = 'OSGi Management Console', + output = 'OSGi Management Console' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/dm-albums/dm-albums.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'DM FileManager' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + "/ibm/console/logon.jsp?action=OK", + "/console/", + "/console/portal/0/Welcome" + }, + matches = { + { + match = "[Ww][Ee][Bb][Ss][Pp][Hh][Ee][Rr][Ee]", + output = "WebSphere" + }, + { + match = "WSC Console Federation", + output = "WebSphere Commerce" + }, + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/jira/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/secure/rest/applinks/1.0/manifest', + method = 'GET' + }, + }, + matches = { + { + match = '<typeId>jira</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Jira \\1' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/servicedeskapi/info', + method = 'GET' + }, + { + path = '/jira/rest/servicedeskapi/info', + method = 'GET' + }, + { + path = '/secure/rest/servicedeskapi/info', + method = 'GET' + }, + }, + matches = { + { + match = '"version":%s*"([^-"]+)', + output = 'Atlassian Jira Service Desk \\1' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/confluence/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/wiki/rest/applinks/1.0/manifest', + method = 'GET' + }, + }, + matches = { + { + match = '<typeId>confluence</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Confluence \\1' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/bitbucket/rest/applinks/1.0/manifest', + method = 'GET' + }, + }, + matches = { + { + match = '<typeId>stash</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Bitbucket Server \\1' + }, + { + match = '<typeId>bitbucket</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Bitbucket Server \\1' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/bamboo/rest/applinks/1.0/manifest', + method = 'GET' + }, + }, + matches = { + { + match = '<typeId>bamboo</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Bamboo \\1' + } + } + }); + +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/rest/applinks/1.0/manifest', + method = 'GET' + }, + { + path = '/crowd/rest/applinks/1.0/manifest', + method = 'GET' + }, + }, + matches = { + { + match = '<typeId>crowd</typeId>.*<version>([^<]+)</version>', + output = 'Atlassian Crowd \\1' + } + } + }); + +------------------------------------------------ +---- PRINTERS, WEBCAMS, PROJECTORS ---- +------------------------------------------------ +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/x_logo.gif', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Xerox printer' + } + } + }); + +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/gif/hp.gif', + method = 'HEAD' + }, + { + path = '/gif/hp_invent_logo.gif', + method = 'HEAD' + }, + { + path = '/gif/printer.gif', + method = 'HEAD' + }, + { + path = '/hp/device/this.LCDispatcher', + method = 'HEAD' + }, + { + path = '/hp/device/webAccess/index.htm', + method = 'HEAD' + }, + { + path = '/PageSelector.class', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'HP Printer' + } + } + }); + +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/images/lexbold.gif', + method = 'HEAD' + }, + { + path = '/images/lexlogo.gif', + method = 'HEAD' + }, + { + path = '/images/printer.gif', + method = 'HEAD' + }, + { + path = '/printer/image', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Lexmark Printer' + } + } + }); + +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/images/mute_alloff.gif', + method = 'HEAD' + }, + { + path = '/images/pic_bri.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'NEC Projector' + } + } + }); + +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/scanweb/images/scanwebtm.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'SCAN Web (Webcam)' + } + } + }); + +table.insert(fingerprints, { + category = 'printer', + probes = { + { + path = '/view/index.shtml', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Axis 212 PTZ Network Camera' + } + } + }); + +------------------------------------------------ +---- DATABASES ---- +------------------------------------------------ + +--phpmyadmin db taken from http://milw0rm.com/exploits/8921 +table.insert(fingerprints, { + category = 'database', + probes = { + { + path = '/phpmyadmin/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin/', + method = 'HEAD' + }, + { + path = '/PHPMyAdmin/', + method = 'HEAD' + }, + { + path = '/PMA/', + method = 'HEAD' + }, + { + path = '/pma/', + method = 'HEAD' + }, + { + path = '/dbadmin/', + method = 'HEAD' + }, + { + path = '/myadmin/', + method = 'HEAD' + }, + { + path = '/php-my-admin/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.2.3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.2.6/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.4/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.5-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.5-rc2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.5/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.5-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.6-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.6-rc2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.6/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.7/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.5.7-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-alpha/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-alpha2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-beta1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-beta2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-rc2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-rc3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-pl2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.0-pl3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1-rc2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1-pl2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.1-pl3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.2-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.2-beta1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.2-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.3-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.3-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4-pl2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4-pl3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4-pl4/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.6.4/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.7.0-beta1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.7.0-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.7.0-pl1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.7.0-pl2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.7.0/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0-beta1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0-rc2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0.1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0.2/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0.3/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.0.4/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.1-rc1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.1/', + method = 'HEAD' + }, + { + path = '/phpMyAdmin-2.8.2/', + method = 'HEAD' + }, + { + path = '/sqlmanager/', + method = 'HEAD' + }, + { + path = '/php-myadmin/', + method = 'HEAD' + }, + { + path = '/phpmy-admin/', + method = 'HEAD' + }, + { + path = '/mysqladmin/', + method = 'HEAD' + }, + { + path = '/mysql-admin/', + method = 'HEAD' + }, + { + path = '/websql/', + method = 'HEAD' + }, + { + path = '/_phpmyadmin/', + method = 'HEAD' + } + }, + matches = { + { + output = 'phpMyAdmin' + } + } + }); + +table.insert(fingerprints, { + category = 'database', + probes = { + { + path = '/footer1.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = '(possible) Oracle Web server' + } + } + }); + +table.insert(fingerprints, { + category = 'database', + probes = { + { + path = '/homepage.nsf/homePage.gif?OpenImageResource', + method = 'HEAD' + }, + { + path = '/icons/ecblank.gif', + method = 'HEAD' + }, + { + path = '/852566C90012664F', + method = 'HEAD' + }, + { + path = '/admin4.nsf', + method = 'HEAD' + }, + { + path = '/admin5.nsf', + method = 'HEAD' + }, + { + path = '/admin.nsf', + method = 'HEAD' + }, + { + path = '/agentrunner.nsf', + method = 'HEAD' + }, + { + path = '/alog.nsf', + method = 'HEAD' + }, + { + path = '/a_domlog.nsf', + method = 'HEAD' + }, + { + path = '/bookmark.nsf', + method = 'HEAD' + }, + { + path = '/busytime.nsf', + method = 'HEAD' + }, + { + path = '/catalog.nsf', + method = 'HEAD' + }, + { + path = '/certa.nsf', + method = 'HEAD' + }, + { + path = '/certlog.nsf', + method = 'HEAD' + }, + { + path = '/certsrv.nsf', + method = 'HEAD' + }, + { + path = '/chatlog.nsf', + method = 'HEAD' + }, + { + path = '/clbusy.nsf', + method = 'HEAD' + }, + { + path = '/cldbdir.nsf', + method = 'HEAD' + }, + { + path = '/clusta4.nsf', + method = 'HEAD' + }, + { + path = '/collect4.nsf', + method = 'HEAD' + }, + { + path = '/da.nsf', + method = 'HEAD' + }, + { + path = '/dba4.nsf', + method = 'HEAD' + }, + { + path = '/dclf.nsf', + method = 'HEAD' + }, + { + path = '/DEASAppDesign.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog01.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog02.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog03.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog04.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog05.nsf', + method = 'HEAD' + }, + { + path = '/DEASLog.nsf', + method = 'HEAD' + }, + { + path = '/decsadm.nsf', + method = 'HEAD' + }, + { + path = '/decslog.nsf', + method = 'HEAD' + }, + { + path = '/DEESAdmin.nsf', + method = 'HEAD' + }, + { + path = '/dirassist.nsf', + method = 'HEAD' + }, + { + path = '/doladmin.nsf', + method = 'HEAD' + }, + { + path = '/domadmin.nsf', + method = 'HEAD' + }, + { + path = '/domcfg.nsf', + method = 'HEAD' + }, + { + path = '/domguide.nsf', + method = 'HEAD' + }, + { + path = '/domlog.nsf', + method = 'HEAD' + }, + { + path = '/dspug.nsf', + method = 'HEAD' + }, + { + path = '/events4.nsf', + method = 'HEAD' + }, + { + path = '/events5.nsf', + method = 'HEAD' + }, + { + path = '/events.nsf', + method = 'HEAD' + }, + { + path = '/event.nsf', + method = 'HEAD' + }, + { + path = '/homepage.nsf', + method = 'HEAD' + }, + { + path = '/iNotes/Forms5.nsf/$DefaultNav', + method = 'HEAD' + }, + { + path = '/jotter.nsf', + method = 'HEAD' + }, + { + path = '/leiadm.nsf', + method = 'HEAD' + }, + { + path = '/leilog.nsf', + method = 'HEAD' + }, + { + path = '/leivlt.nsf', + method = 'HEAD' + }, + { + path = '/log4a.nsf', + method = 'HEAD' + }, + { + path = '/log.nsf', + method = 'HEAD' + }, + { + path = '/l_domlog.nsf', + method = 'HEAD' + }, + { + path = '/mab.nsf', + method = 'HEAD' + }, + { + path = '/mail10.box', + method = 'HEAD' + }, + { + path = '/mail1.box', + method = 'HEAD' + }, + { + path = '/mail2.box', + method = 'HEAD' + }, + { + path = '/mail3.box', + method = 'HEAD' + }, + { + path = '/mail4.box', + method = 'HEAD' + }, + { + path = '/mail5.box', + method = 'HEAD' + }, + { + path = '/mail6.box', + method = 'HEAD' + }, + { + path = '/mail7.box', + method = 'HEAD' + }, + { + path = '/mail8.box', + method = 'HEAD' + }, + { + path = '/mail9.box', + method = 'HEAD' + }, + { + path = '/mail.box', + method = 'HEAD' + }, + { + path = '/msdwda.nsf', + method = 'HEAD' + }, + { + path = '/mtatbls.nsf', + method = 'HEAD' + }, + { + path = '/mtstore.nsf', + method = 'HEAD' + }, + { + path = '/names.nsf', + method = 'HEAD' + }, + { + path = '/nntppost.nsf', + method = 'HEAD' + }, + { + path = '/nntp/nd000001.nsf', + method = 'HEAD' + }, + { + path = '/nntp/nd000002.nsf', + method = 'HEAD' + }, + { + path = '/nntp/nd000003.nsf', + method = 'HEAD' + }, + { + path = '/ntsync45.nsf', + method = 'HEAD' + }, + { + path = '/perweb.nsf', + method = 'HEAD' + }, + { + path = '/qpadmin.nsf', + method = 'HEAD' + }, + { + path = '/quickplace/quickplace/main.nsf', + method = 'HEAD' + }, + { + path = '/reports.nsf', + method = 'HEAD' + }, + { + path = '/sample/siregw46.nsf', + method = 'HEAD' + }, + { + path = '/schema50.nsf', + method = 'HEAD' + }, + { + path = '/setupweb.nsf', + method = 'HEAD' + }, + { + path = '/setup.nsf', + method = 'HEAD' + }, + { + path = '/smbcfg.nsf', + method = 'HEAD' + }, + { + path = '/smconf.nsf', + method = 'HEAD' + }, + { + path = '/smency.nsf', + method = 'HEAD' + }, + { + path = '/smhelp.nsf', + method = 'HEAD' + }, + { + path = '/smmsg.nsf', + method = 'HEAD' + }, + { + path = '/smquar.nsf', + method = 'HEAD' + }, + { + path = '/smsolar.nsf', + method = 'HEAD' + }, + { + path = '/smtime.nsf', + method = 'HEAD' + }, + { + path = '/smtpibwq.nsf', + method = 'HEAD' + }, + { + path = '/smtpobwq.nsf', + method = 'HEAD' + }, + { + path = '/smtp.box', + method = 'HEAD' + }, + { + path = '/smtp.nsf', + method = 'HEAD' + }, + { + path = '/smvlog.nsf', + method = 'HEAD' + }, + { + path = '/srvnam.htm', + method = 'HEAD' + }, + { + path = '/statmail.nsf', + method = 'HEAD' + }, + { + path = '/statrep.nsf', + method = 'HEAD' + }, + { + path = '/stauths.nsf', + method = 'HEAD' + }, + { + path = '/stautht.nsf', + method = 'HEAD' + }, + { + path = '/stconfig.nsf', + method = 'HEAD' + }, + { + path = '/stconf.nsf', + method = 'HEAD' + }, + { + path = '/stdnaset.nsf', + method = 'HEAD' + }, + { + path = '/stdomino.nsf', + method = 'HEAD' + }, + { + path = '/stlog.nsf', + method = 'HEAD' + }, + { + path = '/streg.nsf', + method = 'HEAD' + }, + { + path = '/stsrc.nsf', + method = 'HEAD' + }, + { + path = '/userreg.nsf', + method = 'HEAD' + }, + { + path = '/vpuserinfo.nsf', + method = 'HEAD' + }, + { + path = '/webadmin.nsf', + method = 'HEAD' + }, + { + path = '/web.nsf', + method = 'HEAD' + }, + { + path = '/.nsf/../winnt/win.ini', + method = 'HEAD' + }, + { + path = '/icons/ecblank.gif', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Lotus Domino' + } + } + }); + +table.insert(fingerprints, { + category = 'database', + probes = { + { + path = '/_api/version', + method = 'GET' + } + }, + matches = { + { + match = '"server":"arango",.-"version":"([^"])"', + output = 'ArangoDB \\1' + } + } + }); + +------------------------------------------------ +---- MICROSOFT ---- +------------------------------------------------ +table.insert(fingerprints, { + category = 'microsoft', + probes = { + { + path = '/_layouts/images/helpicon.gif', + method = 'HEAD' + }, + { + path = '/Pages/Default.aspx', + method = 'HEAD' + }, + { + path = '/PublishingImages/NewsArticleImage.jpg', + method = 'HEAD' + }, + { + path = '/_admin/operations.aspx', + method = 'HEAD' + }, + { + path = '/_app_bin', + method = 'HEAD' + }, + { + path = '/_controltemplates', + method = 'HEAD' + }, + { + path = '/_layouts', + method = 'HEAD' + }, + { + path = '/_layouts/viewlsts.aspx', + method = 'HEAD' + }, + { + path = '/forms/allitems.aspx', + method = 'HEAD' + }, + { + path = '/forms/webfldr.aspx', + method = 'HEAD' + }, + { + path = '/forms/mod-view.aspx', + method = 'HEAD' + }, + { + path = '/forms/my-sub.aspx', + method = 'HEAD' + }, + { + path = '/pages/categoryresults.aspx', + method = 'HEAD' + }, + { + path = '/categories/viewcategory.aspx', + method = 'HEAD' + }, + { + path = '/sitedirectory', + method = 'HEAD' + }, + { + path = '/editdocs.aspx', + method = 'HEAD' + }, + { + path = '/workflowtasks/allitems.aspx', + method = 'HEAD' + }, + { + path = '/lists/tasks/', + method = 'HEAD' + }, + { + path = '/categories/allcategories.aspx', + method = 'HEAD' + }, + { + path = '/categories/SOMEOTHERDIR/allcategories.aspx', + method = 'HEAD' + }, + { + path = '/mycategories.aspx', + method = 'HEAD' + }, + { + path = '/lists/', + method = 'HEAD' + }, + { + path = '/lists/allitems.aspx', + method = 'HEAD' + }, + { + path = '/lists/default.aspx', + method = 'HEAD' + }, + { + path = '/lists/allposts.aspx', + method = 'HEAD' + }, + { + path = '/lists/archive.aspx', + method = 'HEAD' + }, + { + path = '/lists/byauthor.aspx', + method = 'HEAD' + }, + { + path = '/lists/calendar.aspx', + method = 'HEAD' + }, + { + path = '/lists/mod-view.aspx', + method = 'HEAD' + }, + { + path = '/lists/myposts.aspx', + method = 'HEAD' + }, + { + path = '/lists/my-sub.aspx', + method = 'HEAD' + }, + { + path = '/lists/allcomments.aspx', + method = 'HEAD' + }, + { + path = '/lists/mycomments.aspx', + method = 'HEAD' + }, + { + path = '/_layouts/userdisp.aspx', + method = 'HEAD' + }, + { + path = '/_layouts/help.aspx', + method = 'HEAD' + }, + { + path = '/_layouts/download.aspx', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'MS Sharepoint' + } + } + }); + +table.insert(fingerprints, { + category = 'microsoft', + probes = { + { + path = '/projectserver/Home/HomePage.asp', + method = 'HEAD' + }, + { + path = '/projectserver/images/branding.gif', + method = 'HEAD' + }, + { + path = '/projectserver/images/pgHome.gif', + method = 'HEAD' + }, + { + path = '/projectserver/images/pgTask.gif', + method = 'HEAD' + }, + { + path = '/projectserver/Tasks/Taskspage.asp', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'MS Project Server' + } + } + }); + +table.insert(fingerprints, { + category = 'microsoft', + probes = { + { + path = '/exchweb/bin/auth/owalogon.asp', + method = 'HEAD' + }, + { + path = '/images/outlook.jpg', + method = 'HEAD' + }, + { + path = '/owa/8.1.375.2/themes/base/lgntopl.gif', + method = 'HEAD' + }, + { + path = '/owa/', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Outlook Web Access' + } + } + }); + +table.insert(fingerprints, { + category = 'microsoft', + probes = { + { + path = '/tsweb/', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Remote Desktop Web Connection' + } + } + }); + +table.insert(fingerprints, { + category = 'microsoft', + probes = { + { + path = '/reportserver/', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Microsoft SQL Report Service' + } + } + }); +------------------------------------------------ +---- NETWORK EQUIPMENT ---- +------------------------------------------------ +-- Routers, switches, etc +table.insert(fingerprints, { + category = 'network', + probes = { + { + path = '/', + method = 'GET' + }, + }, + matches = { + { + match = 'realm="WRT54G"', + output = 'Linksys WRT54g Wireless Router' + } + } + }); + +table.insert(fingerprints, { + category = 'network', + probes = { + { + path = '/HW_logo.html', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Huawei HG 530' + } + } + }); + +table.insert(fingerprints, { + category = 'network', + probes = { + { + path = '/icons/icon_set_up_2701XX_01.gif', + method = 'HEAD' + }, + { + path = '/icons/icon_homeportal_2701XX.gif', + method = 'HEAD' + }, + { + path = '/es/images/nav_sl_home_network_01.gif', + method = 'HEAD' + }, + { + path = '/en/images/nav_sl_home_network_01.gif', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = '2WIRE 2701HG' + } + } + }); + +table.insert(fingerprints, { + category = 'network', + probes = { + { + path = '/images/stxx__xl.gif', + method = 'HEAD' + }, + { + path = '/images/bbc__xl.gif', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Thomson TG585' + } + } + }); + +-- HNAP Devices +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/HNAP1/', + method = 'GET' + } + }, + matches = { + { + match = '<ModelDescription>(.-)</ModelDescription>', + output = '\\1' + } + } + }); + +------------------------------------------------ +---- ATTACKS ---- +------------------------------------------------ +-- These will search for and possibly exploit vulnerabilities. + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/sdk/../../../../../../../etc/vmware/hostd/vmInventory.xml', + method = 'GET', + nopipeline = true + }, + { + path = '/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/vmware/hostd/vmInventory.xml', + method = 'GET', + nopipeline = true + } + }, + matches = { + { + match = '<ConfigRoot>', + output = 'Path traversal in VMWare (CVE-2009-3733)' + }, + { + match = '', + output = 'Possible path traversal in VMWare (CVE-2009-3733)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/../../../../../../../../../../etc/passwd', + method = 'GET', + nopipeline = true + }, + { + path = '/../../../../../../../../../../boot.ini', + method = 'GET', + nopipeline = true + } + }, + matches = { + { + match = 'root:', + output = 'Simple path traversal in URI (Linux)' + }, + { + match = 'boot loader', + output = 'Simple path traversal in URI (Windows)' + }, + { + match = '', + output = 'Possible path traversal in URI' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/.htaccess', + method = 'GET' + }, + { + path = '/.htpasswd', + method = 'GET' + } + }, + matches = { + -- We look for a '200 OK' message on this one, because most Apache servers return an access denied + { + match = '200 OK', + output = 'Incorrect permissions on .htaccess or .htpasswd files' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/_vti_bin/', + method = 'GET' + }, + { + path = '/_vti_cnf/', + method = 'GET' + }, + { + path = '/_vti_log/', + method = 'GET' + }, + { + path = '/_vti_pvt/', + method = 'GET' + }, + { + path = '/_vti_txt/', + method = 'GET' + }, + { + path = '/postinfo.html' + }, + { + path = '/_vti_bin/_vti_aut/author.dll' + }, + { + path = '/_vti_bin/_vti_aut/author.exe' + }, + { + path = '/_vti_bin/_vti_aut/dvwssr.dll' + }, + { + path = '/_vti_bin/_vti_adm/admin.dll' + }, + { + path = '/_vti_bin/_vti_adm/admin.exe' + }, + { + path = '/_vti_bin/fpcount.exe?Page=default.asp|Image=3' + }, + { + path = '/_vti_bin/shtml.dll' + }, + { + path = '/_vti_bin/shtml.exe' + }, + { + path = '/_vti_pvt/_x_todo.htm' + }, + { + path = '/_vti_pvt/_x_todoh.htm' + }, + { + path = '/_vti_pvt/access.cnf' + }, + { + path = '/_vti_pvt/administrator.pwd' + }, + { + path = '/_vti_pvt/administrators.pwd' + }, + { + path = '/_vti_pvt/authors.pwd' + }, + { + path = '/_vti_pvt/bots.cnf' + }, + { + path = '/_vti_pvt/botinfs.cnf' + }, + { + path = '/_vti_pvt/deptodoc.btr' + }, + { + path = '/_vti_pvt/doctodep.btr' + }, + { + path = '/_vti_pvt/frontpg.lck' + }, + { + path = '/_vti_pvt/linkinfo.cnf' + }, + { + path = '/_vti_pvt/service.cnf' + }, + { + path = '/_vti_pvt/service.grp' + }, + { + path = '/_vti_pvt/service.lck' + }, + { + path = '/_vti_pvt/service.pwd' + }, + { + path = '/_vti_pvt/Service.stp' + }, + { + path = '/_vti_pvt/services.cnf' + }, + { + path = '/_vti_pvt/services.org' + }, + { + path = '/_vti_pvt/structure.cnf' + }, + { + path = '/_vti_pvt/svcacl.cnf' + }, + { + path = '/_vti_pvt/users.pwd' + }, + { + path = '/_vti_pvt/uniqueperm.cnf' + }, + { + path = '/_vti_pvt/writeto.cnf' + }, + }, + matches = { + { + match = '200', + output = 'Frontpage file or folder' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/.svn/', + method = 'GET' + }, + { + path = '/.svn/text-base/.htaccess.svn-base', + method = 'GET' + }, + { + path = '/.svn/text-base/.htpasswd.svn-base', + method = 'GET' + }, + { + path = '/.svn/text-base/Web.config.svn-base', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Subversion folder' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/.git/HEAD', + method = 'GET' + }, + }, + matches = { + { + match = 'ref: refs', + output = 'Git folder' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/.hg/requires', + method = 'GET' + }, + }, + matches = { + { + match = 'revlogv1', + output = 'Mercurial folder' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/.bzr/README', + method = 'GET' + }, + }, + matches = { + { + match = 'This is a Bazaar', + output = 'Bazaar folder' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/downloadFile.php', + method = 'GET' + }, + { + path = '/BackupConfig.php', + method = 'GET' + } + }, + matches = { + { + output = 'NETGEAR WNDAP350 2.0.1 to 2.0.9 potential file download and SSH root password disclosure' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\boot.ini', + method = 'GET' + }, + { + path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\MDC\\Tomcat\\webapps\\triveni\\WEB-INF\\classes\\schedule.properties', + method = 'GET' + }, + { + path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\lib\\classpath\\com\\cisco\\nm\\cmf\\dbservice2\\DBServer.properties', + method = 'GET' + }, + { + path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\log\\dbpwdChange.log', + method = 'GET' + } + }, + matches = { + { + match = 'boot loader', + output = 'CiscoWorks (CuOM 8.0 and 8.5) Directory traversal (CVE-2011-0966) (Windows)' + }, + { + match = '', + output = 'Possible CiscoWorks (CuOM 8.0 and 8.5) Directory traversal (CVE-2011-0966) (Windows)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/var/mobile/Library/AddressBook/AddressBook.sqlitedb', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Possible iPhone/iPod/iPad generic file sharing app Directory Traversal (iOS)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/Info.live.htm', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Possible DD-WRT router Information Disclosure (BID 45598)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/CuteSoft_Client/CuteEditor/Load.ashx?type=image&file=../../../web.config', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Cute Editor ASP.NET Remote File Disclosure ( CVE 2009-4665 )' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/plugins/PluginController.php?path=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'OrangeHRM 2.6.3 Local File Inclusion ' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/tiki-listmovies.php?movie=../../../../../../etc/passwd%001234', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'TikiWiki < 1.9.9 Directory Traversal Vulnerability' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20', + method = 'GET' + } + }, + matches = { + { + match = '2.0.11</title', + output = 'Joomla JCE Extension 2.0.11 Remote Code Execution vulnerability' + }, + { + match = '2.0.12</title', + output = 'Joomla JCE Extension 2.0.12 Remote Code Execution vulnerability' + }, + { + match = '2.0.13</title', + output = 'Joomla JCE Extension 2.0.13 Remote Code Execution vulnerability' + }, + { + match = '2.0.14</title', + output = 'Joomla JCE Extension 2.0.14 Remote Code Execution vulnerability' + }, + { + match = '2.0.15</title', + output = 'Joomla JCE Extension 2.0.11 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.10</title', + output = 'Joomla JCE Extension 1.5.7.10 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.10</title', + output = 'Joomla JCE Extension 1.5.7.10 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.11</title', + output = 'Joomla JCE Extension 1.5.7.11 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.12</title', + output = 'Joomla JCE Extension 1.5.7.12 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.13</title', + output = 'Joomla JCE Extension 1.5.7.13 Remote Code Execution vulnerability' + }, + { + match = '1.5.7.14</title', + output = 'Joomla JCE Extension 1.5.7.14 Remote Code Execution vulnerability' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/d41d8cd98f00b204e9800998ecf8427e.php', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Seagate BlackArmorNAS 110/220/440 Administrator Password Reset Vulnerability' + } + } + }); + +-- HNAP Authentication Bypass +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/bsc_lan.php?NO_NEED_AUTH=1&AUTH_GROUP=0', + method = 'GET' + } + }, + matches = { + { + dontmatch = '<a href="http://www%.dlink%.com"', + match = '^HTTP/1.[01] 200 OK\r\n.*Server: Embedded HTTP Server', + output = 'D-Link Router Vulnerable to Authentication Bypass', + }, + { + dontmatch = '<a href="http://www%.dlink%.com"', + match = '^HTTP/1.[01] 200 OK\r\n.*Server: Virtual Web 0.9', + output = 'D-Link Router Vulnerable to Authentication Bypass', + }, + } + }); + +-- Rompager info disclosure +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/rom-0', + method = 'GET' + } + }, + matches = { + { + match = 'dbgarea', + output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)' + }, + { + match = 'spt%.dat', + output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)' + }, + { + match = 'autoexec%.net', + output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)' + }, + } + }); + +-- Progress Telerik UI for ASP.NET CVE-2017-9248 +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/Telerik.Web.UI.DialogHandler.aspx?dp=////', + method = 'GET' + }, + { + path = '/Telerik.Web.UI.DialogHandler.ashx?dp=////', + method = 'GET' + }, + { + path = '/DesktopModules/Admin/RadEditorProvider/DialogHandler.aspx?dp=////', + method = 'GET' + } + }, + matches = { + { + dontmatch = 'cannot be less than zero', + match = 'Base%-64', + output = 'Progress Telerik UI for ASP.NET Cryptographic Weakness (CVE-2017-9248)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/uir//etc/passwd', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Possible D-Link router directory traversal vulnerability (CVE-2018-10822)' + }, + { + match = 'root:', + output = 'D-Link router directory traversal vulnerability (CVE-2018-10822)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/uir//tmp/csman/0', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Possible D-Link router plaintext password file exposure (CVE-2018-10824)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/cgi-bin/export_debug_msg.exp', + method = 'GET' + }, + { + path = '/cgi-bin/config.exp', + method = 'GET' + } + }, + matches = { + { + match = '200 OK', + output = 'Cisco RV320/RV325 Unauthenticated Diagnostic Data & Configuration Export (CVE-2019-1653)' + } + } + }); + +table.insert(fingerprints, { + category = 'attacks', + probes = { + { + path = '/', + method = 'GET' + } + }, + matches = { + { + match = 'var admin_name=".*";\nvar guest_name=".*";\nvar admin_pwd=".*";', + output = 'Cisco RV110W Wireless-N VPN Firewall Password Disclosure (CVE-2014-0683)' + } + } + }); +------------------------------------------------ +---- Open Source CMS checks ---- +------------------------------------------------ + +-- Wordpress versions (Scraping readme file) +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/readme.html', + method = 'GET' + } + }, + matches = { + { + match = '<img alt="WordPress" src=".+wordpress.+".+[V|v]ersion ([0-9 .]*)', + output = 'Wordpress version: \\1' + } + } +}); + +-- Wordpress versions (Scraping metatags and wp-includes) +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/', + method = 'GET' + } + }, + matches = { + { + match = '<meta name="generator" content="WordPress ([0-9 .]*)" />', + output = 'WordPress version: \\1' + }, + { + match = '/wp-includes/js/wp-emoji-release.min.js?ver=([0-9 .]*)', + output = 'WordPress version: \\1' + } + } +}); + +-- Wordpress versions (Scraping rss feed) +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '?feed=rss', + method = 'GET' + }, + { + path = '?feed=rss2', + method = 'GET' + }, + { + path = '?feed=atom', + method = 'GET' + }, + { + path = '/feed', + method = 'GET' + }, + { + path = '/feed/', + method = 'GET' + }, + { + path = '/feed/rss', + method = 'GET' + }, + { + path = '/feed/rss2', + method = 'GET' + }, + { + path = '/feed/atom', + method = 'GET' + } + }, + matches = { + { + match = '[v|V]=([0-9 .]*)</generator>', + output = 'Wordpress version: \\1' + } + } +}); + +-- Wordpress detection indentified by Version-specific files. +-- These are the 6 new web-accessible files that was added in each release. + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/images/rss.png" + } + }, + matches = { + { + output = "Wordpress version 2.2 found." + } + } +}); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/js/scriptaculous/sound.js" + } + }, + matches = { + { + output = "Wordpress version 2.3 found." + } + } +}); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/js/jquery/suggest.js" + } + }, + matches = { + { + output = "Wordpress version 2.5 found." + } + } +}); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/images/blank.gif" + } + }, + matches = { + { + output = "Wordpress version 2.6 found." + } + } +}); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/js/comment-reply.js" + } + }, + matches = { + { + output = "Wordpress version 2.7 found." + } + } +}); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = "/wp-includes/js/codepress/codepress.js" + } + }, + matches = { + { + output = "Wordpress version 2.8 found." + } + } +}); + + +-- Broad wordpress version identification (Gives major only versions) +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/wp-login.php' + }, + { + path = '/wordpress/wp-login.php' + }, + { + path = '/blog/wp-login.php' + }, + { + path = '/administrator/wp-login.php' + }, + { + path = '/weblog/wp-login.php' + }, + { + path = '/wp-admin/upgrade.php' + } + }, + matches = { + { + match = '[ver|version]=20080708', + output = 'WordPress 2.6.x found' + }, + { + match = '[ver|version]=20081210', + output = 'WordPress 2.7.x found' + }, + { + match = '[ver|version]=20090514', + output = 'WordPress 2.8.x found' + }, + { + match = '[ver|version]=20091217', + output = 'WordPress 2.9.x found' + }, + { + match = '[ver|version]=20100601', + output = 'WordPress 3.0.x found' + }, + { + match = '[ver|version]=20110121', + output = 'WordPress 3.1.x found' + }, + { + match = '[ver|version]=20121105', + output = 'WordPress 3.7.x found' + }, + { + output = 'Wordpress login page.' + } + } + }); + +-- ZenCart version detection +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/docs/' + }, + { + path = '/store/docs/' + }, + { + path = '/zencart/docs/' + }, + { + path = '/cart/docs/' + } + }, + matches = { + { + match = '.*">Changelog for v(%d-%..-) %(changed files%)</a>', + output = 'ZenCart, version \\1' + } + } + }); + +-- Broad phpBB versions +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/docs/CHANGELOG.html' + }, + { + path = '/forum/docs/CHANGELOG.html' + }, + { + path = '/forums/docs/CHANGELOG.html' + }, + { + path = '/board/docs/CHANGELOG.html' + }, + { + path = '/boards/docs/CHANGELOG.html' + } + }, + matches = { + { + match = 'Changes since (%d-%..-)</a>', + output = 'phpBB version slightly newer than \\1' + }, + { + match = '<meta name="description" content="phpBB (%d-%..-) Changelog"', + output = 'phpBB, version \\1' + }, + { + match = 'Changes since (%d)', + output = 'phpBB versioning \\1' + }, + } + }); + +-- tinymce / changelog +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/changelog.txt' + }, + { + path = '/tinymce/changelog.txt' + }, + }, + matches = { + { + match = 'Version (.-) ', + output = 'Version \\1' + }, + { + output = 'Interesting, a changelog.' + } + } + }); + +-- interesting README files +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/readme.html' + }, + { + path = '/pligg/readme.html' + }, + { + path = '/digg/readme.html' + }, + { + path = '/news/readme.html' + }, + }, + matches = { + { + match = '<h1>Pligg Content Management System</h1>%s*<h2>Version (.-)</h2>', + output = 'Pligg version \\1' + }, + { + match = '<br /> Version (.-)\n', + output = 'WordPress version \\1' + }, + { + output = 'Interesting, a readme.' + } + } + }); + +-- They're kind enough to tell us in the meta tags (used for the author's stats) +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/' + }, + { + path = '/forum/' + }, + { + path = '/site/' + }, + { + path = '/website/' + }, + { + path = '/store/' + }, + { + path = '/webstore/' + }, + { + path = '/comic/' + }, + { + path = '/wiki/' + }, + { + path = '/mediawiki/' + }, + { + path = '/Mediawiki/' + }, + { + path = '/MediaWiki/' + }, + { + path = '/wordpress/' + }, + { + path = '/blog/' + }, + { + path = '/cms/' + }, + { + path = '/comiccms/' + }, + { + path = '/weblog/' + }, + { + path = '/joomla/' + }, + { + path = '/administrator/' + }, + { + path = '/openx/www/admin/index.php' + }, + { + path = '/www/admin/index.php' + }, + { + path = '/ads/www/admin/index.php' + }, + { + path = '/adserver/www/admin/index.php' + }, + { + path = '/splashfrog/' + }, + { + path = '/pligg/' + }, + { + path = '/vanilla/' + }, + { + path = '/vanillaforum/' + }, + { + path = '/vanillaforums/' + }, + { + path = '/statusnet/' + }, + { + path = '/xoda/' + }, + { + path = '/trac/' + }, + { + path = '/lime/' + }, + { + path = '/survey/' + }, + { + path = '/limesurvey/' + }, + { + path = '/openvbx/' + }, + { + path = '/getsimple/' + }, + { + path = '/ecoder/' + }, + }, + matches = { + { + match = '<meta name="generator" content="Bluefish 2.0.1" ', + output = '\\1' + }, + { + match = '<h1>ecoder v(.-)</h1>', + output = 'ecoder v\\1' + }, + { + match = '<a href="http://www.splashfrog.com" target="_blank">Splash Frog WMS v(.-)</a>', + output = 'Splash Frog WMS v\\1' + }, + { + match = '<a href="http://status.net/">StatusNet</a> microblogging software, version (.-),', + output = 'StatusNet v\\1' + }, + { + match = '<script src=".*/applications/vanilla/js/options.js%?v%=(.-)" type="text/javascript">', + output = 'Vanilla Forums v\\1' + }, + { + match = 'about"><strong>Trac (.-)</strong></a>', + output = 'Trac version \\1' + }, + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/cmspages.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = '2Point Solutions CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/sc_webcat/ecat/cms_view.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Webcat' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/kbcat.cgi', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ActivDesk' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/workorder/FileDownload.jsp', + method = 'GET' + }, + { + path = '/sd/workorder/FileDownload.jsp', + method = 'GET' + } + }, + matches = { + { + match = '500', + output = 'ManageEngine Support Center Plus' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/sections/reference.inc.php', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'BrewBlogger' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/store.php?action=view_cart', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'AiCart' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/catalog/main.php?cat_id=', + method = 'GET' + } + }, + matches = { + { + match = '200', + output = 'Catalog Builder' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/index.php?cat_id=1', + method = 'GET' + } + }, + matches = { + { + match = 'powered by CubeCart', + output = 'CubeCart' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/forum_answer.php?que_id=1', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Guru JustAnswer' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/templates1/view_product.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'HB ECommerce' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/escort-profile.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'First Escort Marketing CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/pages/indexheader.php', + method = 'HEAD' + }, + { + path = '/pages/searcher.php', + method = 'HEAD' + }, + { + path = '/pages/indexviewentry.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Green Pants CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/tinymcpuk/filemanager/browser.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CMS Lokomedia' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/admin/libraries/ajaxfilemanager/ajaxfilemanager.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Log1 CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/leftmenubody.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Quicktech' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/dsp_page.cfm', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Alcassofts SOPHIA CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/zikula/index.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Zikula CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/system/admin/header.php', + method = 'HEAD' + }, + { + path = '/system/admin/comments_items.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Habari Blog' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/scripts/fckeditor/editor/filemanager/connectors/test.html', + method = 'HEAD' + }, + { + path = '/scripts/fckeditor/editor/filemanager/connectors/uploadtest.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Digitalus CMS/FCKEditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/fckeditor/editor/filemanager/connectors/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'phpmotion/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/fckeditor/editor/filemanager/upload/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Geeklog/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/admin/view/javascript/fckeditor/editor/filemanager/connectors/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'OpenCart/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/fckeditor/editor/filemanager/connectors/php/config.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'DM File Manager/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi', + method = 'HEAD' + }, + { + path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/py/connector.py', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'PHPnuke/Remote File Download' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/FCKEditor/editor/filemanager/browser/default/connectors/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'EgO or osCMax/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/admin/includes/tiny_mce/plugins/tinybrowser/upload.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CompactCMS or B-Hind CMS/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/Backstage/Components/FreeTextBox/ftb.imagegallery.aspx', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Luftguitar CMS/File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/_plugin/fckeditor/editor/filemanager/connectors/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'SweetRice/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/html/news_fckeditor/editor/filemanager/upload/php/upload.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'cardinalCms/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/fckeditor/editor/filemanager/connectors/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'LightNEasy/FCKeditor File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/admin/includes/FCKeditor/editor/filemanager/upload/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ASP Simple Blog / FCKeditor File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/uploadsnaps.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'ZeeMatri/File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/upload/includes/js/files/upload.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Digital College/File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/tinybrowser/upload.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Tinybrowser Remote File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/editor/editor/filemanager/upload/test.html', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Tadbir / File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/photogallery_open.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Heaven Soft CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/Providers/HtmlEditorProviders/Fck/fcklinkgallery.aspx', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'DotNetNuke / File Upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/assetmanager/assetmanager.asp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Asset Manager/Remote File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/Final/login/ava_upl.php', + method = 'HEAD' + }, + { + path = '/Final/login/ava_upl2.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'CH-CMS' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/spaw/demo.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'SpawCMS/Remote File upload' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/admin/jscript/upload.php', + method = 'HEAD' + }, + { + path = '/admin/jscript/upload.html', + method = 'HEAD' + }, + { + path = '/admin/jscript/upload.pl', + method = 'HEAD' + }, + { + path = '/admin/jscript/upload.asp', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Lizard Cart/Remote File upload' + } + } + }); + +-- Apache Ambari Web UI +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/', + method = 'GET' + }, + }, + matches = { + { + match = '<title>Ambari</title>', + output = 'Apache Ambari WebUI' + } + } + }); + +-- Apache Oozie Web Console +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/oozie/', + method = 'GET' + }, + }, + matches = { + { + match = '<title>Oozie Web Console</title>', + output = 'Apache Oozie Web Console' + } + } + }); + +-- Apache Ranger Web UI +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/login.jsp', + method = 'GET' + }, + }, + matches = { + { + match = '<title>%s*Ranger %- Sign In%s*</title>', + output = 'Apache Ranger WebUI' + } + } + }); + +-- Cloudera Hue +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/about/', + method = 'GET' + }, + }, + matches = { + { + match = 'Hue™%s(.-)%s[-]%s<a href="http://gethue%.com"', + output = 'Cloudera Hue \\1' + } + } + }); + +-- Cloudera Manager login page +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/cmf/login', + method = 'GET' + }, + }, + matches = { + { + match = 'var%s+clouderaManager%s*=%s*{.-version:%s*\'(.-)\'', + output = 'Cloudera Manager version \\1 ' + } + } + }); + +-- Hadoop MapReduce JobHistory WebUI +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/jobhistory', + method = 'GET' + }, + }, + matches = { + { + match = '<title>%s*JobHistory%s*</title>', + output = 'Hadoop MapReduce JobHistory WebUI' + } + } + }); + +-- Hadoop YARN Resource Manager +table.insert(fingerprints, { + category = 'management', + probes = { + { + path = '/cluster/cluster', + method = 'GET' + }, + }, + matches = { + { + match = 'ResourceManager state:.-<td>%s*([^%s<]*)' + .. '.-ResourceManager version:.-<td>%s*([^%s<]*)' + .. '.-Hadoop version:.-<td>%s*([^%s<]*)', + output = 'Hadoop YARN Resource Manager version \\2, state "\\1", Hadoop version \\3' + }, + } + }); + +-- Hadoop Node Resource Manager +table.insert(fingerprints, { + category = 'info', + probes = { + { + path = '/node', + method = 'GET' + }, + }, + matches = { + { + match = 'Node Manager Version:.-<td>%s*([^%s<]*)' + .. '.-Hadoop Version:.-<td>%s*([^%s<]*)', + output = 'Hadoop YARN Node Manager version \\1, Hadoop version \\2' + }, + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/databases/acidcat_3.mdb', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Acidcat CMS Database' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/mdb-database/dblog.mdb', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'dBlog Database' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/db/users.mdb', + method = 'HEAD' + }, + { + path = '/db/' + } + }, + matches = { + { + match = '', + output = 'BlogWorx Database' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/infusions/avatar_studio/avatar_studio.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'PHP-Fusion Mod avatar_studio' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/bnnr.php', + method = 'HEAD' + }, + { + path = '/vb/bnnr.php', + method = 'HEAD' + }, + { + path = '/forum/bnnr.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'vBulletin ads_saed' + } + } + }); + +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/weblink_cat_list.php', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'WHMCompleteSolution CMS' + } + } + }); + +-- Drupal signatures +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/', + method = 'GET' + } + }, + matches = { + { + match = ' src="/sites/all/themes/', + output = 'Drupal signature' + }, + { + match = ' src="/sites/all/modules/', + output = 'Drupal signature' + }, + { + match = ' href="/sites/all/themes/', + output = 'Drupal signature' + }, + { + match = 'jQuery.extend(Drupal.settings,', + output = 'Drupal signature' + } + } + }); + +-- Drupal files +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/UPGRADE.txt' + }, + { + path = '/INSTALL.txt' + }, + { + path = '/MAINTENERS.txt' + }, + { + path = '/INSTALL.mysql.txt' + }, + { + path = '/INSTALL.pgsql.txt' + }, + { + path = '/update.php' + } + }, + matches = { + { + match = 'Drupal ', + output = 'Drupal file' + } + } + }); + +-- Joomla versions +table.insert(fingerprints, { + category = 'cms', + probes = { + { + -- Detects versions >= 1.60 + path = '/administrator/manifests/files/joomla.xml', + method = 'GET' + }, + { + -- Detects version >= 1.50 and <= 1.5.26 + path = '/language/en-GB/en-GB.xml', + method = 'GET' + }, + { + -- Detects version < 1.50 + path = '/modules/custom.xml', + method = 'GET' + } + }, + matches = { + { + match = '<version>(.-)</version>', + output = 'Joomla version \\1' + } + } + }); + +-- Joomla! +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/htaccess.txt' + }, + { + path = '/templates/system/css/toolbar.css' + }, + { + path = '/templates/beez/css/template_rtl.css' + } + }, + matches = { + { + match = 'Joomla!', + output = 'Joomla!' + } + } + }); + +-- Drupal changelog +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/CHANGELOG.txt' + } + }, + matches = { + { + match = 'Drupal (%d..-),', + output = 'Drupal v1' + } + } + }); + +-- Drupal version +table.insert(fingerprints, { + category = 'cms', + probes = { + { + -- Must be executed on both ports 80, 443 for accurate results + path = '/', + method = 'GET' + } + }, + matches = { + { + match = '<meta name="[G|g]enerator" content="Drupal ([0-9 .]*)', + output = 'Drupal version \\1' + } + } +}); + +-- Moodle +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/pix/moodlelogo.gif', + method = 'HEAD' + }, + { + path = '/admin/environment.xml', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'Moodle files' + } + } + }); + +-- typo3 +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/typo3/index.php', + method = 'GET' + }, + { + path = '/typo3/README.txt', + method = 'GET' + }, + { + path = '/t3lib/README.txt', + method = 'GET' + }, + { + path = '/typo3/sysext/t3skin/images/login/typo3logo-white-greyback.gif', + method = 'HEAD' + } + }, + matches = { + { + match = 'Login to the TYPO3', + output = 'Typo3 login page' + }, + { + match = 'TYPO3 Backend Administration', + output = 'Typo3 readme file' + }, + { + match = 'TYPO3 Library', + output = 'Typo3 Library readme' + }, + { + match = '', + output = 'Typo3 Installation' + }, + } + }); + +------------------------------------------------ +---- MAIL ---- +------------------------------------------------ + +-- SquirrelMail +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/squirrelmail/src/login.php', -- Might return login page with version info + method = 'GET' + }, + { + path = '/webmail/src/login.php', -- Might return login page with version info + method = 'GET' + }, + { + path = '/src/login.php', -- Might return login page with version info + method = 'GET' + } + }, + matches = { + { + match = '<small>([^<]*)<br />', -- version extraction (squirrelMail) + output = '\\1' + }, + { + match = 'squirrelmail', + output = 'SquirrelMail' + } + } + }); + +-- SquirrelMail files +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/squirrelmail/images/sm_logo.png', -- Standard logo file + method = 'HEAD' + }, + { + path = '/webmail/images/sm_logo.png', -- Standard logo file + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'SquirrelMail' + } + } + }); + +-- RoundCube +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/', + method = 'GET' + }, + { + path = '/program/', + method = 'GET' + } + }, + matches = { + { + match = '<title>Index of /program</title>', + output = 'RoundCube (Directory listing)' + }, + { + match = 'rcube_webmail', -- RoundCube + output = 'RoundCube' + }, + } + }); + +-- RoundCube file +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/skins/default/images/roundcube_logo.png', -- Standard logo file + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'RoundCube' + } + } + }); + +-- Bitwarden Vault +table.insert(fingerprints, { + category = 'general', + probes = { + { + path = '/manifest.json', + method = 'GET' + } + }, + matches = { + { + match = '([\'"])name%1%s*:%s*[\'"][Bb]itwarden', + output = 'Bitwarden Vault Manifest File' + }, + { + match = '', + output = 'Manifest JSON File' + }, + } + }); + +------------------------------------------------ +---- UNCATEGORIZED ---- +------------------------------------------------ + +table.insert(fingerprints, { + category = 'uncategorized', + probes = { + { + path = '/archive/flash:home/html/images/Cisco_logo.gif', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'Cisco SDM' + } + } + }); + +table.insert(fingerprints, { + category = 'uncategorized', + probes = { + { + path = '/Default?MAIN=DEVICE', + method = 'HEAD' + }, + { + path = '/TopAccess/images/RioGrande/Rio_PPC.gif', + method = 'HEAD' + } + }, + matches = { + { + match = '', + output = 'TopAccess Toshiba e-Studio520' + } + } + }); + +table.insert(fingerprints, { + category = 'uncategorized', + probes = { + { + path = '/jwsappmngr.jnlp', + method = 'HEAD' + }, + { + path = '/nfdesktop.jnlp', + method = 'HEAD' + }, + { + path = '/nfservlets/servlet/SPSRouterServlet/', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'netForensics' + } + } + }); + +table.insert(fingerprints, { + category = 'uncategorized', + probes = { + { + path = '/na_admin/styles/dfm.css', + method = 'HEAD' + }, + }, + matches = { + { + match = '', + output = 'NetworkAppliance NetApp Release 6.5.3P4' + } + } + }); + +------------------------------------------------ +---- MISCELLANEOUS ITEMS OF INTEREST ---- +------------------------------------------------ + +-- Moodle files +table.insert(fingerprints, { + category = 'miscellaneous', + probes = { + { + path = '/lib/db/install.xml' + }, + { + path = '/lib/thirdpartylibs.xml' + }, + { + path = '/local/readme.txt' + } + }, + matches = { + { + match = 'XMLDB file for core Moodle tables', + output = 'Moodle db installation file' + }, + { + match = '<libraries>', + output = 'Moodle thirdpartylibs.xml' + }, + { + match = 'This file is part of Moodle', + output = 'Moodle local/readme.txt' + } + } + }); + +-- interesting README files +table.insert(fingerprints, { + category = 'miscellaneous', + probes = { + { + path = '/README' + }, + { + path = '/README.txt' + }, + { + path = '/xoda/README' + }, + { + path = '/docs/README' + }, + { + path = '/documents/README' + }, + { + path = '/dms/README' + }, + { + path = '/status/README' + }, + { + path = '/statusnet/README' + }, + { + path = '/twitter/README' + }, + }, + matches = { + { + match = 'StatusNet (.-) ', + output = 'StatusNet README version \\1' + }, + { + match = 'XODA.*Changelog%s---------%s(%d.-):', + output = 'XODA \\1' + }, + { + output = 'Interesting, a readme.' + } + } + }); + +table.insert(fingerprints, { + category = 'miscellaneous', + probes = { + { + path = '/0/', + method = 'GET' + }, + { + path = '/1/', + method = 'GET' + }, + { + path = '/2/', + method = 'GET' + }, + { + path = '/3/', + method = 'GET' + }, + { + path = '/4/', + method = 'GET' + }, + { + path = '/5/', + method = 'GET' + }, + { + path = '/6/', + method = 'GET' + }, + { + path = '/7/', + method = 'GET' + }, + { + path = '/8/', + method = 'GET' + }, + { + path = '/9/', + method = 'GET' + }, + { + path = '/10/', + method = 'GET' + }, + { + path = '/a/', + method = 'GET' + }, + { + path = '/b/', + method = 'GET' + }, + { + path = '/c/', + method = 'GET' + }, + { + path = '/d/', + method = 'GET' + }, + { + path = '/e/', + method = 'GET' + }, + { + path = '/f/', + method = 'GET' + }, + { + path = '/g/', + method = 'GET' + }, + { + path = '/h/', + method = 'GET' + }, + { + path = '/i/', + method = 'GET' + }, + { + path = '/j/', + method = 'GET' + }, + { + path = '/k/', + method = 'GET' + }, + { + path = '/l/', + method = 'GET' + }, + { + path = '/m/', + method = 'GET' + }, + { + path = '/n/', + method = 'GET' + }, + { + path = '/o/', + method = 'GET' + }, + { + path = '/p/', + method = 'GET' + }, + { + path = '/q/', + method = 'GET' + }, + { + path = '/r/', + method = 'GET' + }, + { + path = '/s/', + method = 'GET' + }, + { + path = '/t/', + method = 'GET' + }, + { + path = '/u/', + method = 'GET' + }, + { + path = '/v/', + method = 'GET' + }, + { + path = '/w/', + method = 'GET' + }, + { + path = '/x/', + method = 'GET' + }, + { + path = '/y/', + method = 'GET' + }, + { + path = '/z/', + method = 'GET' + }, + { + path = '/acceso/', + method = 'GET' + }, + { + path = '/access/', + method = 'GET' + }, + { + path = '/accesswatch/', + method = 'GET' + }, + { + path = '/acciones/', + method = 'GET' + }, + { + path = '/account/', + method = 'GET' + }, + { + path = '/accounting/', + method = 'GET' + }, + { + path = '/active/', + method = 'GET' + }, + { + path = '/activex/', + method = 'GET' + }, + { + path = '/admcgi/', + method = 'GET' + }, + { + path = '/admisapi/', + method = 'GET' + }, + { + path = '/AdvWebAdmin/', + method = 'GET' + }, + { + path = '/agentes/', + method = 'GET' + }, + { + path = '/Agent/', + method = 'GET' + }, + { + path = '/Agents/', + method = 'GET' + }, + { + path = '/AlbumArt_/', + method = 'GET' + }, + { + path = '/AlbumArt/', + method = 'GET' + }, + { + path = '/Album/', + method = 'GET' + }, + { + path = '/allow/', + method = 'GET' + }, + { + path = '/analog/', + method = 'GET' + }, + { + path = '/anthill/', + method = 'GET' + }, + { + path = '/apache/', + method = 'GET' + }, + { + path = '/api/', + method = 'GET' + }, + { + path = '/api-docs/', + method = 'GET' + }, + { + path = '/app/', + method = 'GET' + }, + { + path = '/applets/', + method = 'GET' + }, + { + path = '/appl/', + method = 'GET' + }, + { + path = '/application/', + method = 'GET' + }, + { + path = '/applications/', + method = 'GET' + }, + { + path = '/applmgr/', + method = 'GET' + }, + { + path = '/apply/', + method = 'GET' + }, + { + path = '/appsec/', + method = 'GET' + }, + { + path = '/apps/', + method = 'GET' + }, + { + path = '/archive/', + method = 'GET' + }, + { + path = '/archives/', + method = 'GET' + }, + { + path = '/ar/', + method = 'GET' + }, + { + path = '/asa/', + method = 'GET' + }, + { + path = '/asp/', + method = 'GET' + }, + { + path = '/atc/', + method = 'GET' + }, + { + path = '/aut/', + method = 'GET' + }, + { + path = '/authadmin/', + method = 'GET' + }, + { + path = '/auth/', + method = 'GET' + }, + { + path = '/author/', + method = 'GET' + }, + { + path = '/authors/', + method = 'GET' + }, + { + path = '/aw/', + method = 'GET' + }, + { + path = '/ayuda/', + method = 'GET' + }, + { + path = '/b2-include/', + method = 'GET' + }, + { + path = '/backend/', + method = 'GET' + }, + { + path = '/bad/', + method = 'GET' + }, + { + path = '/banca/', + method = 'GET' + }, + { + path = '/banco/', + method = 'GET' + }, + { + path = '/bank/', + method = 'GET' + }, + { + path = '/banner01/', + method = 'GET' + }, + { + path = '/banner/', + method = 'GET' + }, + { + path = '/banners/', + method = 'GET' + }, + { + path = '/bar/', + method = 'GET' + }, + { + path = '/batch/', + method = 'GET' + }, + { + path = '/bb-dnbd/', + method = 'GET' + }, + { + path = '/bbv/', + method = 'GET' + }, + { + path = '/bdata/', + method = 'GET' + }, + { + path = '/bdatos/', + method = 'GET' + }, + { + path = '/beta/', + method = 'GET' + }, + { + path = '/billpay/', + method = 'GET' + }, + { + path = '/bin/', + method = 'GET' + }, + { + path = '/binaries/', + method = 'GET' + }, + { + path = '/binary/', + method = 'GET' + }, + { + path = '/boadmin/', + method = 'GET' + }, + { + path = '/boot/', + method = 'GET' + }, + { + path = '/bottom/', + method = 'GET' + }, + { + path = '/browse/', + method = 'GET' + }, + { + path = '/browser/', + method = 'GET' + }, + { + path = '/bsd/', + method = 'GET' + }, + { + path = '/btauxdir/', + method = 'GET' + }, + { + path = '/bug/', + method = 'GET' + }, + { + path = '/bugs/', + method = 'GET' + }, + { + path = '/bugzilla/', + method = 'GET' + }, + { + path = '/buy/', + method = 'GET' + }, + { + path = '/buynow/', + method = 'GET' + }, + { + path = '/cached/', + method = 'GET' + }, + { + path = '/cache/', + method = 'GET' + }, + { + path = '/cache-stats/', + method = 'GET' + }, + { + path = '/caja/', + method = 'GET' + }, + { + path = '/card/', + method = 'GET' + }, + { + path = '/cards/', + method = 'GET' + }, + { + path = '/cart/', + method = 'GET' + }, + { + path = '/cash/', + method = 'GET' + }, + { + path = '/caspsamp/', + method = 'GET' + }, + { + path = '/catalog/', + method = 'GET' + }, + { + path = '/cbi-bin/', + method = 'GET' + }, + { + path = '/ccard/', + method = 'GET' + }, + { + path = '/ccards/', + method = 'GET' + }, + { + path = '/cd-cgi/', + method = 'GET' + }, + { + path = '/cd/', + method = 'GET' + }, + { + path = '/cdrom/', + method = 'GET' + }, + { + path = '/ce_html/', + method = 'GET' + }, + { + path = '/cert/', + method = 'GET' + }, + { + path = '/certificado/', + method = 'GET' + }, + { + path = '/certificate/', + method = 'GET' + }, + { + path = '/cfappman/', + method = 'GET' + }, + { + path = '/cfdocs/', + method = 'GET' + }, + { + path = '/cfide/', + method = 'GET' + }, + { + path = '/cgi-914/', + method = 'GET' + }, + { + path = '/cgi-915/', + method = 'GET' + }, + { + path = '/cgi-auth/', + method = 'GET' + }, + { + path = '/cgi-bin2/', + method = 'GET' + }, + { + path = '/cgi-bin/', + method = 'GET' + }, + { + path = '/cgibin/', + method = 'GET' + }, + { + path = '/cgi.cgi/', + method = 'GET' + }, + { + path = '/cgi-csc/', + method = 'GET' + }, + { + path = '/cgi-exe/', + method = 'GET' + }, + { + path = '/cgi/', + method = 'GET' + }, + { + path = '/cgi-home/', + method = 'GET' + }, + { + path = '/cgi-lib/', + method = 'GET' + }, + { + path = '/cgilib/', + method = 'GET' + }, + { + path = '/cgi-local/', + method = 'GET' + }, + { + path = '/cgi-perl/', + method = 'GET' + }, + { + path = '/cgi-scripts/', + method = 'GET' + }, + { + path = '/cgiscripts/', + method = 'GET' + }, + { + path = '/cgis/', + method = 'GET' + }, + { + path = '/cgi-shl/', + method = 'GET' + }, + { + path = '/cgi-shop/', + method = 'GET' + }, + { + path = '/cgi-sys/', + method = 'GET' + }, + { + path = '/cgi-weddico/', + method = 'GET' + }, + { + path = '/cgi-win/', + method = 'GET' + }, + { + path = '/cgiwin/', + method = 'GET' + }, + { + path = '/class/', + method = 'GET' + }, + { + path = '/classes/', + method = 'GET' + }, + { + path = '/cliente/', + method = 'GET' + }, + { + path = '/clientes/', + method = 'GET' + }, + { + path = '/client/', + method = 'GET' + }, + { + path = '/clients/', + method = 'GET' + }, + { + path = '/cm/', + method = 'GET' + }, + { + path = '/cobalt-images/', + method = 'GET' + }, + { + path = '/code/', + method = 'GET' + }, + { + path = '/com/', + method = 'GET' + }, + { + path = '/comments/', + method = 'GET' + }, + { + path = '/common/', + method = 'GET' + }, + { + path = '/communicator/', + method = 'GET' + }, + { + path = '/company/', + method = 'GET' + }, + { + path = '/comp/', + method = 'GET' + }, + { + path = '/compra/', + method = 'GET' + }, + { + path = '/compras/', + method = 'GET' + }, + { + path = '/compressed/', + method = 'GET' + }, + { + path = '/conecta/', + method = 'GET' + }, + { + path = '/conf/', + method = 'GET' + }, + { + path = '/config/', + method = 'GET' + }, + { + path = '/configs/', + method = 'GET' + }, + { + path = '/configure/', + method = 'GET' + }, + { + path = '/connect/', + method = 'GET' + }, + { + path = '/console/', + method = 'GET' + }, + { + path = '/contact/', + method = 'GET' + }, + { + path = '/contacts/', + method = 'GET' + }, + { + path = '/content/', + method = 'GET' + }, + { + path = '/content.ie5/', + method = 'GET' + }, + { + path = '/controlpanel/', + method = 'GET' + }, + { + path = '/core/', + method = 'GET' + }, + { + path = '/corp/', + method = 'GET' + }, + { + path = '/correo/', + method = 'GET' + }, + { + path = '/counter/', + method = 'GET' + }, + { + path = '/credit/', + method = 'GET' + }, + { + path = '/cron/', + method = 'GET' + }, + { + path = '/crons/', + method = 'GET' + }, + { + path = '/crypto/', + method = 'GET' + }, + { + path = '/CS/', + method = 'GET' + }, + { + path = '/csr/', + method = 'GET' + }, + { + path = '/css/', + method = 'GET' + }, + { + path = '/cuenta/', + method = 'GET' + }, + { + path = '/cuentas/', + method = 'GET' + }, + { + path = '/currency/', + method = 'GET' + }, + { + path = '/cust/', + method = 'GET' + }, + { + path = '/customer/', + method = 'GET' + }, + { + path = '/customers/', + method = 'GET' + }, + { + path = '/custom/', + method = 'GET' + }, + { + path = '/CVS/', + method = 'GET' + }, + { + path = '/cvsweb/', + method = 'GET' + }, + { + path = '/cybercash/', + method = 'GET' + }, + { + path = '/darkportal/', + method = 'GET' + }, + { + path = '/database/', + method = 'GET' + }, + { + path = '/databases/', + method = 'GET' + }, + { + path = '/datafiles/', + method = 'GET' + }, + { + path = '/dat/', + method = 'GET' + }, + { + path = '/data/', + method = 'GET' + }, + { + path = '/dato/', + method = 'GET' + }, + { + path = '/datos/', + method = 'GET' + }, + { + path = '/db/', + method = 'GET' + }, + { + path = '/dbase/', + method = 'GET' + }, + { + path = '/dcforum/', + method = 'GET' + }, + { + path = '/ddreport/', + method = 'GET' + }, + { + path = '/ddrint/', + method = 'GET' + }, + { + path = '/debug/', + method = 'GET' + }, + { + path = '/debugs/', + method = 'GET' + }, + { + path = '/default/', + method = 'GET' + }, + { + path = '/deleted/', + method = 'GET' + }, + { + path = '/delete/', + method = 'GET' + }, + { + path = '/demoauct/', + method = 'GET' + }, + { + path = '/demomall/', + method = 'GET' + }, + { + path = '/demo/', + method = 'GET' + }, + { + path = '/demos/', + method = 'GET' + }, + { + path = '/demouser/', + method = 'GET' + }, + { + path = '/deny/', + method = 'GET' + }, + { + path = '/derived/', + method = 'GET' + }, + { + path = '/design/', + method = 'GET' + }, + { + path = '/dev/', + method = 'GET' + }, + { + path = '/devel/', + method = 'GET' + }, + { + path = '/development/', + method = 'GET' + }, + { + path = '/directories/', + method = 'GET' + }, + { + path = '/directory/', + method = 'GET' + }, + { + path = '/directorymanager/', + method = 'GET' + }, + { + path = '/dir/', + method = 'GET' + }, + { + path = '/dl/', + method = 'GET' + }, + { + path = '/dm/', + method = 'GET' + }, + { + path = '/DMR/', + method = 'GET' + }, + { + path = '/dms0/', + method = 'GET' + }, + { + path = '/dmsdump/', + method = 'GET' + }, + { + path = '/dms/', + method = 'GET' + }, + { + path = '/dnn/', + method = 'GET' + }, + { + path = '/doc1/', + method = 'GET' + }, + { + path = '/doc/', + method = 'GET' + }, + { + path = '/doc-html/', + method = 'GET' + }, + { + path = '/docs1/', + method = 'GET' + }, + { + path = '/docs/', + method = 'GET' + }, + { + path = '/DocuColor/', + method = 'GET' + }, + { + path = '/documentation/', + method = 'GET' + }, + { + path = '/document/', + method = 'GET' + }, + { + path = '/documents/', + method = 'GET' + }, + { + path = '/dotnetnuke/', + method = 'GET' + }, + { + path = '/down/', + method = 'GET' + }, + { + path = '/download/', + method = 'GET' + }, + { + path = '/downloads/', + method = 'GET' + }, + { + path = '/dump/', + method = 'GET' + }, + { + path = '/durep/', + method = 'GET' + }, + { + path = '/easylog/', + method = 'GET' + }, + { + path = '/eforum/', + method = 'GET' + }, + { + path = '/ejemplo/', + method = 'GET' + }, + { + path = '/ejemplos/', + method = 'GET' + }, + { + path = '/emailclass/', + method = 'GET' + }, + { + path = '/email/', + method = 'GET' + }, + { + path = '/employees/', + method = 'GET' + }, + { + path = '/empoyees/', + method = 'GET' + }, + { + path = '/empris/', + method = 'GET' + }, + { + path = '/enter/', + method = 'GET' + }, + { + path = '/envia/', + method = 'GET' + }, + { + path = '/enviamail/', + method = 'GET' + }, + { + path = '/error.html', + method = 'GET' + }, + { + path = '/error/', + method = 'GET' + }, + { + path = '/errors/', + method = 'GET' + }, + { + path = '/es/', + method = 'GET' + }, + { + path = '/estmt/', + method = 'GET' + }, + { + path = '/etc/', + method = 'GET' + }, + { + path = '/etcpasswd/', + method = 'GET' + }, + { + path = '/excel/', + method = 'GET' + }, + { + path = '/exc/', + method = 'GET' + }, + { + path = '/exchange/', + method = 'GET' + }, + { + path = '/exchweb/', + method = 'GET' + }, + { + path = '/exec/', + method = 'GET' + }, + { + path = '/exe/', + method = 'GET' + }, + { + path = '/exit/', + method = 'GET' + }, + { + path = '/export/', + method = 'GET' + }, + { + path = '/external/', + method = 'GET' + }, + { + path = '/extranet/', + method = 'GET' + }, + { + path = '/failure/', + method = 'GET' + }, + { + path = '/fbsd/', + method = 'GET' + }, + { + path = '/fcgi-bin/', + method = 'GET' + }, + { + path = '/fcgi/', + method = 'GET' + }, + { + path = '/features/', + method = 'GET' + }, + { + path = '/fileadmin/', + method = 'GET' + }, + { + path = '/file/', + method = 'GET' + }, + { + path = '/filemanager/', + method = 'GET' + }, + { + path = '/files/', + method = 'GET' + }, + { + path = '/find/', + method = 'GET' + }, + { + path = '/flash/', + method = 'GET' + }, + { + path = '/foldoc/', + method = 'GET' + }, + { + path = '/foobar/', + method = 'GET' + }, + { + path = '/foo/', + method = 'GET' + }, + { + path = '/form/', + method = 'GET' + }, + { + path = '/forms/', + method = 'GET' + }, + { + path = '/formsmgr/', + method = 'GET' + }, + { + path = '/form-totaller/', + method = 'GET' + }, + { + path = '/foto/', + method = 'GET' + }, + { + path = '/fotos/', + method = 'GET' + }, + { + path = '/fpadmin/', + method = 'GET' + }, + { + path = '/fpclass/', + method = 'GET' + }, + { + path = '/fpdb/', + method = 'GET' + }, + { + path = '/fpe/', + method = 'GET' + }, + { + path = '/framesets/', + method = 'GET' + }, + { + path = '/frames/', + method = 'GET' + }, + { + path = '/frontpage/', + method = 'GET' + }, + { + path = '/ftp/', + method = 'GET' + }, + { + path = '/ftproot/', + method = 'GET' + }, + { + path = '/func/', + method = 'GET' + }, + { + path = '/function/', + method = 'GET' + }, + { + path = '/functions/', + method = 'GET' + }, + { + path = '/fun/', + method = 'GET' + }, + { + path = '/general/', + method = 'GET' + }, + { + path = '/gfx/', + method = 'GET' + }, + { + path = '/gif/', + method = 'GET' + }, + { + path = '/gifs/', + method = 'GET' + }, + { + path = '/global/', + method = 'GET' + }, + { + path = '/globals/', + method = 'GET' + }, + { + path = '/good/', + method = 'GET' + }, + { + path = '/graphics/', + method = 'GET' + }, + { + path = '/grocery/', + method = 'GET' + }, + { + path = '/guestbook/', + method = 'GET' + }, + { + path = '/guest/', + method = 'GET' + }, + { + path = '/guests/', + method = 'GET' + }, + { + path = '/GXApp/', + method = 'GET' + }, + { + path = '/HB/', + method = 'GET' + }, + { + path = '/HBTemplates/', + method = 'GET' + }, + { + path = '/helpdesk/', + method = 'GET' + }, + { + path = '/help/', + method = 'GET' + }, + { + path = '/hidden/', + method = 'GET' + }, + { + path = '/hide/', + method = 'GET' + }, + { + path = '/hitmatic/', + method = 'GET' + }, + { + path = '/hit_tracker/', + method = 'GET' + }, + { + path = '/hlstats/', + method = 'GET' + }, + { + path = '/home/', + method = 'GET' + }, + { + path = '/hosted/', + method = 'GET' + }, + { + path = '/host/', + method = 'GET' + }, + { + path = '/hostingcontroller/', + method = 'GET' + }, + { + path = '/hosting/', + method = 'GET' + }, + { + path = '/hp/', + method = 'GET' + }, + { + path = '/htbin/', + method = 'GET' + }, + { + path = '/htdocs/', + method = 'GET' + }, + { + path = '/ht/', + method = 'GET' + }, + { + path = '/htm/', + method = 'GET' + }, + { + path = '/html/', + method = 'GET' + }, + { + path = '/http/', + method = 'GET' + }, + { + path = '/https/', + method = 'GET' + }, + { + path = '/hyperstat/', + method = 'GET' + }, + { + path = '/i18n/', + method = 'GET' + }, + { + path = '/ibank/', + method = 'GET' + }, + { + path = '/ibill/', + method = 'GET' + }, + { + path = '/IBMWebAS/', + method = 'GET' + }, + { + path = '/icons/', + method = 'GET' + }, + { + path = '/idea/', + method = 'GET' + }, + { + path = '/ideas/', + method = 'GET' + }, + { + path = '/I/', + method = 'GET' + }, + { + path = '/iisadmin/', + method = 'GET' + }, + { + path = '/image/', + method = 'GET' + }, + { + path = '/images/', + method = 'GET' + }, + { + path = '/imagenes/', + method = 'GET' + }, + { + path = '/imagery/', + method = 'GET' + }, + { + path = '/img/', + method = 'GET' + }, + { + path = '/imp/', + method = 'GET' + }, + { + path = '/import/', + method = 'GET' + }, + { + path = '/impreso/', + method = 'GET' + }, + { + path = '/inc/', + method = 'GET' + }, + { + path = '/include/', + method = 'GET' + }, + { + path = '/includes/', + method = 'GET' + }, + { + path = '/incoming/', + method = 'GET' + }, + { + path = '/index/', + method = 'GET' + }, + { + path = '/inet/', + method = 'GET' + }, + { + path = '/inf/', + method = 'GET' + }, + { + path = '/info/', + method = 'GET' + }, + { + path = '/information/', + method = 'GET' + }, + { + path = '/in/', + method = 'GET' + }, + { + path = '/ingresa/', + method = 'GET' + }, + { + path = '/ingreso/', + method = 'GET' + }, + { + path = '/install/', + method = 'GET' + }, + { + path = '/internal/', + method = 'GET' + }, + { + path = '/internet/', + method = 'GET' + }, + { + path = '/intranet/', + method = 'GET' + }, + { + path = '/inventory/', + method = 'GET' + }, + { + path = '/invitado/', + method = 'GET' + }, + { + path = '/isapi/', + method = 'GET' + }, + { + path = '/j2ee/', + method = 'GET' + }, + { + path = '/japidoc/', + method = 'GET' + }, + { + path = '/java/', + method = 'GET' + }, + { + path = '/javascript/', + method = 'GET' + }, + { + path = '/javasdk/', + method = 'GET' + }, + { + path = '/javatest/', + method = 'GET' + }, + { + path = '/jave/', + method = 'GET' + }, + { + path = '/JBookIt/', + method = 'GET' + }, + { + path = '/jdbc/', + method = 'GET' + }, + { + path = '/job/', + method = 'GET' + }, + { + path = '/jrun/', + method = 'GET' + }, + { + path = '/jsa/', + method = 'GET' + }, + { + path = '/jscript/', + method = 'GET' + }, + { + path = '/jserv/', + method = 'GET' + }, + { + path = '/js/', + method = 'GET' + }, + { + path = '/jslib/', + method = 'GET' + }, + { + path = '/jsp/', + method = 'GET' + }, + { + path = '/junk/', + method = 'GET' + }, + { + path = '/kiva/', + method = 'GET' + }, + { + path = '/known/', + method = 'GET' + }, + { + path = '/labs/', + method = 'GET' + }, + { + path = '/lcgi/', + method = 'GET' + }, + { + path = '/lib/', + method = 'GET' + }, + { + path = '/libraries/', + method = 'GET' + }, + { + path = '/library/', + method = 'GET' + }, + { + path = '/libro/', + method = 'GET' + }, + { + path = '/license/', + method = 'GET' + }, + { + path = '/licenses/', + method = 'GET' + }, + { + path = '/links/', + method = 'GET' + }, + { + path = '/linux/', + method = 'GET' + }, + { + path = '/loader/', + method = 'GET' + }, + { + path = '/local/', + method = 'GET' + }, + { + path = '/location/', + method = 'GET' + }, + { + path = '/locations/', + method = 'GET' + }, + { + path = '/logfile/', + method = 'GET' + }, + { + path = '/logfiles/', + method = 'GET' + }, + { + path = '/logger/', + method = 'GET' + }, + { + path = '/logg/', + method = 'GET' + }, + { + path = '/logging/', + method = 'GET' + }, + { + path = '/logon/', + method = 'GET' + }, + { + path = '/logout/', + method = 'GET' + }, + { + path = '/lost+found/', + method = 'GET' + }, + { + path = '/mailman/', + method = 'GET' + }, + { + path = '/mailroot/', + method = 'GET' + }, + { + path = '/makefile/', + method = 'GET' + }, + { + path = '/manage/', + method = 'GET' + }, + { + path = '/management/', + method = 'GET' + }, + { + path = '/man/', + method = 'GET' + }, + { + path = '/manual/', + method = 'GET' + }, + { + path = '/map/', + method = 'GET' + }, + { + path = '/maps/', + method = 'GET' + }, + { + path = '/marketing/', + method = 'GET' + }, + { + path = '/member/', + method = 'GET' + }, + { + path = '/members/', + method = 'GET' + }, + { + path = '/mem_bin/', + method = 'GET' + }, + { + path = '/mem/', + method = 'GET' + }, + { + path = '/message/', + method = 'GET' + }, + { + path = '/messaging/', + method = 'GET' + }, + { + path = '/metacart/', + method = 'GET' + }, + { + path = '/microsoft/', + method = 'GET' + }, + { + path = '/misc/', + method = 'GET' + }, + { + path = '/mkstats/', + method = 'GET' + }, + { + path = '/mod/', + method = 'GET' + }, + { + path = '/module/', + method = 'GET' + }, + { + path = '/modules/', + method = 'GET' + }, + { + path = '/movimientos/', + method = 'GET' + }, + { + path = '/mpcgi/', + method = 'GET' + }, + { + path = '/mqseries/', + method = 'GET' + }, + { + path = '/msfpe/', + method = 'GET' + }, + { + path = '/ms/', + method = 'GET' + }, + { + path = '/msql/', + method = 'GET' + }, + { + path = '/Msword/', + method = 'GET' + }, + { + path = '/mxhtml/', + method = 'GET' + }, + { + path = '/mxportal/', + method = 'GET' + }, + { + path = '/my/', + method = 'GET' + }, + { + path = '/My%20Shared%20Folder/', + method = 'GET' + }, + { + path = '/mysql_admin/', + method = 'GET' + }, + { + path = '/mysql/', + method = 'GET' + }, + { + path = '/name/', + method = 'GET' + }, + { + path = '/names/', + method = 'GET' + }, + { + path = '/ncadmin/', + method = 'GET' + }, + { + path = '/nchelp/', + method = 'GET' + }, + { + path = '/netbasic/', + method = 'GET' + }, + { + path = '/netcat/', + method = 'GET' + }, + { + path = '/NetDynamic/', + method = 'GET' + }, + { + path = '/NetDynamics/', + method = 'GET' + }, + { + path = '/net/', + method = 'GET' + }, + { + path = '/netmagstats/', + method = 'GET' + }, + { + path = '/netscape/', + method = 'GET' + }, + { + path = '/netshare/', + method = 'GET' + }, + { + path = '/nettracker/', + method = 'GET' + }, + { + path = '/network/', + method = 'GET' + }, + { + path = '/new/', + method = 'GET' + }, + { + path = '/news/', + method = 'GET' + }, + { + path = '/News/', + method = 'GET' + }, + { + path = '/nextgeneration/', + method = 'GET' + }, + { + path = '/nl/', + method = 'GET' + }, + { + path = '/notes/', + method = 'GET' + }, + { + path = '/noticias/', + method = 'GET' + }, + { + path = '/NSearch/', + method = 'GET' + }, + { + path = '/objects/', + method = 'GET' + }, + { + path = '/odbc/', + method = 'GET' + }, + { + path = '/officescan/', + method = 'GET' + }, + { + path = '/ojspdemos/', + method = 'GET' + }, + { + path = '/old_files/', + method = 'GET' + }, + { + path = '/oldfiles/', + method = 'GET' + }, + { + path = '/old/', + method = 'GET' + }, + { + path = '/oprocmgr-service/', + method = 'GET' + }, + { + path = '/oprocmgr-status/', + method = 'GET' + }, + { + path = '/oracle/', + method = 'GET' + }, + { + path = '/oradata/', + method = 'GET' + }, + { + path = '/order/', + method = 'GET' + }, + { + path = '/orders/', + method = 'GET' + }, + { + path = '/os/', + method = 'GET' + }, + { + path = '/out/', + method = 'GET' + }, + { + path = '/outgoing/', + method = 'GET' + }, + { + path = '/owners/', + method = 'GET' + }, + { + path = '/ows-bin/', + method = 'GET' + }, + { + path = '/page/', + method = 'GET' + }, + { + path = '/_pages/', + method = 'GET' + }, + { + path = '/pages/', + method = 'GET' + }, + { + path = '/partner/', + method = 'GET' + }, + { + path = '/partners/', + method = 'GET' + }, + { + path = '/passport/', + method = 'GET' + }, + { + path = '/password/', + method = 'GET' + }, + { + path = '/passwords/', + method = 'GET' + }, + { + path = '/path/', + method = 'GET' + }, + { + path = '/payment/', + method = 'GET' + }, + { + path = '/payments/', + method = 'GET' + }, + { + path = '/pccsmysqladm/', + method = 'GET' + }, + { + path = '/PDG_Cart/', + method = 'GET' + }, + { + path = '/perl5/', + method = 'GET' + }, + { + path = '/perl/', + method = 'GET' + }, + { + path = '/personal/', + method = 'GET' + }, + { + path = '/pforum/', + method = 'GET' + }, + { + path = '/phorum/', + method = 'GET' + }, + { + path = '/phpBB/', + method = 'GET' + }, + { + path = '/php_classes/', + method = 'GET' + }, + { + path = '/phpclassifieds/', + method = 'GET' + }, + { + path = '/php/', + method = 'GET' + }, + { + path = '/phpimageview/', + method = 'GET' + }, + { + path = '/phpnuke/', + method = 'GET' + }, + { + path = '/phpPhotoAlbum/', + method = 'GET' + }, + { + path = '/phpprojekt/', + method = 'GET' + }, + { + path = '/phpSecurePages/', + method = 'GET' + }, + { + path = '/pics/', + method = 'GET' + }, + { + path = '/pictures/', + method = 'GET' + }, + { + path = '/pike/', + method = 'GET' + }, + { + path = '/piranha/', + method = 'GET' + }, + { + path = '/pls/', + method = 'GET' + }, + { + path = '/plsql/', + method = 'GET' + }, + { + path = '/plssampleadmin_/', + method = 'GET' + }, + { + path = '/plssampleadmin/', + method = 'GET' + }, + { + path = '/plssampleadmin_help/', + method = 'GET' + }, + { + path = '/plssample/', + method = 'GET' + }, + { + path = '/poll/', + method = 'GET' + }, + { + path = '/polls/', + method = 'GET' + }, + { + path = '/porn/', + method = 'GET' + }, + { + path = '/portal/', + method = 'GET' + }, + { + path = '/portals/', + method = 'GET' + }, + { + path = '/postgres/', + method = 'GET' + }, + { + path = '/postnuke/', + method = 'GET' + }, + { + path = '/ppwb/', + method = 'GET' + }, + { + path = '/printer/', + method = 'GET' + }, + { + path = '/printers/', + method = 'GET' + }, + { + path = '/privacy/', + method = 'GET' + }, + { + path = '/privado/', + method = 'GET' + }, + { + path = '/_private/', + method = 'GET' + }, + { + path = '/private/', + method = 'GET' + }, + { + path = '/priv/', + method = 'GET' + }, + { + path = '/prod/', + method = 'GET' + }, + { + path = '/projectserver/', + method = 'GET' + }, + { + path = '/protected/', + method = 'GET' + }, + { + path = '/proxy/', + method = 'GET' + }, + { + path = '/prueba/', + method = 'GET' + }, + { + path = '/pruebas/', + method = 'GET' + }, + { + path = '/prv/', + method = 'GET' + }, + { + path = '/pub/', + method = 'GET' + }, + { + path = '/_public/', + method = 'GET' + }, + { + path = '/public/', + method = 'GET' + }, + { + path = '/publica/', + method = 'GET' + }, + { + path = '/publicar/', + method = 'GET' + }, + { + path = '/publico/', + method = 'GET' + }, + { + path = '/publish/', + method = 'GET' + }, + { + path = '/purchase/', + method = 'GET' + }, + { + path = '/purchases/', + method = 'GET' + }, + { + path = '/pw/', + method = 'GET' + }, + { + path = '/python/', + method = 'GET' + }, + { + path = '/random_banner/', + method = 'GET' + }, + { + path = '/rdp/', + method = 'GET' + }, + { + path = '/Readme/', + method = 'GET' + }, + { + path = '/recycler/', + method = 'GET' + }, + { + path = '/registered/', + method = 'GET' + }, + { + path = '/register/', + method = 'GET' + }, + { + path = '/registry/', + method = 'GET' + }, + { + path = '/remote/', + method = 'GET' + }, + { + path = '/remove/', + method = 'GET' + }, + { + path = '/report/', + method = 'GET' + }, + { + path = '/reports/', + method = 'GET' + }, + { + path = '/reseller/', + method = 'GET' + }, + { + path = '/restricted/', + method = 'GET' + }, + { + path = '/retail/', + method = 'GET' + }, + { + path = '/reveal/', + method = 'GET' + }, + { + path = '/reviews/', + method = 'GET' + }, + { + path = '/ROADS/', + method = 'GET' + }, + { + path = '/robot/', + method = 'GET' + }, + { + path = '/robots/', + method = 'GET' + }, + { + path = '/root/', + method = 'GET' + }, + { + path = '/rsrc/', + method = 'GET' + }, + { + path = '/ruby/', + method = 'GET' + }, + { + path = '/sales/', + method = 'GET' + }, + { + path = '/save/', + method = 'GET' + }, + { + path = '/script/', + method = 'GET' + }, + { + path = '/ScriptLibrary/', + method = 'GET' + }, + { + path = '/scripts/', + method = 'GET' + }, + { + path = '/search/', + method = 'GET' + }, + { + path = '/search-ui/', + method = 'GET' + }, + { + path = '/sec/', + method = 'GET' + }, + { + path = '/secret/', + method = 'GET' + }, + { + path = '/secured/', + method = 'GET' + }, + { + path = '/secure/', + method = 'GET' + }, + { + path = '/security/', + method = 'GET' + }, + { + path = '/sell/', + method = 'GET' + }, + { + path = '/server/', + method = 'GET' + }, + { + path = '/server-info/', + method = 'GET' + }, + { + path = '/servers/', + method = 'GET' + }, + { + path = '/server_stats/', + method = 'GET' + }, + { + path = '/serverstats/', + method = 'GET' + }, + { + path = '/server-status/', + method = 'GET' + }, + { + path = '/service/', + method = 'GET' + }, + { + path = '/services/', + method = 'GET' + }, + { + path = '/servicio/', + method = 'GET' + }, + { + path = '/servicios/', + method = 'GET' + }, + { + path = '/servlet/', + method = 'GET' + }, + { + path = '/servlets/', + method = 'GET' + }, + { + path = '/session/', + method = 'GET' + }, + { + path = '/setup/', + method = 'GET' + }, + { + path = '/shared/', + method = 'GET' + }, + { + path = '/sharedtemplates/', + method = 'GET' + }, + { + path = '/share/', + method = 'GET' + }, + { + path = '/shell-cgi/', + method = 'GET' + }, + { + path = '/shipping/', + method = 'GET' + }, + { + path = '/shop/', + method = 'GET' + }, + { + path = '/shopper/', + method = 'GET' + }, + { + path = '/show/', + method = 'GET' + }, + { + path = '/SilverStream/', + method = 'GET' + }, + { + path = '/siteadmin/', + method = 'GET' + }, + { + path = '/site/', + method = 'GET' + }, + { + path = '/sitemgr/', + method = 'GET' + }, + { + path = '/siteminderagent/', + method = 'GET' + }, + { + path = '/siteminder/', + method = 'GET' + }, + { + path = '/siteserver/', + method = 'GET' + }, + { + path = '/sites/', + method = 'GET' + }, + { + path = '/sitestats/', + method = 'GET' + }, + { + path = '/siteupdate/', + method = 'GET' + }, + { + path = '/smreports/', + method = 'GET' + }, + { + path = '/smreportsviewer/', + method = 'GET' + }, + { + path = '/soapdocs/', + method = 'GET' + }, + { + path = '/soap/', + method = 'GET' + }, + { + path = '/software/', + method = 'GET' + }, + { + path = '/solaris/', + method = 'GET' + }, + { + path = '/source/', + method = 'GET' + }, + { + path = '/sql/', + method = 'GET' + }, + { + path = '/squid/', + method = 'GET' + }, + { + path = '/src/', + method = 'GET' + }, + { + path = '/srchadm/', + method = 'GET' + }, + { + path = '/ssi/', + method = 'GET' + }, + { + path = '/ssl/', + method = 'GET' + }, + { + path = '/sslkeys/', + method = 'GET' + }, + { + path = '/staff/', + method = 'GET' + }, + { + path = '/state/', + method = 'GET' + }, + { + path = '/stat/', + method = 'GET' + }, + { + path = '/statistic/', + method = 'GET' + }, + { + path = '/statistics/', + method = 'GET' + }, + { + path = '/stats-bin-p/', + method = 'GET' + }, + { + path = '/stats/', + method = 'GET' + }, + { + path = '/stats_old/', + method = 'GET' + }, + { + path = '/status/', + method = 'GET' + }, + { + path = '/storage/', + method = 'GET' + }, + { + path = '/StoreDB/', + method = 'GET' + }, + { + path = '/store/', + method = 'GET' + }, + { + path = '/storemgr/', + method = 'GET' + }, + { + path = '/stronghold-info/', + method = 'GET' + }, + { + path = '/stronghold-status/', + method = 'GET' + }, + { + path = '/stuff/', + method = 'GET' + }, + { + path = '/style/', + method = 'GET' + }, + { + path = '/styles/', + method = 'GET' + }, + { + path = '/stylesheet/', + method = 'GET' + }, + { + path = '/stylesheets/', + method = 'GET' + }, + { + path = '/subir/', + method = 'GET' + }, + { + path = '/sun/', + method = 'GET' + }, + { + path = '/super_stats/', + method = 'GET' + }, + { + path = '/supplier/', + method = 'GET' + }, + { + path = '/suppliers/', + method = 'GET' + }, + { + path = '/supply/', + method = 'GET' + }, + { + path = '/supporter/', + method = 'GET' + }, + { + path = '/support/', + method = 'GET' + }, + { + path = '/sysadmin/', + method = 'GET' + }, + { + path = '/sysbackup/', + method = 'GET' + }, + { + path = '/sys/', + method = 'GET' + }, + { + path = '/system/', + method = 'GET' + }, + { + path = '/systems/', + method = 'GET' + }, + { + path = '/tar/', + method = 'GET' + }, + { + path = '/target/', + method = 'GET' + }, + { + path = '/tarjetas/', + method = 'GET' + }, + { + path = '/tech/', + method = 'GET' + }, + { + path = '/technote/', + method = 'GET' + }, + { + path = '/te_html/', + method = 'GET' + }, + { + path = '/temp/', + method = 'GET' + }, + { + path = '/template/', + method = 'GET' + }, + { + path = '/templates/', + method = 'GET' + }, + { + path = '/temporal/', + method = 'GET' + }, + { + path = '/test-cgi/', + method = 'GET' + }, + { + path = '/testing/', + method = 'GET' + }, + { + path = '/tests/', + method = 'GET' + }, + { + path = '/testweb/', + method = 'GET' + }, + { + path = '/themes/', + method = 'GET' + }, + { + path = '/ticket/', + method = 'GET' + }, + { + path = '/tickets/', + method = 'GET' + }, + { + path = '/tip/', + method = 'GET' + }, + { + path = '/tips/', + method = 'GET' + }, + { + path = '/tmp/', + method = 'GET' + }, + { + path = '/ToDo/', + method = 'GET' + }, + { + path = '/tool/', + method = 'GET' + }, + { + path = '/tools/', + method = 'GET' + }, + { + path = '/TopAccess/', + method = 'GET' + }, + { + path = '/top/', + method = 'GET' + }, + { + path = '/tpv/', + method = 'GET' + }, + { + path = '/trabajo/', + method = 'GET' + }, + { + path = '/track/', + method = 'GET' + }, + { + path = '/tracking/', + method = 'GET' + }, + { + path = '/transfer/', + method = 'GET' + }, + { + path = '/transito/', + method = 'GET' + }, + { + path = '/transpolar/', + method = 'GET' + }, + { + path = '/tree/', + method = 'GET' + }, + { + path = '/trees/', + method = 'GET' + }, + { + path = '/trick/', + method = 'GET' + }, + { + path = '/tricks/', + method = 'GET' + }, + { + path = '/u02/', + method = 'GET' + }, + { + path = '/unix/', + method = 'GET' + }, + { + path = '/unknown/', + method = 'GET' + }, + { + path = '/updates/', + method = 'GET' + }, + { + path = '/upload/', + method = 'GET' + }, + { + path = '/uploads/', + method = 'GET' + }, + { + path = '/usage/', + method = 'GET' + }, + { + path = '/userdb/', + method = 'GET' + }, + { + path = '/user/', + method = 'GET' + }, + { + path = '/users/', + method = 'GET' + }, + { + path = '/us/', + method = 'GET' + }, + { + path = '/usr/', + method = 'GET' + }, + { + path = '/ustats/', + method = 'GET' + }, + { + path = '/usuario/', + method = 'GET' + }, + { + path = '/usuarios/', + method = 'GET' + }, + { + path = '/util/', + method = 'GET' + }, + { + path = '/utils/', + method = 'GET' + }, + { + path = '/vendor/', + method = 'GET' + }, + { + path = '/vfs/', + method = 'GET' + }, + { + path = '/view/', + method = 'GET' + }, + { + path = '/vpn/', + method = 'GET' + }, + { + path = '/vti_txt/', + method = 'GET' + }, + { + path = '/w2000/', + method = 'GET' + }, + { + path = '/w2k/', + method = 'GET' + }, + { + path = '/w3perl/', + method = 'GET' + }, + { + path = '/w-agora/', + method = 'GET' + }, + { + path = '/way-board/', + method = 'GET' + }, + { + path = '/web800fo/', + method = 'GET' + }, + { + path = '/webaccess/', + method = 'GET' + }, + { + path = '/webadmin/', + method = 'GET' + }, + { + path = '/webAdmin/', + method = 'GET' + }, + { + path = '/webalizer/', + method = 'GET' + }, + { + path = '/webapps/', + method = 'GET' + }, + { + path = '/WebBank/', + method = 'GET' + }, + { + path = '/webboard/', + method = 'GET' + }, + { + path = '/WebCalendar/', + method = 'GET' + }, + { + path = '/webcart/', + method = 'GET' + }, + { + path = '/webcart-lite/', + method = 'GET' + }, + { + path = '/webcgi/', + method = 'GET' + }, + { + path = '/webdata/', + method = 'GET' + }, + { + path = '/webdav/', + method = 'GET' + }, + { + path = '/webdb/', + method = 'GET' + }, + { + path = '/webDB/', + method = 'GET' + }, + { + path = '/web/', + method = 'GET' + }, + { + path = '/webimages2/', + method = 'GET' + }, + { + path = '/webimages/', + method = 'GET' + }, + { + path = '/web-inf/', + method = 'GET' + }, + { + path = '/webmaster/', + method = 'GET' + }, + { + path = '/webmaster_logs/', + method = 'GET' + }, + { + path = '/webMathematica/', + method = 'GET' + }, + { + path = '/webpub/', + method = 'GET' + }, + { + path = '/webpub-ui/', + method = 'GET' + }, + { + path = '/webreports/', + method = 'GET' + }, + { + path = '/webreps/', + method = 'GET' + }, + { + path = '/webshare/', + method = 'GET' + }, + { + path = '/WebShop/', + method = 'GET' + }, + { + path = '/website/', + method = 'GET' + }, + { + path = '/webstat/', + method = 'GET' + }, + { + path = '/webstats/', + method = 'GET' + }, + { + path = '/Web_store/', + method = 'GET' + }, + { + path = '/webtrace/', + method = 'GET' + }, + { + path = '/WebTrend/', + method = 'GET' + }, + { + path = '/webtrends/', + method = 'GET' + }, + { + path = '/web_usage/', + method = 'GET' + }, + { + path = '/win2k/', + method = 'GET' + }, + { + path = '/window/', + method = 'GET' + }, + { + path = '/windows/', + method = 'GET' + }, + { + path = '/win/', + method = 'GET' + }, + { + path = '/winnt/', + method = 'GET' + }, + { + path = '/word/', + method = 'GET' + }, + { + path = '/work/', + method = 'GET' + }, + { + path = '/world/', + method = 'GET' + }, + { + path = '/wsdocs/', + method = 'GET' + }, + { + path = '/WS_FTP/', + method = 'GET' + }, + { + path = '/wstats/', + method = 'GET' + }, + { + path = '/wusage/', + method = 'GET' + }, + { + path = '/www0/', + method = 'GET' + }, + { + path = '/www2/', + method = 'GET' + }, + { + path = '/www3/', + method = 'GET' + }, + { + path = '/www4/', + method = 'GET' + }, + { + path = '/www/', + method = 'GET' + }, + { + path = '/wwwjoin/', + method = 'GET' + }, + { + path = '/wwwrooot/', + method = 'GET' + }, + { + path = '/www-sql/', + method = 'GET' + }, + { + path = '/wwwstat/', + method = 'GET' + }, + { + path = '/wwwstats/', + method = 'GET' + }, + { + path = '/xGB/', + method = 'GET' + }, + { + path = '/xml/', + method = 'GET' + }, + { + path = '/XSL/', + method = 'GET' + }, + { + path = '/xtemp/', + method = 'GET' + }, + { + path = '/xymon/', + method = 'GET' + }, + { + path = '/zb41/', + method = 'GET' + }, + { + path = '/zipfiles/', + method = 'GET' + }, + { + path = '/zip/', + method = 'GET' + }, + { + path = '/_docs/', + method = 'GET' + } + }, + matches = { + { + match = '<title>Index of .*(Apache.*) Server at', + output = 'Potentially interesting directory w/ listing on \'\\1\'' + }, + { + match = '<title>Index of', + output = 'Potentially interesting folder w/ directory listing' + }, + { + match = '', + output = 'Potentially interesting folder' + } + } + }); + +-- Sitecore Version +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/sitecore/shell/sitecore.version.xml', + method = 'GET' + }, + { + path = '/sitecore/login/default.aspx', + method = 'GET' + } + }, + matches = { + { + match = '<major>([^<]*)</major>.*<minor>([^<]*)</minor>.*<build>([^<]*)</build>.*<revision>([^<]*)</revision>', + output = '\\1.\\2.\\3 (rev. \\4)' + }, + { + match = 'class="SystemInformationDivider">.*Sitecore.NET ([^<]*)</div>', + output = '\\1' + }, + { + match = '<hr/>.*Sitecore version ([^<]*)</div>', + output = '\\1' + }, + { + match = '', + output = 'Sitecore.NET login page' + } + } + }); + +-- Sitecore +table.insert(fingerprints, { + category = 'cms', + probes = { + { + path = '/sitecore/admin/stats.aspx', -- Removed in version 6.3.1 (rev. 110112) + method = 'HEAD' + }, + { + path = '/sitecore/admin/unlock_admin.aspx', -- disabled per default in 6.2.0 (rev.100507) + method = 'HEAD' + }, + { + path = '/sitecore/shell/Applications/shell.xml', + method = 'HEAD' + }, + { + path = '/sitecore/admin/ShowConfig.aspx', + method = 'HEAD' + }, + { + path = '/App_Config/Security/Domains.config.xml', + method = 'HEAD' + }, + { + path = '/App_Config/Security/GlobalRoles.config.xml', + method = 'HEAD' + }, + { + path = '/sitecore%20modules/staging/service/api.asmx', + method = 'HEAD' + }, + { + path = '/sitecore%20modules/staging/workdir', + method = 'HEAD' + }, + { + path = '/sitecore/system/Settings/Security/Profiles', + method = 'HEAD' + }, + + }, + matches = { + { + match = '', + output = 'Sitecore.NET (CMS)' + } + }, + }); + +local stdnse = require "stdnse" +local nmap = require "nmap" + +nikto_db_path = stdnse.get_script_args("http-fingerprints.nikto-db-path") or "db_tests" +nikto_db_path = nmap.fetchfile(nikto_db_path) or nikto_db_path +local f = io.open(nikto_db_path, "r") + +if f then + + f:close() + stdnse.debug1("Found nikto db.") + + local nikto_db = {} + for l in io.lines(nikto_db_path) do + + -- Skip comments. + if not string.match(l, "^#.*") then + + record = {} + + for field in string.gmatch(l, "\"(.-)\",") do + + -- Grab every attribute and create a record. + if field then + string.gsub(field, '%%', '%%%%') + table.insert(record, field) + end + end + + -- Make sure this record doesn't exists already. + local exists = false + for _, f in pairs(fingerprints) do + if f.probes then + for __, p in pairs(f.probes) do + if p.path then + if p.path == record[4] then + exists = true + break + end + end + end + end + end + + -- What we have right now, is the following record: + -- record[1]: Nikto test ID + -- record[2]: OSVDB-ID + -- record[3]: Server Type + -- record[4]: URI + -- record[5]: HTTP Method + -- record[6]: Match 1 + -- record[7]: Match 1 (Or) + -- record[8]: Match1 (And) + -- record[9]: Fail 1 + -- record[10]: Fail 2 + -- record[11]: Summary + -- record[12]: HTTP Data + -- record[13]: Headers + + -- Is this a valid record? Atm, with our current format we need + -- to skip some nikto records. See NSEDoc for more info. + + if not exists + and record[4] + and record[8] == "" and record[10] == "" and record[12] == "" + and (tonumber(record[4]) == nil or (tonumber(record[4]) and record[4] == "200")) then + + -- Our current format does not support HTTP code matching. + if record[6] == "200" then record[6] = "" end + + nikto_fingerprint = { category = "nikto", + probes = { + { + path = record[4], + method = record[5] + } + }, + matches = { + { + dontmatch = record[9], + match = record[6], + output = record[11] + }, + }, + } + + -- If there is a second match, add it. + if record[7] and record[7] ~= "" then + table.insert(nikto_fingerprint.matches, { match = record[7], output = record[11] }) + end + + table.insert(fingerprints, nikto_fingerprint) + + end + end +end +end |