Land #3373, recog
Conflicts: Gemfile Gemfile.lock data/js/detect/os.js lib/msf/core/exploit/remote/browser_exploit_server.rb modules/exploits/android/browser/webview_addjavascriptinterface.rbbug/bundler_fix
commit
a65ee6cf30
2
Gemfile
2
Gemfile
|
@ -10,7 +10,7 @@ group :db do
|
||||||
# Metasploit::Credential database models
|
# Metasploit::Credential database models
|
||||||
gem 'metasploit-credential', '~> 0.12.0'
|
gem 'metasploit-credential', '~> 0.12.0'
|
||||||
# Database models shared between framework and Pro.
|
# Database models shared between framework and Pro.
|
||||||
gem 'metasploit_data_models', '~> 0.21.0'
|
gem 'metasploit_data_models', '~> 0.21.1'
|
||||||
# Needed for module caching in Mdm::ModuleDetails
|
# Needed for module caching in Mdm::ModuleDetails
|
||||||
gem 'pg', '>= 0.11'
|
gem 'pg', '>= 0.11'
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,7 @@ PATH
|
||||||
nokogiri
|
nokogiri
|
||||||
packetfu (= 1.1.9)
|
packetfu (= 1.1.9)
|
||||||
railties
|
railties
|
||||||
|
recog (~> 1.0)
|
||||||
robots
|
robots
|
||||||
rubyzip (~> 1.1)
|
rubyzip (~> 1.1)
|
||||||
sqlite3
|
sqlite3
|
||||||
|
@ -111,7 +112,7 @@ GEM
|
||||||
metasploit-model (0.28.0)
|
metasploit-model (0.28.0)
|
||||||
activesupport
|
activesupport
|
||||||
railties (< 4.0.0)
|
railties (< 4.0.0)
|
||||||
metasploit_data_models (0.21.0)
|
metasploit_data_models (0.21.1)
|
||||||
activerecord (>= 3.2.13, < 4.0.0)
|
activerecord (>= 3.2.13, < 4.0.0)
|
||||||
activesupport
|
activesupport
|
||||||
arel-helpers
|
arel-helpers
|
||||||
|
@ -119,6 +120,7 @@ GEM
|
||||||
metasploit-model (~> 0.28.0)
|
metasploit-model (~> 0.28.0)
|
||||||
pg
|
pg
|
||||||
railties (< 4.0.0)
|
railties (< 4.0.0)
|
||||||
|
recog (~> 1.0)
|
||||||
meterpreter_bins (0.0.7)
|
meterpreter_bins (0.0.7)
|
||||||
method_source (0.8.2)
|
method_source (0.8.2)
|
||||||
mime-types (1.25.1)
|
mime-types (1.25.1)
|
||||||
|
@ -161,6 +163,8 @@ GEM
|
||||||
rake (10.3.2)
|
rake (10.3.2)
|
||||||
rdoc (3.12.2)
|
rdoc (3.12.2)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
|
recog (1.0.0)
|
||||||
|
nokogiri
|
||||||
redcarpet (3.1.2)
|
redcarpet (3.1.2)
|
||||||
rkelly-remix (0.0.6)
|
rkelly-remix (0.0.6)
|
||||||
robots (0.10.1)
|
robots (0.10.1)
|
||||||
|
@ -220,7 +224,7 @@ DEPENDENCIES
|
||||||
fivemat (= 1.2.1)
|
fivemat (= 1.2.1)
|
||||||
metasploit-credential (~> 0.12.0)
|
metasploit-credential (~> 0.12.0)
|
||||||
metasploit-framework!
|
metasploit-framework!
|
||||||
metasploit_data_models (~> 0.21.0)
|
metasploit_data_models (~> 0.21.1)
|
||||||
network_interface (~> 0.0.1)
|
network_interface (~> 0.0.1)
|
||||||
pcaprub
|
pcaprub
|
||||||
pg (>= 0.11)
|
pg (>= 0.11)
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
|
|
||||||
// Case matters, see lib/msf/core/constants.rb
|
// Case matters, see lib/msf/core/constants.rb
|
||||||
// All of these should match up with constants in ::Msf::HttpClients
|
// All of these should match up with constants in ::Msf::HttpClients
|
||||||
var clients_opera = "Opera";
|
var clients_opera = "Opera";
|
||||||
var clients_ie = "MSIE";
|
var clients_ie = "MSIE";
|
||||||
var clients_ff = "Firefox";
|
var clients_ff = "Firefox";
|
||||||
var clients_chrome= "Chrome";
|
var clients_chrome = "Chrome";
|
||||||
var clients_safari= "Safari";
|
var clients_safari = "Safari";
|
||||||
|
|
||||||
// All of these should match up with constants in ::Msf::OperatingSystems
|
// All of these should match up with constants in ::Msf::OperatingSystems
|
||||||
var oses_linux = "Linux";
|
var oses_linux = "Linux";
|
||||||
var oses_windows = "Microsoft Windows";
|
var oses_android = "Android";
|
||||||
var oses_mac_osx = "Mac OS X";
|
var oses_windows = "Windows";
|
||||||
var oses_freebsd = "FreeBSD";
|
var oses_mac_osx = "Mac OS X";
|
||||||
var oses_netbsd = "NetBSD";
|
var oses_apple_ios = "iOS";
|
||||||
var oses_openbsd = "OpenBSD";
|
var oses_freebsd = "FreeBSD";
|
||||||
|
var oses_netbsd = "NetBSD";
|
||||||
|
var oses_openbsd = "OpenBSD";
|
||||||
|
|
||||||
// All of these should match up with the ARCH_* constants
|
// All of these should match up with the ARCH_* constants
|
||||||
var arch_armle = "armle";
|
var arch_armle = "armle";
|
||||||
|
@ -33,6 +35,8 @@ var os_detect = {};
|
||||||
os_detect.getVersion = function(){
|
os_detect.getVersion = function(){
|
||||||
//Default values:
|
//Default values:
|
||||||
var os_name;
|
var os_name;
|
||||||
|
var os_vendor;
|
||||||
|
var os_device;
|
||||||
var os_flavor;
|
var os_flavor;
|
||||||
var os_sp;
|
var os_sp;
|
||||||
var os_lang;
|
var os_lang;
|
||||||
|
@ -120,11 +124,10 @@ os_detect.getVersion = function(){
|
||||||
// Android 2.3.6, opera mini 7.1
|
// Android 2.3.6, opera mini 7.1
|
||||||
// Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.101.10
|
// Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.101.10
|
||||||
if (navigator.userAgent.indexOf("Android")) {
|
if (navigator.userAgent.indexOf("Android")) {
|
||||||
os_name = oses_linux;
|
os_name = oses_android;
|
||||||
os_flavor = "Android";
|
|
||||||
} else if (navigator.userAgent.indexOf("iPhone")) {
|
} else if (navigator.userAgent.indexOf("iPhone")) {
|
||||||
os_name = oses_mac_osx;
|
os_name = oses_apple_ios;
|
||||||
os_flavor = "iPhone";
|
os_device = "iPhone";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// A few are ambiguous, record them here
|
// A few are ambiguous, record them here
|
||||||
|
@ -162,28 +165,28 @@ os_detect.getVersion = function(){
|
||||||
// "Version" in the UA, see example above. Grab the webkit version
|
// "Version" in the UA, see example above. Grab the webkit version
|
||||||
// instead. =/
|
// instead. =/
|
||||||
if (platform.match(/ipod/)) {
|
if (platform.match(/ipod/)) {
|
||||||
os_name = oses_mac_osx;
|
os_name = oses_apple_ios;
|
||||||
os_flavor = "iPod";
|
os_device = "iPod";
|
||||||
arch = arch_armle;
|
arch = arch_armle;
|
||||||
search = "AppleWebKit";
|
search = "AppleWebKit";
|
||||||
} else if (platform.match(/ipad/)) {
|
} else if (platform.match(/ipad/)) {
|
||||||
os_name = oses_mac_osx;
|
os_name = oses_apple_ios;
|
||||||
os_flavor = "iPad";
|
os_device = "iPad";
|
||||||
arch = arch_armle;
|
arch = arch_armle;
|
||||||
search = "AppleWebKit";
|
search = "AppleWebKit";
|
||||||
} else if (platform.match(/iphone/)) {
|
} else if (platform.match(/iphone/)) {
|
||||||
os_name = oses_mac_osx;
|
os_name = oses_apple_ios;
|
||||||
os_flavor = "iPhone";
|
os_device = "iPhone";
|
||||||
arch = arch_armle;
|
arch = arch_armle;
|
||||||
} else if (platform.match(/macintel/)) {
|
} else if (platform.match(/macintel/)) {
|
||||||
os_name = oses_mac_osx;
|
os_name = oses_mac_osx;
|
||||||
arch = arch_x86;
|
arch = arch_x86;
|
||||||
} else if (platform.match(/linux/)) {
|
} else if (platform.match(/linux/)) {
|
||||||
os_name = oses_linux;
|
os_name = oses_linux;
|
||||||
|
|
||||||
if (platform.match(/x86_64/)) {
|
if (platform.match(/x86_64/)) {
|
||||||
arch = arch_x86_64;
|
arch = arch_x86_64;
|
||||||
} else if (platform.match(/arm/)) {
|
} else if (platform.match(/arm/)) {
|
||||||
// Android and maemo
|
|
||||||
arch = arch_armle;
|
arch = arch_armle;
|
||||||
} else if (platform.match(/x86/)) {
|
} else if (platform.match(/x86/)) {
|
||||||
arch = arch_x86;
|
arch = arch_x86;
|
||||||
|
@ -191,9 +194,9 @@ os_detect.getVersion = function(){
|
||||||
arch = arch_mipsle;
|
arch = arch_mipsle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Android overrides Linux
|
||||||
if (navigator.userAgent.match(/android/i)) {
|
if (navigator.userAgent.match(/android/i)) {
|
||||||
os_flavor = 'Android';
|
os_name = oses_android;
|
||||||
}
|
}
|
||||||
} else if (platform.match(/windows/)) {
|
} else if (platform.match(/windows/)) {
|
||||||
os_name = oses_windows;
|
os_name = oses_windows;
|
||||||
|
@ -318,13 +321,17 @@ os_detect.getVersion = function(){
|
||||||
}
|
}
|
||||||
if (version.match(/Windows/)) {
|
if (version.match(/Windows/)) {
|
||||||
os_name = oses_windows;
|
os_name = oses_windows;
|
||||||
|
// Technically these will mismatch server OS editions, but those are
|
||||||
|
// rarely used as client systems and typically have the same exploit
|
||||||
|
// characteristics as the associated client.
|
||||||
switch(version) {
|
switch(version) {
|
||||||
case "Windows NT 5.0": os_flavor = "2000"; break;
|
case "Windows NT 5.0": os_name = "Windows 2000"; break;
|
||||||
case "Windows NT 5.1": os_flavor = "XP"; break;
|
case "Windows NT 5.1": os_name = "Windows XP"; break;
|
||||||
case "Windows NT 5.2": os_flavor = "2003"; break;
|
case "Windows NT 5.2": os_name = "Windows 2003"; break;
|
||||||
case "Windows NT 6.0": os_flavor = "Vista"; break;
|
case "Windows NT 6.0": os_name = "Windows Vista"; break;
|
||||||
case "Windows NT 6.1": os_flavor = "7"; break;
|
case "Windows NT 6.1": os_name = "Windows 7"; break;
|
||||||
case "Windows NT 6.2": os_flavor = "8"; break;
|
case "Windows NT 6.2": os_name = "Windows 8"; break;
|
||||||
|
case "Windows NT 6.3": os_name = "Windows 8.1"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (version.match(/Linux/)) {
|
if (version.match(/Linux/)) {
|
||||||
|
@ -343,17 +350,17 @@ os_detect.getVersion = function(){
|
||||||
var buildid = navigator.buildID;
|
var buildid = navigator.buildID;
|
||||||
|
|
||||||
switch(buildid) {
|
switch(buildid) {
|
||||||
case "2008041514": ua_version = "3.0.0.b5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008041514": ua_version = "3.0.0.b5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008041515": ua_version = "3.0.0.b5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2008041515": ua_version = "3.0.0.b5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2008052312": ua_version = "3.0.0"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008052312": ua_version = "3.0.0"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008052906": ua_version = "3.0.0"; os_name = oses_windows; break;
|
case "2008052906": ua_version = "3.0.0"; os_name = oses_windows; break;
|
||||||
case "2008052909": ua_version = "3.0.0.rc1"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008052909": ua_version = "3.0.0.rc1"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008052912": ua_version = "3.0.0"; os_name = oses_linux; break;
|
case "2008052912": ua_version = "3.0.0"; os_name = oses_linux; break;
|
||||||
case "2008060309": ua_version = "3.0.0"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2008060309": ua_version = "3.0.0"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2008070205": ua_version = "2.0.0.16"; os_name = oses_windows; break;
|
case "2008070205": ua_version = "2.0.0.16"; os_name = oses_windows; break;
|
||||||
case "2008070206": ua_version = "3.0.1"; os_name = oses_linux; break;
|
case "2008070206": ua_version = "3.0.1"; os_name = oses_linux; break;
|
||||||
case "2008070208": ua_version = "3.0.1"; os_name = oses_windows; break;
|
case "2008070208": ua_version = "3.0.1"; os_name = oses_windows; break;
|
||||||
case "2008071222": ua_version = "3.0.1"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008071222": ua_version = "3.0.1"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008072820":
|
case "2008072820":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2008072820": ua_version = "3.0.1"; os_name = oses_linux; break;
|
case "2008072820": ua_version = "3.0.1"; os_name = oses_linux; break;
|
||||||
|
@ -362,10 +369,10 @@ os_detect.getVersion = function(){
|
||||||
case "2008082909": ua_version = "2.0.0.17"; os_name = oses_windows; break;
|
case "2008082909": ua_version = "2.0.0.17"; os_name = oses_windows; break;
|
||||||
case "2008091618": ua_version = "3.0.2"; os_name = oses_linux; break;
|
case "2008091618": ua_version = "3.0.2"; os_name = oses_linux; break;
|
||||||
case "2008091620": ua_version = "3.0.2"; os_name = oses_windows; break;
|
case "2008091620": ua_version = "3.0.2"; os_name = oses_windows; break;
|
||||||
case "2008092313": ua_version = "3.0.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008092313": ua_version = "3.0.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008092416": ua_version = "3.0.3"; os_name = oses_linux; break;
|
case "2008092416": ua_version = "3.0.3"; os_name = oses_linux; break;
|
||||||
case "2008092417": ua_version = "3.0.3"; os_name = oses_windows; break;
|
case "2008092417": ua_version = "3.0.3"; os_name = oses_windows; break;
|
||||||
case "2008092510": ua_version = "3.0.4"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008092510": ua_version = "3.0.4"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008101315":
|
case "2008101315":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2008101315": ua_version = "3.0.3"; os_name = oses_linux; break;
|
case "2008101315": ua_version = "3.0.3"; os_name = oses_linux; break;
|
||||||
|
@ -373,63 +380,63 @@ os_detect.getVersion = function(){
|
||||||
} break;
|
} break;
|
||||||
case "2008102918": ua_version = "2.0.0.18"; os_name = oses_windows; break;
|
case "2008102918": ua_version = "2.0.0.18"; os_name = oses_windows; break;
|
||||||
case "2008102920": ua_version = "3.0.4"; break;
|
case "2008102920": ua_version = "3.0.4"; break;
|
||||||
case "2008112309": ua_version = "3.0.4"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Iceweasel 3.0.4 / Debian Testing (Lenny)
|
case "2008112309": ua_version = "3.0.4"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Iceweasel 3.0.4 / Debian Testing (Lenny)
|
||||||
case "2008111317": ua_version = "3.0.5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2008111317": ua_version = "3.0.5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2008111318": ua_version = "3.0.5"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2008111318": ua_version = "3.0.5"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2008120119": ua_version = "2.0.0.19"; os_name = oses_windows; break;
|
case "2008120119": ua_version = "2.0.0.19"; os_name = oses_windows; break;
|
||||||
case "2008120121": ua_version = "3.0.5"; os_name = oses_linux; break;
|
case "2008120121": ua_version = "3.0.5"; os_name = oses_linux; break;
|
||||||
case "2008120122": ua_version = "3.0.5"; os_name = oses_windows; break;
|
case "2008120122": ua_version = "3.0.5"; os_name = oses_windows; break;
|
||||||
case "2008121623": ua_version = "2.0.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; break; // browsershots: Firefox 2.0.0.19 / Ubuntu 8.04 LTS (Hardy Heron)
|
case "2008121623": ua_version = "2.0.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; break; // browsershots: Firefox 2.0.0.19 / Ubuntu 8.04 LTS (Hardy Heron)
|
||||||
case "2008121709": ua_version = "2.0.0.20"; os_name = oses_windows; break;
|
case "2008121709": ua_version = "2.0.0.20"; os_name = oses_windows; break;
|
||||||
case "2009011912": ua_version = "3.0.6"; os_name = oses_linux; break;
|
case "2009011912": ua_version = "3.0.6"; os_name = oses_linux; break;
|
||||||
case "2009011913": ua_version = "3.0.6"; os_name = oses_windows; break;
|
case "2009011913": ua_version = "3.0.6"; os_name = oses_windows; break;
|
||||||
case "2009012615": ua_version = "3.0.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009012615": ua_version = "3.0.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009012616": ua_version = "3.0.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009012616": ua_version = "3.0.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009021906": ua_version = "3.0.7"; os_name = oses_linux; break;
|
case "2009021906": ua_version = "3.0.7"; os_name = oses_linux; break;
|
||||||
case "2009021910": ua_version = "3.0.7"; os_name = oses_windows; break;
|
case "2009021910": ua_version = "3.0.7"; os_name = oses_windows; break;
|
||||||
case "2009030422": ua_version = "3.0.8"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009030422": ua_version = "3.0.8"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009032608": ua_version = "3.0.8"; os_name = oses_linux; break;
|
case "2009032608": ua_version = "3.0.8"; os_name = oses_linux; break;
|
||||||
case "2009032609": ua_version = "3.0.8"; os_name = oses_windows; break;
|
case "2009032609": ua_version = "3.0.8"; os_name = oses_windows; break;
|
||||||
case "2009032711": ua_version = "3.0.9"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009032711": ua_version = "3.0.9"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009033100":
|
case "2009033100":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009033100": ua_version = "3.0.8"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009033100": ua_version = "3.0.8"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2009042113": ua_version = "3.0.9"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009042113": ua_version = "3.0.9"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
} break;
|
} break;
|
||||||
case "2009040820": ua_version = "3.0.9"; os_name = oses_linux; break;
|
case "2009040820": ua_version = "3.0.9"; os_name = oses_linux; break;
|
||||||
case "2009040821": ua_version = "3.0.9"; os_name = oses_windows; break;
|
case "2009040821": ua_version = "3.0.9"; os_name = oses_windows; break;
|
||||||
case "2009042113": ua_version = "3.0.10"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009042113": ua_version = "3.0.10"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009042114": ua_version = "3.0.10"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2009042114": ua_version = "3.0.10"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2009042315": ua_version = "3.0.10"; os_name = oses_linux; break;
|
case "2009042315": ua_version = "3.0.10"; os_name = oses_linux; break;
|
||||||
case "2009042316": ua_version = "3.0.10"; os_name = oses_windows; break;
|
case "2009042316": ua_version = "3.0.10"; os_name = oses_windows; break;
|
||||||
case "20090427153806": ua_version = "3.5.0.b4"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20090427153806": ua_version = "3.5.0.b4"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20090427153807": ua_version = "3.5.0.b4"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20090427153807": ua_version = "3.5.0.b4"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "2009060214": ua_version = "3.0.11"; os_name = oses_linux; break;
|
case "2009060214": ua_version = "3.0.11"; os_name = oses_linux; break;
|
||||||
case "2009060215": ua_version = "3.0.11"; os_name = oses_windows; break;
|
case "2009060215": ua_version = "3.0.11"; os_name = oses_windows; break;
|
||||||
case "2009060308":
|
case "2009060308":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009060308": ua_version = "3.0.11"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009060308": ua_version = "3.0.11"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009070811": ua_version = "3.0.12"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009070811": ua_version = "3.0.12"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
} break;
|
} break;
|
||||||
case "2009060309":
|
case "2009060309":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009060309": ua_version = "3.0.11"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009060309": ua_version = "3.0.11"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2009070811": ua_version = "3.0.12"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2009070811": ua_version = "3.0.12"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
} break;
|
} break;
|
||||||
case "2009060310": ua_version = "3.0.11"; os_name = oses_linux; os_flavor = "BackTrack"; break;
|
case "2009060310": ua_version = "3.0.11"; os_name = oses_linux; os_vendor = "BackTrack"; break;
|
||||||
case "2009062005": ua_version = "3.0.11"; os_name = oses_linux; os_flavor = "PCLunixOS"; break;
|
case "2009062005": ua_version = "3.0.11"; os_name = oses_linux; os_vendor = "PCLunixOS"; break;
|
||||||
case "20090624012136": ua_version = "3.5.0"; os_name = oses_mac_osx; break;
|
case "20090624012136": ua_version = "3.5.0"; os_name = oses_mac_osx; break;
|
||||||
case "20090624012820": ua_version = "3.5.0"; os_name = oses_linux; break;
|
case "20090624012820": ua_version = "3.5.0"; os_name = oses_linux; break;
|
||||||
case "20090701234143": ua_version = "3.5.0"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20090701234143": ua_version = "3.5.0"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20090702060527": ua_version = "3.5.0"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20090702060527": ua_version = "3.5.0"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "2009070610": ua_version = "3.0.12"; os_name = oses_linux; break;
|
case "2009070610": ua_version = "3.0.12"; os_name = oses_linux; break;
|
||||||
case "2009070611": ua_version = "3.0.12"; os_name = oses_windows; break;
|
case "2009070611": ua_version = "3.0.12"; os_name = oses_windows; break;
|
||||||
case "2009070811": ua_version = "3.0.13"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009070811": ua_version = "3.0.13"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20090715083437": ua_version = "3.5.1"; os_name = oses_mac_osx; break;
|
case "20090715083437": ua_version = "3.5.1"; os_name = oses_mac_osx; break;
|
||||||
case "20090715083816": ua_version = "3.5.1"; os_name = oses_linux; break;
|
case "20090715083816": ua_version = "3.5.1"; os_name = oses_linux; break;
|
||||||
case "20090715094852": ua_version = "3.5.1"; os_name = oses_windows; break;
|
case "20090715094852": ua_version = "3.5.1"; os_name = oses_windows; break;
|
||||||
case "2009072202": ua_version = "3.0.12"; os_name = oses_linux; os_flavor = "Oracle"; break;
|
case "2009072202": ua_version = "3.0.12"; os_name = oses_linux; os_vendor = "Oracle"; break;
|
||||||
case "2009072711": ua_version = "3.0.12"; os_name = oses_linux; os_flavor = "CentOS"; break;
|
case "2009072711": ua_version = "3.0.12"; os_name = oses_linux; os_vendor = "CentOS"; break;
|
||||||
case "20090729211433": ua_version = "3.5.2"; os_name = oses_mac_osx; break;
|
case "20090729211433": ua_version = "3.5.2"; os_name = oses_mac_osx; break;
|
||||||
case "20090729211829": ua_version = "3.5.2"; os_name = oses_linux; break;
|
case "20090729211829": ua_version = "3.5.2"; os_name = oses_linux; break;
|
||||||
case "20090729225027": ua_version = "3.5.2"; os_name = oses_windows; break;
|
case "20090729225027": ua_version = "3.5.2"; os_name = oses_windows; break;
|
||||||
|
@ -439,34 +446,34 @@ os_detect.getVersion = function(){
|
||||||
case "20090824085743": ua_version = "3.5.3"; os_name = oses_linux; break;
|
case "20090824085743": ua_version = "3.5.3"; os_name = oses_linux; break;
|
||||||
case "20090824101458": ua_version = "3.5.3"; os_name = oses_windows; break;
|
case "20090824101458": ua_version = "3.5.3"; os_name = oses_windows; break;
|
||||||
case "2009082707": ua_version = "3.0.14"; break;
|
case "2009082707": ua_version = "3.0.14"; break;
|
||||||
case "2009090216": ua_version = "3.0.14"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009090216": ua_version = "3.0.14"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20090914014745": ua_version = "3.5.3"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20090914014745": ua_version = "3.5.3"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "20090915065903": ua_version = "3.5.3"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86_64; break;
|
case "20090915065903": ua_version = "3.5.3"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86_64; break;
|
||||||
case "20090915070141": ua_version = "3.5.3"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86; break;
|
case "20090915070141": ua_version = "3.5.3"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86; break;
|
||||||
case "20091007090112": ua_version = "3.5.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
case "20091007090112": ua_version = "3.5.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
||||||
case "20091007095328": ua_version = "3.5.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20091007095328": ua_version = "3.5.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
case "2009101600":
|
case "2009101600":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009101600": ua_version = "3.0.15"; break; // Can be either Mac or Linux
|
case "2009101600": ua_version = "3.0.15"; break; // Can be either Mac or Linux
|
||||||
case "20091016": ua_version = "3.5.4"; os_name = oses_linux; os_flavor = "SUSE"; arch = arch_x86; break;
|
case "20091016": ua_version = "3.5.4"; os_name = oses_linux; os_vendor = "SUSE"; arch = arch_x86; break;
|
||||||
} break;
|
} break;
|
||||||
case "2009101601": ua_version = "3.0.15"; os_name = oses_windows; break;
|
case "2009101601": ua_version = "3.0.15"; os_name = oses_windows; break;
|
||||||
case "20091016081620": ua_version = "3.5.4"; os_name = oses_mac_osx; break;
|
case "20091016081620": ua_version = "3.5.4"; os_name = oses_mac_osx; break;
|
||||||
case "20091016081727": ua_version = "3.5.4"; os_name = oses_linux; break;
|
case "20091016081727": ua_version = "3.5.4"; os_name = oses_linux; break;
|
||||||
case "20091016092926": ua_version = "3.5.4"; os_name = oses_windows; break;
|
case "20091016092926": ua_version = "3.5.4"; os_name = oses_windows; break;
|
||||||
case "20091020122601": ua_version = "3.5.4"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20091020122601": ua_version = "3.5.4"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
case "2009102814":
|
case "2009102814":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2009121602": ua_version = "3.0.16"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009121602": ua_version = "3.0.16"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "2010010604": ua_version = "3.0.17"; os_name = oses_linux; os_flavor = "Mint"; break;
|
case "2010010604": ua_version = "3.0.17"; os_name = oses_linux; os_vendor = "Mint"; break;
|
||||||
case "2010021501": ua_version = "3.0.17;xul1.9.0.18"; os_name = oses_linux; os_flavor = "Mint"; arch = arch_x86; break;
|
case "2010021501": ua_version = "3.0.17;xul1.9.0.18"; os_name = oses_linux; os_vendor = "Mint"; arch = arch_x86; break;
|
||||||
case "2010021502": ua_version = "3.0.17;xul1.9.0.18"; os_name = oses_linux; os_flavor = "Mint"; arch = arch_x86_64; break;
|
case "2010021502": ua_version = "3.0.17;xul1.9.0.18"; os_name = oses_linux; os_vendor = "Mint"; arch = arch_x86_64; break;
|
||||||
} break;
|
} break;
|
||||||
case "2009102815":
|
case "2009102815":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009102815": ua_version = "3.0.15"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009102815": ua_version = "3.0.15"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
} break;
|
} break;
|
||||||
case "20091029152254": ua_version = "3.6.0.b1"; os_name = oses_linux; break;
|
case "20091029152254": ua_version = "3.6.0.b1"; os_name = oses_linux; break;
|
||||||
case "20091029171059": ua_version = "3.6.0.b1"; os_name = oses_windows; break;
|
case "20091029171059": ua_version = "3.6.0.b1"; os_name = oses_windows; break;
|
||||||
|
@ -474,23 +481,23 @@ os_detect.getVersion = function(){
|
||||||
case "20091102141836": ua_version = "3.5.5"; os_name = oses_linux; break;
|
case "20091102141836": ua_version = "3.5.5"; os_name = oses_linux; break;
|
||||||
case "20091102152451": ua_version = "3.5.5"; os_name = oses_windows; break;
|
case "20091102152451": ua_version = "3.5.5"; os_name = oses_windows; break;
|
||||||
case "2009110421": ua_version = "3.0.15"; os_name = oses_freebsd; arch = arch_x86; break;
|
case "2009110421": ua_version = "3.0.15"; os_name = oses_freebsd; arch = arch_x86; break;
|
||||||
case "20091106091959": ua_version = "3.5.5"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20091106091959": ua_version = "3.5.5"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "20091106140514": ua_version = "3.5.5"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20091106140514": ua_version = "3.5.5"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20091106145609": ua_version = "3.5.5"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20091106145609": ua_version = "3.5.5"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20091108163911": ua_version = "3.6.0.b2"; os_name = oses_linux; break;
|
case "20091108163911": ua_version = "3.6.0.b2"; os_name = oses_linux; break;
|
||||||
case "20091108181924": ua_version = "3.6.0.b2"; os_name = oses_windows; break;
|
case "20091108181924": ua_version = "3.6.0.b2"; os_name = oses_windows; break;
|
||||||
case "20091109125225":
|
case "20091109125225":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "20091109": ua_version = "3.5.5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20091109": ua_version = "3.5.5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20091215": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20091215": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
} break;
|
} break;
|
||||||
case "20091109134913": ua_version = "3.5.5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20091109134913": ua_version = "3.5.5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20091115172547": ua_version = "3.6.0.b3"; os_name = oses_linux; break;
|
case "20091115172547": ua_version = "3.6.0.b3"; os_name = oses_linux; break;
|
||||||
case "20091115182845": ua_version = "3.6.0.b3"; os_name = oses_windows; break;
|
case "20091115182845": ua_version = "3.6.0.b3"; os_name = oses_windows; break;
|
||||||
case "20091124201530": ua_version = "3.6.0.b4"; os_name = oses_mac_osx; break;
|
case "20091124201530": ua_version = "3.6.0.b4"; os_name = oses_mac_osx; break;
|
||||||
case "20091124201751": ua_version = "3.6.0.b4"; os_name = oses_linux; break;
|
case "20091124201751": ua_version = "3.6.0.b4"; os_name = oses_linux; break;
|
||||||
case "20091124213835": ua_version = "3.6.0.b4"; os_name = oses_windows; break;
|
case "20091124213835": ua_version = "3.6.0.b4"; os_name = oses_windows; break;
|
||||||
case "2009120100": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2009120100": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20091201203240": ua_version = "3.5.6"; os_name = oses_mac_osx; break;
|
case "20091201203240": ua_version = "3.5.6"; os_name = oses_mac_osx; break;
|
||||||
case "20091201204959": ua_version = "3.5.6"; os_name = oses_linux; break;
|
case "20091201204959": ua_version = "3.5.6"; os_name = oses_linux; break;
|
||||||
case "20091201220228": ua_version = "3.5.6"; os_name = oses_windows; break;
|
case "20091201220228": ua_version = "3.5.6"; os_name = oses_windows; break;
|
||||||
|
@ -499,74 +506,74 @@ os_detect.getVersion = function(){
|
||||||
case "20091204132459": ua_version = "3.6.0.b5"; os_name = oses_linux; break;
|
case "20091204132459": ua_version = "3.6.0.b5"; os_name = oses_linux; break;
|
||||||
case "20091204132509": ua_version = "3.6.0.b5"; os_name = oses_mac_osx; break;
|
case "20091204132509": ua_version = "3.6.0.b5"; os_name = oses_mac_osx; break;
|
||||||
case "20091204143806": ua_version = "3.6.0.b5"; os_name = oses_windows; break;
|
case "20091204143806": ua_version = "3.6.0.b5"; os_name = oses_windows; break;
|
||||||
case "20091215230859": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20091215230859": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20091215230946": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20091215230946": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20091215231400": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
case "20091215231400": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
||||||
case "20091215231754":
|
case "20091215231754":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "20091215": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20091215": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100106": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20100106": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
} break;
|
} break;
|
||||||
case "2009121601":
|
case "2009121601":
|
||||||
switch (navigator.productSub) {
|
switch (navigator.productSub) {
|
||||||
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2009121601": ua_version = "3.0.16"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2010010604": ua_version = "3.0.17"; os_name = oses_linux; os_flavor = "Ubuntu"; break; // Could also be Mint x86-64
|
case "2010010604": ua_version = "3.0.17"; os_name = oses_linux; os_vendor = "Ubuntu"; break; // Could also be Mint x86-64
|
||||||
} break;
|
} break;
|
||||||
case "2009121602": ua_version = "3.0.17"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2009121602": ua_version = "3.0.17"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20091216104148": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Mandriva"; break;
|
case "20091216104148": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Mandriva"; break;
|
||||||
case "20091216132458": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20091216132458": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20091216132537": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20091216132537": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20091216142458": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20091216142458": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20091216142519": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20091216142519": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "2009121708": ua_version = "3.0.16"; os_name = oses_linux; os_flavor = "CentOS"; arch = arch_x86; break;
|
case "2009121708": ua_version = "3.0.16"; os_name = oses_linux; os_vendor = "CentOS"; arch = arch_x86; break;
|
||||||
case "20091221151141": ua_version = "3.5.7"; os_name = oses_mac_osx; break;
|
case "20091221151141": ua_version = "3.5.7"; os_name = oses_mac_osx; break;
|
||||||
case "20091221152502": ua_version = "3.5.7"; os_name = oses_linux; break;
|
case "20091221152502": ua_version = "3.5.7"; os_name = oses_linux; break;
|
||||||
case "2009122115": ua_version = "3.0.17"; break; // Can be either Mac or Linux
|
case "2009122115": ua_version = "3.0.17"; break; // Can be either Mac or Linux
|
||||||
case "20091221164558": ua_version = "3.5.7"; os_name = oses_windows; break;
|
case "20091221164558": ua_version = "3.5.7"; os_name = oses_windows; break;
|
||||||
case "2009122116": ua_version = "3.0.17"; os_name = oses_windows; break;
|
case "2009122116": ua_version = "3.0.17"; os_name = oses_windows; break;
|
||||||
case "2009122200": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2009122200": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20091223231431": ua_version = "3.5.6"; os_name = oses_linux; os_flavor = "PCLunixOS"; arch = arch_x86; break;
|
case "20091223231431": ua_version = "3.5.6"; os_name = oses_linux; os_vendor = "PCLunixOS"; arch = arch_x86; break;
|
||||||
case "20100105194006": ua_version = "3.6.0.rc1"; os_name = oses_mac_osx; break;
|
case "20100105194006": ua_version = "3.6.0.rc1"; os_name = oses_mac_osx; break;
|
||||||
case "20100105194116": ua_version = "3.6.0.rc1"; os_name = oses_linux; break;
|
case "20100105194116": ua_version = "3.6.0.rc1"; os_name = oses_linux; break;
|
||||||
case "20100105212446": ua_version = "3.6.0.rc1"; os_name = oses_windows; break;
|
case "20100105212446": ua_version = "3.6.0.rc1"; os_name = oses_windows; break;
|
||||||
case "2010010604": ua_version = "3.0.18"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "2010010604": ua_version = "3.0.18"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20100106054534": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
case "20100106054534": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
||||||
case "20100106054634": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20100106054634": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
case "2010010605": ua_version = "3.0.18"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2010010605": ua_version = "3.0.18"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100106211825": ua_version = "3.5.7"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100106211825": ua_version = "3.5.7"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100106212742": ua_version = "3.5.7"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100106212742": ua_version = "3.5.7"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100106215614": ua_version = "3.5.7"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100106215614": ua_version = "3.5.7"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100110112429": ua_version = "3.5.7"; os_name = oses_linux; os_flavor = "Mandriva"; break;
|
case "20100110112429": ua_version = "3.5.7"; os_name = oses_linux; os_vendor = "Mandriva"; break;
|
||||||
case "20100115132715": ua_version = "3.6.0"; os_name = oses_mac_osx; break;
|
case "20100115132715": ua_version = "3.6.0"; os_name = oses_mac_osx; break;
|
||||||
case "20100115133306": ua_version = "3.6.0"; os_name = oses_linux; break;
|
case "20100115133306": ua_version = "3.6.0"; os_name = oses_linux; break;
|
||||||
case "20100115144158": ua_version = "3.6.0"; os_name = oses_windows; break;
|
case "20100115144158": ua_version = "3.6.0"; os_name = oses_windows; break;
|
||||||
case "20100125074043": ua_version = "3.6.0"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
case "20100125074043": ua_version = "3.6.0"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break; // Could also be Mint x86
|
||||||
case "20100125074127": ua_version = "3.6.0"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20100125074127": ua_version = "3.6.0"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
case "20100125204847": ua_version = "3.6.0"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86; break; // Could also be Mint x86
|
case "20100125204847": ua_version = "3.6.0"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86; break; // Could also be Mint x86
|
||||||
case "20100125204903": ua_version = "3.6.0"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
case "20100125204903": ua_version = "3.6.0"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86_64; break; // Could also be Mint x86-64
|
||||||
case "20100202152834": ua_version = "3.5.8"; os_name = oses_mac_osx; break;
|
case "20100202152834": ua_version = "3.5.8"; os_name = oses_mac_osx; break;
|
||||||
case "20100202153512": ua_version = "3.5.8"; os_name = oses_linux; break;
|
case "20100202153512": ua_version = "3.5.8"; os_name = oses_linux; break;
|
||||||
case "20100202165920": ua_version = "3.5.8"; os_name = oses_windows; break;
|
case "20100202165920": ua_version = "3.5.8"; os_name = oses_windows; break;
|
||||||
case "2010020219": ua_version = "3.0.18"; os_name = oses_mac_osx; break;
|
case "2010020219": ua_version = "3.0.18"; os_name = oses_mac_osx; break;
|
||||||
case "2010020220": ua_version = "3.0.18"; os_name = oses_windows; break;
|
case "2010020220": ua_version = "3.0.18"; os_name = oses_windows; break;
|
||||||
case "2010020400": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010020400": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20100212131909": ua_version = "3.6.0.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100212131909": ua_version = "3.6.0.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100212132013": ua_version = "3.6.0.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100212132013": ua_version = "3.6.0.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100216105329": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100216105329": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100216105348": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100216105348": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100216105410": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100216105410": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100216110009": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100216110009": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "2010021718": ua_version = "3.0.18"; os_name = oses_linux; os_flavor = "CentOS"; arch = arch_x86; break;
|
case "2010021718": ua_version = "3.0.18"; os_name = oses_linux; os_vendor = "CentOS"; arch = arch_x86; break;
|
||||||
case "20100218022359": ua_version = "3.6.0.4"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100218022359": ua_version = "3.6.0.4"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100218022705": ua_version = "3.6.0.4"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100218022705": ua_version = "3.6.0.4"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100218112915": ua_version = "3.5.8"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20100218112915": ua_version = "3.5.8"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "20100222120605": ua_version = "3.6.0.5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100222120605": ua_version = "3.6.0.5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100222120717": ua_version = "3.6.0.5"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100222120717": ua_version = "3.6.0.5"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100301015346": ua_version = "3.6.0"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100301015346": ua_version = "3.6.0"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100305054927": ua_version = "3.6.0"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100305054927": ua_version = "3.6.0"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100307204001": ua_version = "3.6.0"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100307204001": ua_version = "3.6.0"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100308142847": ua_version = "3.6.0.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100308142847": ua_version = "3.6.0.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100308151019": ua_version = "3.6.0.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100308151019": ua_version = "3.6.0.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2010031218": ua_version = "3.0.19"; break; // Mac OS X or Linux
|
case "2010031218": ua_version = "3.0.19"; break; // Mac OS X or Linux
|
||||||
case "2010031422": ua_version = "3.0.19"; os_name = oses_windows; break;
|
case "2010031422": ua_version = "3.0.19"; os_name = oses_windows; break;
|
||||||
case "20100315075757": ua_version = "3.5.9"; os_name = oses_linux; break;
|
case "20100315075757": ua_version = "3.5.9"; os_name = oses_linux; break;
|
||||||
|
@ -575,48 +582,48 @@ os_detect.getVersion = function(){
|
||||||
case "20100316055951": ua_version = "3.6.2"; os_name = oses_mac_osx; break;
|
case "20100316055951": ua_version = "3.6.2"; os_name = oses_mac_osx; break;
|
||||||
case "20100316060223": ua_version = "3.6.2"; os_name = oses_linux; break;
|
case "20100316060223": ua_version = "3.6.2"; os_name = oses_linux; break;
|
||||||
case "20100316074819": ua_version = "3.6.2"; os_name = oses_windows; break;
|
case "20100316074819": ua_version = "3.6.2"; os_name = oses_windows; break;
|
||||||
case "2010031700": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010031700": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20100323102218": ua_version = "3.6.2"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100323102218": ua_version = "3.6.2"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100323102339": ua_version = "3.6.2"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100323102339": ua_version = "3.6.2"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100323194640": ua_version = "3.6.2"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100323194640": ua_version = "3.6.2"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100324182054": ua_version = "3.6.2"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100324182054": ua_version = "3.6.2"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100330071911": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100330071911": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100330072017": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100330072017": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100330072020": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100330072020": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100330072034": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100330072034": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100401064631": ua_version = "3.6.3"; os_name = oses_mac_osx; break;
|
case "20100401064631": ua_version = "3.6.3"; os_name = oses_mac_osx; break;
|
||||||
case "20100401074458": ua_version = "3.6.3"; os_name = oses_linux; break;
|
case "20100401074458": ua_version = "3.6.3"; os_name = oses_linux; break;
|
||||||
case "20100401080539": ua_version = "3.6.3"; os_name = oses_windows; break;
|
case "20100401080539": ua_version = "3.6.3"; os_name = oses_windows; break;
|
||||||
case "20100401144201": ua_version = "3.6.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100401144201": ua_version = "3.6.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2010040116": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2010040116": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2010040118": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2010040118": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2010040119": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "2010040119": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100401213457": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100401213457": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "2010040121": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2010040121": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2010040123": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2010040123": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "2010040200": ua_version = "3.0.19"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "2010040200": ua_version = "3.0.19"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100402010516": ua_version = "3.5.9"; os_name = oses_linux; os_flavor = "Mint"; arch = arch_x86_64; break;
|
case "20100402010516": ua_version = "3.5.9"; os_name = oses_linux; os_vendor = "Mint"; arch = arch_x86_64; break;
|
||||||
case "20100402041908": ua_version = "3.6.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100402041908": ua_version = "3.6.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100403042003": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100403042003": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100403082016": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100403082016": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100404024515": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100404024515": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100404024646": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100404024646": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100404104043": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "PClinuxOS"; arch = arch_x86_64; break;
|
case "20100404104043": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "PClinuxOS"; arch = arch_x86_64; break;
|
||||||
case "20100409151117": ua_version = "3.6.3.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100409151117": ua_version = "3.6.3.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100409170726": ua_version = "3.6.3.2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100409170726": ua_version = "3.6.3.2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100412125148": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20100412125148": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "20100413152922": ua_version = "3.6.4.b1"; os_name = oses_mac_osx; break;
|
case "20100413152922": ua_version = "3.6.4.b1"; os_name = oses_mac_osx; break;
|
||||||
case "20100413154310": ua_version = "3.6.4.b1"; os_name = oses_linux; break;
|
case "20100413154310": ua_version = "3.6.4.b1"; os_name = oses_linux; break;
|
||||||
case "20100413172113": ua_version = "3.6.4.b1"; os_name = oses_windows; break;
|
case "20100413172113": ua_version = "3.6.4.b1"; os_name = oses_windows; break;
|
||||||
case "20100415062243": ua_version = "3.6.3.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100415062243": ua_version = "3.6.3.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100415103754": ua_version = "3.6.3.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100415103754": ua_version = "3.6.3.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100416101101": ua_version = "3.6.3.2"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20100416101101": ua_version = "3.6.3.2"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "2010041700": ua_version = "3.6.4.1"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010041700": ua_version = "3.6.4.1"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20100419015333": ua_version = "3.6.3"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100419015333": ua_version = "3.6.3"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100423043606": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86_64; break;
|
case "20100423043606": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86_64; break;
|
||||||
case "20100423140709": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100423140709": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100423141150": ua_version = "3.6.3"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100423141150": ua_version = "3.6.3"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100423142835": ua_version = "3.6.3"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100423142835": ua_version = "3.6.3"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100502202326": ua_version = "3.6.4.b2"; os_name = oses_linux; break;
|
case "20100502202326": ua_version = "3.6.4.b2"; os_name = oses_linux; break;
|
||||||
case "20100502202401": ua_version = "3.6.4.b2"; os_name = oses_mac_osx; break;
|
case "20100502202401": ua_version = "3.6.4.b2"; os_name = oses_mac_osx; break;
|
||||||
case "20100502221517": ua_version = "3.6.4.b2"; os_name = oses_windows; break;
|
case "20100502221517": ua_version = "3.6.4.b2"; os_name = oses_windows; break;
|
||||||
|
@ -626,69 +633,69 @@ os_detect.getVersion = function(){
|
||||||
case "20100504085637": ua_version = "3.5.10"; os_name = oses_linux; break;
|
case "20100504085637": ua_version = "3.5.10"; os_name = oses_linux; break;
|
||||||
case "20100504085753": ua_version = "3.5.10"; os_name = oses_mac_osx; break;
|
case "20100504085753": ua_version = "3.5.10"; os_name = oses_mac_osx; break;
|
||||||
case "20100504093643": ua_version = "3.5.10"; os_name = oses_windows; break;
|
case "20100504093643": ua_version = "3.5.10"; os_name = oses_windows; break;
|
||||||
case "2010050600": ua_version = "3.5.10"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010050600": ua_version = "3.5.10"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "2010051300": ua_version = "3.6.4.1"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010051300": ua_version = "3.6.4.1"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20100513134853": ua_version = "3.6.4.b4"; os_name = oses_mac_osx; break;
|
case "20100513134853": ua_version = "3.6.4.b4"; os_name = oses_mac_osx; break;
|
||||||
case "20100513140540": ua_version = "3.6.4.b4"; os_name = oses_linux; break;
|
case "20100513140540": ua_version = "3.6.4.b4"; os_name = oses_linux; break;
|
||||||
case "20100513144105": ua_version = "3.6.4.b4"; os_name = oses_windows; break;
|
case "20100513144105": ua_version = "3.6.4.b4"; os_name = oses_windows; break;
|
||||||
case "20100513190740": ua_version = "3.6.3"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100513190740": ua_version = "3.6.3"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100523180910": ua_version = "3.6.4.b5"; os_name = oses_mac_osx; break;
|
case "20100523180910": ua_version = "3.6.4.b5"; os_name = oses_mac_osx; break;
|
||||||
case "20100523181754": ua_version = "3.6.4.b5"; os_name = oses_linux; break;
|
case "20100523181754": ua_version = "3.6.4.b5"; os_name = oses_linux; break;
|
||||||
case "20100523185824": ua_version = "3.6.4.b5"; os_name = oses_windows; break;
|
case "20100523185824": ua_version = "3.6.4.b5"; os_name = oses_windows; break;
|
||||||
case "20100527084110": ua_version = "3.6.4.b6"; os_name = oses_mac_osx; break;
|
case "20100527084110": ua_version = "3.6.4.b6"; os_name = oses_mac_osx; break;
|
||||||
case "20100527085242": ua_version = "3.6.4.b6"; os_name = oses_linux; break;
|
case "20100527085242": ua_version = "3.6.4.b6"; os_name = oses_linux; break;
|
||||||
case "20100527093236": ua_version = "3.6.4.b6"; os_name = oses_windows; break;
|
case "20100527093236": ua_version = "3.6.4.b6"; os_name = oses_windows; break;
|
||||||
case "2010061100": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "SUSE"; break;
|
case "2010061100": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "SUSE"; break;
|
||||||
case "20100611134546": ua_version = "3.6.4.b7"; os_name = oses_mac_osx; break;
|
case "20100611134546": ua_version = "3.6.4.b7"; os_name = oses_mac_osx; break;
|
||||||
case "20100611135942": ua_version = "3.6.4.b7"; os_name = oses_linux; break;
|
case "20100611135942": ua_version = "3.6.4.b7"; os_name = oses_linux; break;
|
||||||
case "20100611143157": ua_version = "3.6.4.b7"; os_name = oses_windows; break;
|
case "20100611143157": ua_version = "3.6.4.b7"; os_name = oses_windows; break;
|
||||||
case "20100622203044": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100622203044": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100622203045": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100622203045": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100622204750": ua_version = "3.5.10"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86_64; break;
|
case "20100622204750": ua_version = "3.5.10"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86_64; break;
|
||||||
case "20100622204830": ua_version = "3.5.10"; os_name = oses_linux; os_flavor = "Fedora"; arch = arch_x86; break;
|
case "20100622204830": ua_version = "3.5.10"; os_name = oses_linux; os_vendor = "Fedora"; arch = arch_x86; break;
|
||||||
case "20100622205038": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "PClinuxOS"; arch = arch_x86_64; break;
|
case "20100622205038": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "PClinuxOS"; arch = arch_x86_64; break;
|
||||||
case "20100623081410": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "CentOS"; arch = arch_x86_64; break;
|
case "20100623081410": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "CentOS"; arch = arch_x86_64; break;
|
||||||
case "20100623081921": ua_version = "3.6.4"; os_name = oses_linux; os_flavor = "CentOS"; arch = arch_x86; break;
|
case "20100623081921": ua_version = "3.6.4"; os_name = oses_linux; os_vendor = "CentOS"; arch = arch_x86; break;
|
||||||
case "20100623155731": ua_version = "3.6.4.b7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100623155731": ua_version = "3.6.4.b7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100623200132": ua_version = "3.6.4.b7"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100623200132": ua_version = "3.6.4.b7"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100625222733": ua_version = "3.6.6"; os_name = oses_linux; break;
|
case "20100625222733": ua_version = "3.6.6"; os_name = oses_linux; break;
|
||||||
case "20100625223402": ua_version = "3.6.6"; os_name = oses_mac_osx; break;
|
case "20100625223402": ua_version = "3.6.6"; os_name = oses_mac_osx; break;
|
||||||
case "20100625231939": ua_version = "3.6.6"; os_name = oses_windows; break;
|
case "20100625231939": ua_version = "3.6.6"; os_name = oses_windows; break;
|
||||||
case "20100626104508": ua_version = "3.6.4"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86; break;
|
case "20100626104508": ua_version = "3.6.4"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86; break;
|
||||||
case "20100627211341": ua_version = "3.6.4"; os_name = oses_freebsd; os_flavor = "PC-BSD"; arch = arch_x86_64; break;
|
case "20100627211341": ua_version = "3.6.4"; os_name = oses_freebsd; os_vendor = "PC-BSD"; arch = arch_x86_64; break;
|
||||||
case "20100628082832": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "PClinuxOS"; arch = arch_x86_64; break;
|
case "20100628082832": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "PClinuxOS"; arch = arch_x86_64; break;
|
||||||
case "20100628124739": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100628124739": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100628143222": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100628143222": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100628232431": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100628232431": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100629034705": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100629034705": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100629105354": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Mandriva"; arch = arch_x86; break;
|
case "20100629105354": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Mandriva"; arch = arch_x86; break;
|
||||||
case "20100630130433": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100630130433": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100630131607": ua_version = "4.0.0.b1"; os_name = oses_mac_osx; break;
|
case "20100630131607": ua_version = "4.0.0.b1"; os_name = oses_mac_osx; break;
|
||||||
case "20100630132217": ua_version = "4.0.0.b1"; os_name = oses_linux; break;
|
case "20100630132217": ua_version = "4.0.0.b1"; os_name = oses_linux; break;
|
||||||
case "20100630141702": ua_version = "4.0.0.b1"; os_name = oses_windows; break;
|
case "20100630141702": ua_version = "4.0.0.b1"; os_name = oses_windows; break;
|
||||||
case "20100630174226": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86_64; break;
|
case "20100630174226": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86_64; break;
|
||||||
case "20100630180611": ua_version = "3.6.6"; os_name = oses_linux; os_flavor = "Sabayon"; arch = arch_x86; break;
|
case "20100630180611": ua_version = "3.6.6"; os_name = oses_linux; os_vendor = "Sabayon"; arch = arch_x86; break;
|
||||||
case "20100709115208": ua_version = "3.6.7.b1"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86; break;
|
case "20100709115208": ua_version = "3.6.7.b1"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86; break;
|
||||||
case "20100709183408": ua_version = "3.6.7.b1"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100709183408": ua_version = "3.6.7.b1"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20100716093011": ua_version = "3.6.7.b2"; os_name = oses_linux; os_flavor = "Ubuntu"; arch = arch_x86_64; break;
|
case "20100716093011": ua_version = "3.6.7.b2"; os_name = oses_linux; os_vendor = "Ubuntu"; arch = arch_x86_64; break;
|
||||||
case "20101203075014": ua_version = "3.6.13"; os_name = oses_windows; break;
|
case "20101203075014": ua_version = "3.6.13"; os_name = oses_windows; break;
|
||||||
case "20101206122825": ua_version = "3.6.13"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "20101206122825": ua_version = "3.6.13"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20110318052756": ua_version = "4.0"; os_name = oses_windows; break; // browsershots: Firefox 4.0 / Windows XP
|
case "20110318052756": ua_version = "4.0"; os_name = oses_windows; break; // browsershots: Firefox 4.0 / Windows XP
|
||||||
case "20110420144310": ua_version = "3.5.19"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Firefox 3.5.19 / Debian 4.0 (Etch)
|
case "20110420144310": ua_version = "3.5.19"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Firefox 3.5.19 / Debian 4.0 (Etch)
|
||||||
case "20110615151330": ua_version = "5.0"; os_name = oses_windows; break; // browsershots: Firefox 5.0 / Windows XP
|
case "20110615151330": ua_version = "5.0"; os_name = oses_windows; break; // browsershots: Firefox 5.0 / Windows XP
|
||||||
case "20110811165603": ua_version = "6.0"; os_name = oses_windows; break; // browsershots: Firefox 6.0 / Windows XP
|
case "20110811165603": ua_version = "6.0"; os_name = oses_windows; break; // browsershots: Firefox 6.0 / Windows XP
|
||||||
case "20110830092941": ua_version = "6.0.1"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Firefox 6.0.1 / Debian 4.0 (Etch)
|
case "20110830092941": ua_version = "6.0.1"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Firefox 6.0.1 / Debian 4.0 (Etch)
|
||||||
case "20110922153450": ua_version = "7.0"; os_name = oses_windows; break; // browsershots: Firefox 7.0 / Windows XP
|
case "20110922153450": ua_version = "7.0"; os_name = oses_windows; break; // browsershots: Firefox 7.0 / Windows XP
|
||||||
case "20110928134238": ua_version = "7.0.1"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Firefox 7.0.1 / Debian 4.0 (Etch)
|
case "20110928134238": ua_version = "7.0.1"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Firefox 7.0.1 / Debian 4.0 (Etch)
|
||||||
case "20111104165243": ua_version = "8.0"; os_name = oses_windows; break; // browsershots: Firefox 8.0 / Windows XP
|
case "20111104165243": ua_version = "8.0"; os_name = oses_windows; break; // browsershots: Firefox 8.0 / Windows XP
|
||||||
case "20111115183813": ua_version = "8.0"; os_name = oses_linux; os_flavor = "Ubuntu"; break; // browsershots: Firefox 8.0 / Ubuntu 9.10 (Karmic Koala)
|
case "20111115183813": ua_version = "8.0"; os_name = oses_linux; os_vendor = "Ubuntu"; break; // browsershots: Firefox 8.0 / Ubuntu 9.10 (Karmic Koala)
|
||||||
case "20111216140209": ua_version = "9.0"; os_name = oses_windows; break; // browsershots: Firefox 9.0 / Windows XP
|
case "20111216140209": ua_version = "9.0"; os_name = oses_windows; break; // browsershots: Firefox 9.0 / Windows XP
|
||||||
case "20120129021758": ua_version = "10.0"; os_name = oses_windows; break; // browsershots: Firefox 10.0 / Windows 2000
|
case "20120129021758": ua_version = "10.0"; os_name = oses_windows; break; // browsershots: Firefox 10.0 / Windows 2000
|
||||||
case "20120201083324": ua_version = "3.5.16"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Iceweasel 3.5.16 / Debian 4.0 (Etch)
|
case "20120201083324": ua_version = "3.5.16"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Iceweasel 3.5.16 / Debian 4.0 (Etch)
|
||||||
case "20120216013254": ua_version = "3.6.27"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Firefox 3.6.27 / Debian 4.0 (Etch)
|
case "20120216013254": ua_version = "3.6.27"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Firefox 3.6.27 / Debian 4.0 (Etch)
|
||||||
case "20120216100510": ua_version = "10.0.2"; os_name = oses_linux; os_flavor = "Ubuntu"; break; // browsershots: Firefox 10.0.2 / Ubuntu 9.10 (Karmic Koala)
|
case "20120216100510": ua_version = "10.0.2"; os_name = oses_linux; os_vendor = "Ubuntu"; break; // browsershots: Firefox 10.0.2 / Ubuntu 9.10 (Karmic Koala)
|
||||||
case "20120310010316": ua_version = "11.0"; os_name = oses_linux; os_flavor = "Ubuntu"; break; // browsershots: Firefox 11.0 / Ubuntu 9.10 (Karmic Koala)
|
case "20120310010316": ua_version = "11.0"; os_name = oses_linux; os_vendor = "Ubuntu"; break; // browsershots: Firefox 11.0 / Ubuntu 9.10 (Karmic Koala)
|
||||||
case "20120310194926": ua_version = "11.0"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "20120310194926": ua_version = "11.0"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20120312181643":
|
case "20120312181643":
|
||||||
// It is disconcerting that a buildID is the same on Windows
|
// It is disconcerting that a buildID is the same on Windows
|
||||||
// and Mac, need to examine more versions on Mac.
|
// and Mac, need to examine more versions on Mac.
|
||||||
|
@ -699,9 +706,9 @@ os_detect.getVersion = function(){
|
||||||
os_name = oses_windows; // browsershots: Firefox 11.0 / Windows XP
|
os_name = oses_windows; // browsershots: Firefox 11.0 / Windows XP
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "20120314195616": ua_version = "12.0"; os_name = oses_linux; os_flavor = "Debian"; break; // browsershots: Firefox 12.0 / Debian 4.0 (Etch)
|
case "20120314195616": ua_version = "12.0"; os_name = oses_linux; os_vendor = "Debian"; break; // browsershots: Firefox 12.0 / Debian 4.0 (Etch)
|
||||||
case "20120423142301": ua_version = "12.0"; os_name = oses_linux; os_flavor = "Ubuntu"; break;
|
case "20120423142301": ua_version = "12.0"; os_name = oses_linux; os_vendor = "Ubuntu"; break;
|
||||||
case "20120424151700": ua_version = "12.0"; os_name = oses_linux; os_flavor = "Fedora"; break;
|
case "20120424151700": ua_version = "12.0"; os_name = oses_linux; os_vendor = "Fedora"; break;
|
||||||
default:
|
default:
|
||||||
version = this.searchVersion("Firefox", navigator.userAgent);
|
version = this.searchVersion("Firefox", navigator.userAgent);
|
||||||
// Verify whether the ua string is lying by checking if it contains
|
// Verify whether the ua string is lying by checking if it contains
|
||||||
|
@ -731,64 +738,67 @@ os_detect.getVersion = function(){
|
||||||
// share.
|
// share.
|
||||||
os_name = oses_windows;
|
os_name = oses_windows;
|
||||||
ua_name = clients_ie;
|
ua_name = clients_ie;
|
||||||
version = ScriptEngineMajorVersion().toString();
|
version_maj = ScriptEngineMajorVersion().toString();
|
||||||
version += ScriptEngineMinorVersion().toString();
|
version_min = ScriptEngineMinorVersion().toString();
|
||||||
version += ScriptEngineBuildVersion().toString();
|
version_build = ScriptEngineBuildVersion().toString();
|
||||||
|
|
||||||
|
version = version_maj + version_min + version_build;
|
||||||
|
|
||||||
//document.write("ScriptEngine: "+version+"<br />");
|
//document.write("ScriptEngine: "+version+"<br />");
|
||||||
switch (version){
|
switch (version){
|
||||||
case "514615":
|
case "514615":
|
||||||
// IE 5.00.2920.0000, 2000 Advanced Server SP0 English
|
// IE 5.00.2920.0000, 2000 Advanced Server SP0 English
|
||||||
ua_version = "5.0";
|
ua_version = "5.0";
|
||||||
os_flavor = "2000";
|
os_name = "Windows 2000";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "515907":
|
case "515907":
|
||||||
os_flavor = "2000";
|
os_name = "Windows 2000";
|
||||||
os_sp = "SP3"; //or SP2: oCC.getComponentVersion('{22d6f312-b0f6-11d0-94ab-0080c74c7e95}', 'componentid') => 6,4,9,1109
|
os_sp = "SP3"; //or SP2: oCC.getComponentVersion('{22d6f312-b0f6-11d0-94ab-0080c74c7e95}', 'componentid') => 6,4,9,1109
|
||||||
break;
|
break;
|
||||||
case "518513":
|
case "518513":
|
||||||
os_flavor = "2000";
|
os_name = "Windows 2000";
|
||||||
os_sp = "SP4";
|
os_sp = "SP4";
|
||||||
break;
|
break;
|
||||||
case "566626":
|
case "566626":
|
||||||
// IE 6.0.2600.0000, XP SP0 English
|
// IE 6.0.2600.0000, XP SP0 English
|
||||||
// IE 6.0.2800.1106, XP SP1 English
|
// IE 6.0.2800.1106, XP SP1 English
|
||||||
ua_version = "6.0";
|
ua_version = "6.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "568515":
|
case "568515":
|
||||||
// IE 6.0.3790.0, 2003 Standard SP0 English
|
// IE 6.0.3790.0, 2003 Standard SP0 English
|
||||||
ua_version = "6.0";
|
ua_version = "6.0";
|
||||||
os_flavor = "2003";
|
os_name = "Windows 2003";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "568820":
|
case "568820":
|
||||||
// IE 6.0.2900.2180, xp sp2 english
|
// IE 6.0.2900.2180, xp sp2 english
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP2";
|
os_sp = "SP2";
|
||||||
break;
|
break;
|
||||||
case "568827":
|
case "568827":
|
||||||
os_flavor = "2003";
|
os_name = "Windows 2003";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "568831": //XP SP2 -OR- 2K SP4
|
case "568831": //XP SP2 -OR- 2K SP4
|
||||||
if (os_flavor == "2000"){
|
if (os_name == "2000"){
|
||||||
os_sp = "SP4";
|
os_sp = "SP4";
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP2";
|
os_sp = "SP2";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "568832":
|
case "568832":
|
||||||
os_flavor = "2003";
|
os_name = "Windows 2003";
|
||||||
os_sp = "SP2";
|
os_sp = "SP2";
|
||||||
break;
|
break;
|
||||||
case "568837":
|
case "568837":
|
||||||
// IE 6.0.2900.2180, XP Professional SP2 Korean
|
// IE 6.0.2900.2180, XP Professional SP2 Korean
|
||||||
ua_version = "6.0";
|
ua_version = "6.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP2";
|
os_sp = "SP2";
|
||||||
break;
|
break;
|
||||||
case "5716599":
|
case "5716599":
|
||||||
|
@ -799,7 +809,7 @@ os_detect.getVersion = function(){
|
||||||
// Since this scriptengine applies to more than one major version of
|
// Since this scriptengine applies to more than one major version of
|
||||||
// IE, rely on the object detection below to determine ua_version.
|
// IE, rely on the object detection below to determine ua_version.
|
||||||
//ua_version = "6.0";
|
//ua_version = "6.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP3";
|
os_sp = "SP3";
|
||||||
break;
|
break;
|
||||||
case "575730":
|
case "575730":
|
||||||
|
@ -814,19 +824,19 @@ os_detect.getVersion = function(){
|
||||||
case "5718066":
|
case "5718066":
|
||||||
// IE 7.0.5730.13, XP Professional SP3 English
|
// IE 7.0.5730.13, XP Professional SP3 English
|
||||||
ua_version = "7.0";
|
ua_version = "7.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP3";
|
os_sp = "SP3";
|
||||||
break;
|
break;
|
||||||
case "5722589":
|
case "5722589":
|
||||||
// IE 7.0.5730.13, XP Professional SP3 English
|
// IE 7.0.5730.13, XP Professional SP3 English
|
||||||
ua_version = "7.0";
|
ua_version = "7.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP3";
|
os_sp = "SP3";
|
||||||
break;
|
break;
|
||||||
case "576000":
|
case "576000":
|
||||||
// IE 7.0.6000.16386, Vista Ultimate SP0 English
|
// IE 7.0.6000.16386, Vista Ultimate SP0 English
|
||||||
ua_version = "7.0";
|
ua_version = "7.0";
|
||||||
os_flavor = "Vista";
|
os_name = "Windows Vista";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "580":
|
case "580":
|
||||||
|
@ -838,13 +848,13 @@ os_detect.getVersion = function(){
|
||||||
case "5816762":
|
case "5816762":
|
||||||
// IE 8.0.7600.16385, Windows 7 English
|
// IE 8.0.7600.16385, Windows 7 English
|
||||||
ua_version = "8.0";
|
ua_version = "8.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "5817514":
|
case "5817514":
|
||||||
// IE 8.0.7600.17514, Windows 7 SP1 English
|
// IE 8.0.7600.17514, Windows 7 SP1 English
|
||||||
ua_version = "8.0";
|
ua_version = "8.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "5818702":
|
case "5818702":
|
||||||
|
@ -852,104 +862,109 @@ os_detect.getVersion = function(){
|
||||||
case "5822960":
|
case "5822960":
|
||||||
// IE 8.0.6001.18702, XP Professional SP3 Greek
|
// IE 8.0.6001.18702, XP Professional SP3 Greek
|
||||||
ua_version = "8.0";
|
ua_version = "8.0";
|
||||||
os_flavor = "XP";
|
os_name = "Windows XP";
|
||||||
os_sp = "SP3";
|
os_sp = "SP3";
|
||||||
break;
|
break;
|
||||||
case "9016406":
|
case "9016406":
|
||||||
// IE 9.0.7930.16406, Windows 7 64-bit
|
// IE 9.0.7930.16406, Windows 7 64-bit
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
case "9016441":
|
case "9016441":
|
||||||
// IE 9.0.8112.16421, Windows 7 32-bit English
|
// IE 9.0.8112.16421, Windows 7 32-bit English
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016443":
|
case "9016443":
|
||||||
// IE 9.0.8112.16421, Windows 7 Polish
|
// IE 9.0.8112.16421, Windows 7 Polish
|
||||||
// Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
|
// Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016446":
|
case "9016446":
|
||||||
// IE 9.0.8112.16421, Windows 7 English (Update Versions: 9.0.7 (KB2699988)
|
// IE 9.0.8112.16421, Windows 7 English (Update Versions: 9.0.7 (KB2699988)
|
||||||
// Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MASA; InfoPath.3; MS-RTC LM 8; BRI/2)Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MASA; InfoPath.3; MS-RTC LM 8; BRI/2)
|
// Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MASA; InfoPath.3; MS-RTC LM 8; BRI/2)Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MASA; InfoPath.3; MS-RTC LM 8; BRI/2)
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016464":
|
case "9016464":
|
||||||
// browsershots.org, MSIE 7.0 / Windows 2008 R2
|
// browsershots.org, MSIE 7.0 / Windows 2008 R2
|
||||||
os_flavor = "2008R2";
|
os_name = "Windows 2008 R2";
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
break;
|
break;
|
||||||
case "9016470":
|
case "9016470":
|
||||||
// IE 9.0.8112.16421 / Windows 7 SP1
|
// IE 9.0.8112.16421 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016502":
|
case "9016502":
|
||||||
// IE 9.0.8112.16502 / Windows 7 SP1
|
// IE 9.0.8112.16502 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016506":
|
case "9016506":
|
||||||
// IE 9.0.8112.16506 / Windows 7 SP1
|
// IE 9.0.8112.16506 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016514":
|
case "9016514":
|
||||||
// IE 9.0.8112.16514 / Windows 7 SP1
|
// IE 9.0.8112.16514 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016520":
|
case "9016520":
|
||||||
// IE 9.0.8112.16520 / Windows 7 SP1
|
// IE 9.0.8112.16520 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016526":
|
case "9016526":
|
||||||
// IE 9.0.8112.16526 / Windows 7 SP1
|
// IE 9.0.8112.16526 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "9016533":
|
case "9016533":
|
||||||
// IE 9.0.8112.16533 / Windows 7 SP1
|
// IE 9.0.8112.16533 / Windows 7 SP1
|
||||||
ua_version = "9.0";
|
ua_version = "9.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "10016720":
|
case "10016720":
|
||||||
// IE 10.0.9200.16721 / Windows 7 SP1
|
// IE 10.0.9200.16721 / Windows 7 SP1
|
||||||
ua_version = "10.0";
|
ua_version = "10.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "11016428":
|
case "11016428":
|
||||||
// IE 11.0.9600.16428 / Windows 7 SP1
|
// IE 11.0.9600.16428 / Windows 7 SP1
|
||||||
ua_version = "11.0";
|
ua_version = "11.0";
|
||||||
os_flavor = "7";
|
os_name = "Windows 7";
|
||||||
os_sp = "SP1";
|
os_sp = "SP1";
|
||||||
break;
|
break;
|
||||||
case "10016384":
|
case "10016384":
|
||||||
// IE 10.0.9200.16384 / Windows 8 x86
|
// IE 10.0.9200.16384 / Windows 8 x86
|
||||||
ua_version = "10.0";
|
ua_version = "10.0";
|
||||||
os_flavor = "8";
|
os_name = "Windows 8";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
|
case "11016426":
|
||||||
|
// IE 11.0.9600.16476 / KB2898785 (Technically: 11.0.2) Windows 8.1 x86 English
|
||||||
|
ua_version = "11.0";
|
||||||
|
os_name = "Windows 8.1";
|
||||||
|
break;
|
||||||
case "1000":
|
case "1000":
|
||||||
// IE 10.0.8400.0 (Pre-release + KB2702844), Windows 8 x86 English Pre-release
|
// IE 10.0.8400.0 (Pre-release + KB2702844), Windows 8 x86 English Pre-release
|
||||||
ua_version = "10.0";
|
ua_version = "10.0";
|
||||||
os_flavor = "8";
|
os_name = "Windows 8";
|
||||||
os_sp = "SP0";
|
os_sp = "SP0";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1015,7 +1030,7 @@ os_detect.getVersion = function(){
|
||||||
if (!os_name && navigator.platform == "Win32") { os_name = oses_windows; }
|
if (!os_name && navigator.platform == "Win32") { os_name = oses_windows; }
|
||||||
|
|
||||||
//--
|
//--
|
||||||
// Flavor
|
// Figure out the type of Windows
|
||||||
//--
|
//--
|
||||||
if (!ua_is_lying) {
|
if (!ua_is_lying) {
|
||||||
version = useragent.toLowerCase();
|
version = useragent.toLowerCase();
|
||||||
|
@ -1032,27 +1047,28 @@ os_detect.getVersion = function(){
|
||||||
else if (version.indexOf("mac") != -1) { os_name = oses_mac_osx; }
|
else if (version.indexOf("mac") != -1) { os_name = oses_mac_osx; }
|
||||||
else if (version.indexOf("linux") != -1) { os_name = oses_linux; }
|
else if (version.indexOf("linux") != -1) { os_name = oses_linux; }
|
||||||
}
|
}
|
||||||
if (os_name == oses_windows && (!os_flavor || 0 == os_flavor.length)) {
|
if (os_name == oses_windows) {
|
||||||
if (version.indexOf("windows 95") != -1) { os_flavor = "95"; }
|
if (version.indexOf("windows 95") != -1) { os_name = "Windows 95"; }
|
||||||
else if (version.indexOf("windows nt 4") != -1) { os_flavor = "NT"; }
|
else if (version.indexOf("windows nt 4") != -1) { os_name = "Windows NT"; }
|
||||||
else if (version.indexOf("win 9x 4.9") != -1) { os_flavor = "ME"; }
|
else if (version.indexOf("win 9x 4.9") != -1) { os_name = "Windows ME"; }
|
||||||
else if (version.indexOf("windows 98") != -1) { os_flavor = "98"; }
|
else if (version.indexOf("windows 98") != -1) { os_name = "Windows 98"; }
|
||||||
else if (version.indexOf("windows nt 5.0") != -1) { os_flavor = "2000"; }
|
else if (version.indexOf("windows nt 5.0") != -1) { os_name = "Windows 2000"; }
|
||||||
else if (version.indexOf("windows nt 5.1") != -1) { os_flavor = "XP"; }
|
else if (version.indexOf("windows nt 5.1") != -1) { os_name = "Windows XP"; }
|
||||||
else if (version.indexOf("windows nt 5.2") != -1) { os_flavor = "2003"; }
|
else if (version.indexOf("windows nt 5.2") != -1) { os_name = "Windows 2003"; }
|
||||||
else if (version.indexOf("windows nt 6.0") != -1) { os_flavor = "Vista"; }
|
else if (version.indexOf("windows nt 6.0") != -1) { os_name = "Windows Vista"; }
|
||||||
else if (version.indexOf("windows nt 6.1") != -1) { os_flavor = "7"; }
|
else if (version.indexOf("windows nt 6.1") != -1) { os_name = "Windows 7"; }
|
||||||
else if (version.indexOf("windows nt 6.2") != -1) { os_flavor = "8"; }
|
else if (version.indexOf("windows nt 6.2") != -1) { os_name = "Windows 8"; }
|
||||||
|
else if (version.indexOf("windows nt 6.3") != -1) { os_name = "Windows 8.1"; }
|
||||||
}
|
}
|
||||||
if (os_name == oses_linux && (!os_flavor || 0 == os_flavor.length)) {
|
if (os_name == oses_linux && (!os_vendor || 0 == os_vendor.length)) {
|
||||||
if (version.indexOf("gentoo") != -1) { os_flavor = "Gentoo"; }
|
if (version.indexOf("gentoo") != -1) { os_vendor = "Gentoo"; }
|
||||||
else if (version.indexOf("ubuntu") != -1) { os_flavor = "Ubuntu"; }
|
else if (version.indexOf("ubuntu") != -1) { os_vendor = "Ubuntu"; }
|
||||||
else if (version.indexOf("debian") != -1) { os_flavor = "Debian"; }
|
else if (version.indexOf("debian") != -1) { os_vendor = "Debian"; }
|
||||||
else if (version.indexOf("rhel") != -1) { os_flavor = "RHEL"; }
|
else if (version.indexOf("rhel") != -1) { os_vendor = "RHEL"; }
|
||||||
else if (version.indexOf("red hat") != -1) { os_flavor = "RHEL"; }
|
else if (version.indexOf("red hat") != -1) { os_vendor = "RHEL"; }
|
||||||
else if (version.indexOf("centos") != -1) { os_flavor = "CentOS"; }
|
else if (version.indexOf("centos") != -1) { os_vendor = "CentOS"; }
|
||||||
else if (version.indexOf("fedora") != -1) { os_flavor = "Fedora"; }
|
else if (version.indexOf("fedora") != -1) { os_vendor = "Fedora"; }
|
||||||
else if (version.indexOf("android") != -1) { os_flavor = "Android"; }
|
else if (version.indexOf("android") != -1) { os_vendor = "Android"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
//--
|
//--
|
||||||
|
@ -1110,7 +1126,9 @@ os_detect.getVersion = function(){
|
||||||
|
|
||||||
this.ua_is_lying = ua_is_lying;
|
this.ua_is_lying = ua_is_lying;
|
||||||
this.os_name = os_name;
|
this.os_name = os_name;
|
||||||
|
this.os_vendor = os_vendor;
|
||||||
this.os_flavor = os_flavor;
|
this.os_flavor = os_flavor;
|
||||||
|
this.os_device = os_device;
|
||||||
this.os_sp = os_sp;
|
this.os_sp = os_sp;
|
||||||
this.os_lang = os_lang;
|
this.os_lang = os_lang;
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
|
@ -1118,7 +1136,7 @@ os_detect.getVersion = function(){
|
||||||
this.ua_version = ua_version;
|
this.ua_version = ua_version;
|
||||||
this.ua_version = ua_version;
|
this.ua_version = ua_version;
|
||||||
|
|
||||||
return { os_name:os_name, os_flavor:os_flavor, os_sp:os_sp, os_lang:os_lang, arch:arch, ua_name:ua_name, ua_version:ua_version };
|
return { os_name:os_name, os_vendor:os_vendor, os_flavor:os_flavor, os_device:os_device, os_sp:os_sp, os_lang:os_lang, arch:arch, ua_name:ua_name, ua_version:ua_version };
|
||||||
}; // function getVersion
|
}; // function getVersion
|
||||||
|
|
||||||
os_detect.searchVersion = function(needle, haystack) {
|
os_detect.searchVersion = function(needle, haystack) {
|
||||||
|
|
|
@ -29,7 +29,7 @@ class Metasploit4 < Msf::Exploit::Remote
|
||||||
:ua_minver => "8.0",
|
:ua_minver => "8.0",
|
||||||
:ua_maxver => "10.0",
|
:ua_maxver => "10.0",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:rank => NormalRanking
|
:rank => NormalRanking
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -85,6 +85,8 @@ class Metasploit4 < Msf::Exploit::Remote
|
||||||
os_name = 'Windows 7'
|
os_name = 'Windows 7'
|
||||||
when '6.2'
|
when '6.2'
|
||||||
os_name = 'Windows 8'
|
os_name = 'Windows 8'
|
||||||
|
when '6.3'
|
||||||
|
os_name = 'Windows 8.1'
|
||||||
end
|
end
|
||||||
|
|
||||||
targets.each do |t|
|
targets.each do |t|
|
||||||
|
|
|
@ -347,7 +347,8 @@ class Meterpreter < Rex::Post::Meterpreter::Client
|
||||||
self.db_record.save!
|
self.db_record.save!
|
||||||
end
|
end
|
||||||
|
|
||||||
framework.db.update_host_via_sysinfo(:host => self, :workspace => wspace, :info => sysinfo)
|
# XXX: This is obsolete given the Mdm::Host.normalize_os() support for host.os.session_fingerprint
|
||||||
|
# framework.db.update_host_via_sysinfo(:host => self, :workspace => wspace, :info => sysinfo)
|
||||||
|
|
||||||
if nhost
|
if nhost
|
||||||
framework.db.report_note({
|
framework.db.report_note({
|
||||||
|
|
|
@ -58,14 +58,17 @@ module HttpClients
|
||||||
|
|
||||||
UNKNOWN = "Unknown"
|
UNKNOWN = "Unknown"
|
||||||
end
|
end
|
||||||
|
|
||||||
module OperatingSystems
|
module OperatingSystems
|
||||||
LINUX = "Linux"
|
LINUX = "Linux"
|
||||||
MAC_OSX = "Mac OS X"
|
MAC_OSX = "Mac OS X"
|
||||||
WINDOWS = "Microsoft Windows"
|
WINDOWS = "Windows"
|
||||||
FREEBSD = "FreeBSD"
|
FREEBSD = "FreeBSD"
|
||||||
NETBSD = "NetBSD"
|
NETBSD = "NetBSD"
|
||||||
OPENBSD = "OpenBSD"
|
OPENBSD = "OpenBSD"
|
||||||
VMWARE = "VMware"
|
VMWARE = "VMware"
|
||||||
|
ANDROID = "Android"
|
||||||
|
APPLE_IOS = "iOS"
|
||||||
|
|
||||||
module VmwareVersions
|
module VmwareVersions
|
||||||
ESX = "ESX"
|
ESX = "ESX"
|
||||||
|
@ -73,17 +76,48 @@ module OperatingSystems
|
||||||
end
|
end
|
||||||
|
|
||||||
module WindowsVersions
|
module WindowsVersions
|
||||||
|
NINE5 = "95"
|
||||||
|
NINE8 = "98"
|
||||||
NT = "NT"
|
NT = "NT"
|
||||||
XP = "XP"
|
XP = "XP"
|
||||||
TWOK = "2000"
|
TWOK = "2000"
|
||||||
TWOK3 = "2003"
|
TWOK3 = "2003"
|
||||||
VISTA = "Vista"
|
VISTA = "Vista"
|
||||||
TWOK8 = "2008"
|
TWOK8 = "2008"
|
||||||
|
TWOK12 = "2012"
|
||||||
SEVEN = "7"
|
SEVEN = "7"
|
||||||
EIGHT = "8"
|
EIGHT = "8"
|
||||||
|
EIGHTONE = "8.1"
|
||||||
end
|
end
|
||||||
|
|
||||||
UNKNOWN = "Unknown"
|
UNKNOWN = "Unknown"
|
||||||
|
|
||||||
|
module Match
|
||||||
|
WINDOWS = /^(?:Microsoft )?Windows/
|
||||||
|
WINDOWS_95 = /^(?:Microsoft )?Windows 95/
|
||||||
|
WINDOWS_98 = /^(?:Microsoft )?Windows 98/
|
||||||
|
WINDOWS_ME = /^(?:Microsoft )?Windows ME/
|
||||||
|
WINDOWS_NT3 = /^(?:Microsoft )?Windows NT 3/
|
||||||
|
WINDOWS_NT4 = /^(?:Microsoft )?Windows NT 4/
|
||||||
|
WINDOWS_2000 = /^(?:Microsoft )?Windows 2000/
|
||||||
|
WINDOWS_XP = /^(?:Microsoft )?Windows XP/
|
||||||
|
WINDOWS_2003 = /^(?:Microsoft )?Windows 2003/
|
||||||
|
WINDOWS_VISTA = /^(?:Microsoft )?Windows Vista/
|
||||||
|
WINDOWS_2008 = /^(?:Microsoft )?Windows 2008/
|
||||||
|
WINDOWS_7 = /^(?:Microsoft )?Windows 7/
|
||||||
|
WINDOWS_2012 = /^(?:Microsoft )?Windows 2012/
|
||||||
|
WINDOWS_8 = /^(?:Microsoft )?Windows 8/
|
||||||
|
WINDOWS_81 = /^(?:Microsoft )?Windows 8\.1/
|
||||||
|
|
||||||
|
LINUX = /^Linux/i
|
||||||
|
MAC_OSX = /^(?:Apple )?Mac OS X/
|
||||||
|
FREEBSD = /^FreeBSD/
|
||||||
|
NETBSD = /^NetBSD/
|
||||||
|
OPENBSD = /^OpenBSD/
|
||||||
|
VMWARE = /^VMware/
|
||||||
|
ANDROID = /^(?:Google )?Android/
|
||||||
|
APPLE_IOS = /^(?:Apple )?iOS/
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -105,4 +139,3 @@ LICENSES =
|
||||||
ARTISTIC_LICENSE,
|
ARTISTIC_LICENSE,
|
||||||
UNKNOWN_LICENSE
|
UNKNOWN_LICENSE
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -304,8 +304,8 @@ class DBManager
|
||||||
#
|
#
|
||||||
# The opts parameter can contain:
|
# The opts parameter can contain:
|
||||||
# +:state+:: -- one of the Msf::HostState constants
|
# +:state+:: -- one of the Msf::HostState constants
|
||||||
# +:os_name+:: -- one of the Msf::OperatingSystems constants
|
# +:os_name+:: -- something like "Windows", "Linux", or "Mac OS X"
|
||||||
# +:os_flavor+:: -- something like "XP" or "Gentoo"
|
# +:os_flavor+:: -- something like "Enterprise", "Pro", or "Home"
|
||||||
# +:os_sp+:: -- something like "SP2"
|
# +:os_sp+:: -- something like "SP2"
|
||||||
# +:os_lang+:: -- something like "English", "French", or "en-US"
|
# +:os_lang+:: -- something like "English", "French", or "en-US"
|
||||||
# +:arch+:: -- one of the ARCH_* constants
|
# +:arch+:: -- one of the ARCH_* constants
|
||||||
|
@ -452,14 +452,11 @@ class DBManager
|
||||||
end
|
end
|
||||||
|
|
||||||
if info['OS'] =~ /^Windows\s*([^\(]+)\(([^\)]+)\)/i
|
if info['OS'] =~ /^Windows\s*([^\(]+)\(([^\)]+)\)/i
|
||||||
res[:os_name] = "Microsoft Windows"
|
res[:os_name] = "Windows #{$1.strip}"
|
||||||
res[:os_flavor] = $1.strip
|
|
||||||
build = $2.strip
|
build = $2.strip
|
||||||
|
|
||||||
if build =~ /Service Pack (\d+)/
|
if build =~ /Service Pack (\d+)/
|
||||||
res[:os_sp] = "SP" + $1
|
res[:os_sp] = "SP" + $1
|
||||||
else
|
|
||||||
res[:os_sp] = "SP0"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -3531,7 +3528,18 @@ class DBManager
|
||||||
:task => args[:task]
|
:task => args[:task]
|
||||||
}
|
}
|
||||||
|
|
||||||
conf[:os_name] = os if os
|
|
||||||
|
if os
|
||||||
|
report_note(
|
||||||
|
:workspace => wspace,
|
||||||
|
:task => args[:task],
|
||||||
|
:host => ip,
|
||||||
|
:type => 'host.os.spiceworks_fingerprint',
|
||||||
|
:data => {
|
||||||
|
:os => os.to_s.strip
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
info = []
|
info = []
|
||||||
info << "Serial Number: #{serialno}" unless (serialno.blank? or serialno == name)
|
info << "Serial Number: #{serialno}" unless (serialno.blank? or serialno == name)
|
||||||
|
|
|
@ -439,41 +439,86 @@ module Exploit::Remote::HttpClient
|
||||||
datastore['Proxies']
|
datastore['Proxies']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Lookup HTTP fingerprints from the database that match the current
|
||||||
|
# destination host and port. This method falls back to using the old
|
||||||
|
# service.info field to represent the HTTP Server header.
|
||||||
|
#
|
||||||
|
# @option opts [String] :uri ('/') An HTTP URI to request in order to generate
|
||||||
|
# a fingerprint
|
||||||
|
# @option opts [String] :method ('GET') An HTTP method to use in the fingerprint
|
||||||
|
# request
|
||||||
|
def lookup_http_fingerprints(opts={})
|
||||||
|
uri = opts[:uri] || '/'
|
||||||
|
method = opts[:method] || 'GET'
|
||||||
|
fprints = []
|
||||||
|
|
||||||
|
return fprints unless framework.db.active
|
||||||
|
|
||||||
|
::ActiveRecord::Base.connection_pool.with_connection {
|
||||||
|
wspace = datastore['WORKSPACE'] ?
|
||||||
|
framework.db.find_workspace(datastore['WORKSPACE']) : framework.db.workspace
|
||||||
|
|
||||||
|
service = framework.db.get_service(wspace, rhost, 'tcp', rport)
|
||||||
|
return fprints unless service
|
||||||
|
|
||||||
|
# Order by note_id descending so the first value is the most recent
|
||||||
|
service.notes.where(:ntype => 'http.fingerprint').order("notes.id DESC").each do |n|
|
||||||
|
next unless n.data && n.data.kind_of?(::Hash)
|
||||||
|
next unless n.data[:uri] == uri && n.data[:method] == method
|
||||||
|
# Append additional fingerprints to the results as found
|
||||||
|
fprints.unshift n.data.dup
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
fprints
|
||||||
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Record various things about an HTTP server that we can glean from the
|
# Record various things about an HTTP server that we can glean from the
|
||||||
# response to a single request. If this method is passed a response, it
|
# response to a single request. If this method is passed a response, it
|
||||||
# will use it directly, otherwise it will check the database for a previous
|
# will use it directly, otherwise it will check the database for a previous
|
||||||
# fingerprint. Failing that, it will make a request for /.
|
# fingerprint. Failing that, it will make a request for /.
|
||||||
#
|
#
|
||||||
# Options:
|
# Other options are passed directly to {#connect} if :response is not given
|
||||||
# :response an Http::Packet as returned from any of the send_* methods
|
|
||||||
#
|
#
|
||||||
# Other options are passed directly to +connect+ if :response is not given
|
# @option opts [Rex::Proto::Http::Packet] :response The return value from any
|
||||||
|
# of the send_* methods
|
||||||
|
# @option opts [String] :uri ('/') An HTTP URI to request in order to generate
|
||||||
|
# a fingerprint
|
||||||
|
# @option opts [String] :method ('GET') An HTTP method to use in the fingerprint
|
||||||
|
# request
|
||||||
|
# @option opts [Boolean] :full (false) Request the full HTTP fingerprint, not
|
||||||
|
# just the signature
|
||||||
#
|
#
|
||||||
|
# @return [String]
|
||||||
def http_fingerprint(opts={})
|
def http_fingerprint(opts={})
|
||||||
|
res = nil
|
||||||
|
uri = opts[:uri] || '/'
|
||||||
|
method = opts[:method] || 'GET'
|
||||||
|
|
||||||
if (opts[:response])
|
# Short-circuit the fingerprint lookup and HTTP request if a response has
|
||||||
|
# already been provided by the caller.
|
||||||
|
if opts[:response]
|
||||||
res = opts[:response]
|
res = opts[:response]
|
||||||
else
|
else
|
||||||
# Check to see if we already have a fingerprint before going out to
|
fprints = lookup_http_fingerprints(opts)
|
||||||
# the network.
|
|
||||||
if (framework.db.active)
|
|
||||||
::ActiveRecord::Base.connection_pool.with_connection {
|
|
||||||
wspace = framework.db.workspace
|
|
||||||
if datastore['WORKSPACE']
|
|
||||||
wspace = framework.db.find_workspace(datastore['WORKSPACE'])
|
|
||||||
end
|
|
||||||
|
|
||||||
s = framework.db.get_service(wspace, rhost, 'tcp', rport)
|
if fprints.length > 0
|
||||||
if (s and s.info)
|
|
||||||
return s.info
|
# Grab the most recent fingerprint available for this service, uri, and method
|
||||||
end
|
fprint = fprints.last
|
||||||
}
|
|
||||||
|
# Return the full HTTP fingerprint if requested by the caller
|
||||||
|
return fprint if opts[:full]
|
||||||
|
|
||||||
|
# Otherwise just return the signature string for compatibility
|
||||||
|
return fprint[:signature]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Go ahead and send a request to the target for fingerprinting
|
||||||
connect(opts)
|
connect(opts)
|
||||||
uri = opts[:uri] || '/'
|
|
||||||
method = opts[:method] || 'GET'
|
|
||||||
res = send_request_raw(
|
res = send_request_raw(
|
||||||
{
|
{
|
||||||
'uri' => uri,
|
'uri' => uri,
|
||||||
|
@ -481,11 +526,13 @@ module Exploit::Remote::HttpClient
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
# Bail if we don't have anything to fingerprint
|
# Bail if the request did not receive a readable response
|
||||||
return if not res
|
return if not res
|
||||||
|
|
||||||
# From here to the end simply does some pre-canned combining and custom matches
|
# This section handles a few simple cases of pattern matching and service
|
||||||
# to build a human-readable string to store in service.info
|
# classification. This logic should be deprecated in favor of Recog-based
|
||||||
|
# fingerprint databases, but has been left in place for backward compat.
|
||||||
|
|
||||||
extras = []
|
extras = []
|
||||||
|
|
||||||
if res.headers['Set-Cookie'] =~ /^vmware_soap_session/
|
if res.headers['Set-Cookie'] =~ /^vmware_soap_session/
|
||||||
|
@ -537,6 +584,11 @@ module Exploit::Remote::HttpClient
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# This HTTP response code tracking is used by a few modules and the MSP logic
|
||||||
|
# to identify and bruteforce certain types of servers. In the long run we
|
||||||
|
# should deprecate this and use the http.fingerprint fields instead.
|
||||||
|
#
|
||||||
case res.code
|
case res.code
|
||||||
when 301,302
|
when 301,302
|
||||||
extras << "#{res.code}-#{res.headers['Location']}"
|
extras << "#{res.code}-#{res.headers['Location']}"
|
||||||
|
@ -548,12 +600,51 @@ module Exploit::Remote::HttpClient
|
||||||
extras << "#{res.code}-#{res.message}"
|
extras << "#{res.code}-#{res.message}"
|
||||||
end
|
end
|
||||||
|
|
||||||
info = "#{res.headers['Server']}"
|
# Build a human-readable string to store in service.info and http.fingerprint[:signature]
|
||||||
|
info = res.headers['Server'].to_s.dup
|
||||||
info << " ( #{extras.join(", ")} )" if extras.length > 0
|
info << " ( #{extras.join(", ")} )" if extras.length > 0
|
||||||
|
|
||||||
|
# Create a new fingerprint structure to track this response
|
||||||
|
fprint = {
|
||||||
|
:uri => uri, :method => method,
|
||||||
|
:code => res.code.to_s, :message => res.message.to_s,
|
||||||
|
:signature => info
|
||||||
|
}
|
||||||
|
|
||||||
|
res.headers.each_pair do |k,v|
|
||||||
|
hname = k.to_s.downcase.gsub('-', '_').gsub(/[^a-z0-9_]+/, '')
|
||||||
|
next unless hname.length > 0
|
||||||
|
|
||||||
|
# Set-Cookie > :header_set_cookie => JSESSIONID=AAASD23423452
|
||||||
|
# Server > :header_server => Apache/1.3.37
|
||||||
|
# WWW-Authenticate > :header_www_authenticate => basic realm='www'
|
||||||
|
|
||||||
|
fprint["header_#{hname}".intern] = v
|
||||||
|
end
|
||||||
|
|
||||||
|
# Store the first 64k of the HTTP body as well
|
||||||
|
fprint[:content] = res.body.to_s[0,65535]
|
||||||
|
|
||||||
|
# Report a new http.fingerprint note
|
||||||
|
report_note(
|
||||||
|
:host => rhost,
|
||||||
|
:port => rport,
|
||||||
|
:proto => 'tcp',
|
||||||
|
:ntype => 'http.fingerprint',
|
||||||
|
:data => fprint,
|
||||||
|
# Limit reporting to one stored note per host/service combination
|
||||||
|
:update => :unique
|
||||||
|
)
|
||||||
|
|
||||||
# Report here even if info is empty since the fact that we didn't
|
# Report here even if info is empty since the fact that we didn't
|
||||||
# return early means we at least got a connection and the service is up
|
# return early means we at least got a connection and the service is up
|
||||||
report_web_site(:host => rhost, :port => rport, :ssl => ssl, :vhost => vhost, :info => info.dup)
|
report_web_site(:host => rhost, :port => rport, :ssl => ssl, :vhost => vhost, :info => info.dup)
|
||||||
info
|
|
||||||
|
# Return the full HTTP fingerprint if requested by the caller
|
||||||
|
return fprint if opts[:full]
|
||||||
|
|
||||||
|
# Otherwise just return the signature string for compatibility
|
||||||
|
fprint[:signature]
|
||||||
end
|
end
|
||||||
|
|
||||||
def make_cnonce
|
def make_cnonce
|
||||||
|
|
|
@ -258,18 +258,19 @@ module Exploit::Remote::HttpServer
|
||||||
# Report#report_client, and Msf::DBManager#report_host namely:
|
# Report#report_client, and Msf::DBManager#report_host namely:
|
||||||
# +:ua_name+:: a brief identifier for the client, e.g. "Firefox"
|
# +:ua_name+:: a brief identifier for the client, e.g. "Firefox"
|
||||||
# +:ua_ver+:: the version number of the client, e.g. "3.0.11"
|
# +:ua_ver+:: the version number of the client, e.g. "3.0.11"
|
||||||
# +:os_name+:: one of the Msf::OperatingSystems constants
|
# +:os_name+:: something like "Windows XP", "Windows 7", or "Linux"
|
||||||
# +:os_flavor+:: something like "XP" or "Gentoo"
|
# +:os_flavor+:: something like "Enterprise", "Pro", or "Home"
|
||||||
# +:os_lang+:: something like "English", "French", or "en-US"
|
# +:os_lang+:: something like "English", "French", or "en-US"
|
||||||
# +:arch+:: one of the ARCH_* constants
|
# +:arch+:: one of the ARCH_* constants
|
||||||
#
|
#
|
||||||
# Unknown values may be nil.
|
# Unknown values may be nil.
|
||||||
#
|
#
|
||||||
def fingerprint_user_agent(ua_str)
|
def fingerprint_user_agent(ua_str)
|
||||||
|
|
||||||
fp = { :ua_string => ua_str }
|
fp = { :ua_string => ua_str }
|
||||||
|
|
||||||
# always check for IE last because everybody tries to
|
# Guess the browser type based on the user agent
|
||||||
# look like IE
|
# Check for IE last since its often impersonated
|
||||||
case (ua_str.downcase)
|
case (ua_str.downcase)
|
||||||
# Chrome tries to look like Safari, so check it first
|
# Chrome tries to look like Safari, so check it first
|
||||||
when /chrome\/(\d+(:?\.\d+)*)/
|
when /chrome\/(\d+(:?\.\d+)*)/
|
||||||
|
@ -292,58 +293,70 @@ module Exploit::Remote::HttpServer
|
||||||
else
|
else
|
||||||
fp[:ua_name] = HttpClients::UNKNOWN
|
fp[:ua_name] = HttpClients::UNKNOWN
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Guess the language
|
||||||
case (ua_str.downcase)
|
case (ua_str.downcase)
|
||||||
when /(en-us|en-gb)/
|
when /(en-us|en-gb)/
|
||||||
fp[:os_lang] = $1
|
fp[:os_lang] = $1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Guess the general OS type
|
||||||
case (ua_str.downcase)
|
case (ua_str.downcase)
|
||||||
when /windows/
|
when /windows|win32/
|
||||||
fp[:os_name] = OperatingSystems::WINDOWS
|
fp[:os_name] = OperatingSystems::WINDOWS
|
||||||
fp[:arch] = ARCH_X86
|
fp[:arch] = ARCH_X86
|
||||||
when /linux/
|
when /linux/
|
||||||
fp[:os_name] = OperatingSystems::LINUX
|
fp[:os_name] = OperatingSystems::LINUX
|
||||||
when /iphone/
|
when /iphone|ipad/
|
||||||
fp[:os_name] = OperatingSystems::MAC_OSX
|
fp[:os_name] = OperatingSystems::APPLE_IOS
|
||||||
fp[:arch] = 'armle'
|
fp[:arch] = 'armle'
|
||||||
when /mac os x/
|
when /mac os x/
|
||||||
fp[:os_name] = OperatingSystems::MAC_OSX
|
fp[:os_name] = OperatingSystems::MAC_OSX
|
||||||
else
|
else
|
||||||
fp[:os_name] = OperatingSystems::UNKNOWN
|
fp[:os_name] = OperatingSystems::UNKNOWN
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Determine the specific OS variant
|
||||||
|
|
||||||
|
# Note that we assume windows variants are the
|
||||||
|
# client version and mismatch server editions.
|
||||||
|
|
||||||
case (ua_str.downcase)
|
case (ua_str.downcase)
|
||||||
when /windows 95/
|
when /windows 95/
|
||||||
fp[:os_flavor] = '95'
|
fp[:os_name] = 'Windows 95'
|
||||||
when /windows 98/
|
when /windows 98/
|
||||||
fp[:os_flavor] = '98'
|
fp[:os_name] = 'Windows 98'
|
||||||
when /windows nt 4/
|
when /windows nt 4/
|
||||||
fp[:os_flavor] = 'NT'
|
fp[:os_name] = 'Windows NT'
|
||||||
when /windows nt 5.0/
|
when /windows nt 5.0/
|
||||||
fp[:os_flavor] = '2000'
|
fp[:os_name] = 'Windows 2000'
|
||||||
when /windows nt 5.1/
|
when /windows nt 5.1/
|
||||||
fp[:os_flavor] = 'XP'
|
fp[:os_name] = 'Windows XP'
|
||||||
when /windows nt 5.2/
|
when /windows nt 5.2/
|
||||||
fp[:os_flavor] = '2003'
|
fp[:os_name] = 'Windows 2003'
|
||||||
when /windows nt 6.0/
|
when /windows nt 6.0/
|
||||||
fp[:os_flavor] = 'Vista'
|
fp[:os_name] = 'Windows Vista'
|
||||||
when /windows nt 6.1/
|
when /windows nt 6.1/
|
||||||
fp[:os_flavor] = '7'
|
fp[:os_name] = 'Windows 7'
|
||||||
when /windows nt 6.2/
|
when /windows nt 6.2/
|
||||||
fp[:os_flavor] = '8'
|
fp[:os_name] = 'Windows 8'
|
||||||
|
when /windows nt 6.3/
|
||||||
|
fp[:os_name] = 'Windows 8.1'
|
||||||
when /gentoo/
|
when /gentoo/
|
||||||
fp[:os_flavor] = 'Gentoo'
|
fp[:os_vendor] = 'Gentoo'
|
||||||
when /debian/
|
when /debian/
|
||||||
fp[:os_flavor] = 'Debian'
|
fp[:os_vendor] = 'Debian'
|
||||||
when /ubuntu/
|
when /ubuntu/
|
||||||
fp[:os_flavor] = 'Ubuntu'
|
fp[:os_vendor] = 'Ubuntu'
|
||||||
when /fedora/
|
when /fedora/
|
||||||
fp[:os_flavor] = 'Fedora'
|
fp[:os_vendor] = 'Fedora'
|
||||||
when /red hat|rhel/
|
when /red hat|rhel/
|
||||||
fp[:os_flavor] = 'RHEL'
|
fp[:os_vendor] = 'RHEL'
|
||||||
when /android/
|
when /android/
|
||||||
fp[:os_flavor] = 'Android'
|
fp[:os_name] = OperatingSystems::ANDROID
|
||||||
else
|
|
||||||
fp[:os_flavor] = ''
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Guess the architecture
|
||||||
case (ua_str.downcase)
|
case (ua_str.downcase)
|
||||||
when /ppc/
|
when /ppc/
|
||||||
fp[:arch] = ARCH_PPC
|
fp[:arch] = ARCH_PPC
|
||||||
|
|
|
@ -47,8 +47,11 @@ module Msf
|
||||||
:source, # Either 'script' or 'headers'
|
:source, # Either 'script' or 'headers'
|
||||||
:ua_name, # Example: MSIE
|
:ua_name, # Example: MSIE
|
||||||
:ua_ver, # Example: 8.0, 9.0
|
:ua_ver, # Example: 8.0, 9.0
|
||||||
:os_name, # Example: Microsoft Windows
|
:os_name, # Example: Windows 7, Linux
|
||||||
:os_flavor, # Example: XP, 7
|
:os_flavor, # Example: Home, Enterprise
|
||||||
|
:os_device, # Example: iPad, iPhone, etc
|
||||||
|
:os_vendor, # Example: Microsoft, Ubuntu, Apple, etc
|
||||||
|
:os_sp, # Example: SP2
|
||||||
:language, # Example: en-us
|
:language, # Example: en-us
|
||||||
:arch, # Example: x86
|
:arch, # Example: x86
|
||||||
:proxy, # 'true' or 'false'
|
:proxy, # 'true' or 'false'
|
||||||
|
@ -211,8 +214,8 @@ module Msf
|
||||||
# Returns the target profile based on the tag. Each profile has the following structure:
|
# Returns the target profile based on the tag. Each profile has the following structure:
|
||||||
# 'cookie_name' =>
|
# 'cookie_name' =>
|
||||||
# {
|
# {
|
||||||
# :os_name => 'Windows',
|
# :os_name => 'Windows 7',
|
||||||
# :os_flavor => 'something'
|
# :os_flavor => 'Enterprise',
|
||||||
# ...... etc ......
|
# ...... etc ......
|
||||||
# }
|
# }
|
||||||
# A profile should at least have info about the following:
|
# A profile should at least have info about the following:
|
||||||
|
@ -220,8 +223,8 @@ module Msf
|
||||||
# should be more accurate in some scenarios like browser compatibility mode
|
# should be more accurate in some scenarios like browser compatibility mode
|
||||||
# :ua_name : The name of the browser
|
# :ua_name : The name of the browser
|
||||||
# :ua_ver : The version of the browser
|
# :ua_ver : The version of the browser
|
||||||
# :os_name : The name of the OS
|
# :os_name : The name of the OS ("Windows XP")
|
||||||
# :os_flavor : The flavor of the OS (example: XP)
|
# :os_flavor : The edition of the OS ("Home")
|
||||||
# :language : The system's language
|
# :language : The system's language
|
||||||
# :arch : The system's arch
|
# :arch : The system's arch
|
||||||
# :proxy : Indicates whether proxy is used
|
# :proxy : Indicates whether proxy is used
|
||||||
|
@ -365,7 +368,7 @@ module Msf
|
||||||
<%= js_os_detect %>
|
<%= js_os_detect %>
|
||||||
<%= js_ajax_post %>
|
<%= js_ajax_post %>
|
||||||
<%= js_misc_addons_detect %>
|
<%= js_misc_addons_detect %>
|
||||||
<%= js_ie_addons_detect if os == OperatingSystems::WINDOWS and client == HttpClients::IE %>
|
<%= js_ie_addons_detect if os.match(OperatingSystems::Match::WINDOWS) and client == HttpClients::IE %>
|
||||||
|
|
||||||
function objToQuery(obj) {
|
function objToQuery(obj) {
|
||||||
var q = [];
|
var q = [];
|
||||||
|
@ -381,6 +384,8 @@ module Msf
|
||||||
var d = {
|
var d = {
|
||||||
"os_name" : osInfo.os_name,
|
"os_name" : osInfo.os_name,
|
||||||
"os_flavor" : osInfo.os_flavor,
|
"os_flavor" : osInfo.os_flavor,
|
||||||
|
"os_vendor" : osInfo.os_vendor,
|
||||||
|
"os_device" : osInfo.os_device,
|
||||||
"ua_name" : osInfo.ua_name,
|
"ua_name" : osInfo.ua_name,
|
||||||
"ua_ver" : osInfo.ua_version,
|
"ua_ver" : osInfo.ua_version,
|
||||||
"arch" : osInfo.arch,
|
"arch" : osInfo.arch,
|
||||||
|
@ -390,7 +395,7 @@ module Msf
|
||||||
"vuln_test" : <%= js_vuln_test %>
|
"vuln_test" : <%= js_vuln_test %>
|
||||||
};
|
};
|
||||||
|
|
||||||
<% if os == OperatingSystems::WINDOWS and client == HttpClients::IE %>
|
<% if os.match(OperatingSystems::Match::WINDOWS) and client == HttpClients::IE %>
|
||||||
d['office'] = ie_addons_detect.getMsOfficeVersion();
|
d['office'] = ie_addons_detect.getMsOfficeVersion();
|
||||||
d['mshtml_build'] = ScriptEngineBuildVersion().toString();
|
d['mshtml_build'] = ScriptEngineBuildVersion().toString();
|
||||||
<%
|
<%
|
||||||
|
@ -558,10 +563,10 @@ module Msf
|
||||||
arch = browser_info[:arch]
|
arch = browser_info[:arch]
|
||||||
platform = browser_info[:os_name]
|
platform = browser_info[:os_name]
|
||||||
|
|
||||||
# Fix names for consisntecy so our API can find the right one
|
# Fix names for consistency so our API can find the right one
|
||||||
# Originally defined in lib/msf/core/constants.rb
|
# Originally defined in lib/msf/core/constants.rb
|
||||||
platform = platform.gsub(/^Mac OS X$/, 'OSX')
|
platform = platform.gsub(/^Mac OS X$/, 'OSX')
|
||||||
platform = platform.gsub(/^Microsoft Windows$/, 'Windows')
|
platform = platform.gsub(/^Windows.*$/, 'Windows')
|
||||||
|
|
||||||
regenerate_payload(cli, platform, arch).encoded
|
regenerate_payload(cli, platform, arch).encoded
|
||||||
end
|
end
|
||||||
|
|
|
@ -329,93 +329,53 @@ module Exploit::Remote::SMB
|
||||||
fprint = {}
|
fprint = {}
|
||||||
|
|
||||||
# Connect to the server if needed
|
# Connect to the server if needed
|
||||||
if(not self.simple)
|
if not self.simple
|
||||||
connect()
|
connect()
|
||||||
smb_login()
|
smb_login()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fprint['native_os'] = smb_peer_os()
|
||||||
|
fprint['native_lm'] = smb_peer_lm()
|
||||||
|
|
||||||
|
# Leverage Recog for SMB native OS fingerprinting
|
||||||
|
fp_match = Recog::Nizer.match('smb.native_os', fprint['native_os']) || { }
|
||||||
|
|
||||||
os = 'Unknown'
|
os = fp_match['os.product'] || 'Unknown'
|
||||||
sp = ''
|
sp = fp_match['os.version'] || ''
|
||||||
|
|
||||||
case smb_peer_os()
|
# Metasploit prefers 'Windows 2003' vs 'Windows Server 2003'
|
||||||
when 'Windows NT 4.0'
|
if os =~ /^Windows Server/
|
||||||
os = 'Windows NT 4.0'
|
os = os.sub(/^Windows Server/, 'Windows')
|
||||||
|
|
||||||
when 'Windows 5.0'
|
|
||||||
os = 'Windows 2000'
|
|
||||||
|
|
||||||
when 'Windows 5.1'
|
|
||||||
os = 'Windows XP'
|
|
||||||
|
|
||||||
when /Windows XP (\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows XP'
|
|
||||||
sp = 'Service Pack ' + $2
|
|
||||||
|
|
||||||
when /Windows Server 2003 (\d+)$/
|
|
||||||
os = 'Windows 2003'
|
|
||||||
sp = 'No Service Pack'
|
|
||||||
|
|
||||||
when /Windows Server 2003 (\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows 2003'
|
|
||||||
sp = 'Service Pack ' + $2
|
|
||||||
|
|
||||||
when /Windows Server 2003 R2 (\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows 2003 R2'
|
|
||||||
sp = 'Service Pack ' + $2
|
|
||||||
|
|
||||||
when /Windows Vista \(TM\) (\w+|\w+ \w+) (\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows Vista ' + $1
|
|
||||||
sp = 'Service Pack ' + $3
|
|
||||||
|
|
||||||
when /Windows Vista \(TM\) (\w+|\w+ \w+) (\d+)/
|
|
||||||
os = 'Windows Vista ' + $1
|
|
||||||
sp = '(Build ' + $2 + ')'
|
|
||||||
|
|
||||||
when /Windows Server \(R\) 2008 (([\-\w]+ ){1,4})(\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows 2008 ' + $1.strip
|
|
||||||
sp = 'Service Pack ' + $4
|
|
||||||
|
|
||||||
when /Windows Server \(R\) 2008 (([\-\w]+ ){1,4})(\d+)/
|
|
||||||
os = 'Windows 2008 ' + $1.strip
|
|
||||||
sp = '(Build ' + $3 + ')'
|
|
||||||
|
|
||||||
when /Windows \(R\) Storage Server 2008 (([\-\w]+ ){1,4})(\d+) Service Pack (\d+)/
|
|
||||||
os = 'Windows 2008 Storage Server ' + $1.strip
|
|
||||||
sp = 'Service Pack ' + $4
|
|
||||||
|
|
||||||
when /Windows \(R\) Storage Server 2008 (([\-\w]+ ){1,4})(\d+)/
|
|
||||||
os = 'Windows 2008 Storage Server ' + $1.strip
|
|
||||||
sp = '(Build ' + $3 + ')'
|
|
||||||
|
|
||||||
when /Windows 7 (([\-\w]+ ){1,4})(\d+)/
|
|
||||||
os = 'Windows 7 ' + $1.strip
|
|
||||||
sp = '(Build ' + $3 + ')'
|
|
||||||
|
|
||||||
when /^(Windows.*) Service Pack (\d+)/
|
|
||||||
os = $1.strip
|
|
||||||
sp = 'Service Pack ' + $2
|
|
||||||
|
|
||||||
when /^(Windows.*) (\d+)/
|
|
||||||
os = $1.strip
|
|
||||||
sp = '(Build ' + $2 + ')'
|
|
||||||
|
|
||||||
when 'VxWorks'
|
|
||||||
os = 'VxWorks'
|
|
||||||
sp = smb_peer_lm()
|
|
||||||
|
|
||||||
when 'Unix'
|
|
||||||
os = 'Unix'
|
|
||||||
sv = smb_peer_lm()
|
|
||||||
case sv
|
|
||||||
when /Samba\s+(.*)/i
|
|
||||||
sp = 'Samba ' + $1
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if fp_match['os.edition']
|
||||||
|
fprint['edition'] = fp_match['os.edition']
|
||||||
|
end
|
||||||
|
|
||||||
if (os == 'Windows XP' and sp.length == 0)
|
if fp_match['os.build']
|
||||||
|
fprint['build'] = fp_match['os.build']
|
||||||
|
end
|
||||||
|
|
||||||
|
if sp == ''
|
||||||
|
sp = smb_fingerprint_windows_sp(os)
|
||||||
|
end
|
||||||
|
|
||||||
|
lang = smb_fingerprint_windows_lang
|
||||||
|
|
||||||
|
fprint['os'] = os
|
||||||
|
fprint['sp'] = sp
|
||||||
|
fprint['lang'] = lang
|
||||||
|
|
||||||
|
fprint
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Determine the service pack level of a Windows system via SMB probes
|
||||||
|
#
|
||||||
|
def smb_fingerprint_windows_sp(os)
|
||||||
|
sp = ''
|
||||||
|
|
||||||
|
if (os == 'Windows XP')
|
||||||
# SRVSVC was blocked in SP2
|
# SRVSVC was blocked in SP2
|
||||||
begin
|
begin
|
||||||
smb_create("\\SRVSVC")
|
smb_create("\\SRVSVC")
|
||||||
|
@ -510,6 +470,14 @@ module Exploit::Remote::SMB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sp
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Determine the native language pack of a Windows system via SMB probes
|
||||||
|
#
|
||||||
|
def smb_fingerprint_windows_lang
|
||||||
|
|
||||||
#
|
#
|
||||||
# Remote language detection via Print Providers
|
# Remote language detection via Print Providers
|
||||||
|
@ -663,12 +631,7 @@ module Exploit::Remote::SMB
|
||||||
raise $!
|
raise $!
|
||||||
rescue ::Rex::Proto::SMB::Exceptions::ErrorCode
|
rescue ::Rex::Proto::SMB::Exceptions::ErrorCode
|
||||||
end
|
end
|
||||||
|
lang
|
||||||
fprint['os'] = os
|
|
||||||
fprint['sp'] = sp
|
|
||||||
fprint['lang'] = lang
|
|
||||||
|
|
||||||
fprint
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# @return [Rex::Proto::SMB::SimpleClient]
|
# @return [Rex::Proto::SMB::SimpleClient]
|
||||||
|
|
|
@ -15,10 +15,12 @@ class Detect
|
||||||
# Provides several javascript functions for determining the OS and browser versions of a client.
|
# Provides several javascript functions for determining the OS and browser versions of a client.
|
||||||
#
|
#
|
||||||
# getVersion(): returns an object with the following properties
|
# getVersion(): returns an object with the following properties
|
||||||
# os_name - OS name, one of the Msf::OperatingSystems constants
|
# os_name - OS name such as "Windows 8", "Linux", "Mac OS X"
|
||||||
# os_flavor - OS flavor as a string (e.g.: "XP", "2000")
|
# os_flavor - OS flavor as a string such as "Home", "Enterprise", etc
|
||||||
# os_sp - OS service pack (e.g.: "SP2", will be empty on non-Windows)
|
# os_sp - OS service pack (e.g.: "SP2", will be empty on non-Windows)
|
||||||
# os_lang - OS language (e.g.: "en-us")
|
# os_lang - OS language (e.g.: "en-us")
|
||||||
|
# os_vendor - A company or organization name such as Microsoft, Ubuntu, Apple, etc
|
||||||
|
# os_device - A specific piece of hardware such as iPad, iPhone, etc
|
||||||
# ua_name - Client name, one of the Msf::HttpClients constants
|
# ua_name - Client name, one of the Msf::HttpClients constants
|
||||||
# ua_version - Client version as a string (e.g.: "3.5.1", "6.0;SP2")
|
# ua_version - Client version as a string (e.g.: "3.5.1", "6.0;SP2")
|
||||||
# arch - Architecture, one of the ARCH_* constants
|
# arch - Architecture, one of the ARCH_* constants
|
||||||
|
|
|
@ -504,7 +504,7 @@ module Rex
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
note[:data][:vendor] = @report_data[:os]["os_vendor"] if @report_data[:os]["os_vendor"]
|
note[:data][:vendor] = @report_data[:os]["os_vendor"] if @report_data[:os]["os_vendor"]
|
||||||
note[:data][:product] = @report_data[:os]["os_product"] if @report_data[:os]["os_prduct"]
|
note[:data][:product] = @report_data[:os]["os_product"] if @report_data[:os]["os_product"]
|
||||||
note[:data][:version] = @report_data[:os]["os_version"] if @report_data[:os]["os_version"]
|
note[:data][:version] = @report_data[:os]["os_version"] if @report_data[:os]["os_version"]
|
||||||
note[:data][:arch] = @report_data[:os]["os_arch"] if @report_data[:os]["os_arch"]
|
note[:data][:arch] = @report_data[:os]["os_arch"] if @report_data[:os]["os_arch"]
|
||||||
db_report(:note, note)
|
db_report(:note, note)
|
||||||
|
|
|
@ -36,7 +36,7 @@ class Handler::Proc < Handler
|
||||||
def on_request(cli, req)
|
def on_request(cli, req)
|
||||||
begin
|
begin
|
||||||
procedure.call(cli, req)
|
procedure.call(cli, req)
|
||||||
rescue Errno::EPIPE
|
rescue Errno::EPIPE, ::Errno::ECONNRESET, ::Errno::ENOTCONN, ::Errno::ECONNABORTED
|
||||||
elog("Proc::on_request: Client closed connection prematurely", LogSource)
|
elog("Proc::on_request: Client closed connection prematurely", LogSource)
|
||||||
rescue
|
rescue
|
||||||
elog("Proc::on_request: #{$!.class}: #{$!}\n\n#{$@.join("\n")}", LogSource)
|
elog("Proc::on_request: #{$!.class}: #{$!}\n\n#{$@.join("\n")}", LogSource)
|
||||||
|
|
|
@ -82,4 +82,6 @@ Gem::Specification.new do |spec|
|
||||||
spec.add_runtime_dependency 'sqlite3'
|
spec.add_runtime_dependency 'sqlite3'
|
||||||
# required for Time::TZInfo in ActiveSupport
|
# required for Time::TZInfo in ActiveSupport
|
||||||
spec.add_runtime_dependency 'tzinfo'
|
spec.add_runtime_dependency 'tzinfo'
|
||||||
|
# required for OS fingerprinting
|
||||||
|
spec.add_runtime_dependency 'recog', '~> 1.0'
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,13 +33,12 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
def run_host(ip)
|
def run_host(ip)
|
||||||
begin
|
begin
|
||||||
connect
|
connect
|
||||||
|
res = send_request_raw({ 'uri' => '/', 'method' => 'GET' })
|
||||||
res = send_request_raw({'uri' => '/', 'method' => 'GET' })
|
|
||||||
return if not res
|
|
||||||
|
|
||||||
fp = http_fingerprint(:response => res)
|
fp = http_fingerprint(:response => res)
|
||||||
print_status("#{ip}:#{rport} #{fp}") if fp
|
print_status("#{ip}:#{rport} #{fp}") if fp
|
||||||
rescue ::Timeout::Error, ::Errno::EPIPE
|
rescue ::Timeout::Error, ::Errno::EPIPE
|
||||||
|
ensure
|
||||||
|
disconnect
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -164,52 +164,37 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
infos[td] = tds[idx+1].get_text.to_s.strip if infos.has_key?(td)
|
infos[td] = tds[idx+1].get_text.to_s.strip if infos.has_key?(td)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fprint = {}
|
||||||
|
jinfo = {}
|
||||||
|
|
||||||
# print out the goodies
|
# print out the goodies
|
||||||
infos.each do |k, v|
|
infos.each do |k, v|
|
||||||
next if v.nil?
|
next if v.nil?
|
||||||
|
v = v.strip
|
||||||
|
next if v.length == 0
|
||||||
|
|
||||||
|
jinfo[k.gsub(/\s+/, '_')] = v
|
||||||
|
|
||||||
case k
|
case k
|
||||||
when "os.name"
|
when "os.name"
|
||||||
vprint_line(" OS: #{v}")
|
vprint_line(" OS: #{v}")
|
||||||
report_host({:host => rhost, :os_name => v})
|
fprint['os.product'] = v
|
||||||
when "os.version"
|
when "os.version"
|
||||||
vprint_line(" OS Version: #{v}")
|
vprint_line(" OS Version: #{v}")
|
||||||
report_host({:host => rhost, :os_flavor => v})
|
fprint['os.version'] = v
|
||||||
when "sun.os.patch.level"
|
when "sun.os.patch.level"
|
||||||
vprint_line(" Patch Level: #{v}")
|
vprint_line(" Patch Level: #{v}")
|
||||||
when "os.arch"
|
when "os.arch"
|
||||||
vprint_line(" Arch: #{v}")
|
vprint_line(" Arch: #{v}")
|
||||||
report_note({
|
fprint['os.arch'] = v
|
||||||
:type => "system_arch",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Arch: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "user.name"
|
when "user.name"
|
||||||
vprint_line(" User: #{v}")
|
vprint_line(" User: #{v}")
|
||||||
report_note({
|
|
||||||
:type => "jenkins_user",
|
|
||||||
:host => rhost,
|
|
||||||
:port => rport,
|
|
||||||
:proto => 'tcp',
|
|
||||||
:data => "User: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "USERDOMAIN"
|
when "USERDOMAIN"
|
||||||
vprint_line(" Domain: #{v}")
|
vprint_line(" Domain: #{v}")
|
||||||
report_note({
|
fprint['host.domain'] = v
|
||||||
:type => "system_domain",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Domain: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "COMPUTERNAME"
|
when "COMPUTERNAME"
|
||||||
vprint_line(" Computer Name: #{v}")
|
vprint_line(" Computer Name: #{v}")
|
||||||
report_note({
|
fprint['host.name'] = v
|
||||||
:type => "system_computer",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Computer Name: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "SystemDrive"
|
when "SystemDrive"
|
||||||
vprint_line(" System Drive: #{v}")
|
vprint_line(" System Drive: #{v}")
|
||||||
when "SHELL"
|
when "SHELL"
|
||||||
|
@ -222,30 +207,20 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
vprint_line(" Home Directory: #{v}")
|
vprint_line(" Home Directory: #{v}")
|
||||||
when "user.language"
|
when "user.language"
|
||||||
vprint_line(" Language: #{v}")
|
vprint_line(" Language: #{v}")
|
||||||
report_note({
|
fprint['os.language'] = v
|
||||||
:type => "system_lang",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Language: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "user.country"
|
when "user.country"
|
||||||
vprint_line(" Country: #{v}")
|
vprint_line(" Country: #{v}")
|
||||||
report_note({
|
|
||||||
:type => "system_country",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Country: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
when "user.timezone"
|
when "user.timezone"
|
||||||
vprint_line(" Timezone: #{v}")
|
vprint_line(" Timezone: #{v}")
|
||||||
report_note({
|
|
||||||
:type => "system_timezone",
|
|
||||||
:host => rhost,
|
|
||||||
:data => "Timezone: #{v}",
|
|
||||||
:update => :unique_data
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Report a fingerprint.match for OS fingerprinting support, tied to this service
|
||||||
|
report_note(:host => rhost, :port => rport, :proto => 'tcp', :ntype => 'fingerprint.match', :data => fprint)
|
||||||
|
|
||||||
|
# Report a jenkins information note for future analysis, tied to this service
|
||||||
|
report_note(:host => rhost, :port => rport, :proto => 'tcp', :ntype => 'jenkins.info', :data => jinfo)
|
||||||
|
|
||||||
vprint_line('')
|
vprint_line('')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
|
|
||||||
require 'msf/core'
|
require 'msf/core'
|
||||||
|
require 'recog'
|
||||||
|
|
||||||
class Metasploit3 < Msf::Auxiliary
|
class Metasploit3 < Msf::Auxiliary
|
||||||
|
|
||||||
|
@ -34,90 +34,120 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
)
|
)
|
||||||
|
|
||||||
deregister_options('RPORT')
|
deregister_options('RPORT')
|
||||||
|
deregister_options('SMBDIRECT')
|
||||||
|
@smb_port = 445
|
||||||
end
|
end
|
||||||
|
|
||||||
def rport
|
def rport
|
||||||
@rport || datastore['RPORT']
|
@smb_port || datastore['RPORT']
|
||||||
end
|
end
|
||||||
|
|
||||||
def smb_direct
|
def smb_direct
|
||||||
@smbdirect || datastore['SMBDirect']
|
(@smb_port == 445)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Fingerprint a single host
|
# Fingerprint a single host
|
||||||
|
#
|
||||||
def run_host(ip)
|
def run_host(ip)
|
||||||
[[445, true], [139, false]].each do |info|
|
smb_ports = [445, 139]
|
||||||
|
smb_ports.each do |pnum|
|
||||||
@rport = info[0]
|
@smb_port = pnum
|
||||||
@smbdirect = info[1]
|
self.simple = nil
|
||||||
self.simple = nil
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
res = smb_fingerprint()
|
res = smb_fingerprint()
|
||||||
|
|
||||||
if(res['os'] and res['os'] != 'Unknown')
|
#
|
||||||
|
# Create the note hash for smb.fingerprint
|
||||||
|
#
|
||||||
|
conf = {
|
||||||
|
:native_os => res['native_os'],
|
||||||
|
:native_lm => res['native_lm']
|
||||||
|
}
|
||||||
|
|
||||||
case res['os']
|
if res['os'] and res['os'] != 'Unknown'
|
||||||
when /Windows/
|
|
||||||
os = OperatingSystems::WINDOWS
|
#
|
||||||
else
|
# Create the note hash for fingerprint.match
|
||||||
case res['sp']
|
#
|
||||||
when /apple/
|
match_conf = { }
|
||||||
os = OperatingSystems::MAC_OSX
|
|
||||||
res['os'] = 'Mac OS X'
|
#
|
||||||
when /ubuntu/
|
# Create a descriptive string for service.info
|
||||||
os = OperatingSystems::LINUX
|
#
|
||||||
res['os'] = 'Ubuntu'
|
desc = res['os'].dup
|
||||||
when /debian/
|
|
||||||
os = OperatingSystems::LINUX
|
if res['edition'].to_s.length > 0
|
||||||
res['os'] = 'Debian'
|
desc << " #{res['edition']}"
|
||||||
else
|
conf[:os_edition] = res['edition']
|
||||||
os = OperatingSystems::UNKNOWN
|
match_conf['os.edition'] = res['edition']
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
desc = "#{res['os']} #{res['sp']} (language: #{res['lang']})"
|
if res['sp'].to_s.length > 0
|
||||||
if(simple.client.default_name)
|
desc << " #{res['sp'].downcase.gsub('service pack ', 'SP')}"
|
||||||
|
conf[:os_sp] = res['sp']
|
||||||
|
match_conf['os.version'] = res['sp']
|
||||||
|
end
|
||||||
|
|
||||||
|
if res['build'].to_s.length > 0
|
||||||
|
desc << " (build:#{res['build']})"
|
||||||
|
conf[:os_build] = res['build']
|
||||||
|
match_conf['os.build'] = res['build']
|
||||||
|
end
|
||||||
|
|
||||||
|
if res['lang'].to_s.length > 0 and res['lang'] != 'Unknown'
|
||||||
|
desc << " (language:#{res['lang']})"
|
||||||
|
conf[:os_lang] = res['lang']
|
||||||
|
match_conf['os.language'] = conf[:os_lang]
|
||||||
|
end
|
||||||
|
|
||||||
|
if simple.client.default_name
|
||||||
desc << " (name:#{simple.client.default_name})"
|
desc << " (name:#{simple.client.default_name})"
|
||||||
|
conf[:SMBName] = simple.client.default_name
|
||||||
|
match_conf['host.name'] = conf[:SMBName]
|
||||||
end
|
end
|
||||||
|
|
||||||
if(simple.client.default_domain)
|
if simple.client.default_domain
|
||||||
desc << " (domain:#{simple.client.default_domain})"
|
desc << " (domain:#{simple.client.default_domain})"
|
||||||
|
conf[:SMBDomain] = simple.client.default_domain
|
||||||
|
match_conf['host.domain'] = conf[:SMBDomain]
|
||||||
end
|
end
|
||||||
|
|
||||||
print_status("#{rhost}:#{rport} is running #{desc}")
|
print_status("#{rhost}:#{rport} is running #{desc}")
|
||||||
|
|
||||||
|
# Report the service with a friendly banner
|
||||||
report_service(
|
report_service(
|
||||||
:host => ip,
|
:host => ip,
|
||||||
:port => info[0],
|
:port => rport,
|
||||||
:proto => 'tcp',
|
:proto => 'tcp',
|
||||||
:name => 'smb',
|
:name => 'smb',
|
||||||
:info => desc
|
:info => desc
|
||||||
)
|
)
|
||||||
|
|
||||||
conf = {
|
# Report a fingerprint.match hash for name, domain, and language
|
||||||
:os_flavor => res['os'],
|
# Ignore OS fields, as those are handled via smb.fingerprint
|
||||||
:os_name => os,
|
|
||||||
}
|
|
||||||
|
|
||||||
conf[:os_sp] = res['sp'] if res['sp']
|
|
||||||
conf[:os_lang] = res['lang'] if res['os'] =~ /Windows/
|
|
||||||
conf[:SMBName] = simple.client.default_name if simple.client.default_name
|
|
||||||
conf[:SMBDomain] = simple.client.default_domain if simple.client.default_domain
|
|
||||||
|
|
||||||
report_note(
|
report_note(
|
||||||
:host => ip,
|
:host => ip,
|
||||||
:port => info[0],
|
:port => rport,
|
||||||
:proto => 'tcp',
|
:proto => 'tcp',
|
||||||
:ntype => 'smb.fingerprint',
|
:ntype => 'fingerprint.match',
|
||||||
:data => conf
|
:data => match_conf
|
||||||
)
|
)
|
||||||
|
|
||||||
else
|
else
|
||||||
report_service(:host => ip, :port => info[0], :name => 'smb')
|
desc = "#{res['native_os']} (#{res['native_lm']})"
|
||||||
print_status("#{rhost} could not be identified")
|
report_service(:host => ip, :port => rport, :name => 'smb', :info => desc)
|
||||||
|
print_status("#{rhost}:#{rport} could not be identified: #{desc}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Report a smb.fingerprint hash of attributes for OS fingerprinting
|
||||||
|
report_note(
|
||||||
|
:host => ip,
|
||||||
|
:port => rport,
|
||||||
|
:proto => 'tcp',
|
||||||
|
:ntype => 'smb.fingerprint',
|
||||||
|
:data => conf
|
||||||
|
)
|
||||||
|
|
||||||
disconnect
|
disconnect
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
|
@ -75,13 +75,20 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
build_match = res.body.match(/<build>([\w\s\.\-]+)<\/build>/)
|
build_match = res.body.match(/<build>([\w\s\.\-]+)<\/build>/)
|
||||||
full_match = res.body.match(/<fullName>([\w\s\.\-]+)<\/fullName>/)
|
full_match = res.body.match(/<fullName>([\w\s\.\-]+)<\/fullName>/)
|
||||||
this_host = nil
|
this_host = nil
|
||||||
|
|
||||||
if full_match
|
if full_match
|
||||||
print_good("#{rhost}:#{rport} - Identified #{full_match[1]}")
|
print_good("#{rhost}:#{rport} - Identified #{full_match[1]}")
|
||||||
report_service(:host => (this_host || ip), :port => rport, :proto => 'tcp', :name => 'https', :info => full_match[1])
|
report_service(:host => (this_host || ip), :port => rport, :proto => 'tcp', :name => 'https', :info => full_match[1])
|
||||||
end
|
end
|
||||||
|
|
||||||
if os_match and ver_match and build_match
|
if os_match and ver_match and build_match
|
||||||
if os_match[1] =~ /ESX/ or os_match[1] =~ /vCenter/
|
if os_match[1] =~ /ESX/ or os_match[1] =~ /vCenter/
|
||||||
this_host = report_host( :host => ip, :os_name => os_match[1], :os_flavor => ver_match[1], :os_sp => "Build #{build_match[1]}" )
|
# Report a fingerprint match for OS identification
|
||||||
|
report_note(
|
||||||
|
:host => ip,
|
||||||
|
:ntype => 'fingerprint.match',
|
||||||
|
:data => {'os.vendor' => 'VMware', 'os.product' => os_match[1] + " " + ver_match[1], 'os.version' => build_match[1] }
|
||||||
|
)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
|
|
|
@ -114,7 +114,12 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
|
|
||||||
if os_match and ver_match and build_match
|
if os_match and ver_match and build_match
|
||||||
if os_match[1] =~ /ESX/ or os_match[1] =~ /vCenter/
|
if os_match[1] =~ /ESX/ or os_match[1] =~ /vCenter/
|
||||||
this_host = report_host( :host => rhost, :os_name => os_match[1], :os_flavor => ver_match[1], :os_sp => "Build #{build_match[1]}" )
|
# Report a fingerprint match for OS identification
|
||||||
|
report_note(
|
||||||
|
:host => ip,
|
||||||
|
:ntype => 'fingerprint.match',
|
||||||
|
:data => {'os.vendor' => 'VMware', 'os.product' => os_match[1] + " " + ver_match[1], 'os.version' => build_match[1] }
|
||||||
|
)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
|
|
|
@ -786,8 +786,12 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
# Reject exploits whose OS doesn't match that of the
|
# Reject exploits whose OS doesn't match that of the
|
||||||
# victim. Note that host_info comes from javascript OS
|
# victim. Note that host_info comes from javascript OS
|
||||||
# detection, NOT the database.
|
# detection, NOT the database.
|
||||||
|
|
||||||
|
# Note that the os_name could be a string, a regex, or
|
||||||
|
# an array of strings and regexes.
|
||||||
|
|
||||||
if host_info[:os_name] != "undefined"
|
if host_info[:os_name] != "undefined"
|
||||||
unless s[:os_name].include?(host_info[:os_name])
|
unless client_matches_module_spec?(host_info[:os_name], s[:os_name])
|
||||||
vprint_status("Rejecting #{s[:name]} for non-matching OS")
|
vprint_status("Rejecting #{s[:name]} for non-matching OS")
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
@ -833,6 +837,27 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
return response
|
return response
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Determines whether a browser string matches an exploit module specification
|
||||||
|
# Example: :os_name => ( 'Windows' | /Windows/ | ['Windows', 'Mac OS X'] )
|
||||||
|
#
|
||||||
|
def client_matches_module_spec?(client_str, module_spec)
|
||||||
|
|
||||||
|
case module_spec
|
||||||
|
when ::String
|
||||||
|
return !! (client_str == module_spec)
|
||||||
|
when ::Regexp
|
||||||
|
return !! client_str.match(module_spec)
|
||||||
|
when ::Array
|
||||||
|
return !! exploit_spec.map{ |spec|
|
||||||
|
client_matches_module_spec?(client_str, spec)
|
||||||
|
}.include?(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Yields each module that exports autopwn_info, filtering on MATCH and EXCLUDE options
|
# Yields each module that exports autopwn_info, filtering on MATCH and EXCLUDE options
|
||||||
#
|
#
|
||||||
|
@ -886,6 +911,8 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
os_flavor = nil
|
os_flavor = nil
|
||||||
os_sp = nil
|
os_sp = nil
|
||||||
os_lang = nil
|
os_lang = nil
|
||||||
|
os_device = nil
|
||||||
|
os_vendor = nil
|
||||||
arch = nil
|
arch = nil
|
||||||
ua_name = nil
|
ua_name = nil
|
||||||
ua_ver = nil
|
ua_ver = nil
|
||||||
|
@ -907,15 +934,20 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
if (0 < detected_version.length)
|
if (0 < detected_version.length)
|
||||||
detected_version = Rex::Text.decode_base64(Rex::Text.uri_decode(detected_version))
|
detected_version = Rex::Text.decode_base64(Rex::Text.uri_decode(detected_version))
|
||||||
print_status("JavaScript Report: #{detected_version}")
|
print_status("JavaScript Report: #{detected_version}")
|
||||||
(os_name, os_flavor, os_sp, os_lang, arch, ua_name, ua_ver) = detected_version.split(':')
|
|
||||||
|
|
||||||
|
(os_name, os_vendor, os_flavor, os_device, os_sp, os_lang, arch, ua_name, ua_ver) = detected_version.split(':')
|
||||||
|
|
||||||
if framework.db.active
|
if framework.db.active
|
||||||
note_data = { }
|
note_data = { }
|
||||||
note_data[:os_name] = os_name if os_name != "undefined"
|
note_data['os.product'] = os_name if os_name != 'undefined'
|
||||||
note_data[:os_flavor] = os_flavor if os_flavor != "undefined"
|
note_data['os.vendor'] = os_vendor if os_vendor != 'undefined'
|
||||||
note_data[:os_sp] = os_sp if os_sp != "undefined"
|
note_data['os.edition'] = os_flavor if os_flavor != 'undefined'
|
||||||
note_data[:os_lang] = os_lang if os_lang != "undefined"
|
note_data['os.device'] = os_device if os_device != 'undefined'
|
||||||
note_data[:arch] = arch if arch != "undefined"
|
note_data['os.version'] = os_sp if os_sp != 'undefined'
|
||||||
|
note_data['os.language'] = os_lang if os_lang != 'undefined'
|
||||||
|
note_data['os.arch'] = arch if arch != 'undefined'
|
||||||
|
note_data['os.certainty'] = '0.7'
|
||||||
print_status("Reporting: #{note_data.inspect}")
|
print_status("Reporting: #{note_data.inspect}")
|
||||||
|
|
||||||
# Reporting stuff isn't really essential since we store all
|
# Reporting stuff isn't really essential since we store all
|
||||||
|
@ -926,10 +958,14 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
# ActiveRecord::RecordInvalid errors because 127.0.0.1 is
|
# ActiveRecord::RecordInvalid errors because 127.0.0.1 is
|
||||||
# blacklisted in the Host validations.
|
# blacklisted in the Host validations.
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
# Report a generic fingerprint.match note for the OS normalizer
|
||||||
|
# Previously we reported a javascript_fingerprint type but this
|
||||||
|
# was never used.
|
||||||
report_note({
|
report_note({
|
||||||
:host => cli.peerhost,
|
:host => cli.peerhost,
|
||||||
:type => 'javascript_fingerprint',
|
:ntype => 'fingerprint.match',
|
||||||
:data => note_data,
|
:data => note_data,
|
||||||
:update => :unique_data,
|
:update => :unique_data,
|
||||||
})
|
})
|
||||||
client_info = {
|
client_info = {
|
||||||
|
@ -939,8 +975,10 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
:ua_ver => ua_ver
|
:ua_ver => ua_ver
|
||||||
}
|
}
|
||||||
report_client(client_info)
|
report_client(client_info)
|
||||||
rescue => e
|
rescue ::Interrupt
|
||||||
elog("Reporting failed: #{e.class} : #{e.message}")
|
raise $!
|
||||||
|
rescue ::Exception => e
|
||||||
|
elog("Reporting failed: #{e.class} : #{e.message} #{e.backtrace}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -971,7 +1009,9 @@ class Metasploit3 < Msf::Auxiliary
|
||||||
|
|
||||||
@targetcache[key][:host] = {}
|
@targetcache[key][:host] = {}
|
||||||
@targetcache[key][:host][:os_name] = os_name
|
@targetcache[key][:host][:os_name] = os_name
|
||||||
|
@targetcache[key][:host][:os_vendor] = os_vendor
|
||||||
@targetcache[key][:host][:os_flavor] = os_flavor
|
@targetcache[key][:host][:os_flavor] = os_flavor
|
||||||
|
@targetcache[key][:host][:os_device] = os_device
|
||||||
@targetcache[key][:host][:os_sp] = os_sp
|
@targetcache[key][:host][:os_sp] = os_sp
|
||||||
@targetcache[key][:host][:os_lang] = os_lang
|
@targetcache[key][:host][:os_lang] = os_lang
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,8 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
|
|
||||||
|
|
||||||
autopwn_info(
|
autopwn_info(
|
||||||
:os_flavor => 'Android',
|
:os_name => OperatingSystems::Match::ANDROID,
|
||||||
|
:arch => ARCH_ARMLE,
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:rank => ExcellentRanking,
|
:rank => ExcellentRanking,
|
||||||
:vuln_test => VULN_CHECK_JS
|
:vuln_test => VULN_CHECK_JS
|
||||||
|
@ -73,7 +74,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
'DefaultTarget' => 0,
|
'DefaultTarget' => 0,
|
||||||
'BrowserRequirements' => {
|
'BrowserRequirements' => {
|
||||||
:source => 'script',
|
:source => 'script',
|
||||||
:os_flavor => 'Android',
|
:os_name => OperatingSystems::Match::ANDROID,
|
||||||
:vuln_test => VULN_CHECK_JS,
|
:vuln_test => VULN_CHECK_JS,
|
||||||
:vuln_test_error => 'No vulnerable Java objects were found in this web context.'
|
:vuln_test_error => 'No vulnerable Java objects were found in this web context.'
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::FF,
|
# :ua_name => HttpClients::FF,
|
||||||
# :ua_minver => "3.5",
|
# :ua_minver => "3.5",
|
||||||
# :ua_maxver => "3.5",
|
# :ua_maxver => "3.5",
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
# :vuln_test => nil,
|
# :vuln_test => nil,
|
||||||
|
|
|
@ -20,7 +20,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::FF,
|
# :ua_name => HttpClients::FF,
|
||||||
# :ua_minver => "1.0",
|
# :ua_minver => "1.0",
|
||||||
# :ua_maxver => "1.7.10",
|
# :ua_maxver => "1.7.10",
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
# :vuln_test => "if (typeof InstallVersion != 'undefined') { is_vuln = true; }",
|
# :vuln_test => "if (typeof InstallVersion != 'undefined') { is_vuln = true; }",
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
autopwn_info({
|
autopwn_info({
|
||||||
:ua_name => HttpClients::OPERA,
|
:ua_name => HttpClients::OPERA,
|
||||||
:ua_maxver => "9.10",
|
:ua_maxver => "9.10",
|
||||||
:os_name => [ OperatingSystems::WINDOWS, OperatingSystems::LINUX ],
|
:os_name => [ OperatingSystems::Match::WINDOWS, OperatingSystems::Match::LINUX ],
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:rank => ExcellentRanking, # reliable cmd exec, cleans up after itself
|
:rank => ExcellentRanking, # reliable cmd exec, cleans up after itself
|
||||||
:vuln_test => nil,
|
:vuln_test => nil,
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::FF,
|
# :ua_name => HttpClients::FF,
|
||||||
# :ua_minver => "3.6.16",
|
# :ua_minver => "3.6.16",
|
||||||
# :ua_maxver => "3.6.16",
|
# :ua_maxver => "3.6.16",
|
||||||
# :os_name => OperatingSystems::MAC_OSX,
|
# :os_name => OperatingSystems::Match::MAC_OSX,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
#})
|
#})
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :ua_name => HttpClients::SAFARI,
|
# :ua_name => HttpClients::SAFARI,
|
||||||
# :ua_maxver => '2.0.2',
|
# :ua_maxver => '2.0.2',
|
||||||
# :os_name => [ OperatingSystems::MAC_OSX ],
|
# :os_name => OperatingSystems::Match::MAC_OSX,
|
||||||
# :javascript => false,
|
# :javascript => false,
|
||||||
# :rank => ExcellentRanking, # reliable cmd execution
|
# :rank => ExcellentRanking, # reliable cmd execution
|
||||||
# :vuln_test => nil,
|
# :vuln_test => nil,
|
||||||
|
|
|
@ -60,7 +60,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
'BrowserRequirements' => {
|
'BrowserRequirements' => {
|
||||||
:source => 'script',
|
:source => 'script',
|
||||||
:ua_name => HttpClients::SAFARI,
|
:ua_name => HttpClients::SAFARI,
|
||||||
:os_name => OperatingSystems::MAC_OSX,
|
:os_name => OperatingSystems::Match::MAC_OSX,
|
||||||
|
|
||||||
# On 10.6.8 (Safari 5.x), a dialog never appears unless the user
|
# On 10.6.8 (Safari 5.x), a dialog never appears unless the user
|
||||||
# has already manually launched the dropped exe
|
# has already manually launched the dropped exe
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
include Msf::Exploit::RopDb
|
include Msf::Exploit::RopDb
|
||||||
include Msf::Exploit::Remote::BrowserAutopwn
|
include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
autopwn_info({
|
autopwn_info({
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:method => "GetVariable",
|
:method => "GetVariable",
|
||||||
:classid => "ShockwaveFlash.ShockwaveFlash",
|
:classid => "ShockwaveFlash.ShockwaveFlash",
|
||||||
:rank => NormalRanking, # reliable memory corruption
|
:rank => NormalRanking, # reliable memory corruption
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
include Msf::Exploit::Remote::BrowserAutopwn
|
include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
|
|
||||||
autopwn_info({
|
autopwn_info({
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:ua_name => HttpClients::IE,
|
:ua_name => HttpClients::IE,
|
||||||
:ua_minver => "6.0",
|
:ua_minver => "6.0",
|
||||||
:ua_maxver => "8.0",
|
:ua_maxver => "8.0",
|
||||||
|
|
|
@ -49,8 +49,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
'BrowserRequirements' =>
|
'BrowserRequirements' =>
|
||||||
{
|
{
|
||||||
:source => /script|headers/i,
|
:source => /script|headers/i,
|
||||||
:os_name => Msf::OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS_XP,
|
||||||
:os_flavor => Msf::OperatingSystems::WindowsVersions::XP,
|
|
||||||
:ua_name => Msf::HttpClients::IE
|
:ua_name => Msf::HttpClients::IE
|
||||||
},
|
},
|
||||||
'Targets' =>
|
'Targets' =>
|
||||||
|
|
|
@ -47,7 +47,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:source => /script|headers/i,
|
:source => /script|headers/i,
|
||||||
:clsid => "{09F68A41-2FBE-11D3-8C9D-0008C7D901B6}",
|
:clsid => "{09F68A41-2FBE-11D3-8C9D-0008C7D901B6}",
|
||||||
:method => "ChooseFilePath",
|
:method => "ChooseFilePath",
|
||||||
:os_name => /win/i
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
},
|
},
|
||||||
'Targets' =>
|
'Targets' =>
|
||||||
[
|
[
|
||||||
|
@ -55,7 +55,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
[
|
[
|
||||||
'Windows XP with IE 6',
|
'Windows XP with IE 6',
|
||||||
{
|
{
|
||||||
'os_flavor' => 'XP',
|
'os_name' => OperatingSystems::Match::WINDOWS_XP,
|
||||||
'ua_name' => 'MSIE',
|
'ua_name' => 'MSIE',
|
||||||
'ua_ver' => '6.0',
|
'ua_ver' => '6.0',
|
||||||
'Rop' => false,
|
'Rop' => false,
|
||||||
|
@ -66,7 +66,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
[
|
[
|
||||||
'Windows XP with IE 7',
|
'Windows XP with IE 7',
|
||||||
{
|
{
|
||||||
'os_flavor' => 'XP',
|
'os_name' => OperatingSystems::Match::WINDOWS_XP,
|
||||||
'ua_name' => 'MSIE',
|
'ua_name' => 'MSIE',
|
||||||
'ua_ver' => '7.0',
|
'ua_ver' => '7.0',
|
||||||
'Rop' => false,
|
'Rop' => false,
|
||||||
|
@ -77,7 +77,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
[
|
[
|
||||||
'Windows XP with IE 8',
|
'Windows XP with IE 8',
|
||||||
{
|
{
|
||||||
'os_flavor' => 'XP',
|
'os_name' => OperatingSystems::Match::WINDOWS_XP,
|
||||||
'ua_name' => 'MSIE',
|
'ua_name' => 'MSIE',
|
||||||
'ua_ver' => '8.0',
|
'ua_ver' => '8.0',
|
||||||
'Rop' => true,
|
'Rop' => true,
|
||||||
|
@ -88,7 +88,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
[
|
[
|
||||||
'Windows Vista with IE 7',
|
'Windows Vista with IE 7',
|
||||||
{
|
{
|
||||||
'os_flavor' => 'Vista',
|
'os_name' => OperatingSystems::Match::WINDOWS_VISTA,
|
||||||
'ua_name' => 'MSIE',
|
'ua_name' => 'MSIE',
|
||||||
'ua_ver' => '7.0',
|
'ua_ver' => '7.0',
|
||||||
'Rop' => false,
|
'Rop' => false,
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::SAFARI,
|
# :ua_name => HttpClients::SAFARI,
|
||||||
# :ua_maxver => '5.0.1',
|
# :ua_maxver => '5.0.1',
|
||||||
# :ua_maxver => '5.1.7',
|
# :ua_maxver => '5.1.7',
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# # No particular browser. Works on at least IE6 and Firefox 1.5.0.3
|
# # No particular browser. Works on at least IE6 and Firefox 1.5.0.3
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
# :vuln_test => nil,
|
# :vuln_test => nil,
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
#})
|
#})
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{9E065E4A-BD9D-4547-8F90-985DC62A5591}",
|
# :classid => "{9E065E4A-BD9D-4547-8F90-985DC62A5591}",
|
||||||
# :method => "SetSource",
|
# :method => "SetSource",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{9E065E4A-BD9D-4547-8F90-985DC62A5591}",
|
# :classid => "{9E065E4A-BD9D-4547-8F90-985DC62A5591}",
|
||||||
# :method => "SetSource",
|
# :method => "SetSource",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{94773112-72E8-11D0-A42E-00A024DED613}",
|
# :classid => "{94773112-72E8-11D0-A42E-00A024DED613}",
|
||||||
# :method => "RegisterSchemaRepoFromFileByDbSet",
|
# :method => "RegisterSchemaRepoFromFileByDbSet",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :classid => "{88DD90B6-C770-4CFF-B7A4-3AFD16BB8824}",
|
# :classid => "{88DD90B6-C770-4CFF-B7A4-3AFD16BB8824}",
|
||||||
# :method => "ServerResourceVersion"
|
# :method => "ServerResourceVersion"
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "7.0",
|
# :ua_minver => "7.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{C3B92104-B5A7-11D0-A37F-00A0248F0AF1}",
|
# :classid => "{C3B92104-B5A7-11D0-A37F-00A0248F0AF1}",
|
||||||
# :method => "SetShapeNodeType",
|
# :method => "SetShapeNodeType",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => Rank,
|
# :rank => Rank,
|
||||||
# :classid => "{8D9E2CC7-D94B-4977-8510-FB49C361A139}",
|
# :classid => "{8D9E2CC7-D94B-4977-8510-FB49C361A139}",
|
||||||
# :method => "WriteFileBinary"
|
# :method => "WriteFileBinary"
|
||||||
|
|
|
@ -17,8 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS_XP,
|
||||||
# :os_ver => OperatingSystems::WindowsVersions::XP,
|
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :classid => "{8D9E2CC7-D94B-4977-8510-FB49C361A139}",
|
# :classid => "{8D9E2CC7-D94B-4977-8510-FB49C361A139}",
|
||||||
# :method => "WriteFileString "
|
# :method => "WriteFileString "
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :classid => "{24E04EBF-014D-471F-930E-7654B1193BA9}",
|
# :classid => "{24E04EBF-014D-471F-930E-7654B1193BA9}",
|
||||||
# :method => "TabCaption"
|
# :method => "TabCaption"
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#
|
#
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "8.0",
|
# :ua_minver => "8.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => GoodRanking
|
# :rank => GoodRanking
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:ua_minver => "8.0",
|
:ua_minver => "8.0",
|
||||||
:ua_maxver => "8.0",
|
:ua_maxver => "8.0",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:rank => GoodRanking
|
:rank => GoodRanking
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# than the max by setting to 6.1 (which doesn't really exist).
|
# than the max by setting to 6.1 (which doesn't really exist).
|
||||||
:ua_maxver => "6.1",
|
:ua_maxver => "6.1",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:method => [ 'CreateObject', 'GetObject' ],
|
:method => [ 'CreateObject', 'GetObject' ],
|
||||||
:classid =>
|
:classid =>
|
||||||
[
|
[
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :classid => "{3c9dff6f-5cb0-422e-9978-d6405d10718f}",
|
# :classid => "{3c9dff6f-5cb0-422e-9978-d6405d10718f}",
|
||||||
# :method => "InternationalSeparator"
|
# :method => "InternationalSeparator"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => Rank,
|
# :rank => Rank,
|
||||||
# :classid => "{0F2AAAE3-7E9E-4b64-AB5D-1CA24C6ACB9C}",
|
# :classid => "{0F2AAAE3-7E9E-4b64-AB5D-1CA24C6ACB9C}",
|
||||||
# :method => "Attachment_Times"
|
# :method => "Attachment_Times"
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::FF,
|
# :ua_name => HttpClients::FF,
|
||||||
# :ua_minver => "3.6.8",
|
# :ua_minver => "3.6.8",
|
||||||
# :ua_maxver => "3.6.11",
|
# :ua_maxver => "3.6.11",
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :vuln_test => "if (typeof InstallVersion != 'undefined') { is_vuln = true; }",
|
# :vuln_test => "if (typeof InstallVersion != 'undefined') { is_vuln = true; }",
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::FF,
|
# :ua_name => HttpClients::FF,
|
||||||
# :ua_minver => "3.6.16",
|
# :ua_minver => "3.6.16",
|
||||||
# :ua_maxver => "3.6.16",
|
# :ua_maxver => "3.6.16",
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
#})
|
#})
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:ua_name => HttpClients::FF,
|
:ua_name => HttpClients::FF,
|
||||||
:ua_minver => "3.5",
|
:ua_minver => "3.5",
|
||||||
:ua_maxver => "3.6.16",
|
:ua_maxver => "3.6.16",
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:rank => NormalRanking,
|
:rank => NormalRanking,
|
||||||
:vuln_test => "if (navigator.userAgent.indexOf('Windows NT 5.1') != -1 || navigator.javaEnabled()) { is_vuln = true; }",
|
:vuln_test => "if (navigator.userAgent.indexOf('Windows NT 5.1') != -1 || navigator.javaEnabled()) { is_vuln = true; }",
|
||||||
|
|
|
@ -22,7 +22,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => 'DirectAnimation.PathControl',
|
# :classid => 'DirectAnimation.PathControl',
|
||||||
# :method => 'KeyFrame',
|
# :method => 'KeyFrame',
|
||||||
# :rank => NormalRanking # reliable memory corruption
|
# :rank => NormalRanking # reliable memory corruption
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "7.0",
|
# :ua_minver => "7.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "7.0",
|
# :ua_minver => "7.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
# :rank => LowRanking # exploitable on ie7/vista
|
# :rank => LowRanking # exploitable on ie7/vista
|
||||||
#})
|
#})
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "6.0",
|
# :ua_maxver => "6.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :vuln_test => nil, # no way to test without just trying it
|
# :vuln_test => nil, # no way to test without just trying it
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "7.0", # Should be 6
|
# :ua_minver => "7.0", # Should be 6
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# # Not strictly a vuln check, but an exploitability check since a
|
# # Not strictly a vuln check, but an exploitability check since a
|
||||||
# # specific version of .NET is required to make the ROP work.
|
# # specific version of .NET is required to make the ROP work.
|
||||||
# :vuln_test => "if (/.NET CLR 2\\.0\\.50727/.test(navigator.userAgent)) { is_vuln = true }else{ is_vuln = false }",
|
# :vuln_test => "if (/.NET CLR 2\\.0\\.50727/.test(navigator.userAgent)) { is_vuln = true }else{ is_vuln = false }",
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "7.0",
|
# :ua_minver => "7.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS
|
# :os_name => OperatingSystems::Match::WINDOWS
|
||||||
#})
|
#})
|
||||||
|
|
||||||
def initialize(info={})
|
def initialize(info={})
|
||||||
|
|
|
@ -16,12 +16,11 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:ua_minver => "6.0",
|
:ua_minver => "6.0",
|
||||||
:ua_maxver => "8.0",
|
:ua_maxver => "8.0",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:vuln_test => %Q|
|
:vuln_test => %Q|
|
||||||
var v = window.os_detect.getVersion();
|
var v = window.os_detect.getVersion();
|
||||||
var os_name = v['os_name'];
|
var os_name = v['os_name'];
|
||||||
var os_flavor = v['os_flavor'];
|
if (os_name.indexOf('Windows XP') == 0) {is_vuln = true;} else { is_vuln = false; }
|
||||||
if (os_name == 'Microsoft Windows' && os_flavor == 'XP') {is_vuln = true;} else { is_vuln = false; }
|
|
||||||
|,
|
|,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
include Msf::Exploit::Remote::HttpServer::HTML
|
include Msf::Exploit::Remote::HttpServer::HTML
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_minver => "8.0",
|
# :ua_minver => "8.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :rank => NormalRanking, # reliable memory corruption
|
# :rank => NormalRanking, # reliable memory corruption
|
||||||
|
|
|
@ -59,7 +59,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
'BrowserRequirements' =>
|
'BrowserRequirements' =>
|
||||||
{
|
{
|
||||||
:source => /script|headers/i,
|
:source => /script|headers/i,
|
||||||
:os_name => Msf::OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:ua_name => Msf::HttpClients::IE,
|
:ua_name => Msf::HttpClients::IE,
|
||||||
:silverlight => "true"
|
:silverlight => "true"
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "8.0",
|
# :ua_minver => "8.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => Rank
|
# :rank => Rank
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:ua_minver => "8.0",
|
:ua_minver => "8.0",
|
||||||
:ua_maxver => "8.0",
|
:ua_maxver => "8.0",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:rank => NormalRanking
|
:rank => NormalRanking
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
|
|
||||||
function os() {
|
function os() {
|
||||||
var detect = window.os_detect.getVersion();
|
var detect = window.os_detect.getVersion();
|
||||||
var os_string = detect.os_name + " " + detect.os_flavor + " " + detect.ua_name + " " + detect.ua_version;
|
var os_string = detect.os_name + " " + detect.ua_name + " " + detect.ua_version;
|
||||||
return os_string;
|
return os_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,13 +62,13 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:source => /script|headers/i,
|
:source => /script|headers/i,
|
||||||
:clsid => "{19916E01-B44E-4E31-94A4-4696DF46157B}",
|
:clsid => "{19916E01-B44E-4E31-94A4-4696DF46157B}",
|
||||||
:method => "requiredClaims",
|
:method => "requiredClaims",
|
||||||
:os_name => Msf::OperatingSystems::WINDOWS
|
:os_name => OperatingSystems::Match::WINDOWS_XP
|
||||||
},
|
},
|
||||||
'Targets' =>
|
'Targets' =>
|
||||||
[
|
[
|
||||||
[ 'Windows XP with IE 8',
|
[ 'Windows XP with IE 8',
|
||||||
{
|
{
|
||||||
'os_flavor' => Msf::OperatingSystems::WindowsVersions::XP,
|
'os_name' => OperatingSystems::Match::WINDOWS_XP,
|
||||||
'ua_name' => Msf::HttpClients::IE,
|
'ua_name' => Msf::HttpClients::IE,
|
||||||
'ua_ver' => '8.0',
|
'ua_ver' => '8.0',
|
||||||
'arch' => ARCH_X86
|
'arch' => ARCH_X86
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
:ua_minver => "6.0",
|
:ua_minver => "6.0",
|
||||||
:ua_maxver => "9.0",
|
:ua_maxver => "9.0",
|
||||||
:javascript => true,
|
:javascript => true,
|
||||||
:os_name => OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:classid => "{f6D90f11-9c73-11d3-b32e-00C04f990bb4}",
|
:classid => "{f6D90f11-9c73-11d3-b32e-00C04f990bb4}",
|
||||||
:method => "definition",
|
:method => "definition",
|
||||||
:rank => GoodRanking
|
:rank => GoodRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :classid => "{601D7813-408F-11D1-98D7-444553540000}",
|
# :classid => "{601D7813-408F-11D1-98D7-444553540000}",
|
||||||
# :method => "SetEngine"
|
# :method => "SetEngine"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{E6ACF817-0A85-4EBE-9F0A-096C6488CFEA}",
|
# :classid => "{E6ACF817-0A85-4EBE-9F0A-096C6488CFEA}",
|
||||||
# :method => "Check",
|
# :method => "Check",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "7.0",
|
# :ua_maxver => "7.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{E6ACF817-0A85-4EBE-9F0A-096C6488CFEA}",
|
# :classid => "{E6ACF817-0A85-4EBE-9F0A-096C6488CFEA}",
|
||||||
# :method => "StopModule",
|
# :method => "StopModule",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => "{B6FCC215-D303-11D1-BC6C-0000C078797F}",
|
# :classid => "{B6FCC215-D303-11D1-BC6C-0000C078797F}",
|
||||||
# :method => "SetMarkupMode",
|
# :method => "SetMarkupMode",
|
||||||
# :rank => NormalRanking
|
# :rank => NormalRanking
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => Rank,
|
# :rank => Rank,
|
||||||
# :classid => "{05D96F71-87C6-11D3-9BE4-00902742D6E0}",
|
# :classid => "{05D96F71-87C6-11D3-9BE4-00902742D6E0}",
|
||||||
# :method => "Attachment_Times"
|
# :method => "Attachment_Times"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "9.0",
|
# :ua_maxver => "9.0",
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => Rank,
|
# :rank => Rank,
|
||||||
# :classid => "{5D6A72E6-C12F-4C72-ABF3-32F6B70EBB0D}"
|
# :classid => "{5D6A72E6-C12F-4C72-ABF3-32F6B70EBB0D}"
|
||||||
#})
|
#})
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :classid => "{C80CAF1F-C58E-11D5-A093-006097ED77E6}",
|
# :classid => "{C80CAF1F-C58E-11D5-A093-006097ED77E6}",
|
||||||
# :method => "ConnectToSynactis",
|
# :method => "ConnectToSynactis",
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :rank => AverageRanking
|
# :rank => AverageRanking
|
||||||
#})
|
#})
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#
|
#
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :ua_minver => "6.0",
|
# :ua_minver => "6.0",
|
||||||
# :ua_maxver => "8.0",
|
# :ua_maxver => "8.0",
|
||||||
|
|
|
@ -42,7 +42,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
'BrowserRequirements' =>
|
'BrowserRequirements' =>
|
||||||
{
|
{
|
||||||
:source => /script|headers/i,
|
:source => /script|headers/i,
|
||||||
:os_name => Msf::OperatingSystems::WINDOWS,
|
:os_name => OperatingSystems::Match::WINDOWS,
|
||||||
:ua_name => /MSIE|KXCLIE/i
|
:ua_name => /MSIE|KXCLIE/i
|
||||||
},
|
},
|
||||||
'Payload' =>
|
'Payload' =>
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :javascript => true,
|
# :javascript => true,
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :classid => '{A09AE68F-B14D-43ED-B713-BA413F034904}',
|
# :classid => '{A09AE68F-B14D-43ED-B713-BA413F034904}',
|
||||||
# :method => 'CreateNewFolderFromName',
|
# :method => 'CreateNewFolderFromName',
|
||||||
# :rank => NormalRanking # reliable memory corruption
|
# :rank => NormalRanking # reliable memory corruption
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
|
||||||
#include Msf::Exploit::Remote::BrowserAutopwn
|
#include Msf::Exploit::Remote::BrowserAutopwn
|
||||||
#
|
#
|
||||||
#autopwn_info({
|
#autopwn_info({
|
||||||
# :os_name => OperatingSystems::WINDOWS,
|
# :os_name => OperatingSystems::Match::WINDOWS,
|
||||||
# :ua_name => HttpClients::IE,
|
# :ua_name => HttpClients::IE,
|
||||||
# :rank => NormalRanking,
|
# :rank => NormalRanking,
|
||||||
# :vuln_test => nil,
|
# :vuln_test => nil,
|
||||||
|
|
|
@ -66,11 +66,11 @@ class Metasploit3 < Msf::Post
|
||||||
|
|
||||||
# Results table holds raw string data
|
# Results table holds raw string data
|
||||||
results_table = Rex::Ui::Text::Table.new(
|
results_table = Rex::Ui::Text::Table.new(
|
||||||
'Header' => "Domain Computers",
|
'Header' => "Domain Computers",
|
||||||
'Indent' => 1,
|
'Indent' => 1,
|
||||||
'SortIndex' => -1,
|
'SortIndex' => -1,
|
||||||
'Columns' => fields
|
'Columns' => fields
|
||||||
)
|
)
|
||||||
|
|
||||||
# Hostnames holds DNS Names to Resolve
|
# Hostnames holds DNS Names to Resolve
|
||||||
hostnames = []
|
hostnames = []
|
||||||
|
@ -81,40 +81,37 @@ class Metasploit3 < Msf::Post
|
||||||
|
|
||||||
report = {}
|
report = {}
|
||||||
0.upto(fields.length-1) do |i|
|
0.upto(fields.length-1) do |i|
|
||||||
if result[i].nil?
|
field = result[i] || ""
|
||||||
field = ""
|
|
||||||
else
|
|
||||||
field = result[i]
|
|
||||||
|
|
||||||
# Only perform these actions if the database is connected and we want
|
# Only perform these actions if the database is connected and we want
|
||||||
# to store in the DB.
|
# to store in the DB.
|
||||||
if db and datastore['STORE_DB']
|
if db && datastore['STORE_DB']
|
||||||
case fields[i]
|
case fields[i]
|
||||||
when 'dNSHostName'
|
when 'dNSHostName'
|
||||||
dns = field
|
dns = field
|
||||||
report[:name] = dns
|
report[:name] = dns
|
||||||
hostnames << dns
|
hostnames << dns
|
||||||
when 'operatingSystem'
|
when 'operatingSystem'
|
||||||
os = field
|
report[:os_name] = field
|
||||||
index = os.index(/windows/i)
|
when 'distinguishedName'
|
||||||
if index
|
if field =~ /Domain Controllers/i
|
||||||
name = 'Microsoft Windows'
|
# TODO: Find another way to mark a host as being a domain controller
|
||||||
flavour = os[index..-1]
|
# The 'purpose' field should be server, client, device, printer, etc
|
||||||
report[:os_name] = name
|
#report[:purpose] = "DC"
|
||||||
report[:os_flavor] = flavour
|
report[:purpose] = "server"
|
||||||
else
|
|
||||||
# Incase there are non-windows domain computers?!
|
|
||||||
report[:os_name] = os
|
|
||||||
end
|
|
||||||
when 'distinguishedName'
|
|
||||||
if field =~ /Domain Controllers/i
|
|
||||||
report[:purpose] = "DC"
|
|
||||||
end
|
|
||||||
when 'operatingSystemServicePack'
|
|
||||||
report[:os_sp] = field
|
|
||||||
when 'description'
|
|
||||||
report[:info] = field
|
|
||||||
end
|
end
|
||||||
|
when 'operatingSystemServicePack'
|
||||||
|
# XXX: Does this take into account the leading 'SP' string?
|
||||||
|
|
||||||
|
if field.to_i > 0
|
||||||
|
report[:os_sp] = 'SP' + field
|
||||||
|
end
|
||||||
|
if field =~ /(Service Pack|SP)\s?(\d+)/
|
||||||
|
report[:os_sp] = 'SP' + $2
|
||||||
|
end
|
||||||
|
|
||||||
|
when 'description'
|
||||||
|
report[:info] = field
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -125,7 +122,7 @@ class Metasploit3 < Msf::Post
|
||||||
results_table << row
|
results_table << row
|
||||||
end
|
end
|
||||||
|
|
||||||
if db and datastore['STORE_DB']
|
if db && datastore['STORE_DB']
|
||||||
print_status("Resolving IP addresses...")
|
print_status("Resolving IP addresses...")
|
||||||
ip_results = client.net.resolve.resolve_hosts(hostnames, AF_INET)
|
ip_results = client.net.resolve.resolve_hosts(hostnames, AF_INET)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue