# 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
# remove :name & :certainty
WhatWeb::Plugin.define "ModxCMS" do
@author = "Andrew Horton"
@version = "0.2"
@description = "OpenSource CMS written in PHP."
@website = "http://modxcms.com/"
# none of this is common
# www.soteapparel.com-.html:
# www.techsolcom.ca-en-.html:
# www.indieophile.com-.html:
powered by modx
# www.filieo.com-.html:
@matches = [
{ text: 'var MODX_MEDIA_PATH' }
]
# these cookies and p3p are fairly reliable
# two diff lengths. version change?
# Set-Cookie: SN489f661741c15=33puk0t1j8rjeulorh70m73b52; path=/
# Set-Cookie: SN484d726774858=f0f40f14fbddeaead360a77ccb006365; path=/
# P3P: CP="NOI NID ADMa OUR IND UNI COM NAV"
# Aggressive #
def aggressive(target)
m = []
versions = Hash[
"2.0.3" =>
[["manager/assets/modext/modext-min.js",
"86f8fee216d77361445b076eee0d8ce9"],
["core/docs/changelog.txt",
"920ffe99f17c744263a02b29adee2e28"]],
"2.0.4" =>
[["manager/assets/modext/modext-min.js",
"8b4ee02134c611a666489dd0fdadf265"],
["core/docs/changelog.txt",
"fce973b404e36a3cc8bbdf94a946737c"]],
"2.0.5" =>
[["manager/assets/modext/modext-min.js",
"5cdab4d3899a66916b46c638bd150c76"],
["core/docs/changelog.txt",
"7644749c62603a7a5619642e6bc57600"]],
"2.0.6" =>
[["manager/assets/modext/modext-min.js",
"2e280134a1ae86247724f34dc6d60236"],
["core/docs/changelog.txt",
"8b3ec45b4dce777b48d0114dfe96fd94"]],
"2.0.7" =>
[["manager/assets/modext/modext.js",
"f9027bb32f3dd0998b8ee3cf0d5b7361"],
["core/docs/changelog.txt",
"8520c8e49ea017360144e0c3f4f91e86"]],
"2.0.8" =>
[["manager/assets/modext/modext.js",
"f9027bb32f3dd0998b8ee3cf0d5b7361"],
["core/docs/changelog.txt",
"e89edac9e31ab89905c072c47bae17e1"]],
"2.1.0" =>
[["manager/assets/modext/modext-min.js",
"f23ea06c3eec2b89d99fc54ca3af428d"],
["core/docs/changelog.txt",
"7d71a44c4b49e4a0f481ef84e0405669"]],
"2.1.1" =>
[["manager/assets/modext/modext-min.js",
"0302338b5bb47dd6f3d3738d20ed8c3c"],
["core/docs/changelog.txt",
"f61372409f3039743b2f29c35d2f83e3"]],
"2.1.2" =>
[["manager/assets/modext/modext-min.js",
"45a33a90b0d3dc6596ee3e62f3ef64eb"],
["core/docs/changelog.txt",
"40701196368b75420395ac1dfc13e9fc"]],
"2.1.3" =>
[["manager/assets/modext/modext-min.js",
"54df522cd0d54b8549d8232307af3798"],
["core/docs/changelog.txt",
"ab89eb4f3222973b329d378259f9db16"]],
"2.1.4" =>
[["manager/templates/default/css/index.css",
"78c5e4714c4e98175c52ff12ff63ac3e"],
["core/docs/changelog.txt",
"87cf61141b7c2ef763743d2f2ba44187"]],
"2.1.5" =>
[["manager/templates/default/css/index.css",
"78c5e4714c4e98175c52ff12ff63ac3e"],
["core/docs/changelog.txt",
"61d525805729cc2be1a07eb0d7dec244"]],
"2.2.0" =>
[["manager/templates/default/css/index.css",
"1eb05036b0068f3f36da8bbb18d73d5d"],
["core/docs/changelog.txt",
"4962b05952b8cc224b1b317946776311"]],
"2.2.1" =>
[["manager/templates/default/css/index.css",
"d41a32696eb76dab493d93d8155380dd"],
["core/docs/changelog.txt",
"bc3917f4eee4c0544e0bce1c32dd444e"]],
"2.2.2" =>
[["manager/assets/modext/widgets/resource/modx.tree.resource.js",
"b0bd484735fc96cd0f4bea8545903b16"],
["manager/assets/modext/widgets/resource/modx.tree.resource.js",
"b0bd484735fc96cd0f4bea8545903b16"],
["core/docs/changelog.txt",
"d82c3a3548c2cd3b769a53cc947778ff"]],
"2.2.3" =>
[["manager/assets/modext/widgets/resource/modx.tree.resource.js",
"2d1440f2ec29e75331c3fc5053e6e379"],
["manager/templates/default/css/index.css",
"b45efe3d48aa27a7742a219b789aac9b"],
["core/docs/changelog.txt",
"4ec62030eeb9926a29910ce2a5eaacf7"]],
"2.2.4" =>
[["manager/assets/modext/widgets/resource/modx.tree.resource.js",
"2d1440f2ec29e75331c3fc5053e6e379"],
["manager/templates/default/css/index.css",
"b45efe3d48aa27a7742a219b789aac9b"],
["core/docs/changelog.txt",
"154cac2314bff5de6970eeb7c2552e79"]],
"2.0.3-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"81e2a566229564cf477ba706b0769aa3"],
["core/docs/changelog.txt",
"920ffe99f17c744263a02b29adee2e28"]],
"2.0.4-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"832d2c5c4bf8de80c6a3f60c8e4a230f"],
["core/docs/changelog.txt",
"fce973b404e36a3cc8bbdf94a946737c"]],
"2.0.5-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"434e43d0cc0d22d56e1e02dbb6a5201b"],
["core/docs/changelog.txt",
"7644749c62603a7a5619642e6bc57600"]],
"2.0.6-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"12c0b38e75cf9b4cd8c6180e5fc22678"],
["core/docs/changelog.txt",
"8b3ec45b4dce777b48d0114dfe96fd94"]],
"2.0.7-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"12c0b38e75cf9b4cd8c6180e5fc22678"],
["core/docs/changelog.txt",
"8520c8e49ea017360144e0c3f4f91e86"]],
"2.0.8-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"12c0b38e75cf9b4cd8c6180e5fc22678"],
["core/docs/changelog.txt",
"e89edac9e31ab89905c072c47bae17e1"]],
"2.1.0-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"072facc9e04761cbac5c7f297276c76b"],
["core/docs/changelog.txt",
"7d71a44c4b49e4a0f481ef84e0405669"]],
"2.1.1-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"072facc9e04761cbac5c7f297276c76b"],
["core/docs/changelog.txt",
"f61372409f3039743b2f29c35d2f83e3"]],
"2.1.2-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"a2503de105486f2689bf3b6ca31eb76f"],
["core/docs/changelog.txt",
"40701196368b75420395ac1dfc13e9fc"]],
"2.1.3-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"a2503de105486f2689bf3b6ca31eb76f"],
["core/docs/changelog.txt",
"ab89eb4f3222973b329d378259f9db16"]],
"2.1.4-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"7f4a2e430ebe2ffd62faefe0a92016db"],
["core/docs/changelog.txt",
"87cf61141b7c2ef763743d2f2ba44187"]],
"2.1.5-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"7f4a2e430ebe2ffd62faefe0a92016db"],
["core/docs/changelog.txt",
"61d525805729cc2be1a07eb0d7dec244"]],
"2.2.0-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"729ca300187abf743afebc2fd84be4a6"],
["core/docs/changelog.txt",
"4962b05952b8cc224b1b317946776311"]],
"2.2.1-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"0b2fda1e925d605c498b3955db887825"],
["core/docs/changelog.txt",
"bc3917f4eee4c0544e0bce1c32dd444e"]],
"2.2.2-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"141d091785d92289583682e556858c41"],
["core/docs/changelog.txt",
"d82c3a3548c2cd3b769a53cc947778ff"]],
"2.2.3-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"141d091785d92289583682e556858c41"],
["core/docs/changelog.txt",
"4ec62030eeb9926a29910ce2a5eaacf7"]],
"2.2.4-advanced" =>
[["core/model/schema/modx.mysql.schema.xml",
"141d091785d92289583682e556858c41"],
["core/docs/changelog.txt",
"154cac2314bff5de6970eeb7c2552e79"]]
]
v = WhatWeb::Matcher::Version.new("Modx", versions, target.uri)
version = v.matches_format
# Return version matches from md5 hashes, if present
unless version.empty?
version.each { |ver|
m << { name: "MD5 sums", version: ver }
}
end
m
end
def passive(target)
m = []
m << { name: "SN4 Cookie", certainty: 75 } if target.headers["set-cookie"] =~ /^SN4[a-z0-9]{12}=/
m << { name: "P3P" } if target.headers["P3P"] =~ /CP="NOI NID ADMa OUR IND UNI COM NAV"/
m
end
# /manager page contains :
# MODx CMF Team
end