wpscan 3.8.10 → 3.8.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/controllers/vuln_api.rb +5 -2
- data/app/views/cli/vuln_api/status.erb +3 -3
- data/app/views/json/vuln_api/status.erb +1 -1
- data/lib/wpscan/browser.rb +1 -1
- data/lib/wpscan/db/vuln_api.rb +5 -3
- data/lib/wpscan/target/platform/wordpress.rb +6 -8
- data/lib/wpscan/typhoeus/response.rb +2 -1
- data/lib/wpscan/version.rb +1 -1
- metadata +16 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 299c8c4ad7fc7a8e9329a891e57a6d13a2872ca0a977f49fe2070e71033e48a1
         | 
| 4 | 
            +
              data.tar.gz: dcf67f4cc1770e7f97a201cc0216c7aa7fcf0d3d239834f597a822bdb30e373b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 57c0d2f83d1e6a9a33a79aae80bc0a6ee96ce938eb562db811ca55920607fbba71859f6f3aba8de97a9b900b853edb9bcd02672a14a4948301f0a083b835a13e
         | 
| 7 | 
            +
              data.tar.gz: 433b89aab18df530527092bb3bb499fdf8bfcbf3043a9369744ea85aa59bb8709bc0d624ed20451103138b0e2bd86c78f8c18476378899172f450be1c2968b6d
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            <p align="center">
         | 
| 2 | 
            -
              <a href="https://wpscan. | 
| 2 | 
            +
              <a href="https://wpscan.com/">
         | 
| 3 3 | 
             
                <img src="https://raw.githubusercontent.com/wpscanteam/wpscan/gh-pages/images/wpscan_logo.png" alt="WPScan logo">
         | 
| 4 4 | 
             
              </a>
         | 
| 5 5 | 
             
            </p>
         | 
| @@ -176,7 +176,7 @@ Example cases which do not require a commercial license, and thus fall under the | |
| 176 176 | 
             
            - Using WPScan to test your own systems.
         | 
| 177 177 | 
             
            - Any non-commercial use of WPScan.
         | 
| 178 178 |  | 
| 179 | 
            -
            If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us -  | 
| 179 | 
            +
            If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.
         | 
| 180 180 |  | 
| 181 181 | 
             
            Free-use Terms and Conditions;
         | 
| 182 182 |  | 
    
        data/app/controllers/vuln_api.rb
    CHANGED
    
    | @@ -8,7 +8,10 @@ module WPScan | |
| 8 8 |  | 
| 9 9 | 
             
                  def cli_options
         | 
| 10 10 | 
             
                    [
         | 
| 11 | 
            -
                      OptString.new( | 
| 11 | 
            +
                      OptString.new(
         | 
| 12 | 
            +
                        ['--api-token TOKEN',
         | 
| 13 | 
            +
                         'The WPScan API Token to display vulnerability data, available at https://wpscan.com/profile']
         | 
| 14 | 
            +
                      )
         | 
| 12 15 | 
             
                    ]
         | 
| 13 16 | 
             
                  end
         | 
| 14 17 |  | 
| @@ -19,7 +22,7 @@ module WPScan | |
| 19 22 |  | 
| 20 23 | 
             
                    api_status = DB::VulnApi.status
         | 
| 21 24 |  | 
| 22 | 
            -
                    raise Error::InvalidApiToken if api_status[' | 
| 25 | 
            +
                    raise Error::InvalidApiToken if api_status['status'] == 'forbidden'
         | 
| 23 26 | 
             
                    raise Error::ApiLimitReached if api_status['requests_remaining'] == 0
         | 
| 24 27 | 
             
                    raise api_status['http_error'] if api_status['http_error']
         | 
| 25 28 | 
             
                  end
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            <% unless @status.empty? -%>
         | 
| 2 2 | 
             
            <% if @status['http_error'] -%>
         | 
| 3 | 
            -
            <%= critical_icon %>  | 
| 3 | 
            +
            <%= critical_icon %> WPScan DB API, <%= @status['http_error'].to_s %>
         | 
| 4 4 | 
             
            <% else -%>
         | 
| 5 | 
            -
            <%= info_icon %>  | 
| 5 | 
            +
            <%= info_icon %> WPScan DB API OK
         | 
| 6 6 | 
             
             | Plan: <%= @status['plan'] %>
         | 
| 7 7 | 
             
             | Requests Done (during the scan): <%= @api_requests %>
         | 
| 8 8 | 
             
             | Requests Remaining: <%= @status['requests_remaining'] %>
         | 
| 9 9 | 
             
            <% end -%>
         | 
| 10 10 | 
             
            <% else -%>
         | 
| 11 | 
            -
            <%= warning_icon %> No  | 
| 11 | 
            +
            <%= warning_icon %> No WPScan API Token given, as a result vulnerability data has not been output.
         | 
| 12 12 | 
             
            <%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpscan.com/register
         | 
| 13 13 | 
             
            <% end -%>
         | 
| @@ -8,6 +8,6 @@ | |
| 8 8 | 
             
            "requests_remaining": <%= @status['requests_remaining'].to_json %>
         | 
| 9 9 | 
             
            <% end -%>
         | 
| 10 10 | 
             
            <% else -%>
         | 
| 11 | 
            -
            "error": "No  | 
| 11 | 
            +
            "error": "No WPScan API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 50 daily requests by registering at https://wpscan.com/register"
         | 
| 12 12 | 
             
            <% end -%>
         | 
| 13 13 | 
             
            },
         | 
    
        data/lib/wpscan/browser.rb
    CHANGED
    
    
    
        data/lib/wpscan/db/vuln_api.rb
    CHANGED
    
    | @@ -4,7 +4,7 @@ module WPScan | |
| 4 4 | 
             
              module DB
         | 
| 5 5 | 
             
                # WPVulnDB API
         | 
| 6 6 | 
             
                class VulnApi
         | 
| 7 | 
            -
                  NON_ERROR_CODES = [200,  | 
| 7 | 
            +
                  NON_ERROR_CODES = [200, 403].freeze
         | 
| 8 8 |  | 
| 9 9 | 
             
                  class << self
         | 
| 10 10 | 
             
                    attr_accessor :token
         | 
| @@ -26,7 +26,7 @@ module WPScan | |
| 26 26 | 
             
                    # Typhoeus.get is used rather than Browser.get to avoid merging irrelevant params from the CLI
         | 
| 27 27 | 
             
                    res = Typhoeus.get(uri.join(path), default_request_params.merge(params))
         | 
| 28 28 |  | 
| 29 | 
            -
                    return {} if res.code == 404  | 
| 29 | 
            +
                    return {} if res.code == 404 || res.code == 429
         | 
| 30 30 | 
             
                    return JSON.parse(res.body) if NON_ERROR_CODES.include?(res.code)
         | 
| 31 31 |  | 
| 32 32 | 
             
                    raise Error::HTTP, res
         | 
| @@ -34,6 +34,8 @@ module WPScan | |
| 34 34 | 
             
                    retries ||= 0
         | 
| 35 35 |  | 
| 36 36 | 
             
                    if (retries += 1) <= 3
         | 
| 37 | 
            +
                      @default_request_params[:headers]['X-Retry'] = retries
         | 
| 38 | 
            +
             | 
| 37 39 | 
             
                      sleep(1)
         | 
| 38 40 | 
             
                      retry
         | 
| 39 41 | 
             
                    end
         | 
| @@ -68,7 +70,7 @@ module WPScan | |
| 68 70 | 
             
                  # @return [ Hash ]
         | 
| 69 71 | 
             
                  # @note Those params can not be overriden by CLI options
         | 
| 70 72 | 
             
                  def self.default_request_params
         | 
| 71 | 
            -
                    Browser.instance.default_connect_request_params.merge(
         | 
| 73 | 
            +
                    @default_request_params ||= Browser.instance.default_connect_request_params.merge(
         | 
| 72 74 | 
             
                      headers: {
         | 
| 73 75 | 
             
                        'User-Agent' => Browser.instance.default_user_agent,
         | 
| 74 76 | 
             
                        'Authorization' => "Token token=#{token}"
         | 
| @@ -11,9 +11,10 @@ module WPScan | |
| 11 11 | 
             
                  module WordPress
         | 
| 12 12 | 
             
                    include CMSScanner::Target::Platform::PHP
         | 
| 13 13 |  | 
| 14 | 
            -
                    WORDPRESS_PATTERN | 
| 15 | 
            -
                     | 
| 16 | 
            -
                     | 
| 14 | 
            +
                    WORDPRESS_PATTERN        = %r{/(?:(?:wp-content/(?:themes|(?:mu-)?plugins|uploads))|wp-includes)/}i.freeze
         | 
| 15 | 
            +
                    WORDPRESS_HOSTED_PATTERN = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
         | 
| 16 | 
            +
                    WP_JSON_OEMBED_PATTERN   = %r{/wp-json/oembed/}i.freeze
         | 
| 17 | 
            +
                    WP_ADMIN_AJAX_PATTERN    = %r{\\?/wp-admin\\?/admin-ajax\.php}i.freeze
         | 
| 17 18 |  | 
| 18 19 | 
             
                    # These methods are used in the associated interesting_findings finders
         | 
| 19 20 | 
             
                    # to keep the boolean state of the finding rather than re-check the whole thing again
         | 
| @@ -103,11 +104,8 @@ module WPScan | |
| 103 104 | 
             
                      return true if /\.wordpress\.com$/i.match?(uri.host)
         | 
| 104 105 |  | 
| 105 106 | 
             
                      unless content_dir
         | 
| 106 | 
            -
                         | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
                        uris_from_page(homepage_res, xpath) do |uri|
         | 
| 110 | 
            -
                          return true if uri.to_s.match?(pattern)
         | 
| 107 | 
            +
                        uris_from_page(homepage_res, '(//@href|//@src)[contains(., "wp.com")]') do |uri|
         | 
| 108 | 
            +
                          return true if uri.to_s.match?(WORDPRESS_HOSTED_PATTERN)
         | 
| 111 109 | 
             
                        end
         | 
| 112 110 | 
             
                      end
         | 
| 113 111 |  | 
| @@ -7,7 +7,8 @@ module Typhoeus | |
| 7 7 | 
             
                #
         | 
| 8 8 | 
             
                # @return [ Boolean ]
         | 
| 9 9 | 
             
                def from_vuln_api?
         | 
| 10 | 
            -
                  effective_url.start_with?(WPScan::DB::VulnApi.uri.to_s) && | 
| 10 | 
            +
                  effective_url.start_with?(WPScan::DB::VulnApi.uri.to_s) &&
         | 
| 11 | 
            +
                    !effective_url.start_with?(WPScan::DB::VulnApi.uri.join('status').to_s)
         | 
| 11 12 | 
             
                end
         | 
| 12 13 | 
             
              end
         | 
| 13 14 | 
             
            end
         | 
    
        data/lib/wpscan/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: wpscan
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.8. | 
| 4 | 
            +
              version: 3.8.11
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - WPScanTeam
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-12-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: cms_scanner
         | 
| @@ -44,14 +44,14 @@ dependencies: | |
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 0. | 
| 47 | 
            +
                    version: 1.0.0
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 0. | 
| 54 | 
            +
                    version: 1.0.0
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: rake
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -72,14 +72,14 @@ dependencies: | |
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 3. | 
| 75 | 
            +
                    version: 3.10.0
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 3. | 
| 82 | 
            +
                    version: 3.10.0
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: rspec-its
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -100,42 +100,42 @@ dependencies: | |
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: 1. | 
| 103 | 
            +
                    version: 1.6.0
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: 1. | 
| 110 | 
            +
                    version: 1.6.0
         | 
| 111 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 112 | 
             
              name: rubocop-performance
         | 
| 113 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - "~>"
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: 1. | 
| 117 | 
            +
                    version: 1.9.0
         | 
| 118 118 | 
             
              type: :development
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 122 | 
             
                - - "~>"
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: 1. | 
| 124 | 
            +
                    version: 1.9.0
         | 
| 125 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 126 | 
             
              name: simplecov
         | 
| 127 127 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 128 | 
             
                requirements:
         | 
| 129 129 | 
             
                - - "~>"
         | 
| 130 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: 0. | 
| 131 | 
            +
                    version: 0.20.0
         | 
| 132 132 | 
             
              type: :development
         | 
| 133 133 | 
             
              prerelease: false
         | 
| 134 134 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 135 | 
             
                requirements:
         | 
| 136 136 | 
             
                - - "~>"
         | 
| 137 137 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version: 0. | 
| 138 | 
            +
                    version: 0.20.0
         | 
| 139 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 140 | 
             
              name: simplecov-lcov
         | 
| 141 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -170,17 +170,17 @@ dependencies: | |
| 170 170 | 
             
                requirements:
         | 
| 171 171 | 
             
                - - "~>"
         | 
| 172 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 173 | 
            -
                    version: 3. | 
| 173 | 
            +
                    version: 3.10.0
         | 
| 174 174 | 
             
              type: :development
         | 
| 175 175 | 
             
              prerelease: false
         | 
| 176 176 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 177 177 | 
             
                requirements:
         | 
| 178 178 | 
             
                - - "~>"
         | 
| 179 179 | 
             
                  - !ruby/object:Gem::Version
         | 
| 180 | 
            -
                    version: 3. | 
| 180 | 
            +
                    version: 3.10.0
         | 
| 181 181 | 
             
            description: WPScan is a black box WordPress vulnerability scanner.
         | 
| 182 182 | 
             
            email:
         | 
| 183 | 
            -
            -  | 
| 183 | 
            +
            - contact@wpscan.com
         | 
| 184 184 | 
             
            executables:
         | 
| 185 185 | 
             
            - wpscan
         | 
| 186 186 | 
             
            extensions: []
         | 
| @@ -377,7 +377,7 @@ files: | |
| 377 377 | 
             
            - lib/wpscan/version.rb
         | 
| 378 378 | 
             
            - lib/wpscan/vulnerability.rb
         | 
| 379 379 | 
             
            - lib/wpscan/vulnerable.rb
         | 
| 380 | 
            -
            homepage: https://wpscan. | 
| 380 | 
            +
            homepage: https://wpscan.com/wordpress-security-scanner
         | 
| 381 381 | 
             
            licenses:
         | 
| 382 382 | 
             
            - Dual
         | 
| 383 383 | 
             
            metadata: {}
         |