Documentation
¶
Index ¶
- type Config
- func New(extype ExploitType, supportedC2 []c2.Impl, product string, cve string, ...) *Configdeprecated
- func NewLocal(extype ExploitType, supportedC2 []c2.Impl, product string, cve string) *Configdeprecated
- func NewLocalExploit(implemented ImplementedFeatures, extype ExploitType, supportedC2 []c2.Impl, ...) *Config
- func NewRemoteExploit(implemented ImplementedFeatures, extype ExploitType, supportedC2 []c2.Impl, ...) *Config
- func (conf *Config) ApplyTemplate(name string) string
- func (conf *Config) CreateBoolFlag(name string, value bool, usage string)
- func (conf *Config) CreateBoolVarFlag(param *bool, name string, value bool, usage string)
- func (conf *Config) CreateIntFlag(name string, value int, usage string)
- func (conf *Config) CreateIntVarFlag(param *int, name string, value int, usage string)
- func (conf *Config) CreateStringFlag(name string, value string, usage string)
- func (conf *Config) CreateStringVarFlag(param *string, name string, value string, usage string)
- func (conf *Config) CreateUintFlag(name string, value uint, usage string)
- func (conf *Config) CreateUintVarFlag(param *uint, name string, value uint, usage string)
- func (conf *Config) DisableC2Start()
- func (conf *Config) GetBoolFlag(name string) bool
- func (conf *Config) GetIntFlag(name string) int
- func (conf *Config) GetStringFlag(name string) string
- func (conf *Config) GetUintFlag(name string) uint
- func (conf *Config) InitFlagsStructs()
- func (conf *Config) ResolveC2Payload() c2.Impl
- type ExploitType
- type ImplementedFeatures
- type RhostTriplet
- type SSLSupport
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // implemented features describes which three stages the exploit implements Impl ImplementedFeatures // the vendor of the targeted product Vendor string // the targeted products Products []string // A combination of the Vendor and Products strings Product string // the CPE for the targeted product CPE []string // the CVE being tested CVE string // the protocol being targeted Protocol string // the type of exploit being executed ExType ExploitType // the c2 supported by the exploit SupportedC2 []c2.Impl StringFlagsMap map[string]*string IntFlagsMap map[string]*int UintFlagsMap map[string]*uint BoolFlagsMap map[string]*bool // target host, the target address/name the exploit will work on Rhost string // target port, the target port the exploit will work on Rport int // a list of specific targets RhostsNTuple []RhostTriplet // local host for remote exploits Lhost string // local port Lport int // bind port Bport int // indicates if the framework should autodetect ssl/plain DetermineSSL bool // indicates if ssl is used in comms SSL bool // indicates if we run the target verify DoVerify bool // indicates if we run the version check DoVersionCheck bool // indicates if we run the exploit DoExploit bool // automatically start the c2 or not C2AutoStart bool // the user requested c2 to use C2Type c2.Impl // C2 server timeout C2Timeout int // Indicates if the c2 server will be handled elsewhere ThirdPartyC2Server bool // The database we are working with DBName string // File format template FileTemplateData string // File format exploit output FileFormatFilePath string }
The config struct contains a mix of module specified configurations and user specified configurations. The Config struct is first generated by the exploit implementation and then modified by option parsing.
func NewLocalExploit ¶ added in v1.24.0
func NewLocalExploit(implemented ImplementedFeatures, extype ExploitType, supportedC2 []c2.Impl, vendor string, product []string, cpe []string, cve string, ) *Config
Defines a new remote exploit and associates with CVE/Product/Protocol metadata. Usage example:.
func NewRemoteExploit ¶ added in v1.24.0
func NewRemoteExploit(implemented ImplementedFeatures, extype ExploitType, supportedC2 []c2.Impl, vendor string, product []string, cpe []string, cve string, protocol string, defaultPort int, ) *Config
Defines a new remote exploit and associates with CVE/Product/Protocol metadata. Usage example:
conf := config.NewRemoteExploit( config.ImplementedFeatures{AssetDetection: true, VersionScanning: true, Exploitation: true}, config.CodeExecution, []c2.Impl{c2.SimpleShellServer}, "Atlassian", []string{"Confluence"}, []string{"cpe:2.3:a:atlassian:confluence"}, "CVE-2023-22527", "HTTP", 8090)
func (*Config) ApplyTemplate ¶ added in v1.36.0
Apply the configuration settings to a Go text template. This will take the `Config` struct and apply it to a `text/template`, allowing for strings to be built directly from the already set configuration variables.
s := conf.ApplyTemplate(`CVE: {{.CVE}} - {{.Product}}`) output.PrintStatus(s) // Output: CVE: CVE-2024-1337 - OFBiz
Flags that are user defined with CreateStringFlag and other types are directly accessible from their map values, for example if a command line argument is added with conf.CreateStringFlag("output", "do output", "instructions") it will be accessible via the following ApplyTemplate call:
conf.ApplyTemplate(`Output flag {{.StringFlagsMap.output}}`)
This function only returns the processed string and if a templating error occurs the function emits a framework error and sets the string to an empty string. This makes it harder to process any dynamic content and properly catch errors, but simplifies the return value to only provide a string.
This should not be used with potentially attacker controlled input.
Some Config types might be complex and will require usage of range components of text/template, follow the package docs if necessary.
func (*Config) CreateBoolFlag ¶ added in v1.29.0
Create a command line flag for the bool var "name" with the default value of "value" and store the result locally.
func (*Config) CreateBoolVarFlag ¶ added in v1.29.0
Create a command line flag for the bool var "name" with the default value of "value" and store the result locally *using an external "param" pointer*.
func (*Config) CreateIntFlag ¶ added in v1.29.0
Create a command line flag for the int var "name" with the default value of "value" and store the result locally.
func (*Config) CreateIntVarFlag ¶ added in v1.29.0
Create a command line flag for the int var "name" with the default value of "value" and store the result locally *using an external "param" pointer*.
func (*Config) CreateStringFlag ¶ added in v1.29.0
Create a command line flag for the string var "name" with the default value of "value" and store the result locally.
func (*Config) CreateStringVarFlag ¶ added in v1.29.0
Create a command line flag for the string var "name" with the default value of "value" and store the result locally *using an external "param" pointer*.
func (*Config) CreateUintFlag ¶ added in v1.29.0
Create a command line flag for the uint var "name" with the default value of "value" and store the result locally.
func (*Config) CreateUintVarFlag ¶ added in v1.29.0
Create a command line flag for the uint var "name" with the default value of "value" and store the result locally *using an external "param" pointer*.
func (*Config) DisableC2Start ¶ added in v1.35.0
func (conf *Config) DisableC2Start()
Disable automatic start of c2 servers. Manually starting is required after this function is called. This is useful when you have an exploit that may have multiple stages and you are guaranteed to not need the C2 setup. An example is an exploit that needs to retrieve a CAPTCHA may not want to start up the C2 until the first stage is retrieved and the CAPTCHA is solved.
func (*Config) GetBoolFlag ¶ added in v1.29.0
Fetch the configured uint value for "name".
func (*Config) GetIntFlag ¶ added in v1.29.0
Fetch the configured uint value for "name".
func (*Config) GetStringFlag ¶ added in v1.29.0
Fetch the configured string value for "name".
func (*Config) GetUintFlag ¶ added in v1.29.0
Fetch the configured uint value for "name".
func (*Config) InitFlagsStructs ¶ added in v1.29.0
func (conf *Config) InitFlagsStructs()
func (*Config) ResolveC2Payload ¶ added in v1.30.1
Some C2 (ShellTunnel) don't actually care how the payload is generated, but the underlying C2 might be implied depending on how the individual exploit has been developed. It is certainly not a requirement to call this function but it can help simplify the handling of secure shell vs insecure.
type ExploitType ¶
type ExploitType int
const ( CodeExecution ExploitType = 0 InformationDisclosure ExploitType = 1 Webshell ExploitType = 2 FileFormat ExploitType = 3 Local ExploitType = 4 )
func (ExploitType) String ¶ added in v1.25.0
func (eType ExploitType) String() string
Convert ExploitType to String.
type ImplementedFeatures ¶ added in v1.24.0
type RhostTriplet ¶ added in v1.0.14
type RhostTriplet struct { Rhost string Rport int SSL SSLSupport }
type SSLSupport ¶ added in v1.0.14
type SSLSupport int
const ( SSLDisabled SSLSupport = 0 SSLEnabled SSLSupport = 1 SSLAutodiscover SSLSupport = 2 )