mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-17 22:45:28 +00:00
fixes
- Rename Targets -> TargetsFilePath - Rename Target -> Targets - Implement target checks (empty, dupe) - Update documentation
This commit is contained in:
parent
61428b0c9b
commit
825f417b53
@ -84,7 +84,7 @@ Usage:
|
|||||||
|
|
||||||
Flags:
|
Flags:
|
||||||
TARGET:
|
TARGET:
|
||||||
-u, -target string target URLs/hosts to scan
|
-u, -target string[] target URLs/hosts to scan
|
||||||
-l, -list string path to file containing a list of target URLs/hosts to scan (one per line)
|
-l, -list string path to file containing a list of target URLs/hosts to scan (one per line)
|
||||||
|
|
||||||
TEMPLATES:
|
TEMPLATES:
|
||||||
|
|||||||
@ -97,7 +97,7 @@ nuclei -h
|
|||||||
|burp-collaborator-biid|使用burp-collaborator插件|nuclei -burp-collaborator-biid XXXX|
|
|burp-collaborator-biid|使用burp-collaborator插件|nuclei -burp-collaborator-biid XXXX|
|
||||||
|c|并行的最大模板数量(默认10)|nuclei -c 10|
|
|c|并行的最大模板数量(默认10)|nuclei -c 10|
|
||||||
|l|对URL列表进行测试|nuclei -l urls.txt|
|
|l|对URL列表进行测试|nuclei -l urls.txt|
|
||||||
|target|对目标进行测试|nuclei -target hxxps://example.com|
|
|target|对目标进行测试|nuclei -target hxxps://example.com -target hxxps://example2.com|
|
||||||
|t|要检测的模板种类|nuclei -t git-core.yaml -t cves/|
|
|t|要检测的模板种类|nuclei -t git-core.yaml -t cves/|
|
||||||
|no-color|输出不显示颜色|nuclei -no-color|
|
|no-color|输出不显示颜色|nuclei -no-color|
|
||||||
|no-meta|不显示匹配的元数据|nuclei -no-meta|
|
|no-meta|不显示匹配的元数据|nuclei -no-meta|
|
||||||
@ -250,4 +250,4 @@ nano ~/nuclei-templates/.nuclei-ignore
|
|||||||
|
|
||||||
--------
|
--------
|
||||||
|
|
||||||
Nuclei是由[projectdiscovery](https://projectdiscovery.io)团队用🖤制作的,当然社区也贡献了很多,通过 **[Thanks.md](https://github.com/projectdiscovery/nuclei/blob/master/THANKS.md)**文件以获取更多详细信息。
|
Nuclei是由[projectdiscovery](https://projectdiscovery.io)团队用🖤制作的,当然社区也贡献了很多,通过 **[Thanks.md](https://github.com/projectdiscovery/nuclei/blob/master/THANKS.md)**文件以获取更多详细信息。
|
||||||
|
|||||||
@ -42,8 +42,8 @@ func readConfig() {
|
|||||||
on extensive configurability, massive extensibility and ease of use.`)
|
on extensive configurability, massive extensibility and ease of use.`)
|
||||||
|
|
||||||
createGroup(flagSet, "input", "Target",
|
createGroup(flagSet, "input", "Target",
|
||||||
flagSet.StringSliceVarP(&options.Target, "target", "u", []string{}, "target URLs/hosts to scan"),
|
flagSet.StringSliceVarP(&options.Targets, "target", "u", []string{}, "target URLs/hosts to scan"),
|
||||||
flagSet.StringVarP(&options.Targets, "list", "l", "", "path to file containing a list of target URLs/hosts to scan (one per line)"),
|
flagSet.StringVarP(&options.TargetsFilePath, "list", "l", "", "path to file containing a list of target URLs/hosts to scan (one per line)"),
|
||||||
)
|
)
|
||||||
|
|
||||||
createGroup(flagSet, "templates", "Templates",
|
createGroup(flagSet, "templates", "Templates",
|
||||||
|
|||||||
@ -125,7 +125,7 @@ func New(options *types.Options) (*Runner, error) {
|
|||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len(options.Templates) == 0 || !options.NewTemplates || (options.Targets == "" && !options.Stdin && len(options.Target) == 0)) && options.UpdateTemplates {
|
if (len(options.Templates) == 0 || !options.NewTemplates || (options.TargetsFilePath == "" && !options.Stdin && len(options.Targets) == 0)) && options.UpdateTemplates {
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
hm, err := hybrid.New(hybrid.DefaultDiskOptions)
|
hm, err := hybrid.New(hybrid.DefaultDiskOptions)
|
||||||
@ -138,11 +138,21 @@ func New(options *types.Options) (*Runner, error) {
|
|||||||
dupeCount := 0
|
dupeCount := 0
|
||||||
|
|
||||||
// Handle single target
|
// Handle single target
|
||||||
if len(options.Target) != 0 {
|
if len(options.Targets) != 0 {
|
||||||
for _, target := range options.Target {
|
for _, target := range options.Targets {
|
||||||
|
url := strings.TrimSpace(target)
|
||||||
|
if url == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, ok := runner.hostMap.Get(url); ok {
|
||||||
|
dupeCount++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
runner.inputCount++
|
runner.inputCount++
|
||||||
// nolint:errcheck // ignoring error
|
// nolint:errcheck // ignoring error
|
||||||
runner.hostMap.Set(target, nil)
|
runner.hostMap.Set(url, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,10 +164,12 @@ func New(options *types.Options) (*Runner, error) {
|
|||||||
if url == "" {
|
if url == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := runner.hostMap.Get(url); ok {
|
if _, ok := runner.hostMap.Get(url); ok {
|
||||||
dupeCount++
|
dupeCount++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
runner.inputCount++
|
runner.inputCount++
|
||||||
// nolint:errcheck // ignoring error
|
// nolint:errcheck // ignoring error
|
||||||
runner.hostMap.Set(url, nil)
|
runner.hostMap.Set(url, nil)
|
||||||
@ -165,8 +177,8 @@ func New(options *types.Options) (*Runner, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Handle taget file
|
// Handle taget file
|
||||||
if options.Targets != "" {
|
if options.TargetsFilePath != "" {
|
||||||
input, inputErr := os.Open(options.Targets)
|
input, inputErr := os.Open(options.TargetsFilePath)
|
||||||
if inputErr != nil {
|
if inputErr != nil {
|
||||||
return nil, errors.Wrap(inputErr, "could not open targets file")
|
return nil, errors.Wrap(inputErr, "could not open targets file")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,8 +45,8 @@ var DefaultOptions = &types.Options{
|
|||||||
RateLimit: 150,
|
RateLimit: 150,
|
||||||
ProjectPath: "",
|
ProjectPath: "",
|
||||||
Severity: []string{},
|
Severity: []string{},
|
||||||
Target: []string{},
|
Targets: []string{},
|
||||||
Targets: "",
|
TargetsFilePath: "",
|
||||||
Output: "",
|
Output: "",
|
||||||
ProxyURL: "",
|
ProxyURL: "",
|
||||||
ProxySocksURL: "",
|
ProxySocksURL: "",
|
||||||
|
|||||||
@ -32,10 +32,10 @@ type Options struct {
|
|||||||
ProjectPath string
|
ProjectPath string
|
||||||
// InteractshURL is the URL for the interactsh server.
|
// InteractshURL is the URL for the interactsh server.
|
||||||
InteractshURL string
|
InteractshURL string
|
||||||
// Target is a single URL/Domain to scan using a template
|
// Target URLs/Domains to scan using a template
|
||||||
Target goflags.StringSlice
|
Targets goflags.StringSlice
|
||||||
// Targets specifies the targets to scan using templates.
|
// Targets specifies the targets to scan using templates.
|
||||||
Targets string
|
TargetsFilePath string
|
||||||
// Output is the file to write found results to.
|
// Output is the file to write found results to.
|
||||||
Output string
|
Output string
|
||||||
// ProxyURL is the URL for the proxy server
|
// ProxyURL is the URL for the proxy server
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user