@@ -3,16 +3,20 @@ package runner
33import (
44 "context"
55 "fmt"
6+ "strings"
67
78 "github.com/projectdiscovery/nuclei/v3/pkg/authprovider/authx"
89 "github.com/projectdiscovery/nuclei/v3/pkg/catalog"
910 "github.com/projectdiscovery/nuclei/v3/pkg/catalog/loader"
1011 "github.com/projectdiscovery/nuclei/v3/pkg/output"
1112 "github.com/projectdiscovery/nuclei/v3/pkg/protocols"
1213 "github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/contextargs"
14+ "github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/generators"
1315 "github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/helpers/writer"
16+ "github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/replacer"
1417 "github.com/projectdiscovery/nuclei/v3/pkg/scan"
1518 "github.com/projectdiscovery/nuclei/v3/pkg/types"
19+ "github.com/projectdiscovery/utils/env"
1620 errorutil "github.com/projectdiscovery/utils/errors"
1721)
1822
@@ -75,7 +79,25 @@ func GetLazyAuthFetchCallback(opts *AuthLazyFetchOptions) authx.LazyFetchSecret
7579 vars := map [string ]interface {}{}
7680 mainCtx := context .Background ()
7781 ctx := scan .NewScanContext (mainCtx , contextargs .NewWithInput (mainCtx , d .Input ))
82+
83+ cliVars := map [string ]interface {}{}
84+ if opts .ExecOpts .Options != nil {
85+ // gets variables passed from cli -v and -env-vars
86+ cliVars = generators .BuildPayloadFromOptions (opts .ExecOpts .Options )
87+ }
88+
7889 for _ , v := range d .Variables {
90+ // Check if the template has any env variables and expand them
91+ if strings .HasPrefix (v .Value , "$" ) {
92+ env .ExpandWithEnv (& v .Value )
93+ }
94+ if strings .Contains (v .Value , "{{" ) {
95+ // if variables had value like {{username}}, then replace it with the value from cliVars
96+ // variables:
97+ // - key: username
98+ // value: {{username}}
99+ v .Value = replacer .Replace (v .Value , cliVars )
100+ }
79101 vars [v .Key ] = v .Value
80102 ctx .Input .Add (v .Key , v .Value )
81103 }
0 commit comments