1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-05-06 16:09:38 +02:00

232 Commits

Author SHA1 Message Date
OJ
e9b7ec97c0 Implement support for ssl cert verify toggling
Querying of the status of SSL cert verification is now possible. This commit allows for this to be enabled and disabled on the fly.
2015-04-06 14:42:38 +10:00
OJ
33d7c55429 Land : short file names, file list fixes 2015-03-19 13:03:27 +10:00
OJ
c93ba9608c Fix bad POSIX support for stageless meterpreter
* Make sure POSIX has the new extension command enumeration function.
* Add support for deinit of extensions.
* Make sure extensions are tracked like they in Windows.
* Fix up a few export definitions.
* Stop using strncpy_s in POSIX code.
2015-03-19 11:07:22 +10:00
Brent Cook
eba69cf20e add short name support to filesystem listing.
Also, fix path builder order for stat.
2015-03-18 16:05:30 -05:00
OJ
85783773d5 Land : filesystem refactor and initial unicode support 2015-03-18 18:01:05 +10:00
Brent Cook
e8318f8c5b correct various issues listing files
* bury common _snprintf that snuck in while testing the Windows version back
   into the platform-specific code.
 * remove now-unneeded separator defines
 * don't free a stack variable on windows
2015-03-18 02:11:13 -05:00
Brent Cook
8944ca5156 modify fs_getwd so it allocates the path 2015-03-17 15:28:27 -05:00
Brent Cook
95e102a90c cast size_t on read/write to proper result for the TLV 2015-03-17 15:27:48 -05:00
Brent Cook
7c8b723c15 convert windows filesystem operations to unicode 2015-03-17 14:32:20 -05:00
Brent Cook
f0eac5877a Refactor filesystem operations
Separate the stdapi handling code from the OS-dependent code. This makes
testing and maintaining the code easier.

This also happens to fix a number of bugs as a side-effect, because it is
clearer what is happening now.
2015-03-17 14:32:20 -05:00
OJ
0393927159 Add extension names, enuemrators, etc
This commit contains a bunch of code tidying (formatting, spaces, naming, etc) as well as new exports for each of the modules so that the extension can be identified. The plan is for the loader to know which modules are loaded so that when stageless meterpreter fires up MSF can query the existing extensions and load the appropriate functionality on the client side.
2015-03-09 21:28:27 +10:00
Brent Cook
38c9460ba4 enumerate all processes even if we cannot read the executable type 2015-02-12 10:54:44 -06:00
William Vu
eb3b163951 Add arch to Linux ps
Uses /proc/<PID>/exe and e_ident[EI_CLASS].
2015-02-12 08:15:58 -06:00
Brent Cook
6299e2de5b handle zero-byte reads and writes gracefully
Otherwise, doing an empty file open, like:

  ::File.open(local_file_name, "")

or write_file("meterpreter-test", "") in test/modules/post/test/file.rb
fails

Before:
```
$ touch hello
$ ./msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.56.1
lhost => 192.168.56.1
msf exploit(handler) > run

[*] Started reverse handler on 192.168.56.1:4444
[*] Starting the payload handler...
[*] Sending stage (787456 bytes) to 192.168.56.1
[*] Meterpreter session 1 opened (192.168.56.1:4444 ->
192.168.56.1:55621) at 2015-01-27 11:23:09 -0600

meterpreter > upload hello
[-] Error running command upload: Errno::ENOENT No such file or
directory @ rb_file_s_stat - hello
meterpreter > upload hello
[*] uploading  : hello -> hello
[-] core_channel_write: Operation failed: The parameter is incorrect.
```

After:
```
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.56.1
lhost => 192.168.56.1
msf exploit(handler) > run

[*] Started reverse handler on 192.168.56.1:4444
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 192.168.56.10
[*] Meterpreter session 1 opened (192.168.56.1:4444 ->
192.168.56.10:49833) at 2015-01-27 11:26:03 -0600

meterpreter > upload hello
[*] uploading  : hello -> hello
[*] uploaded   : hello -> hello
```
2015-01-27 11:24:21 -06:00
Tod Beardsley
74cb136099 Land , add direct access reg methods 2015-01-07 14:56:12 -06:00
Tod Beardsley
43ce54e6af Undo the 755 mode change 2015-01-07 14:32:57 -06:00
jvazquez-r7
22975bd716 Require getsid only on windows 2015-01-01 19:04:10 -06:00
Brent Cook
0f2dcf50d0 add direct access registry methods
This adds registry access methods that do an atomic open/<action>/close on
registry keys. They improve efficiency and safety, since we're not passing
HKEY's back and forth to enumerate or read registry keys. This fits the common
use pattern in MSF better anyway.
2014-12-16 15:31:11 -06:00
Brent Cook
405d55f8c9 invert error check for POSIX filesytem functions
Fixes 
2014-12-16 15:11:27 -06:00
OJ
4a88e93496 Add the getsid command
Added support for a the getsid command so that it's easy to
determine the SID of the current user. This will be useful for
a number of different use cases.
2014-11-07 10:36:36 +10:00
jvazquez-r7
5a58d88e3a Return errno when fopen fails 2014-07-08 12:12:45 -05:00
William Vu
c4e8e007a1 Land , IMAGE_BASE TLV truncated pointer fix 2014-07-07 18:11:55 -05:00
jvazquez-r7
32564013bc Fix strncpy usage on linux fs_expand_path 2014-07-07 16:04:59 -05:00
OJ
f6dcee657f Change IMAGE_BASE tlv to QWORD value 2014-07-07 17:16:40 +10:00
OJ
6b0637e45c Updated various types from UINT to QWORD
The goal is to avoid pointer truncation where possible so this commit
changes parameter types to qword where it makes the most sense. This
includes all handles (event, process, thread, registry), addresses
and generic parameters.
2014-06-04 20:53:44 +10:00
OJ
4043a6ff2b Update memory alloc to use QWORD types
DWORD was being used, resulting in x64 being unhappy thanks to
pointer truncation. This fixes the problem.
2014-06-01 21:26:09 +10:00
OJ
063d370e86 Change thread creation to support x86->x64
The create thread functionality would work in all cases except where
the thread was being created in an x64 process from an x86 process.

This commit adds support for this by reusing the wow64 injection code
in this case.
2014-03-10 11:37:43 +10:00
OJ
f74962cf2f Reinstate stack size parameter
Previous commits removed the stack size parameter from the remote thread
creation function call. This caused issues in systems prior to Vista/2k8.

This fix puts that value back in and now everything is honky dory.

Tested on 2k/XP/2k3/Vista/7/2k8
2014-02-12 13:27:41 +10:00
OJ
633851be56 Updated other uses of CreateRemoteThread
Make use of the new create_remote_thread function so that it
is used by other areas of the code, including migration.
2014-01-24 23:11:47 +10:00
James Lee
7260569bd1 Land , command overloads 2014-01-02 16:57:59 -06:00
James Lee
842cd54d30 Remove the lie introduced by 2013-12-30 20:37:38 -06:00
OJ
445df8ad36 Merge branch 'upstream/master' into command_req_update
Conflicts:
	source/ReflectiveDLLInjection
2013-12-21 13:31:28 +10:00
Meatballs
0f4f470761 Land Reflective DLL Submodule
Conflicts:
	source/ReflectiveDLLInjection
2013-12-19 21:00:20 +00:00
OJ
1a3368035f Merge branch 'master' into command_req_update
Conflicts:
	source/extensions/stdapi/server/stdapi.c
2013-11-28 21:26:21 +10:00
James Lee
911aa47275 Land , getenv 2013-11-26 23:28:23 -06:00
OJ
c6bdc26a55 Update Meterpreter to use the RDI submodule 2013-11-27 14:01:45 +10:00
OJ
550da5946e Merge branch 'upstream/master' into command_req_update
A few minor issues around formatting collisions, nothing huge.
.gitignore fixes too

Conflicts:
	source/common/base_dispatch_common.c
	source/extensions/stdapi/server/stdapi.c
2013-11-27 06:51:12 +10:00
OJ
df82feedac Add support for getting environment variable values
This is a new command in the stdapi which allows the caller to pass in a set of
environment variable names and retrieve a hash of the names and values.
2013-11-26 09:37:56 +10:00
OJ
31fdf23f7b Comment fixes 2013-11-26 06:56:34 +10:00
OJ
9f4a66ba8a Fix small issue with return results 2013-11-25 16:28:47 +10:00
OJ
db764771a2 Add check_key_exists registry function
MSF side has been attempting to open keys to see if they exist, which isn't
fantastic as it results in an error. This change adds a function which indicates
to the caller if the given reg key exists.
2013-11-25 16:17:32 +10:00
OJ
f3eaadd184 Change POSIX macros to avoid exit and abort
I found that the BREAK_* macros behaved differently on POSIX and in
some cases this was causing a brutal exit of POSIX meterpteter in
cases where it should just gracefully fail.

After talking to egypt, we decided to use `break` statements instead
given that's how it should function.
2013-11-22 09:07:05 +10:00
OJ
0864ef2e34 Fix incorrect error usage and bind issue
During the call which establishes a TCP client channel, the call
to `connect` can sometimes fail if the settings that are used are
incorrect (such as an invalid port number). When this call fails
the result was being set to `GetLastError()`, which isn't correct.

On Windows it should be `WSAGetLastError()` and on POSIX the `errno`
value should be used instead. This wasnt causing issues on Windows
but on POSIX it was causing problems because the `GetLastError()`
call was returning zero, which was returned to the function that
invokes `create_tcp_client_channel()`.

Given that `ERROR_SUCCESS` == 0, the caller believed the function
had completed successfully and hence relied on context being set up
correctly. This was resulting crashes because this obviously wasn't
the case.

I also added a code chance which makes meterpreter attempt to bind
to `0.0.0.0` if binding to the specified address fails.
2013-11-22 09:02:06 +10:00
OJ
ad6a0f33ad Code fixes and tidies
Fixed up the cusom command declarations in the sniffer extension so
that they're using the new macros. I don't know how they were missed.

Various bits of tidying up, while trying to sort out the sniffer prob.
2013-11-19 06:51:35 +10:00
OJ
70d958b729 Remove last of the warnings/errors after merging 2013-11-14 19:33:20 +10:00
OJ
1c09ac08d5 Merge branch 'master' into warning_removal 2013-11-14 19:20:27 +10:00
James Lee
454e56adb3 Land , fix webcam crashes 2013-11-14 02:50:28 -06:00
James Lee
b391792bd1 Land , scheduler and channel refactor 2013-11-14 01:04:45 -06:00
OJ
f5090d6697 Fix POSIX crash on unsupported command and channel term
Crashes were occuring when the underlying channel had no more output
because the value of the `bytesRead` variable was not set to zero.
Consumers of the function assumed that bytesRead was value if non-zero.

POSIX would also hang when unsupported commands are executed, this
commit changes this so that a response is returned when the command
isn't supported.
2013-11-13 14:05:08 +10:00
OJ
016d24aec0 Fix double-free issue resulting crash
Note: webcam stuff doesn't work on Windows 2012. Work needs to be done to
make it work on this platform because the DX classes used to do the webcam
capture are not present on the system.
2013-11-08 08:49:21 +10:00