Fixes #1461
This commit is contained in:
@@ -16,8 +16,7 @@ module WPScan
|
|||||||
target.url(path),
|
target.url(path),
|
||||||
confidence: 70,
|
confidence: 70,
|
||||||
found_by: DIRECT_ACCESS,
|
found_by: DIRECT_ACCESS,
|
||||||
interesting_entries: target.directory_listing_entries(path),
|
interesting_entries: target.directory_listing_entries(path)
|
||||||
references: { url: 'https://github.com/wpscanteam/wpscan/issues/422' }
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,11 +11,7 @@ module WPScan
|
|||||||
|
|
||||||
return unless target.debug_log?(path)
|
return unless target.debug_log?(path)
|
||||||
|
|
||||||
Model::DebugLog.new(
|
Model::DebugLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
target.url(path),
|
|
||||||
confidence: 100, found_by: DIRECT_ACCESS,
|
|
||||||
references: { url: 'https://codex.wordpress.org/Debugging_in_WordPress' }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,12 +11,7 @@ module WPScan
|
|||||||
|
|
||||||
return unless /DUPLICATOR INSTALL-LOG/.match?(target.head_and_get(path).body)
|
return unless /DUPLICATOR INSTALL-LOG/.match?(target.head_and_get(path).body)
|
||||||
|
|
||||||
Model::DuplicatorInstallerLog.new(
|
Model::DuplicatorInstallerLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
target.url(path),
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
references: { url: 'https://www.exploit-db.com/ghdb/3981/' }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,10 +15,7 @@ module WPScan
|
|||||||
Model::EmergencyPwdResetScript.new(
|
Model::EmergencyPwdResetScript.new(
|
||||||
target.url(path),
|
target.url(path),
|
||||||
confidence: /password/i.match?(res.body) ? 100 : 40,
|
confidence: /password/i.match?(res.body) ? 100 : 40,
|
||||||
found_by: DIRECT_ACCESS,
|
found_by: DIRECT_ACCESS
|
||||||
references: {
|
|
||||||
url: 'https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script'
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ module WPScan
|
|||||||
target.url(path),
|
target.url(path),
|
||||||
confidence: 100,
|
confidence: 100,
|
||||||
found_by: DIRECT_ACCESS,
|
found_by: DIRECT_ACCESS,
|
||||||
interesting_entries: fpd_entries,
|
interesting_entries: fpd_entries
|
||||||
references: { url: 'https://www.owasp.org/index.php/Full_Path_Disclosure' }
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -16,13 +16,7 @@ module WPScan
|
|||||||
|
|
||||||
target.mu_plugins = true
|
target.mu_plugins = true
|
||||||
|
|
||||||
return Model::MuPlugins.new(
|
return Model::MuPlugins.new(url, confidence: 70, found_by: 'URLs In Homepage (Passive Detection)')
|
||||||
url,
|
|
||||||
confidence: 70,
|
|
||||||
found_by: 'URLs In Homepage (Passive Detection)',
|
|
||||||
to_s: "This site has 'Must Use Plugins': #{url}",
|
|
||||||
references: { url: 'http://codex.wordpress.org/Must_Use_Plugins' }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
@@ -37,13 +31,7 @@ module WPScan
|
|||||||
|
|
||||||
target.mu_plugins = true
|
target.mu_plugins = true
|
||||||
|
|
||||||
Model::MuPlugins.new(
|
Model::MuPlugins.new(url, confidence: 80, found_by: DIRECT_ACCESS)
|
||||||
url,
|
|
||||||
confidence: 80,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
to_s: "This site has 'Must Use Plugins': #{url}",
|
|
||||||
references: { url: 'http://codex.wordpress.org/Must_Use_Plugins' }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -17,13 +17,7 @@ module WPScan
|
|||||||
|
|
||||||
target.multisite = true
|
target.multisite = true
|
||||||
|
|
||||||
Model::Multisite.new(
|
Model::Multisite.new(url, confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
url,
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
to_s: 'This site seems to be a multisite',
|
|
||||||
references: { url: 'http://codex.wordpress.org/Glossary#Multisite' }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -20,12 +20,7 @@ module WPScan
|
|||||||
|
|
||||||
target.registration_enabled = true
|
target.registration_enabled = true
|
||||||
|
|
||||||
Model::Registration.new(
|
Model::Registration.new(res.effective_url, confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
res.effective_url,
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
to_s: "Registration is enabled: #{res.effective_url}"
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -13,12 +13,7 @@ module WPScan
|
|||||||
|
|
||||||
return unless res.code == 200 && res.headers['Content-Type'] =~ %r{\Aapplication/zip}i
|
return unless res.code == 200 && res.headers['Content-Type'] =~ %r{\Aapplication/zip}i
|
||||||
|
|
||||||
Model::TmmDbMigrate.new(
|
Model::TmmDbMigrate.new(url, confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
url,
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
references: { packetstorm: 131_957 }
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -13,12 +13,7 @@ module WPScan
|
|||||||
|
|
||||||
url = target.url(path)
|
url = target.url(path)
|
||||||
|
|
||||||
Model::UploadDirectoryListing.new(
|
Model::UploadDirectoryListing.new(url, confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
url,
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
to_s: "Upload directory has listing enabled: #{url}"
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -14,11 +14,7 @@ module WPScan
|
|||||||
|
|
||||||
return unless SQL_PATTERN.match?(res.body)
|
return unless SQL_PATTERN.match?(res.body)
|
||||||
|
|
||||||
Model::UploadSQLDump.new(
|
Model::UploadSQLDump.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
|
||||||
target.url(path),
|
|
||||||
confidence: 100,
|
|
||||||
found_by: DIRECT_ACCESS
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,17 +11,7 @@ module WPScan
|
|||||||
|
|
||||||
return unless res.code == 200
|
return unless res.code == 200
|
||||||
|
|
||||||
Model::WPCron.new(
|
Model::WPCron.new(wp_cron_url, confidence: 60, found_by: DIRECT_ACCESS)
|
||||||
wp_cron_url,
|
|
||||||
confidence: 60,
|
|
||||||
found_by: DIRECT_ACCESS,
|
|
||||||
references: {
|
|
||||||
url: [
|
|
||||||
'https://www.iplocation.net/defend-wordpress-from-ddos',
|
|
||||||
'https://github.com/wpscanteam/wpscan/issues/1299'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def wp_cron_url
|
def wp_cron_url
|
||||||
|
|||||||
@@ -8,45 +8,110 @@ module WPScan
|
|||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Empty classes for the #type to be correctly displayed (as taken from the self.class from the parent)
|
# Some classes are empty for the #type to be correctly displayed (as taken from the self.class from the parent)
|
||||||
#
|
#
|
||||||
class BackupDB < InterestingFinding
|
class BackupDB < InterestingFinding
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: ['https://github.com/wpscanteam/wpscan/issues/422'] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class DebugLog < InterestingFinding
|
class DebugLog < InterestingFinding
|
||||||
|
# @ return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: 'https://codex.wordpress.org/Debugging_in_WordPress' }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class DuplicatorInstallerLog < InterestingFinding
|
class DuplicatorInstallerLog < InterestingFinding
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: ['https://www.exploit-db.com/ghdb/3981/'] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class EmergencyPwdResetScript < InterestingFinding
|
class EmergencyPwdResetScript < InterestingFinding
|
||||||
|
def references
|
||||||
|
@references ||= {
|
||||||
|
url: ['https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script']
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class FullPathDisclosure < InterestingFinding
|
class FullPathDisclosure < InterestingFinding
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: ['https://www.owasp.org/index.php/Full_Path_Disclosure'] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class MuPlugins < InterestingFinding
|
class MuPlugins < InterestingFinding
|
||||||
|
# @return [ String ]
|
||||||
|
def to_s
|
||||||
|
@to_s ||= "This site has 'Must Use Plugins': #{url}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: ['http://codex.wordpress.org/Must_Use_Plugins'] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Multisite < InterestingFinding
|
class Multisite < InterestingFinding
|
||||||
|
# @return [ String ]
|
||||||
|
def to_s
|
||||||
|
@to_s ||= 'This site seems to be a multisite'
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { url: ['http://codex.wordpress.org/Glossary#Multisite'] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Readme < InterestingFinding
|
class Readme < InterestingFinding
|
||||||
end
|
end
|
||||||
|
|
||||||
class Registration < InterestingFinding
|
class Registration < InterestingFinding
|
||||||
|
# @return [ String ]
|
||||||
|
def to_s
|
||||||
|
@to_s ||= "Registration is enabled: #{url}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class TmmDbMigrate < InterestingFinding
|
class TmmDbMigrate < InterestingFinding
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= { packetstorm: [131_957] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class UploadDirectoryListing < InterestingFinding
|
class UploadDirectoryListing < InterestingFinding
|
||||||
|
# @return [ String ]
|
||||||
|
def to_s
|
||||||
|
@to_s ||= "Upload directory has listing enabled: #{url}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class UploadSQLDump < InterestingFinding
|
class UploadSQLDump < InterestingFinding
|
||||||
end
|
end
|
||||||
|
|
||||||
class WPCron < InterestingFinding
|
class WPCron < InterestingFinding
|
||||||
|
# @return [ String ]
|
||||||
|
def to_s
|
||||||
|
@to_s ||= "The external WP-Cron seems to be enabled: #{url}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [ Hash ]
|
||||||
|
def references
|
||||||
|
@references ||= {
|
||||||
|
url: [
|
||||||
|
'https://www.iplocation.net/defend-wordpress-from-ddos',
|
||||||
|
'https://github.com/wpscanteam/wpscan/issues/1299'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ module WPScan
|
|||||||
|
|
||||||
# @return [ Hash ]
|
# @return [ Hash ]
|
||||||
def references
|
def references
|
||||||
{
|
@references ||= {
|
||||||
url: ['http://codex.wordpress.org/XML-RPC_Pingback_API'],
|
url: ['http://codex.wordpress.org/XML-RPC_Pingback_API'],
|
||||||
metasploit: [
|
metasploit: [
|
||||||
'auxiliary/scanner/http/wordpress_ghost_scanner',
|
'auxiliary/scanner/http/wordpress_ghost_scanner',
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|||||||
s.executables = ['wpscan']
|
s.executables = ['wpscan']
|
||||||
s.require_paths = ['lib']
|
s.require_paths = ['lib']
|
||||||
|
|
||||||
s.add_dependency 'cms_scanner', '~> 0.8.3'
|
s.add_dependency 'cms_scanner', '~> 0.8.4'
|
||||||
|
|
||||||
s.add_development_dependency 'bundler', '>= 1.6'
|
s.add_development_dependency 'bundler', '>= 1.6'
|
||||||
s.add_development_dependency 'memory_profiler', '~> 0.9.13'
|
s.add_development_dependency 'memory_profiler', '~> 0.9.13'
|
||||||
|
|||||||
Reference in New Issue
Block a user