rapid7/metasploit-framework

View on GitHub

Showing 22,177 of 22,177 total issues

Method prepend_migrate has 201 lines of code (exceeds 25 allowed). Consider refactoring.
Open

  def prepend_migrate(buf)
    payloadsize = "0x%04x" % buf.length
    procname = datastore['PrependMigrateProc'] || 'rundll32'

    # Prepare instructions to get address of block_api into ebp
Severity: Major
Found in lib/msf/core/payload/windows/prepend_migrate.rb - About 1 day to fix

    Similar blocks of code found in 3 locations. Consider refactoring.
    Open

        des_odd_parity = [
          1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
          16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
          32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
          49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
    Severity: Major
    Found in lib/msf/util/windows_crypto_helpers.rb and 2 other locations - About 1 day to fix
    modules/exploits/windows/fileformat/homm3_h3m.rb on lines 236..301
    modules/exploits/windows/local/ms10_092_schelevator.rb on lines 236..301

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 258.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 3 locations. Consider refactoring.
    Open

        crc32_reverse = [
          0x00000000, 0xDB710641, 0x6D930AC3, 0xB6E20C82,
          0xDB261586, 0x005713C7, 0xB6B51F45, 0x6DC41904,
          0x6D3D2D4D, 0xB64C2B0C, 0x00AE278E, 0xDBDF21CF,
          0xB61B38CB, 0x6D6A3E8A, 0xDB883208, 0x00F93449,
    Severity: Major
    Found in modules/exploits/windows/fileformat/homm3_h3m.rb and 2 other locations - About 1 day to fix
    lib/msf/util/windows_crypto_helpers.rb on lines 15..32
    modules/exploits/windows/local/ms10_092_schelevator.rb on lines 236..301

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 258.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 3 locations. Consider refactoring.
    Open

        bwd_table = [
          0x00000000, 0xDB710641, 0x6D930AC3, 0xB6E20C82,
          0xDB261586, 0x005713C7, 0xB6B51F45, 0x6DC41904,
          0x6D3D2D4D, 0xB64C2B0C, 0x00AE278E, 0xDBDF21CF,
          0xB61B38CB, 0x6D6A3E8A, 0xDB883208, 0x00F93449,
    Severity: Major
    Found in modules/exploits/windows/local/ms10_092_schelevator.rb and 2 other locations - About 1 day to fix
    lib/msf/util/windows_crypto_helpers.rb on lines 15..32
    modules/exploits/windows/fileformat/homm3_h3m.rb on lines 236..301

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 258.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    LOOKUP_ALAW2LIN16 = [
         -5504,   -5248,   -6016,   -5760,   -4480,   -4224,   -4992,
         -4736,   -7552,   -7296,   -8064,   -7808,   -6528,   -6272,
         -7040,   -6784,   -2752,   -2624,   -3008,   -2880,   -2240,
         -2112,   -2496,   -2368,   -3776,   -3648,   -4032,   -3904,
    Severity: Major
    Found in lib/rex/proto/iax2/codecs/g711.rb and 1 other location - About 1 day to fix
    lib/rex/proto/iax2/codecs/g711.rb on lines 763..801

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 258.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    LOOKUP_ULAW2LIN16 = [
        -32124,  -31100,  -30076,  -29052,  -28028,  -27004,  -25980,
        -24956,  -23932,  -22908,  -21884,  -20860,  -19836,  -18812,
        -17788,  -16764,  -15996,  -15484,  -14972,  -14460,  -13948,
        -13436,  -12924,  -12412,  -11900,  -11388,  -10876,  -10364,
    Severity: Major
    Found in lib/rex/proto/iax2/codecs/g711.rb and 1 other location - About 1 day to fix
    lib/rex/proto/iax2/codecs/g711.rb on lines 37..75

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 258.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Method run_host has 200 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      def run_host(ip)
    
        timeout = datastore['TIMEOUT'].to_i
    
        instances = datastore['INSTANCES']
    Severity: Major
    Found in modules/auxiliary/scanner/sap/sap_service_discovery.rb - About 1 day to fix

      Method build_t3_request_object has 200 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

        def build_t3_request_object
          # T3 request serialized data
          # retrieved by watching network traffic
          # This is a proprietary, undocumented protocol
      
      
      Severity: Major
      Found in modules/exploits/multi/misc/weblogic_deserialize_rawobject.rb - About 1 day to fix

        File encrypted_reverse_tcp.rb has 500 lines of code (exceeds 250 allowed). Consider refactoring.
        Open

        require 'rex/peparsey'
        require 'metasploit/framework/compiler/mingw'
        
        module Msf
        
        
        Severity: Minor
        Found in lib/msf/core/payload/windows/encrypted_reverse_tcp.rb - About 1 day to fix

          Similar blocks of code found in 2 locations. Consider refactoring.
          Open

              super(update_info(info,
                'Name'           => 'MS07-029 Microsoft DNS RPC Service extractQuotedChar() Overflow (SMB)',
                'Description'    => %q{
                    This module exploits a stack buffer overflow in the RPC interface
                  of the Microsoft DNS service. The vulnerability is triggered
          Severity: Major
          Found in modules/exploits/windows/smb/ms07_029_msdns_zonename.rb and 1 other location - About 1 day to fix
          modules/exploits/windows/dcerpc/ms07_029_msdns_zonename.rb on lines 12..84

          Duplicated Code

          Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

          Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

          When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

          Tuning

          This issue has a mass of 257.

          We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

          The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

          If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

          See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

          Refactorings

          Further Reading

          Similar blocks of code found in 2 locations. Consider refactoring.
          Open

              super(update_info(info,
                'Name'           => 'MS07-029 Microsoft DNS RPC Service extractQuotedChar() Overflow (TCP)',
                'Description'    => %q{
                    This module exploits a stack buffer overflow in the RPC interface
                  of the Microsoft DNS service. The vulnerability is triggered
          Severity: Major
          Found in modules/exploits/windows/dcerpc/ms07_029_msdns_zonename.rb and 1 other location - About 1 day to fix
          modules/exploits/windows/smb/ms07_029_msdns_zonename.rb on lines 13..88

          Duplicated Code

          Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

          Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

          When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

          Tuning

          This issue has a mass of 257.

          We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

          The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

          If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

          See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

          Refactorings

          Further Reading

          File http_form_field.rb has 499 lines of code (exceeds 250 allowed). Consider refactoring.
          Open

          class MetasploitModule < Msf::Auxiliary
            include Msf::Exploit::Remote::HttpClient
          
            def initialize(info = {})
              super(update_info(info,
          Severity: Minor
          Found in modules/auxiliary/fuzzers/http/http_form_field.rb - About 1 day to fix

            Method enum_instance has 199 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

              def enum_instance(rhost)
                print_status("#{rhost}:#{rport} [SAP] Connecting to SAP Management Console SOAP Interface")
                success = false
                soapenv='http://schemas.xmlsoap.org/soap/envelope/'
                xsi='http://www.w3.org/2001/XMLSchema-instance'
            Severity: Major
            Found in modules/auxiliary/scanner/sap/sap_mgmt_con_instanceproperties.rb - About 7 hrs to fix

              Method build_t3_request_object has 199 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                def build_t3_request_object
                  # T3 request serialized data
                  # retrieved by watching network traffic
                  # This is a proprietary, undocumented protocol
                  data =  '000005c3'                                     # lenght of the packet
              Severity: Major
              Found in modules/exploits/multi/misc/weblogic_deserialize_unicastref.rb - About 7 hrs to fix

                File creds.rb has 497 lines of code (exceeds 250 allowed). Consider refactoring.
                Open

                require 'rexml/document'
                require 'metasploit/framework/password_crackers/hashcat/formatter'
                require 'metasploit/framework/password_crackers/jtr/formatter'
                
                module Msf
                Severity: Minor
                Found in lib/msf/ui/console/command_dispatcher/creds.rb - About 7 hrs to fix

                  Method cmd_nexpose_scan has 198 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                        def cmd_nexpose_scan(*args)
                          opts = Rex::Parser::Arguments.new(
                            '-h' => [ false, 'This help menu'],
                            '-t' => [ true, 'The scan template to use (default:pentest-audit options:full-audit,exhaustive-audit,discovery,aggressive-discovery,dos-audit)'],
                            '-c' => [ true, 'Specify credentials to use against these targets (format is type:user:pass'],
                  Severity: Major
                  Found in plugins/nexpose.rb - About 7 hrs to fix

                    Method enumerate_writable_path_dirs has a Cognitive Complexity of 51 (exceeds 5 allowed). Consider refactoring.
                    Open

                      def enumerate_writable_path_dirs(path_dirs, user_groups, current_user)
                        writable_path_dirs = []
                        perms_we_need = ['(F)', '(M)']
                        print_status('')
                    
                    
                    Severity: Minor
                    Found in modules/exploits/windows/local/srclient_dll_hijacking.rb - About 7 hrs to fix

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Method get_crypto_keys has a Cognitive Complexity of 51 (exceeds 5 allowed). Consider refactoring.
                    Open

                      def get_crypto_keys(log_folder)
                        # Run commands according to the session type
                        if session.type =~ /shell/
                    
                          # Enumerate and retreave files according to privilege level
                    Severity: Minor
                    Found in modules/post/osx/gather/enum_osx.rb - About 7 hrs to fix

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Method run has a Cognitive Complexity of 51 (exceeds 5 allowed). Consider refactoring.
                    Open

                      def run
                        # check for meterpreter and version of ie
                        if (session.type != 'meterpreter') && session.platform !~ (/win/)
                          print_error('This module only works with Windows Meterpreter sessions')
                          return 0
                    Severity: Minor
                    Found in modules/post/windows/gather/enum_ie.rb - About 7 hrs to fix

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Method send_data has a Cognitive Complexity of 51 (exceeds 5 allowed). Consider refactoring.
                    Open

                      def send_data(host,port)
                        self.status = {:write_allowed => true}
                        data_blocks = blockify_file_or_data()
                        if data_blocks.empty?
                          yield "Closing down since there is no data to send." if block_given?
                    Severity: Minor
                    Found in lib/rex/proto/tftp/client.rb - About 7 hrs to fix

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Severity
                    Category
                    Status
                    Source
                    Language