Skip to content

Commit 7e4b4a8

Browse files
fix: interactsh-url placeholder replacement in variables for network template (#5677)
1 parent 92213e1 commit 7e4b4a8

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

pkg/protocols/network/request.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -314,38 +314,39 @@ func (request *Request) executeRequestWithPayloads(variables map[string]interfac
314314
inputEvents := make(map[string]interface{})
315315

316316
for _, input := range request.Inputs {
317-
data := []byte(input.Data)
317+
dataInBytes := []byte(input.Data)
318+
var err error
318319

319-
if request.options.Interactsh != nil {
320-
var transformedData string
321-
transformedData, interactshURLs = request.options.Interactsh.Replace(string(data), []string{})
322-
data = []byte(transformedData)
323-
}
324-
325-
finalData, err := expressions.EvaluateByte(data, interimValues)
320+
dataInBytes, err = expressions.EvaluateByte(dataInBytes, interimValues)
326321
if err != nil {
327322
request.options.Output.Request(request.options.TemplatePath, address, request.Type().String(), err)
328323
request.options.Progress.IncrementFailedRequestsBy(1)
329324
return errors.Wrap(err, "could not evaluate template expressions")
330325
}
331326

332-
reqBuilder.Write(finalData)
327+
data := string(dataInBytes)
328+
if request.options.Interactsh != nil {
329+
data, interactshURLs = request.options.Interactsh.Replace(data, []string{})
330+
dataInBytes = []byte(data)
331+
}
332+
333+
reqBuilder.Write(dataInBytes)
333334

334-
if err := expressions.ContainsUnresolvedVariables(string(finalData)); err != nil {
335+
if err := expressions.ContainsUnresolvedVariables(data); err != nil {
335336
gologger.Warning().Msgf("[%s] Could not make network request for %s: %v\n", request.options.TemplateID, actualAddress, err)
336337
return nil
337338
}
338339

339340
if input.Type.GetType() == hexType {
340-
finalData, err = hex.DecodeString(string(finalData))
341+
dataInBytes, err = hex.DecodeString(data)
341342
if err != nil {
342343
request.options.Output.Request(request.options.TemplatePath, address, request.Type().String(), err)
343344
request.options.Progress.IncrementFailedRequestsBy(1)
344345
return errors.Wrap(err, "could not write request to server")
345346
}
346347
}
347348

348-
if _, err := conn.Write(finalData); err != nil {
349+
if _, err := conn.Write(dataInBytes); err != nil {
349350
request.options.Output.Request(request.options.TemplatePath, address, request.Type().String(), err)
350351
request.options.Progress.IncrementFailedRequestsBy(1)
351352
return errors.Wrap(err, "could not write request to server")

0 commit comments

Comments
 (0)