Sha256: cab53087740d85010c76107b6b7e84f27076edbfe559c65486311acfd09f1a72

Contents?: true

Size: 1.27 KB

Versions: 11

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # From the css style
      class CssStyle < CMSScanner::Finders::Finder
        include Finders::WpItems::URLsInHomepage

        def create_theme(slug, style_url, opts)
          Model::Theme.new(
            slug,
            target,
            opts.merge(found_by: found_by, confidence: 70, style_url: style_url)
          )
        end

        def passive(opts = {})
          passive_from_css_href(target.homepage_res, opts) || passive_from_style_code(target.homepage_res, opts)
        end

        def passive_from_css_href(res, opts)
          target.in_scope_uris(res, '//style/@src|//link/@href') do |uri|
            next unless uri.path =~ %r{/themes/([^\/]+)/style.css\z}i

            return create_theme(Regexp.last_match[1], uri.to_s, opts)
          end
          nil
        end

        def passive_from_style_code(res, opts)
          res.html.css('style').each do |tag|
            code = tag.text.to_s
            next if code.empty?

            next unless code =~ %r{#{item_code_pattern('themes')}\\?/style\.css[^"'\( ]*}i

            return create_theme(Regexp.last_match[1], Regexp.last_match[0].strip, opts)
          end
          nil
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
wpscan-3.7.3 app/finders/main_theme/css_style.rb
wpscan-3.7.2 app/finders/main_theme/css_style.rb
wpscan-3.7.1 app/finders/main_theme/css_style.rb
wpscan-3.7.0 app/finders/main_theme/css_style.rb
wpscan-3.6.3 app/finders/main_theme/css_style.rb
wpscan-3.6.2 app/finders/main_theme/css_style.rb
wpscan-3.6.1 app/finders/main_theme/css_style.rb
wpscan-3.6.0 app/finders/main_theme/css_style.rb
wpscan-3.5.5 app/finders/main_theme/css_style.rb
wpscan-3.5.4 app/finders/main_theme/css_style.rb
wpscan-3.5.3 app/finders/main_theme/css_style.rb