# frozen_string_literal: true ## # This file is part of WhatWeb and may be subject to # redistribution and commercial restrictions. Please see the WhatWeb # web site for more information on licensing and terms of use. # http://www.morningstarsecurity.com/research/whatweb ## # Version 0.2 # removed :name and :certainty=>100 ## WhatWeb::Plugin.define "ExpressionEngine" do @author = "Andrew Horton" @version = "0.2" @description = "ExpressionEngine is CMS written in PHP. Free and commercial versions" @website = "http://expressionengine.com" # Dorks # @dorks = [ '"Powered by ExpressionEngine"' ] # Powered by ExpressionEngine uncommon @matches = [ { regexp: /owered by ExpressionEngine<\/a>/ } ] # Set-Cookie: exp_last_visit=959242411; expires=Mon, 23-May-2011 03:13:31 GMT; path=/ # Set-Cookie: exp_last_activity=1274602411; expires=Mon, 23-May-2011 03:13:31 GMT; path=/ # Set-Cookie: exp_tracker=a%3A1%3A%7Bi%3A0%3Bs%3A5%3A%22index%22%3B%7D; path=/ def passive(target) m = [] m << { name: "exp_last_visit cookie" } if target.headers["set-cookie"] =~ /exp_last_visit=/ m end # these plugins only identify the system. they don't find out the version, etc def aggressive(target) m = [] url = URI.join(target.uri.to_s, "READ_THIS_FIRST.txt").to_s new_target = WhatWeb::Target.new(url) if /ExpressionEngine/.match?(new_target.body) m << { name: "readthisfirst txt file" } end url = URI.join(target.uri.to_s, "system/updates/ee_logo.jpg").to_s new_target = WhatWeb::Target.new(url) if (new_target.status == 200) && new_target.body =~ /JFIF/ m << { name: "ee_logo jpg" } end m end end