Documentation ¶
Index ¶
- Variables
- func MakeDefaultExtractFunc(data map[string]interface{}, extractor *extractors.Extractor) map[string]struct{}
- func MakeDefaultMatchFunc(data map[string]interface{}, matcher *matchers.Matcher) (bool, []string)
- func MakeDefaultResultEvent(request Request, wrapped *output.InternalWrappedEvent) []*output.ResultEvent
- type Executer
- type ExecutorOptions
- func (e *ExecutorOptions) AddTemplateVar(input *contextargs.MetaInput, templateType templateTypes.ProtocolType, ...)
- func (e *ExecutorOptions) AddTemplateVars(input *contextargs.MetaInput, reqType templateTypes.ProtocolType, reqID string, ...)
- func (e ExecutorOptions) Copy() ExecutorOptions
- func (e *ExecutorOptions) CreateTemplateCtxStore()
- func (e *ExecutorOptions) EncodeTemplate() string
- func (e *ExecutorOptions) GetTemplateCtx(input *contextargs.MetaInput) *contextargs.Context
- func (e *ExecutorOptions) GetThreadsForNPayloadRequests(totalRequests int, currentThreads int) int
- func (e *ExecutorOptions) HasTemplateCtx(input *contextargs.MetaInput) bool
- func (eo *ExecutorOptions) RateLimitTake()
- func (e *ExecutorOptions) RemoveTemplateCtx(input *contextargs.MetaInput)
- type OutputEventCallback
- type Request
Constants ¶
This section is empty.
Variables ¶
var (
MaxTemplateFileSizeForEncoding = unitutils.Mega
)
Functions ¶
func MakeDefaultExtractFunc ¶
func MakeDefaultExtractFunc(data map[string]interface{}, extractor *extractors.Extractor) map[string]struct{}
MakeDefaultExtractFunc performs extracting operation for an extractor on model and returns true or false.
func MakeDefaultMatchFunc ¶
MakeDefaultMatchFunc performs matching operation for a matcher on model and returns true or false.
func MakeDefaultResultEvent ¶
func MakeDefaultResultEvent(request Request, wrapped *output.InternalWrappedEvent) []*output.ResultEvent
Types ¶
type Executer ¶
type Executer interface { // Compile compiles the execution generators preparing any requests possible. Compile() error // Requests returns the total number of requests the rule will perform Requests() int // Execute executes the protocol group and returns true or false if results were found. Execute(ctx *scan.ScanContext) (bool, error) // ExecuteWithResults executes the protocol requests and returns results instead of writing them. ExecuteWithResults(ctx *scan.ScanContext) ([]*output.ResultEvent, error) }
Executer is an interface implemented any protocol based request executer.
type ExecutorOptions ¶
type ExecutorOptions struct { // TemplateID is the ID of the template for the request TemplateID string // TemplatePath is the path of the template for the request TemplatePath string // TemplateInfo contains information block of the template request TemplateInfo model.Info // RawTemplate is the raw template for the request RawTemplate []byte // Output is a writer interface for writing output events from executer. Output output.Writer // Options contains configuration options for the executer. Options *types.Options // IssuesClient is a client for nuclei issue tracker reporting IssuesClient reporting.Client // Progress is a progress client for scan reporting Progress progress.Progress // RateLimiter is a rate-limiter for limiting sent number of requests. RateLimiter *ratelimit.Limiter // Catalog is a template catalog implementation for nuclei Catalog catalog.Catalog // ProjectFile is the project file for nuclei ProjectFile *projectfile.ProjectFile // Browser is a browser engine for running headless templates Browser *engine.Browser // Interactsh is a client for interactsh oob polling server Interactsh *interactsh.Client // HostErrorsCache is an optional cache for handling host errors HostErrorsCache hosterrorscache.CacheInterface // Stop execution once first match is found (Assigned while parsing templates) // Note: this is different from Options.StopAtFirstMatch (Assigned from CLI option) StopAtFirstMatch bool // Variables is a list of variables from template Variables variables.Variable // Constants is a list of constants from template Constants map[string]interface{} // ExcludeMatchers is the list of matchers to exclude ExcludeMatchers *excludematchers.ExcludeMatchers // InputHelper is a helper for input normalization InputHelper *input.Helper // FuzzParamsFrequency is a cache for parameter frequency FuzzParamsFrequency *frequency.Tracker Operators []*operators.Operators // only used by offlinehttp module // DoNotCache bool disables optional caching of the templates structure DoNotCache bool Colorizer aurora.Aurora WorkflowLoader model.WorkflowLoader ResumeCfg *types.ResumeCfg // ProtocolType is the type of the template ProtocolType templateTypes.ProtocolType // Flow is execution flow for the template (written in javascript) Flow string // IsMultiProtocol is true if template has more than one protocol IsMultiProtocol bool // JsCompiler is abstracted javascript compiler which adds node modules and provides execution // environment for javascript templates JsCompiler *compiler.Compiler // AuthProvider is a provider for auth strategies AuthProvider authprovider.AuthProvider //TemporaryDirectory is the directory to store temporary files TemporaryDirectory string Parser parser.Parser // ExportReqURLPattern exports the request URL pattern // in ResultEvent it contains the exact url pattern (ex: {{BaseURL}}/{{randstr}}/xyz) used in the request ExportReqURLPattern bool // contains filtered or unexported fields }
ExecutorOptions contains the configuration options for executer clients
func (*ExecutorOptions) AddTemplateVar ¶
func (e *ExecutorOptions) AddTemplateVar(input *contextargs.MetaInput, templateType templateTypes.ProtocolType, reqID string, key string, value interface{})
AddTemplateVar adds given var to template context with given template type as prefix this method is no-op if template is not multi protocol
func (*ExecutorOptions) AddTemplateVars ¶
func (e *ExecutorOptions) AddTemplateVars(input *contextargs.MetaInput, reqType templateTypes.ProtocolType, reqID string, vars map[string]interface{})
AddTemplateVars adds vars to template context with given template type as prefix this method is no-op if template is not multi protocol
func (ExecutorOptions) Copy ¶
func (e ExecutorOptions) Copy() ExecutorOptions
Copy returns a copy of the executeroptions structure
func (*ExecutorOptions) CreateTemplateCtxStore ¶
func (e *ExecutorOptions) CreateTemplateCtxStore()
CreateTemplateCtxStore creates template context store (which contains templateCtx for every scan)
func (*ExecutorOptions) EncodeTemplate ¶
func (e *ExecutorOptions) EncodeTemplate() string
func (*ExecutorOptions) GetTemplateCtx ¶
func (e *ExecutorOptions) GetTemplateCtx(input *contextargs.MetaInput) *contextargs.Context
GetTemplateCtx returns template context for given input
func (*ExecutorOptions) GetThreadsForNPayloadRequests ¶
func (e *ExecutorOptions) GetThreadsForNPayloadRequests(totalRequests int, currentThreads int) int
GetThreadsForPayloadRequests returns the number of threads to use as default for given max-request of payloads
func (*ExecutorOptions) HasTemplateCtx ¶
func (e *ExecutorOptions) HasTemplateCtx(input *contextargs.MetaInput) bool
HasTemplateCtx returns true if template context exists for given input
func (*ExecutorOptions) RateLimitTake ¶
func (eo *ExecutorOptions) RateLimitTake()
todo: centralizing components is not feasible with current clogged architecture a possible approach could be an internal event bus with pub-subs? This would be less invasive than reworking dep injection from scratch
func (*ExecutorOptions) RemoveTemplateCtx ¶
func (e *ExecutorOptions) RemoveTemplateCtx(input *contextargs.MetaInput)
RemoveTemplateCtx removes template context of given scan from store
type OutputEventCallback ¶
type OutputEventCallback func(result *output.InternalWrappedEvent)
OutputEventCallback is a callback event for any results found during scanning.
type Request ¶
type Request interface { // Compile compiles the request generators preparing any requests possible. Compile(options *ExecutorOptions) error // Requests returns the total number of requests the rule will perform Requests() int // GetID returns the ID for the request if any. IDs are used for multi-request // condition matching. So, two requests can be sent and their match can // be evaluated from the third request by using the IDs for both requests. GetID() string // Match performs matching operation for a matcher on model and returns: // true and a list of matched snippets if the matcher type is supports it // otherwise false and an empty string slice Match(data map[string]interface{}, matcher *matchers.Matcher) (bool, []string) // Extract performs extracting operation for an extractor on model and returns true or false. Extract(data map[string]interface{}, matcher *extractors.Extractor) map[string]struct{} // ExecuteWithResults executes the protocol requests and returns results instead of writing them. ExecuteWithResults(input *contextargs.Context, dynamicValues, previous output.InternalEvent, callback OutputEventCallback) error // MakeResultEventItem creates a result event from internal wrapped event. Intended to be used by MakeResultEventItem internally MakeResultEventItem(wrapped *output.InternalWrappedEvent) *output.ResultEvent // MakeResultEvent creates a flat list of result events from an internal wrapped event, based on successful matchers and extracted data MakeResultEvent(wrapped *output.InternalWrappedEvent) []*output.ResultEvent // GetCompiledOperators returns a list of the compiled operators GetCompiledOperators() []*operators.Operators // Type returns the type of the protocol request Type() templateTypes.ProtocolType }
Request is an interface implemented any protocol based request generator.
Directories ¶
Path | Synopsis |
---|---|
common
|
|
automaticscan
Package automaticscan implements automatic technology based template execution for a nuclei instance.
|
Package automaticscan implements automatic technology based template execution for a nuclei instance. |
contextargs
Package contextargs implements a generic entity for shared context within workflows
|
Package contextargs implements a generic entity for shared context within workflows |
helpers/deserialization
Package deserialization implements helpers for deserialization issues in nuclei.
|
Package deserialization implements helpers for deserialization issues in nuclei. |
raw
Package raw provides raw http request parsing abilities for nuclei.
|
Package raw provides raw http request parsing abilities for nuclei. |