mirror of
https://github.com/rapid7/metasploit-payloads
synced 2025-04-12 04:12:05 +02:00

The original implementation assumed that the UUIDs were coming through a strings, but this was changed at some point to use the 16-byte UUID format straight out of MSF. This was causing issues when UUIDs had null bytes in them because the UUID was being truncated and the result was that UUIDs that were being parsed in MSF were too small, resulting in exceptions.
75 lines
2.3 KiB
C
75 lines
2.3 KiB
C
/*!
|
|
* @file config.h
|
|
* @brief Declarations of functions and types that define endpoint and transport configurations.
|
|
*/
|
|
#ifndef _METERPRETER_LIB_CONFIG_H
|
|
#define _METERPRETER_LIB_CONFIG_H
|
|
|
|
/*! @brief This is the size of the certificate hash that is validated (sha1) */
|
|
#define CERT_HASH_SIZE 20
|
|
#define URL_SIZE 512
|
|
#define UA_SIZE 256
|
|
#define UUID_SIZE 16
|
|
#define PROXY_HOST_SIZE 128
|
|
#define PROXY_USER_SIZE 64
|
|
#define PROXY_PASS_SIZE 64
|
|
|
|
#ifdef _WIN32
|
|
typedef wchar_t CHARTYPE;
|
|
#else
|
|
typedef char CHARTYPE;
|
|
#endif
|
|
typedef CHARTYPE* STRTYPE;
|
|
typedef CHARTYPE const * CSTRTYPE;
|
|
|
|
typedef struct _MetsrvSession
|
|
{
|
|
DWORD comms_fd; ///! Socket handle for communications (if there is one).
|
|
DWORD exit_func; ///! Exit func identifier for when the session ends.
|
|
int expiry; ///! The total number of seconds to wait before killing off the session.
|
|
BYTE uuid[UUID_SIZE]; ///! UUID
|
|
} MetsrvSession;
|
|
|
|
typedef struct _MetsrvTransportCommon
|
|
{
|
|
CHARTYPE url[URL_SIZE]; ///! Transport url: scheme://host:port/URI
|
|
int comms_timeout; ///! Number of sessions to wait for a new packet.
|
|
int retry_total; ///! Total seconds to retry comms for.
|
|
int retry_wait; ///! Seconds to wait between reconnects.
|
|
} MetsrvTransportCommon;
|
|
|
|
typedef struct _MetsrvTransportProxy
|
|
{
|
|
CHARTYPE hostname[PROXY_HOST_SIZE]; ///! Proxy hostname.
|
|
CHARTYPE username[PROXY_USER_SIZE]; ///! Proxy username.
|
|
CHARTYPE password[PROXY_PASS_SIZE]; ///! Proxy password.
|
|
} MetsrvTransportProxy;
|
|
|
|
typedef struct _MetsrvTransportHttp
|
|
{
|
|
MetsrvTransportCommon common;
|
|
MetsrvTransportProxy proxy;
|
|
CHARTYPE ua[256]; ///! User agent string.
|
|
BYTE ssl_cert_hash[CERT_HASH_SIZE]; ///! Expected SSL certificate hash.
|
|
} MetsrvTransportHttp;
|
|
|
|
typedef struct _MetsrvTransportTcp
|
|
{
|
|
MetsrvTransportCommon common;
|
|
} MetsrvTransportTcp;
|
|
|
|
typedef struct _MetsrvExtension
|
|
{
|
|
DWORD size; ///! Size of the extension.
|
|
BYTE dll[1]; ///! Array of extension bytes (will be more than 1).
|
|
} MetsrvExtension;
|
|
|
|
typedef struct _MetsrvConfig
|
|
{
|
|
MetsrvSession session;
|
|
MetsrvTransportCommon transports[1]; ///! Placeholder for 0 or more transports
|
|
// Extensions will appear after this
|
|
} MetsrvConfig;
|
|
|
|
#endif
|