Merge branch 'master' of github.com:wpscanteam/wpscan
This commit is contained in:
23
CHANGELOG.md
23
CHANGELOG.md
@@ -1,6 +1,27 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
## Master
|
## Master
|
||||||
[Work in progress](https://github.com/wpscanteam/wpscan/compare/2.9.2...master)
|
[Work in progress](https://github.com/wpscanteam/wpscan/compare/2.9.3...master)
|
||||||
|
|
||||||
|
## Version 2.9.3
|
||||||
|
Released: 2017-07-19
|
||||||
|
|
||||||
|
* Updated dependencies and required ruby version
|
||||||
|
* Made some changes so wpscan works in ruby 2.4
|
||||||
|
* Added a Gemfile.lock to lock all dependencies
|
||||||
|
* You can now pass a wordlist from stdin via "--wordlist -"
|
||||||
|
* Improved version detection regexes
|
||||||
|
* Added an optional paramter to --log to specify a filename
|
||||||
|
|
||||||
|
WPScan Database Statistics:
|
||||||
|
* Total tracked wordpresses: 251
|
||||||
|
* Total tracked plugins: 68818
|
||||||
|
* Total tracked themes: 15132
|
||||||
|
* Total vulnerable wordpresses: 243
|
||||||
|
* Total vulnerable plugins: 1527
|
||||||
|
* Total vulnerable themes: 280
|
||||||
|
* Total wordpress vulnerabilities: 5263
|
||||||
|
* Total plugin vulnerabilities: 2406
|
||||||
|
* Total theme vulnerabilities: 349
|
||||||
|
|
||||||
## Version 2.9.2
|
## Version 2.9.2
|
||||||
Released: 2016-11-15
|
Released: 2016-11-15
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ Mount a local wordlist to the docker container and start a bruteforce attack for
|
|||||||
docker run -it --rm -v ~/wordlists:/wordlists wpscanteam/wpscan --url https://yourblog.com --wordlist /wordlists/crackstation.txt --username admin
|
docker run -it --rm -v ~/wordlists:/wordlists wpscanteam/wpscan --url https://yourblog.com --wordlist /wordlists/crackstation.txt --username admin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
(This mounts the host directory `~/wordlists` to the container in the path `/wordlists`)
|
||||||
|
|
||||||
Use logfile option
|
Use logfile option
|
||||||
```
|
```
|
||||||
# the file must exist prior to starting the container, otherwise docker will create a directory with the filename
|
# the file must exist prior to starting the container, otherwise docker will create a directory with the filename
|
||||||
@@ -129,8 +131,6 @@ touch ~/FILENAME
|
|||||||
docker run -it --rm -v ~/FILENAME:/wpscan/output.txt wpscanteam/wpscan --url https://yourblog.com --log /wpscan/output.txt
|
docker run -it --rm -v ~/FILENAME:/wpscan/output.txt wpscanteam/wpscan --url https://yourblog.com --log /wpscan/output.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
(This mounts the host directory `~/wordlists` to the container in the path `/wordlists`)
|
|
||||||
|
|
||||||
Published on https://hub.docker.com/r/wpscanteam/wpscan/
|
Published on https://hub.docker.com/r/wpscanteam/wpscan/
|
||||||
|
|
||||||
# Manual install
|
# Manual install
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ LAST_UPDATE_FILE = File.join(DATA_DIR, '.last_update')
|
|||||||
|
|
||||||
MIN_RUBY_VERSION = '2.1.9'
|
MIN_RUBY_VERSION = '2.1.9'
|
||||||
|
|
||||||
WPSCAN_VERSION = '2.9.2'
|
WPSCAN_VERSION = '2.9.3'
|
||||||
|
|
||||||
$LOAD_PATH.unshift(LIB_DIR)
|
$LOAD_PATH.unshift(LIB_DIR)
|
||||||
$LOAD_PATH.unshift(WPSCAN_LIB_DIR)
|
$LOAD_PATH.unshift(WPSCAN_LIB_DIR)
|
||||||
|
|||||||
@@ -155,6 +155,21 @@ class WpTarget < WebSite
|
|||||||
resp.code == 200 && resp.body[%r{by interconnect}i]
|
resp.code == 200 && resp.body[%r{by interconnect}i]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Script used to recover locked out admin users
|
||||||
|
# http://yoast.com/emergency-wordpress-access/
|
||||||
|
# https://codex.wordpress.org/User:MichaelH/Orphaned_Plugins_needing_Adoption/Emergency
|
||||||
|
#
|
||||||
|
# @return [ String ]
|
||||||
|
def emergency_url
|
||||||
|
@uri.merge('emergency.php').to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
# @return [ Boolean ]
|
||||||
|
def emergency_exists?
|
||||||
|
resp = Browser.get(emergency_url)
|
||||||
|
resp.code == 200 && resp.body[%r{password}i]
|
||||||
|
end
|
||||||
|
|
||||||
def upload_directory_listing_enabled?
|
def upload_directory_listing_enabled?
|
||||||
directory_listing_enabled?(upload_dir_url)
|
directory_listing_enabled?(upload_dir_url)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -192,4 +192,27 @@ describe WpTarget do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#emergency_url' do
|
||||||
|
it 'returns the correct url' do
|
||||||
|
expect(wp_target.emergency_url).to eq 'http://example.localhost/emergency.php'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#emergency_exists?' do
|
||||||
|
it 'returns true' do
|
||||||
|
stub_request(:any, wp_target.emergency_url).to_return(status: 200, body: 'enter your password here')
|
||||||
|
expect(wp_target.emergency_exists?).to be_truthy
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns false' do
|
||||||
|
stub_request(:any, wp_target.emergency_url).to_return(status: 500)
|
||||||
|
expect(wp_target.emergency_exists?).to be_falsey
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns false' do
|
||||||
|
stub_request(:any, wp_target.emergency_url).to_return(status: 500, body: 'enter your password here')
|
||||||
|
expect(wp_target.emergency_exists?).to be_falsey
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -226,6 +226,10 @@ def main
|
|||||||
puts critical("searchreplacedb2.php has been found in: '#{wp_target.search_replace_db_2_url}'")
|
puts critical("searchreplacedb2.php has been found in: '#{wp_target.search_replace_db_2_url}'")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if wp_target.emergency_exists?
|
||||||
|
puts critical("emergency.php has been found in: '#{wp_target.emergency_url}'")
|
||||||
|
end
|
||||||
|
|
||||||
wp_target.interesting_headers.each do |header|
|
wp_target.interesting_headers.each do |header|
|
||||||
output = info('Interesting header: ')
|
output = info('Interesting header: ')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user