Blind Elephant: Web Application Fingerprinting & Vulnerability Inferencing. Patrick Thomas Qualys 7/28/10



Similar documents
Web Hosting Control Panel

Web Hosting Control Panel

JOOMLA SECURITY. ireland website design. by Oliver Hummel. ADDRESS Unit 12D, Six Cross Roads Business Park, Waterford City

Conducting Web Application Pentests. From Scoping to Report For Education Purposes Only

Web Hosting Control Panel

Using PHPIDS to Understand Attacks

Joomla Security Report

by Geoff Blake TenTonOnline.com

3. Broken Account and Session Management. 4. Cross-Site Scripting (XSS) Flaws. Web browsers execute code sent from websites. Account Management

6 reasons to choose us for your web hosting

The ultimate integrated Magento helpdesk solution

SEO Training SYLLABUS by SEOOFINDIA.COM

112 Linton House Union Street London SE1 0LH T: F:

Rise of the Machines: An Internet-Wide Analysis of Web Bots in 2014

Data Breaches and Web Servers: The Giant Sucking Sound

Penetration Testing. NTS330 Unit 1 Penetration V1.0. February 20, Juan Ortega. Juan Ortega, juaorteg@uat.edu. 1 Juan Ortega, juaorteg@uat.

Make a folder named Lab3. We will be using Unix redirection commands to create several output files in that folder.

What is Web Security? Motivation

Nessus. A short review of the Nessus computer network vulnerability analysing tool. Authors: Henrik Andersson Johannes Gumbel Martin Andersson

Detecting (and even preventing) SQL Injection Using the Percona Toolkit and Noinject!

Building a Web Application Security Program. Rich Mogull Adrian Lane Securosis, L.L.C.

Virtually Pwned Pentesting VMware. Claudio

SEO Education 101. By Matt Bush. Visit for the latest internet marketing tips and tactics

Linux versus Windows Hosting Plus complete list of features from CompuTech

QualysGuard WAS. Getting Started Guide Version 3.3. March 21, 2014

Buyer s Guide to Managed WordPress Hosting

Exploiting Foscam IP Cameras.

WordPress Security Scan Configuration

Maltego Tungsten as a collaborative attack platform BlackHat 2013

cpanel (yes, it stands for Control Panel) and WHM (the Web Host Manager) provide a web-based graphical

MetaXSSploit. Bringing XSS in Pentesting A journey in building a security tool. Claudio

Web Development QUESTIONNAIRE. Version: 1.0 BIG!

Unified Security Management (USM) 5.2 Vulnerability Assessment Guide

Introduction to Penetration Testing Graham Weston

WINDOWS AZURE EXECUTION MODELS

EC-Council CAST CENTER FOR ADVANCED SECURITY TRAINING. CAST 619 Advanced SQLi Attacks and Countermeasures. Make The Difference CAST.

Anatomy of an ethical penetration test

SECURITY B-SIDES: ATLANTA STRATEGIC PENETRATION TESTING. Presented by: Dave Kennedy Eric Smith

QualysGuard WAS. Getting Started Guide Version 4.1. April 24, 2015

Nikolay Zaynelov Annual LUG-БГ Meeting nikolay.zaynelov.com

Attack Frameworks and Tools

Running head: USING NESSUS AND NMAP TOOLS 1

Document Freedom Workshop DFW 2012: CMS, Moodle and Web Publishing

Using Nessus In Web Application Vulnerability Assessments

Intro to Patching. Thomas Cameron, Chief Architect, Western US, Red Hat twitter: thomasdcameron IRC: choirboy on Freenode

How to hack a website with Metasploit

WordPress SEO 101

Websense Support Webinar: Questions and Answers

Using your Drupal Website Book 1 - Drupal Basics

ICCM Reseller Web site Plan Features

Web Application Attacks And WAF Evasion

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS

SSL and Browsers: The Pillars of Broken Security

Penetration Testing Report Client: Business Solutions June 15 th 2015

State of The Art: Automated Black Box Web Application Vulnerability Testing. Jason Bau, Elie Bursztein, Divij Gupta, John Mitchell

Managing Latency in IPS Networks

HAProxy. Free, Fast High Availability and Load Balancing. Adam Thornton 10 September 2014

RRLC uses Google Apps for Nonprofits for. Calendar Groups (listservs) Drive (file sharing) Google+ Analytics (web statistics) YouTube

How To Build An Intranet In Sensesnet.Com

Security Products Development. Leon Juranic

Application Intrusion Detection

EXTRA. Vulnerability scanners are indispensable both VULNERABILITY SCANNER

Content Management System (Comparison between Top- Three CMS Platforms)

How To Protect A Web Application From Attack From A Trusted Environment

ABC LTD EXTERNAL WEBSITE AND INFRASTRUCTURE IT HEALTH CHECK (ITHC) / PENETRATION TEST

Forensic analysis of a Linux web server

Top HR Interview Question and Answers

HP Client Automation Standard Fast Track guide

Footprinting and Reconnaissance Tools

KEN VAN WYK. Fundamentals of Secure Coding and how to break Software MARCH 19-23, 2007 RESIDENZA DI RIPETTA - VIA DI RIPETTA, 231 ROME (ITALY)

Is the Scanning of Computer Networks Dangerous?

How I Learned to Stop Worrying and Love Compliance Ron Gula, CEO Tenable Network Security

Secret Server Qualys Integration Guide

Web Application Firewall Profiling and Evasion. Michael Ritter Cyber Risk Services Deloitte

Information Supplement: Requirement 6.6 Code Reviews and Application Firewalls Clarified

Malware Analysis Quiz 6

Security of IPv6 and DNSSEC for penetration testers

Penetration Testing Scope Factors

Assessing your SEO Situation By: Wyatt Jozwowski

YubiKey Authentication Module Design Guideline

Secure in 2010? Broken in 2011!

INTRODUCTION: PENETRATION TEST A BUSINESS PERSPECTIVE:

Transcription:

Blind Elephant: Web Application Fingerprinting & Vulnerability Inferencing Patrick Thomas Qualys 7/28/10

Outline Web Apps & Security Existing Fingerprinting Approaches Static File Approach Observations From A Net Survey Q & A 2

Well-Known Web Applications Every conceivable use Content Management/Blogging Forums Email E-Commerce DB Admin Backup and File Storage Admin Device/System/VM Admin Version Control UI Intranet/Collaboration 3

Well-Known Web Applications 4

Special Challenges Securing Web Apps Remotely accessible by nature Lots of attack surface exposed (direct and indirect) Easy to set up and admin Fly under IT radar 5

Special Challenges Securing Web Apps Fast release cycle (often open-source) Exploits are (often) simpler to create & comprehend wget http://example.com/wp-login.php?action=rp&key[]= wget header Cookie: tinybrowser_lang=../../../../../../../zomgsecrets\r\n http://example.com/plugins/editors/tinymce/jscripts/tiny_mce/pl ugins/tinybrowser/folders.php ( and of course everything the WAF vendors are saying) 6

WAS Is Overkill For Well-Known Apps Known app + known-vulnerability list = traditional vulnerability management Knowing the version is good enough to infer vulnerabilities It s not nearly as sexy, but it works Discovering the app and version Fingerprinting 7

Existing Fingerprinting Approaches Labor intensive to add/update signatures Manually locate version in files or build regexes for headers If selected strings go away, human effort to notice and update Decent hardening pretty much nukes them Built-in options to remove identifiers (eg, meta generator) Remove standard files Easy to lie to Fingerprinters like this: Sedusa (in nmap), Wappalyzer, BackendInfo, Plecost, etc, etc 8

More Advanced Tools Typically improve in one area Resistant to hardening Less labor intensive Have their own downsides Less specific results Some request massive amounts of data (> 20 megs!) Some are less generic (Plecost = Wordpress Only) Fingerprinters like this: Sucuri, WAFP, WhatWeb, BackEndInfo (sortof), 9

Goals for a (WebApp) Fingerprinter Very Generic Fast Low resource usage Accurate (Low FP/FN) Resistant to hardening/banner removal Super easy to support new versions/apps 10

The Blind Men and the Elephant 11

Collect and Eliminate Possibilities Tree or Elephant Spear or Elephant Fan or Elephant 12 Vine or Elephant

Intersect the Possibilities and 13

Preparing the Data 1.0.2 1.0.3 1.0.4 Web App Versions (eg, Joomla-*.zip) Paths Table What versions will a path give me info on? 2.0.1 3.1.6 Versions Table If I want to confirm or rule out a version/versions, what s a path that will do that? 3.2.10 14

HashesTable wordpress-0.71-gold/*/*.* wordpress-0.72-beta-1/*/*.* wordpress-0.72-rc1/*/*.* wordpress-1.0.1-miles/*/*.* wordpress-1.0.1-rc1/*/*.* wordpress-1.0.2/*/*.* wordpress-1.0.2-blakey/*/*.* wordpress-1.0-platinum/*/*.* wordpress-1.0-rc1/*/*.* wordpress-1.2.1/*/*.* wordpress-1.2.2/*/*.* wordpress-1.2-beta/*/*.* wordpress-1.2-delta/*/*.* wordpress-1.2-mingus/*/*.* wordpress-1.2-rc1/*/*.* wordpress-1.2-rc2/*/*.* wordpress-2.9/*/*.* wordpress-2.9.1/*/*.* wordpress-2.9.1-beta1/*/*.* wordpress-2.9.1-beta1-iis/*/*.* wordpress-2.9.1-iis/*/*.* wordpress-2.9.1-rc1/*/*.* wordpress-2.9.1-rc1-iis/*/*.* wordpress-2.9-beta-1/*/*.* wordpress-2.9-beta-1-iis/*/*.* wordpress-2.9-beta-2/*/*.* wordpress-2.9-beta-2-iis/*/*.* wordpress-2.9-iis/*/*.* wordpress-2.9-rc1/*/*.* wordpress-2.9-rc1-iis/*/*.* wordpress-1.5-strayhorn/*/*.* wordpress-2.0.7-rc2/*/*.* wordpress-2.2.1/*/*.* wordpress-2.5.1/*/*.* PathsTable VersionsTable /templates/subsilver/admin/index_frameset.tpl 74057e1687fa4edfd1ba0207e073e100 File ['2.0'] fc9388927f44fd90698936837070b525 ['2.0.1'] 7ec0529fd736950a3dd0c7b66f7b5f2c Hash Version ['2.0.2', 264974c35d7a66d32ddfa118b1bc359d ['2.0.18', Hash Version Hash Version /install/schemas/schema_data.sql b1fdcba066491e22d7b2b84ace8c94e0 ['3.0.6-RC3'] 10d66666d443fb0eb5970c4c5cadc844 ['3.0.6'] 1129aeae10003398b500d11cc9b26acd File ['3.0.5-RC1'] 8db031ced0c0377ded71ebed82e14408 ['3.0.6-RC1'] 560143ba7cbcaa48b58d17a28970be04 Hash Version ['3.0.2'] ad0ca453932b8cce946345a998403401 ['3.0.4'] 59065f5fed0d801ab04a1eef7ca4fad4 Hash Version ['3.0.4-RC1'] 89e85ef960aef6f461cbe71907890057 Hash Version ['2.2b'] e060676be3191f2a7bd95df62711e28d ['3.0.6-RC2'] ce2b47359e50e2a83fea2f3bbec9a8b1 ['3.0.5'] efb06c117f2681bedcc704ea10223394 ['3.0.3'] 045634305e36af4fea75f3a95c415f49 ['3.0.6-RC4'] 3.0.3,3.0.4,3.0.4-RC1 ('/styles/prosilver/template/ucp_pm_viewmessage.html', Version, Version, Version '314fe5725db ('/styles/subsilver2/template/viewforum_body.html', 'f4002089f99384bf4 File Hash ('/adm/style/acp_styles.html', '39e7ad0dbeda3f8d7731e844eba62622') ('/styles/subsilver2/template/mcp_warn_user.html', File Hash '6fce7b9564afb5aa6d.. ('/styles/prosilver/template/mcp_warn_user.html', 'c56f962be418102b8 ('/styles/subsilver2/template/index_body.html', File Hash '64c9a99b3b53f4 ('/styles/prosilver/theme/content.css', '5f264fed8971c7d00e7092f48f379. 2.0.20,2.0.21 Version ('/language/lang_english/email/user_activate_passwd.tpl', '4375947c68 ('/templates/subsilver/confirm_body.tpl', File 1ead54515b2b537 Hash ('/templates/subsilver/admin/board_config_body.tpl', File Hash 'f8519d018f9850d ('/language/lang_english/email/group_request.tpl', '6192f8bbb9e4596ad ('/install/schemas/mssql_schema.sql', '045c0fcfaa4f89d771b07b66a74. ('/contrib/readme.html', '61f46292c72f73935bcc2b74403d8b74 )

How Many Files? Wordpress phpbb MediaWiki Joomla MovableType Drupal and many more ~83k files in 166 versions ~17k files in 32 versions ~68k files in 68 versions ~109k files in 33 versions ~164k files in 95 versions ~33k files in 114 versions Wordpress Plugins Drupal Plugins ~103k files in 1200 versions ~76K files in 983 versions 16

Fingerprinting Fitness Heuristic Paths Table Best Candidates to Identify the Version '/htaccess.txt', 14 hashes/31 versions, fitness=15.0 '/language/en-gb/en-gb.ini', 14 hashes/20 versions, fitness=14.64 '/language/en-gb/en-gb.com_content.ini', 13 hashes/20 versions, fitness=13.64 '/configuration.php-dist', 10 hashes/28 versions, fitness=10.90 '/includes/js/joomla.javascript.js', 8 hashes/28 versions, fitness=8.90 '/media/system/js/validate.js', '/media/system/js/caption.js', '/language/en-gb/en-gb.mod_feed.ini', '/media/system/js/openid.js', '/language/en-gb/en-gb.com_contact.ini', '/language/en-gb/en-gb.mod_breadcrumbs.ini', '/media/system/js/combobox.js', '/language/en-gb/en-gb.mod_search.ini', '/templates/rhuk_milkyway/css/template.css', '/media/system/js/switcher.js', 8 hashes/20 versions, fitness=8.64 8 hashes/20 versions, fitness=8.64 8 hashes/20 versions, fitness=8.64 8 hashes/20 versions, fitness=8.64 8 hashes/20 versions, fitness=8.64 7 hashes/20 versions, fitness=7.64 7 hashes/20 versions, fitness=7.64 7 hashes/20 versions, fitness=7.64 7 hashes/20 versions, fitness=7.64 7 hashes/20 versions, fitness=7.64 17

Candidate Files: Wordpress /readme.html /wp-includes/js/tinymce/tiny_mce.js /wp-includes/js/autosave.js /wp-includes/js/swfupload/handlers.js /wp-includes/js/tinymce/themes/advanced/about.htm /wp-includes/js/tinymce/themes/advanced/link.htm /wp-includes/js/tinymce/themes/advanced/source_editor.htm /wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js /wp-includes/js/tinymce/themes/advanced/image.htm /wp-includes/js/tinymce/themes/advanced/color_picker.htm 18

Candidate Files: Mediawiki /RELEASE-NOTES /skins/common/wikibits.js /install-utils.inc /skins/monobook/main.css /docs/hooks.txt /HISTORY /UPGRADE /skins/monobook/rtl.css /math/texutil.ml /INSTALL Fully data-driven approach finds useful info in obscure and counterintuitive files 19

Fingerprinting Best Candidates 403 404 '/htaccess.txt' '/language/en-gb/en-gb.ini' '/language/en-gb/en-gb.com_content.ini' '/configuration.php-dist', '/includes/js/joomla.javascript.js' '/media/system/js/validate.js' '/media/system/js/caption.js' '/language/en-gb/en-gb.mod_feed.ini' '/media/system/js/openid.js' '/language/en-gb/en-gb.com_contact.ini' '/language/en-gb/en- GB.mod_breadcrumbs.ini' '/media/system/js/combobox.js' '/language/en-gb/en-gb.mod_search.ini' '/templates/rhuk_milkyw/css/template.css' '/media/system/js/switcher.js' 200 OK 200 OK 2.0.1, 2.0.2 3.0.4-RC4, 3.0.4 200 OK 2.5.1, 2.3.16 3.0.4-RC4, 3.0.4 3.0.4-RC4, 3.0.4 3.0.4-RC4, 3.0.4, 3.5 20 3.0.4-RC4, 3.0.4, 3.5.1

Winnowing (confirm or rule out versions) 3.0.0, 3.0.1 3.0.2, 3.0.3, 3.0.4-RC1, 3.0.4-RC2??? Darn, Not Enough Data Versions Table 3.0.0 or 3.0.3? 3.0.5 or 3.0.1? 3.0.6? 3.0.2? 3.0.4? 21

App Discovery / App Guessing Indicator Files Versions Table {'path': /includes/js/dtree/img/frontpage.gif, 'versions': 29} {'path': '/images/banners/osmbanner2.png', 'versions': 33} {'path': '/media/system/js/mootools.js', 'versions': 18} {'path': /includes/js/wz_tooltip.js ', 'versions': 29} Want a small set of files with at least one present in every release 22

App Discovery / App Guessing Indicator Files {'path': /includes/js/dtree/img/frontpage.gif, 'versions': 29} {'path': '/images/banners/osmbanner2.png', 'versions': 33} {'path': '/media/system/js/mootools.js', 'versions': 18} {'path': /includes/js/wz_tooltip.js ', 'versions': 29} 200 OK 404 It s some version of Joomla 23

Supporting a New App Gather every version you can find, dump them in a directory [Optional] Supply a regex to exclude directories/files from fingerprinting (eg.php files, protected admin directory,.htaccess, etc) Use BlindElephant to build the datafiles Fingerprint! Profit? 24

Does it work? $./BlindElephant.py http://laws.qualys.com movabletype Loaded movabletype with 96 versions, 2229 differentiating paths, and 209 version groups. Starting BlindElephant fingerprint for version of movabletype at http://laws.qualys.com Hit http://laws.qualys.com/mt-static/mt.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-com, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/tc/client.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-com, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/css/main.css Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-com, 4.23-en, 4.23-en, 4.23-en-COM Hit http://laws.qualys.com/tools/run-periodic-tasks File produced no match. Error: Error code: 404 (Not Found) 25

Does it work? Hit http://laws.qualys.com/mt-static/js/tc/tagcomplete.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/edit.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/mixer/display.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-com, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/archetype_editor.js Possible versions based on result: 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en- COM, 4.24-en, 4.24-en, 4.24-en-COM 26

Does it work? Hit http://laws.qualys.com/mt-static/js/tc/mixer.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/tableselect.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/focus.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM 27

Interlude 2.0.1, 2.0.2 3.0.4-RC4, 3.0.4 2.5.1, 2.3.16 3.0.4-RC4, 3.0.4 This is what matters! 3.0.4-RC4, 3.0.4, 3.5 3.0.4-RC4, 3.0.4, 3.5.1 28

Does it work? Hit http://laws.qualys.com/mt-static/css/simple.css Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-com, 4.23-en, 4.23-en, 4.23-en-COM Hit http://laws.qualys.com/mt-static/mt_ja.js Possible versions based on result: 4.2-en, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23- en-com, 4.23-en-OS, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/tc/gestalt.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Fingerprinting resulted in: Best Guess: 4.23-en-COM 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en-COM 29

Lets Pick on the Security Bloggers Network $./BlindElephant.py http://www.andrewhay.ca/ wordpress Loaded wordpress with 159 versions, 599 differentiating paths, and 226 version groups. Starting BlindElephant fingerprint for version of wordpress at http://www.andrewhay.ca Fingerprinting resulted in: 3.0-RC1 3.0-RC1-IIS Best Guess: 3.0-RC1 30

BTW: It Does Plugins Too $./BlindElephant.py -s -p guess http://example.com drupal Possible plugins: ['admin_menu', 'cck', 'date', 'google_analytics', 'imce', 'imce_swfupload', 'pathauto', 'print', 'spamicide', 'tagadelic', 'token', 'views ] $./BlindElephant.py -s -p imce http://example.com drupal <snip> Fingerprinting resulted in: 6.x-1.3 31

New Toy! Lets Play App ID & Fingerprinting on 1,084,152 hosts ~34k targeted scans for bug shakeout and calibration Shodan = Really, really useful (kinda expensive though) Is John here? I owe him a beer. Slightly biased sample (skews to default installs, s okay though) ~50k and ~1M host random sample of 87M.com domains Stats on accuracy and net-wide webapp population are from these 32

The Question That Started This All What % of (active) sites on the net are running a well-known webapp? Not counting Parked/ad-only, down, or blank/40x Only examined the root of the domain Sample set is from a list of 87M.coms 33

The Question That Started This All What % of active sites on the net are running a well-known webapp? 23% Parked + 5.8% Ads only + 7.9% No Content/40x + 13.1% Down ~49.7% of the web is junk* *That s all? Hush you. 34

The Question That Started This All What % of active sites on the net are running a well-known webapp? 4.4% of domains had a supported app.503 percent of domains are active ~8.8% 35

It Only Goes Up 8.8% is definitely a lower bound Support for more apps Could test /blog, /wiki, /forum and subdomains Improvements in app guessing (was tuned for false negatives) What % of web applications are a well-known webapp? I don t know I d like to find out though 36

On To the Results Version Distribution: SomeApp v2.0 v1.5 v1.0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 37

Graphing Sets of Possibilities Host1 Possible Versions: v1.0, v1.5, v2.0.33 to three version columns Host2 Possible Versions: v1.5, v2.0.5 to two version columns Host3 Possible Versions: v1.5 1.0 to v1.5 38

Releases Graphing Sets of Possibilities Version Distribution: Some App (6/18/10) v2.0 v1.5 v1.0 Host1 Host2 Host3 0 0.5 1 1.5 2 Weighted # of Apps Running Each Release 39

7.0-alpha5 7.0-alpha1 Drupal 6.16 6.13 6.10 6.7 6.4 6.1 5.22 5.19 5.16 5.13 5.10 5.7 5.4 5.1 4.7.11 4.7.8 4.7.5 4.7.2 4.6.x-dev 4.6.9 4.6.6 4.6.3 4.6.0 4.5.5 4.5.2 Version Distribution: Drupal (June 18, 2010) Affected by A Critical Vulnerability: 70% 0 100 200 300 40 400 500 600 700 # Hosts C O N F I D E N T I A L

1.6.0 1.6 1.5.18 1.5.17 1.5.15 1.5.14 1.5.12 1.5.11 1.5.10 1.5.9 1.5.8 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 1.5.1 1.5.0 1.0.15 1.0.14 1.0.13 1.0.12 1.0.11 1.0.10 1.0.9 1.0.8 1.0.6 1.0.4 Joomla Version Distribution: Joomla (June 18 2010) Affected by A High Vulnerability: 92% 0 1000 2000 3000 41 4000 5000 6000 7000 # Hosts C O N F I D E N T I A L

Liferay Version Distribution: Liferay (June 18, 2010) 5.2.3 5.2.1 5.1.2 4.4.2 4.4.1 4.3.0 0 2 4 6 42 8 10 12 14 16 # Hosts C O N F I D E N T I A L

Mediawiki 1.16.0beta2 1.15.4 1.15.2 1.15.0 1.14.0 1.13.4 1.13.2 1.13.0 1.12.3 1.12.1 1.11.2 1.11.0 1.10.3 1.10.1 1.9.3 1.8.4 1.7.3 1.6.12 1.6.10 1.5.8 1.5.5 1.3.18 1.3.13 1.3.11 Version Distribution: Mediawiki (June 18, 2010) Affected by a Serious Vulnerability: 95% 0 20 40 60 80 43 100 120 140 160 180 200 # Hosts C O N F I D E N T I A L

1.9.9 1.9.8 1.9.7 1.9.6 1.9.5 1.9.4 1.9.3 1.9.2 1.9.1 1.9 1.8.11 1.8.8 1.8.6 1.8.4 1.8.3 1.8 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6 1.5.4 Moodle Version Distribution: Moodle (June 18, 2010) Affected by a Major Vulnerability: 74% 0 2 4 6 8 44 10 12 14 16 18 # Hosts C O N F I D E N T I A L

Movabletype 5.01-en-OS 4.261-en-OS 4.131-en-CS 4.121-en 4.33-en 4.32-en 4.31-en 4.26-en 4.25-en-COM 4.24-en-COM 4.23-en-OS 4.23-en 4.22-en-COM 4.21-en-OS 4.21-en 4.13-en-OS 4.12-en-OS 4.3-en-OS 4.2-en 4.1-en-CS 4.0-en 3.37-en 3.35-en 3.33 3.31 Version Distribution: MovableType (June 18, 2010) Affected by a Critical Vulnerability: 91% 0 10 20 30 45 40 50 60 70 80 # Hosts C O N F I D E N T I A L

3.0.6 phpbb Version Distribution: phpbb (June 18, 2010) 3.0.5 3.0.4 3.0.3 3.0.2 2.0.21 2.0.20 2.0.19 2.0.18 2.0.17 2.0.16 2.0.15 2.0.14 2.0.13 2.0.12 2.0.11 2.0.9 2.0.7 2.0.6 2.0.5 2.0.4 Affected by a Severe Vulnerability: 100% 0 5 10 46 15 20 25 30 # Hosts C O N F I D E N T I A L

8.0 7.9 7.8 7.7 7.6 7.5 7.4 7.3 7.2 7.1 7.0 6.9 6.8 6.7 6.6 6.5 6.0 phpnuke Version Distribution: PHPNuke (June 18, 2010) 0 10 20 30 40 47 50 60 70 80 90 # Hosts C O N F I D E N T I A L

3.3.3 3.3.1RC1 3.2.5 3.2.3 3.2.2 3.2.0.1 3.1.5 3.1.3.2 3.1.3 3.1.1 3.0.1.1 3.0.0 2.11.9.6 2.11.9.4 2.11.9.2 2.11.9 2.11.8 2.11.7 2.11.5.2 2.11.5 2.11.3 2.11.2.1 2.11.1.2 2.11.1 2.10.3 2.10.1 2.10.0.1 2.9.1.1 2.9.0.2 2.9.0 2.8.1 2.7.0PL2 2.6.3PL1 2.6.1PL3 2.2.4 phpmyadmin Version Distribution: phpmyadmin (June 18, 2010) Affected by a Serious Vulnerability: 85% 0 10 20 30 40 48 50 60 70 80 90 100 # Hosts C O N F I D E N T I A L

SPIP 2.1.0 2.0.11 2.0.10 2.0.9 2.0.8 2.0.7 2.0.6 2.0.5 2.0.3 2.0.2 2.0.1 2.0.0 1.9.2i 1.9.2h 1.9.2g 1.9.2f 1.9.1.rev7502 1.9.1.rev7385 1.9.1i 1.9.0 1.8.3 1.8.2.b 1.8.2 1.8.1 1.8 1.7.2 1.6 1.5b1 1.4.2 1.4.1 Version Distribution: SPIP (June 18, 2010) Affected by a Critical Vulnerability: 65% 0 5 10 15 20 49 25 30 35 40 45 # Hosts C O N F I D E N T I A L

Wordpress 3.0-RC2-IIS 3.0-RC1-IIS 3.0-beta2-IIS 3.0-beta1-IIS 2.9.2 2.9 2.8.5 2.8.3 2.8.1 2.7.1 2.6.5 2.6.2 2.6 2.5 2.3.2 2.3 2.2.2 2.2 2.1.2 2.1 2.0.10 2.0.8 2.0.6 2.0.4 2.0 1.5.2 1.5.1.2 1.5.1 Version Distribution: Wordpress (June 18, 2010) Affected by a Medium Vulnerability: 21.5% Affected by a Critical Vulnerability: 4% 0 1000 2000 50 3000 4000 5000 6000 # Hosts C O N F I D E N T I A L

Lost: a Clue 51

Lost: A Clue He s only 6 years and 60 releases behind 52

Sorry Guys 53

Sorry Guys 54

Sorry Guys 55

Sorry Guys Wha-whaaaaaa 56

Observations Webapps actually doing pretty well update-wise but not quite good enough Huge spike at version provided by package managers and hosting services If you re trusting either to keep you up to date, you re probably behind Improperly removed webapps abound Switch from CMS A to CMS B, but leave A lying around Net-visible test/qa sites 57

Precision 25000 Fingerprint Precision (# Versions Resulting from a Fingerprint (1 is best) 20000 15000 10000 5000 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 58

Precision 25000 Fingerprint Precision (# Versions Resulting from a Fingerprint (1 is best) 20000 15000 Average Versions Produced: 3.06 versions 10000 5000 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 59

# Hosts Speed 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 Fingerprinting Time (Quicker is better) 0 5 10 15 20 25 30 35 40 45 Time To Fingerprint (seconds) 60

# Hosts Speed 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 Fingerprinting Time (Quicker is better) Average Time to Fingerprint: 6.4 seconds 0 5 10 15 20 25 30 35 40 45 Time To Fingerprint (seconds) 61

BlindElephant Scorecard Very Generic Same code for all apps & plugins Fast 1-10 sec, based on host (Avg 6.4) Low resources Avg 354.2 Kb to fingerprint Accurate Avg 3.06 versions & ID 98.0% of sites Resistant to hardening/banner removal Yes Easy to support new versions/apps ~2 hours to support all available versions of a new app (1 if they re packed nicely) 62

Sources Of Error WebApp Incompletely Removed Partial/Manual Upgrades We tend to catch these though Changed App Root Static hosting on alternate domain (eg, Wikipedia) Forked Project (oscommerce, phpnuke) Fails completely if static files are trivially modified But guess what? People don t do it (yet) 63

Release the Kra Elephant http://blindelephant.sourceforge.net/ 64

To Do Web App Developers Help us create fingerprint files to recognize your app! But also think about default deployments that resist fingerprinting Site Administrators Fingerprint yourself know what the attackers know Harden to resist fingerprinting Just stay up to date Everyone Else Try it out Report bugs, contribute signatures, implement a pet feature 65

Questions? pst@coffeetocode.net pthomas@qualys.com @coffeetocode http://coffeetocode.net 66

67

Theory of Fingerprinting Find some characteristic(s) that is always the same for a particular individual (implementation/version/person) always different from other members of the population If there s one piece of info that fulfills both, great If not, take several that pin it down Tons of interesting reading in information theory and entropy OS & HTTP Server Fingerprinting: Lots of protocol-aware checks that rely on subtle differences in implementation 68

Beyond Hashing Nearest neighbor search Rolling hashes Version trajectory Error tolerant hashing 69 BLACK HAT 2010