---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:
-- http://nmap.org/book/man-legal.html
--
-- 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.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 nmap-dev@insecure.org or contact Ron Bowes!
--
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='
Index of .*(Apache.*) Server at', output='Root directory w/ listing on \'\\1\''},
{match='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'}
},
matches={
{output='Wiki'}
}
})
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='/manager/html/upload', method='HEAD'},
{path='/web-console/ServerInfo.jsp', method='HEAD'},
{path='/jmx-console/', method='HEAD'},
{path='/CFIDE/administrator/enter.cfm', method='HEAD'},
{path='/CFIDE/componentutils/login.cfm', method='HEAD'},
{path='/admin.php', method='HEAD'},
{path='/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='/admin/account.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/account.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/index.asp', method='HEAD'},
{path='/admincp/login.asp', method='HEAD'},
{path='/admincp/index.html', 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='/admin/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='/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'},
},
matches={
{match='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'}
},
matches={
{match='Index of', output='Backup folder w/ directory listing'},
{match='', output='Possible backup'}
}
})
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='Index of .*(Apache.*) Server at', output='Sample scripts w/ listing on \'\\1\''},
{match='Index of', output='Sample scripts w/ directory listing'},
{match='', output='Sample scripts'}
}
})
table.insert(fingerprints, {
category='general',
probes={
{path='/login.asp', method='HEAD'},
{path='/login.aspx', method='HEAD'},
{path='/login/', method='HEAD'},
{path='/login.htm', method='HEAD'},
{path='/login.html', method='HEAD'},
{path='/login.php', 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'}
}
})
------------------------------------------------
---- SECURITY SOFTWARE ----
------------------------------------------------
-- These checks will find specific installed software. If possible, it will also
-- find versions, etc.
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'}
}
})
------------------------------------------------
---- MANAGEMENT SOFTWARE ----
------------------------------------------------
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/', method='HEAD'},
{path='/manager/html/upload', method='HEAD'},
},
matches= {
{match='', output='Tomcat manager (possibly)'}
}
})
table.insert(fingerprints, {
category='management',
probes={
{path='/web-console/ServerInfo.jsp', method='HEAD'},
{path='/jmx-console/', method='HEAD'},
},
matches= {
{match='', output='JBOSS Console'}
}
})
table.insert(fingerprints, {
category='management',
probes={
{path='/CFIDE/administrator/enter.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='Connect Pro Central Login', output='Adobe Acrobat Connect Pro'},
{match='Forgot your password?', 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='Dashboard', output='Prinergy Dashboard Client Login'}
}
})
------------------------------------------------
---- 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 ----
------------------------------------------------
table.insert(fingerprints, {
category='database',
probes={
{path='/phpmyadmin/', method='HEAD'},
{path='/phpMyAdmin/', 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'},
},
matches= {
{match='', output='Lotus Domino'}
}
})
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'},
},
matches= {
{match='', output='Lotus Domino'}
}
})
------------------------------------------------
---- 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'},
},
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'}
}
})
------------------------------------------------
---- NETWORK EQUIPMENT ----
------------------------------------------------
-- Routers, switches, etc
table.insert(fingerprints, {
category='network',
probes={
{path='/', method='GET'},
},
matches= {
{match='realm="WRT54G"', output='Linksys WRT54g Wireless Router'}
}
})
------------------------------------------------
---- ATTACKS ----
------------------------------------------------
-- These will search for and possibly exploit vulnerabilities.
table.insert(fingerprints, {
category='attacks',
probes={
{path='/sdk/../../../../../../../etc/vmware/hostd/vmInventory.xml', method='GET'},
{path='/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/vmware/hostd/vmInventory.xml', method='GET'}
},
matches={
{match='', 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'},
{path='/../../../../../../../../../../boot.ini', method='GET'}
},
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='/_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'}
}
})
------------------------------------------------
---- Open Source CMS checks ----
------------------------------------------------
-- Broad wordpress version identification
table.insert(fingerprints, {
category='cms',
probes={
{path='/wp-login.php'},
{path='/wordpress/wp-login.php'},
{path='/blog/wp-login.php'},
{path='/weblog/wp-login.php'}
},
matches={
{match='ver=20080708', output='WordPress 2.6.x found'},
{match='ver=20081210', output='WordPress 2.7.x found'},
{match='ver=20090514', output='WordPress 2.8.x found'},
{match='ver=20091217', output='WordPress 2.9.x found'},
{match='ver=20100601', output='WordPress 3.0.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%)', 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-%..-)', output='phpBB version slightly newer than \\1'},
{match='Pligg Content Management System%s*Version (.-)
', output='Pligg 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='ecoder v(.-)', output='ecoder v\\1'},
{match='Splash Frog WMS v(.-)', output='Splash Frog WMS v\\1'},
{match='StatusNet microblogging software, version (.-),', output='StatusNet v\\1'},
{match='