Integrated deserialization helpers to nuclei + Misc bug fixes

This commit is contained in:
Ice3man543 2021-07-18 05:35:06 +05:30
parent 5af0f55ef8
commit 0fd65e2bf2
3 changed files with 21 additions and 13 deletions

View File

@ -268,6 +268,19 @@ func HelperFunctions() map[string]govaluate.ExpressionFunction {
time.Sleep(time.Duration(seconds) * time.Second)
return true, nil
}
// deserialization Functions
functions["generate_java_gadget"] = func(args ...interface{}) (interface{}, error) {
gadget := args[0].(string)
cmd := args[1].(string)
var encoding string
if len(args) > 2 {
encoding = args[2].(string)
}
data := deserialization.GenerateJavaGadget(gadget, cmd, encoding)
return data, nil
}
return functions
}

View File

@ -15,7 +15,6 @@ import (
"github.com/projectdiscovery/nuclei/v2/pkg/output"
"github.com/projectdiscovery/nuclei/v2/pkg/progress"
"github.com/projectdiscovery/nuclei/v2/pkg/reporting"
"github.com/valyala/fasttemplate"
)
// Client is a wrapped client for interactsh server.
@ -183,9 +182,7 @@ func (c *Client) ReplaceMarkers(data, interactshURL string) string {
if !strings.Contains(data, interactshURLMarker) {
return data
}
replaced := fasttemplate.ExecuteStringStd(data, "{{", "}}", map[string]interface{}{
"interactsh-url": interactshURL,
})
replaced := strings.NewReplacer("{{interactsh-url}}", interactshURL).Replace(data)
return replaced
}

View File

@ -426,16 +426,14 @@ func (r *Request) executeRequest(reqURL string, request *generatedRequest, previ
}
event := &output.InternalWrappedEvent{InternalEvent: outputEvent}
if !interactsh.HasMatchers(r.CompiledOperators) {
if r.CompiledOperators != nil {
var ok bool
event.OperatorsResult, ok = r.CompiledOperators.Execute(finalEvent, r.Match, r.Extract)
if ok && event.OperatorsResult != nil {
event.OperatorsResult.PayloadValues = request.meta
event.Results = r.MakeResultEvent(event)
}
event.InternalEvent = outputEvent
if r.CompiledOperators != nil {
var ok bool
event.OperatorsResult, ok = r.CompiledOperators.Execute(finalEvent, r.Match, r.Extract)
if ok && event.OperatorsResult != nil {
event.OperatorsResult.PayloadValues = request.meta
event.Results = r.MakeResultEvent(event)
}
event.InternalEvent = outputEvent
}
callback(event)
return nil