Commit Graph

216 Commits

Author SHA1 Message Date
OJ Reeves ba5e097b6f Revert previous change to cid extraction 2025-07-30 13:04:22 +10:00
OJ Reeves f93d308b6c Add C2 custom header support in responses 2025-07-29 13:28:20 +10:00
OJ Reeves 1abbb7071f Fixes as per discussion 2025-07-29 12:32:18 +10:00
OJ Reeves 76954a63e9 Push CID finding into reverse_http
Logic for finding connection UUIDs has been pushed into reverse_http so
that it's not part of the Http::Server any more. It's a little bit of a
leaky abstraction, but at least the logic is in the one place now.

Support added and tweaked for including the UUID in an HTTP header or in
a GET param.

Currently don't have support for it in the BODY as as param, not sure if
that's a requirement yet or not.

Same goes for cookies.
2025-07-24 15:21:56 +10:00
OJ Reeves 5def53e34c Change support for connection IDs in the HTTP server
NOTE: This change does remove the trailing "/" from URIs registered..
which implies that things might not match. So more to do here.

Connection IDs are stored in the request now, so that they can be
referenced by clients if and when required.

IDs are pulled from various locations in the request.
2025-07-24 11:22:25 +10:00
OJ Reeves d589da9531 C2 profile persistence and better UUID handling
Interim commit, contains code persists a C2 profile instance for reuse
rather than having many being parsed all the time. Also begins work
handling UUIDs outside of the URI.
2025-07-23 14:05:04 +10:00
OJ Reeves f2d3120772 Add C2 packet support to the stageless transition
Stageless payloads start with an :init_connect which needs special
consideration given that it's just redirected. There's no client
instance at that point, so there's no C2 associated with it, so we have
to just manually wrap the outbound packet so that things work correctly.
2025-07-16 14:25:55 +10:00
OJ Reeves fe7705dea8 Payload wrapping support and more
* Supporting "wrapping" and "unwrapping" of payloads based on the C2
  profile, which means that suffixes and prefixes are used based on what
  the configuration indicates.
* Made sure taht the debug_build flag is passed through on HTTP/S
  payloads.
* push details of the C2 profile into the meterp client so that required
  details can be easily accessed.
2025-07-15 11:57:37 +10:00
OJ Reeves 3ccd8e5b14 "Working" C2 sessions with diff GET/POST uris
Still don't have all the fields implemented, but this at least supports
the notion of having different URIs for GET and POST.

The approach taken, to reduce the impact on how much code has to be
changed, is to extract the UUID for the connection and use that as a
resource identifier. This UUID doesn't have any slashes in it, and hence
will not collide with any URI. This means we can use the UUID as a key
in the same hash as the resource URIs knowing that a direct lookup will
find the right session, even if by some miracle the UUID collides with a
chosen/generated URI. Any URI in the resource list will be prefixed with
a forward slash.

The listener will listen on all URIs that exist for the Meterp
configuration, including LURI setting, and the `uri` values in all three
areas that it might be specified in the C2 profile.
2025-07-10 10:46:27 +10:00
OJ Reeves 5025992eaf First pass of TLV-based configuration and MC2
Munged a few commits into this one. But we have basic support for
TLV-based configuration blocks instead of hard-coded block sizes.
Initial support for the MC2 stuff is in as well, but more to come.
2025-07-07 13:27:03 +10:00
Zach Goldman 82ca91b351 remove duplicated rescue 2024-06-07 12:18:07 -05:00
bwatters 07aa024b21 Add custom session types and minor cleanups 2022-09-07 15:43:50 -05:00
bwatters 670288a939 Fix issue where reverse_tcp did not work because of double length prepend 2022-06-06 09:10:57 -05:00
bwatters e312619418 Add support for 64-bit, rubocop, and some requested changes 2022-05-24 16:13:01 -05:00
bwatters 681455dec3 Add a custom stager type for x86 windows 2022-05-24 16:09:47 -05:00
Ashley Donaldson d5373a7278 Removed redundant cleanup calls which exploit_driver will call anyway 2022-03-11 12:08:51 +11:00
Ashley Donaldson c9d43aafe6 Use dereferencing directly, and rename 'stop' to 'cleanup' for clarity 2022-03-10 09:06:25 +11:00
Ashley Donaldson 837cf199a0 Use reference counting consistently for HTTP handlers (Fixes #16315) 2022-03-09 10:56:38 +11:00
Ashley Donaldson 2447ce3eba Use a random, modern UA string for HTTP payloads 2021-11-10 10:40:32 +11:00
Ashley Donaldson 0df82e9a21 HTTP payload listeners support ReverseListenerComm param, and display of the session it transits over 2021-10-04 20:27:06 +11:00
space-r7 8b8d138812 Land #15496, specify SSLVersion for servers 2021-08-26 10:57:11 -05:00
Tim W 5acd0ee5d6 Fix #15480, fix IgnoreUnknownPayloads for stageless reverse_http payloads 2021-08-13 16:57:04 +01:00
Spencer McIntyre c43d55068c Add the SSLVersion datastore option for handlers
Requires rapid7/rex-socket#37 for the option to be honored.
2021-08-06 14:44:48 -05:00
dwelch-r7 a9d38ecc15 Land #14430, Add warnings for no db connection while using uuid tracking 2021-03-24 12:12:18 +00:00
dwelch-r7 7fbbe23426 Remove more requires that were missed before 2021-02-08 14:51:58 +00:00
dwelch-r7 b95be3ed10 Zeitwerk rex folder 2021-02-08 12:24:12 +00:00
dwelch-r7 1617b3ec9b Use zeitwerk for lib/msf/core folder 2020-12-07 10:31:45 +00:00
cn-kali-team 8f729b6fd5 removed this JSON 2020-12-04 11:26:01 +08:00
cn-kali-team 893dd6b653 fix #14158 2020-11-25 20:07:00 +08:00
OJ 48290ac38a Fix a stupid mistake with core_patch_url
This was not originally ported to an int when it should have been.
2020-06-09 08:58:27 +10:00
Spencer McIntyre 059dd59d90 Use the new max_length check elsewhere 2020-03-11 11:56:15 -04:00
Spencer McIntyre db9626153b Minor refactoring for style, whitespace, etc. 2020-03-11 11:56:15 -04:00
Timo Mueller 2283948fcf Fixed description in reverse_http payload, for real 2020-03-11 11:55:18 -04:00
Timo Mueller 364b6c1359 Fixed description in reverse_http payload 2020-03-11 11:55:18 -04:00
Timo Mueller f10f5701dd Added maximum string length check 2020-03-11 11:43:10 -04:00
OJ 5621d200cc Stop error rendering in multi/meterpreter
The reverse_http/s listeners result in awful errors when
multi/meterpreter is set as the payload. Anyone that hits the endpoint
with an invalid or missing UUID will spam the MSF console with
exceptions.

This patch avoids this issue in cases where the UUID isn't specific. We
avoid setting it as a default, which doesn't make sense anyway.
2019-06-11 13:39:52 +10:00
Brent Cook 73c8e803fe Land #11892, Fix parse IPv6 address in reverse_http 2019-05-31 12:41:36 -05:00
ssyy201506 ecda8d864a Fix incorrect parsing of IPv6 uri. 2019-05-28 16:41:34 +09:00
Matt Robinson 26eebb9620 Fix multi handler reverse_http to not care so much about the workspace. 2019-05-25 16:25:06 -04:00
Erin Bleiweiss b51d016a93 Store and search payloads with workspace id 2018-09-24 14:11:48 -05:00
Erin Bleiweiss 7e6c3261b6 Update payload count method 2018-09-18 16:36:11 -05:00
Erin Bleiweiss 9b5326994f Add remote data endpoint support for searching payloads 2018-09-18 15:50:55 -05:00
Erin Bleiweiss 8f4e17c277 Replace uuid methods for payload count and url validation 2018-09-13 12:28:04 -05:00
RageLtMan f1a1e1a357 Implement specific dispatch extensions for tunnels
All meterpreter Clients are created equal, and as such they all
include the PacketDispatcher mixin and call its init methods when
a passive dispatcher is needed. However, since tunneling protocols
have different requirements for implementation, the methods which
provide protocol-specific functionality need to be mixed into the
Client before it attempts to initialize the dispatcher.

Provide a dispatch_ext option in the has passed to the client on
init from the session handler which is an Array containing mixin
references which are sent to :extend calls in the :init_meterpreter
method just prior to calling :initialize_passive_dispatcher.

Each handler implementation can thus push chains of mixins to the
client in order to provide middleware specific to the tunnel. Down
the road, this should permit stacking C2 encapsulations or tunnel
protocols/permutators to create unique session transports on the
fly.
2017-12-29 00:56:06 -05:00
Brent Cook bb5ea540ab fix a number of TODO's in the HTTP handler, remove duplication in handlers 2017-12-12 03:12:36 -06:00
Brent Cook f49006222c remove unneeded uri 2017-12-12 03:12:36 -06:00
Brent Cook 8e76c4cb4f handle override at the meterpreter config layer 2017-12-12 03:12:36 -06:00
Brent Cook 017374be71 pass lhost/lport back into generate_stage with reverse_http/s 2017-12-12 03:12:36 -06:00
Brent Cook 1fd7f7c8bc prefix MeterpreterUserAgent and PayloadProxy* with Http for consistency,
this also adds aliases where needed
2017-11-21 13:47:19 -06:00
OJ a78d8f83fc Add HTTP header support for Host/Cookie/Referer
This is to start the support for things like domain fronting.
2017-11-21 13:47:18 -06:00