Bugs Fixed
- PR 13238 - Fixed a bug in the
bind_named_pipe
handler where Metasploit would unexpectedly quit due to a call toexit
instead ofThread.exit
. This fix ensures that only the threads associated with the bind listener are closed, rather than Metasploit itself. - PR 13783 - Fixed a bug related to recent cryptography changes, where Java Meterpreter payloads may not have access to 256-bit encryption. This fix allows Meterpreter running in older Java environments to use AES-128-CBC if 256-bit encryption is not available.
- PR 13894 - We unlocked the bcrypt version, which had been previously locked due to compilation issues on ARM (see PR 12148). Unfortunately, newer releases of bcrypt still fail on BSD systems. The issue is known, and unlocking the version will pull in the correct fix whenever bcrypt lands one.
- PR 13897 - Fixed a bug with the closing and removal of mountpoints in
filesystem.rb
. Previously, we failed to return the handle or to close the mountpoint properly. - PR 13936 - Fixed a user-reported regression, now providing a detailed error message when a module is run with no selected payload instead of a generic error message.
- PR 13939 - Fixed a very extreme edge-case bug where it is possible (but unlikely) a race condition occurs during a socket read, and the data sent to the postgres parser is of nil value. This fix verifies the data is not nil before attempting to parse the data.
- PR 13949 - Fixed a bug within DBManager::Note's
report_note()
method that limited users to:insert
update mode only. Users should now be able to correctly choose any of the:insert
,:unique
or:unique_data
modes. - PR 13953 - Fixed an unexpected error when running DNS enumeration via
auxiliary/gather/enum_dns
, where a bad type check was causing an exception to be raised and a stack trace to be printed. - PR 13958 - Updated the
auxiliary/admin/dns/dyn_dns_update
module to properly identify that a record is missing when a valid DNS response is returned with no answers. - PR 13965 - Fixed a stack trace condition users would encounter when running the gather network modules with no database connected. Updated behavior is to print the output if no database is connected.
- PR 13975 - Fixed the DNS enumeration library so that
auxiliary/gather/enum_dns
will not display a stack trace when it receives a connection reset message from a DNS server. Additional checks were also added to the DNS enumeration module to handle errors in the event that the library does not handle them correctly.
Enhancements and Features
- Pro: MS-5959 - We updated Pro's HTTP gateway services.
- PR 13191 - Updated
tools/dev/check_external_scripts.rb
to include JohnTheRipper, SQLMap UDF, and SharpHound.ps1 related files, providing assurance that those related libraries and configuration files are kept up to date. - PR 13194 - Improved and cleaned up the
post/windows/gather/bloodhound
module, including newEncryptZip
andNoSaveCache
module options. Also updated to SharpHound v3. - PR 13395 - Updated the TLV protocol used by Meterpreter to use numeric identifiers for commands instead of string values. This makes the traffic (and certain generated binaries) less conspicuous by removing strings that are obviously associated with Meterpreter such as
stdapi_fs_file_copy
,core_migrate
andmimikatz_custom_command
. NOTE: older payloads are incompatible with this change and users should take care to not upgrade to this version during active operations lest those incompatible sessions and payloads become unresponsive. - PR 13400 - Updated transmission of the RSA key used to negotiate TLV encryption for Meterpreter to use the binary DER format instead of the text-based PEM format. This makes the key smaller, easier to process, and removes the static "BEGIN PUBLIC KEY" string.
- PR 13417 - Added SMB v3 support for client operations to the Metasploit Framework. Modules which already used the new SMB client will now be capable of connecting to servers with all three SMB v3 dialects (3.0, 3.0.2, 3.1.1). In cases where an SMB 3.x dialect is negotiated, the default behavior will be to encrypt the communications to the server (users can disable this by setting
SMB::AlwaysEncrypt
tofalse
). - PR 13432 - Added TLV encryption support to the Python Meterpreter, allowing it to securely communicate with Metasploit Framework.
- PR 13476 - Updated the Reflective DLL injection capabilities used by Metasploit for payloads and exploits to resolve functions by either ordinal or name. This allows the framework to take advantage of recent payload updates that remove string names and instead resolve the necessary values by ordinal. The framework change are backwards compatible with Reflective DLLs that use the standard
ReflectiveLoader
name. - PR 13529 - Removed the Mimikatz Meterpreter extension in favor of the newer Kiwi extension. The
mimikatz
extension name is currently an alias for Kiwi that will print a warning message for period of time to allow users to smoothly transition to the new workflow. Thepost/windows/gather/credentials/sso
module was also updated to use Kiwi instead of Mimikatz. - PR 13764 - Improved the
auxiliary/scanner/smb/smb_version
scanning module to report the following target information (additional to the target OS, which it currently reports): supported SMB versions, preferred dialect of SMB, SMB 3.1.1 encryption and compression capabilities, server's GUID value, and how long the server has been online. With this update, theauxiliary/scanner/smb/smb1
andauxiliary/scanner/smb/smb2
modules were deprecated in favor ofauxiliary/scanner/smb/smb_version
. - PR 13778 - Added conditions for module options, improving the user experience by omitting options from the help output which are not used/relevant for a particular module configuration.
- PR 13812 - Improved PsExec support by adding an
ARCH_CMD
target to theexploit/windows/smb/psexec
module and deprecatingauxiliary/admin/smb/psexec_command
. - PR 13831 - Updated Metasploit's dependency on Rails from version 4.2.6 to 5.2
- PR 13832 - Improved Metasploit-generated x86 and x64 native Windows payloads by adding polymorphic qualities without changing the size or requiring that the payloads be self modifying.
- PR 13833 - Added initial 'wrapped tables' support to Metasploit, improving column text appearance. This functionality is currently hidden behind an opt-in feature flag, allowing for the functionality to be released and tested without breaking existing user's workflows. The steps for enabling this feature can be seen within the
help features
command. - PR 13903 - Updated the OpenVAS importer to allow importing vulnerabilities reported in an OpenVAS scan which do not have a CVE or BID assigned to them. Previously, OpenVAS-reported vulnerabilities lacking a reference were skipped by the importer logic.
- PR 13957 - Updated the
auxiliary/admin/dns/dyn_dns_update
module to allow the remote port to be specified, enabling this module to target DNS servers which run on non-standard ports. - PR 13969 - Improved the scanner library code in Framework so that multi-threaded scanner operations won't block progress waiting on the slowest thread. Previously, the scanner library code would wait for all threads to complete before spawning more threads.
- PR 13988 - Improved the Framework reload-changed-files logic to skip RSpec test files. Previously, commands like
reload_lib -a
would return an error attempting to load these test files.
New Modules
- PR 13517 - New module
exploits/windows/fileformat/documalis_pdf_editor_and_scanner
exploits a stack based buffer overflow inDocumalis Free PDF Editor
andDocumalis Free PDF Scanner
when processing PDF files containing an embedded JPEG image. Successful exploitation will result in arbitrary code execution as the user running the affected software. - PR 13844 - New module
post/linux/gather/enum_containers
detects if there are any container platforms (runnable by the current user) on the target machine and lists all actively running containers. This module currently supports Docker, LXC and RKT, though more platforms may be added in the future. - PR 13860 - New modules
post/networking/gather/enum_mikrotik
andauxiliary/admin/networking/mikrotik_config
allow for gathering+processing Microtik device and configuration information, the former running on-device and the latter for offline config processing. The Framework library and tests were also updated to for Microtik support. - PR 13875 - New module
exploits/windows/nimsoft/nimcontroller_bof
achieves remote code execution by exploiting an unauthenticated, remotely-exploitable stack buffer overflow in CA Infrastructure Management monitoring agents prior to 9.20. The relevant vulnerabilities are CVE-2020-8010 and CVE-2020-8012. - PR 13904 - New module
exploits/linux/local/docker_privileged_container_escape
provides a Docker container escape which obtains root on the host machine from a privileged docker container by abusing the Linux cgroup "notification on release" feature. - PR 13959 - New login scanner module
auxiliary/scanner/http/jupyter_login
identifies if target Jupyter Lab/Notebook servers require authentication or not. For those targets which do require authentication, this module can also attempt to brute force the password. - PR 13970 - New module
exploits/multi/http/vbulletin_widget_template_rce
gains unauthenticated remote code execution on vulnerable vBulletin targets (identified as CVE-2020-7373). Upon receiving a specially-crafted HTTP request from this module, a vulnerable target will allow arbitrary PHP code execution within the context of the application server (a non-root account).