sitecore_scan 0.0.3 → 0.0.4
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/bin/sitecore-scan +8 -10
- data/lib/sitecore_scan.rb +58 -3
- metadata +9 -9
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b678037d9c8815435b9e010914c27478105b0edb7b5d3c894cfb1fccb7cb3107
         | 
| 4 | 
            +
              data.tar.gz: 7da2e224e3427c8e9f8f34b42acc1970e5ccfd3ccfccbd7e27b956e53a1efdf7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 487fb1c72d1adf02654b5b22d887bc0d1774f5521ff299c04dfbf8f57e2ecf819bcc2cc732bef59bad37cf1c026bbe701716432c0d67c793ec2717768aa3ac85
         | 
| 7 | 
            +
              data.tar.gz: ae6bb06f1925ab086b744ea4cd46768028a95af647da39c240cc64a8d59b5bd569044fe338f2a9d2e6f7473622054cdec110d0004a23195dca7ed319a58a2582
         | 
    
        data/bin/sitecore-scan
    CHANGED
    
    | @@ -93,8 +93,7 @@ def scan(url, check: true, insecure: false, verbose: false) | |
| 93 93 |  | 
| 94 94 | 
             
              # Check if the URL is Sitecore
         | 
| 95 95 | 
             
              if check
         | 
| 96 | 
            -
                 | 
| 97 | 
            -
                unless is_sitecore
         | 
| 96 | 
            +
                unless SitecoreScan::detectSitecore(url)
         | 
| 98 97 | 
             
                  puts '- Sitecore not found'
         | 
| 99 98 | 
             
                  exit(1)
         | 
| 100 99 | 
             
                end
         | 
| @@ -106,20 +105,19 @@ def scan(url, check: true, insecure: false, verbose: false) | |
| 106 105 | 
             
              puts "+ Version: #{version}" if version
         | 
| 107 106 |  | 
| 108 107 | 
             
              # Check if Glimpse debugging is enabled
         | 
| 109 | 
            -
               | 
| 110 | 
            -
              puts "+ Glimpse debugging is enabled" if glimpse
         | 
| 108 | 
            +
              puts "+ Glimpse debugging is enabled" if SitecoreScan::glimpseDebugging(url)
         | 
| 111 109 |  | 
| 112 110 | 
             
              # Check if SOAP API is accessible
         | 
| 113 | 
            -
               | 
| 114 | 
            -
             | 
| 111 | 
            +
              puts "+ SOAP API is available" if SitecoreScan::soapApi(url)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
              # Check if MVC Device Simulator allows file disclosure
         | 
| 114 | 
            +
              puts "+ MVC Device Simulator allows file disclosure" if SitecoreScan::mvcDeviceSimulatorFileDisclosure(url)
         | 
| 115 115 |  | 
| 116 116 | 
             
              # Check if Executive Insight Dashboard reporting is accessible
         | 
| 117 | 
            -
              reporting  | 
| 118 | 
            -
              puts "+ Executive Insight Dashboard reporting is available" if reporting
         | 
| 117 | 
            +
              puts "+ Executive Insight Dashboard reporting is available" if SitecoreScan::dashboardReporting(url)
         | 
| 119 118 |  | 
| 120 119 | 
             
              # Check if Telerik Web UI is accessible
         | 
| 121 | 
            -
               | 
| 122 | 
            -
              puts "+ Telerik Web Ui is available" if telerik
         | 
| 120 | 
            +
              puts "+ Telerik Web Ui is available" if SitecoreScan::telerikWebUi(url)
         | 
| 123 121 |  | 
| 124 122 | 
             
              puts "Scan finished at #{Time.now.getutc}"
         | 
| 125 123 | 
             
              puts '-' * 60
         | 
    
        data/lib/sitecore_scan.rb
    CHANGED
    
    | @@ -11,7 +11,7 @@ require 'openssl' | |
| 11 11 | 
             
            require 'stringio'
         | 
| 12 12 |  | 
| 13 13 | 
             
            class SitecoreScan
         | 
| 14 | 
            -
              VERSION = '0.0. | 
| 14 | 
            +
              VERSION = '0.0.4'.freeze
         | 
| 15 15 |  | 
| 16 16 | 
             
              def self.logger
         | 
| 17 17 | 
             
                @logger
         | 
| @@ -30,13 +30,27 @@ class SitecoreScan | |
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              #
         | 
| 33 | 
            -
              # Check if URL is running Sitecore | 
| 33 | 
            +
              # Check if URL is running Sitecore
         | 
| 34 34 | 
             
              #
         | 
| 35 35 | 
             
              # @param [String] URL
         | 
| 36 36 | 
             
              #
         | 
| 37 37 | 
             
              # @return [Boolean]
         | 
| 38 38 | 
             
              #
         | 
| 39 39 | 
             
              def self.detectSitecore(url)
         | 
| 40 | 
            +
                return true if detectSitecoreEditMode(url)
         | 
| 41 | 
            +
                return true if detectSitecoreErrorRedirect(url)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                false
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              #
         | 
| 47 | 
            +
              # Check if URL is running Sitecore using edit mode
         | 
| 48 | 
            +
              #
         | 
| 49 | 
            +
              # @param [String] URL
         | 
| 50 | 
            +
              #
         | 
| 51 | 
            +
              # @return [Boolean]
         | 
| 52 | 
            +
              #
         | 
| 53 | 
            +
              def self.detectSitecoreEditMode(url)
         | 
| 40 54 | 
             
                url += '/' unless url.to_s.end_with? '/'
         | 
| 41 55 | 
             
                res = sendHttpRequest("#{url}?sc_mode=edit")
         | 
| 42 56 |  | 
| @@ -49,6 +63,25 @@ class SitecoreScan | |
| 49 63 | 
             
                false
         | 
| 50 64 | 
             
              end
         | 
| 51 65 |  | 
| 66 | 
            +
              #
         | 
| 67 | 
            +
              # Check if URL is running Sitecore using error redirect
         | 
| 68 | 
            +
              #
         | 
| 69 | 
            +
              # @param [String] URL
         | 
| 70 | 
            +
              #
         | 
| 71 | 
            +
              # @return [Boolean]
         | 
| 72 | 
            +
              #
         | 
| 73 | 
            +
              def self.detectSitecoreErrorRedirect(url)
         | 
| 74 | 
            +
                url += '/' unless url.to_s.end_with? '/'
         | 
| 75 | 
            +
                res = sendHttpRequest("#{url}#{('a'..'z').to_a.shuffle[0,8].join}.aspx")
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                return false unless res
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                return true if res['sitecore-item']
         | 
| 80 | 
            +
                return true if res.code.to_i == 302 && res['location'].to_s.downcase.include?('sitecore/service/notfound.aspx')
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                false
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 52 85 | 
             
              #
         | 
| 53 86 | 
             
              # Retrieve Sitecore version from Login page
         | 
| 54 87 | 
             
              #
         | 
| @@ -109,6 +142,28 @@ class SitecoreScan | |
| 109 142 | 
             
                true
         | 
| 110 143 | 
             
              end
         | 
| 111 144 |  | 
| 145 | 
            +
              #
         | 
| 146 | 
            +
              # Check if MVC Device Simulator allows file disclosure (SC2023-001-568150)
         | 
| 147 | 
            +
              # https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB1002925
         | 
| 148 | 
            +
              # https://blog.assetnote.io/2023/05/10/sitecore-round-two/
         | 
| 149 | 
            +
              #
         | 
| 150 | 
            +
              # @param [String] URL
         | 
| 151 | 
            +
              #
         | 
| 152 | 
            +
              # @return [Boolean]
         | 
| 153 | 
            +
              #
         | 
| 154 | 
            +
              def self.mvcDeviceSimulatorFileDisclosure(url)
         | 
| 155 | 
            +
                url += '/' unless url.to_s.end_with? '/'
         | 
| 156 | 
            +
                res = sendHttpRequest("#{url}api/sitecore/Sitecore.Mvc.DeviceSimulator.Controllers.SimulatorController,Sitecore.Mvc.DeviceSimulator.dll/Preview?previewPath=/App_Data/license.xml")
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                return false unless res
         | 
| 159 | 
            +
                return false unless res.code.to_i == 200
         | 
| 160 | 
            +
                return false unless res.body.to_s.include?('<?xml')
         | 
| 161 | 
            +
                return false unless res.body.to_s.include?('sitecore')
         | 
| 162 | 
            +
                return false unless res.body.to_s.include?('signedlicense')
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                true
         | 
| 165 | 
            +
              end
         | 
| 166 | 
            +
             | 
| 112 167 | 
             
              #
         | 
| 113 168 | 
             
              # Check if Executive Insight Dashboard reporting is accessible (CVE-2021-42237)
         | 
| 114 169 | 
             
              # https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB1000776
         | 
| @@ -123,7 +178,7 @@ class SitecoreScan | |
| 123 178 |  | 
| 124 179 | 
             
                return false unless res
         | 
| 125 180 | 
             
                return false unless res.code.to_i == 200
         | 
| 126 | 
            -
                return false unless res.body.to_s.include? | 
| 181 | 
            +
                return false unless res.body.to_s.include?('Sitecore.Analytics.Reporting')
         | 
| 127 182 |  | 
| 128 183 | 
             
                true
         | 
| 129 184 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sitecore_scan
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Brendan Coles
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-05-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: logger
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '1. | 
| 19 | 
            +
                    version: '1.6'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '1. | 
| 26 | 
            +
                    version: '1.6'
         | 
| 27 27 | 
             
            description: A simple remote scanner for Sitecore CMS
         | 
| 28 28 | 
             
            email: bcoles@gmail.com
         | 
| 29 29 | 
             
            executables:
         | 
| @@ -37,7 +37,7 @@ homepage: https://github.com/bcoles/sitecore_scan | |
| 37 37 | 
             
            licenses:
         | 
| 38 38 | 
             
            - MIT
         | 
| 39 39 | 
             
            metadata: {}
         | 
| 40 | 
            -
            post_install_message: | 
| 40 | 
            +
            post_install_message:
         | 
| 41 41 | 
             
            rdoc_options: []
         | 
| 42 42 | 
             
            require_paths:
         | 
| 43 43 | 
             
            - lib
         | 
| @@ -45,15 +45,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 45 45 | 
             
              requirements:
         | 
| 46 46 | 
             
              - - ">="
         | 
| 47 47 | 
             
                - !ruby/object:Gem::Version
         | 
| 48 | 
            -
                  version: 2. | 
| 48 | 
            +
                  version: 2.5.0
         | 
| 49 49 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
              requirements:
         | 
| 51 51 | 
             
              - - ">="
         | 
| 52 52 | 
             
                - !ruby/object:Gem::Version
         | 
| 53 53 | 
             
                  version: '0'
         | 
| 54 54 | 
             
            requirements: []
         | 
| 55 | 
            -
            rubygems_version: 3.3. | 
| 56 | 
            -
            signing_key: | 
| 55 | 
            +
            rubygems_version: 3.3.26
         | 
| 56 | 
            +
            signing_key:
         | 
| 57 57 | 
             
            specification_version: 4
         | 
| 58 58 | 
             
            summary: Sitecore scanner
         | 
| 59 59 | 
             
            test_files: []
         |