mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-18 15:55:22 +00:00
Fixed a bug with exclude lists
This commit is contained in:
parent
788465fc36
commit
35bdde6be6
@ -51,13 +51,13 @@ func Parse(filePath string, options protocols.ExecuterOptions) (*Template, error
|
|||||||
}
|
}
|
||||||
matchWithTags := false
|
matchWithTags := false
|
||||||
if len(options.Options.Tags) > 0 {
|
if len(options.Options.Tags) > 0 {
|
||||||
if err := matchTemplateWithTags(types.ToString(templateTags), types.ToString(template.Info["severity"]), options.Options); err != nil {
|
if err := matchTemplateWithTags(types.ToString(templateTags), types.ToString(template.Info["severity"]), options.Options.Tags); err != nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
matchWithTags = true
|
matchWithTags = true
|
||||||
}
|
}
|
||||||
if len(options.Options.ExcludeTags) > 0 && !matchWithTags {
|
if len(options.Options.ExcludeTags) > 0 && !matchWithTags {
|
||||||
if err := matchTemplateWithTags(types.ToString(templateTags), types.ToString(template.Info["severity"]), options.Options); err == nil {
|
if err := matchTemplateWithTags(types.ToString(templateTags), types.ToString(template.Info["severity"]), options.Options.ExcludeTags); err == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,7 +207,7 @@ func (t *Template) parseWorkflowTemplate(workflow *workflows.WorkflowTemplate, o
|
|||||||
}
|
}
|
||||||
|
|
||||||
// matchTemplateWithTags matches if the template matches a tag
|
// matchTemplateWithTags matches if the template matches a tag
|
||||||
func matchTemplateWithTags(tags, severity string, options *types.Options) error {
|
func matchTemplateWithTags(tags, severity string, tagsInput []string) error {
|
||||||
actualTags := strings.Split(tags, ",")
|
actualTags := strings.Split(tags, ",")
|
||||||
if severity != "" {
|
if severity != "" {
|
||||||
actualTags = append(actualTags, severity) // also add severity to tag
|
actualTags = append(actualTags, severity) // also add severity to tag
|
||||||
@ -215,7 +215,7 @@ func matchTemplateWithTags(tags, severity string, options *types.Options) error
|
|||||||
|
|
||||||
matched := false
|
matched := false
|
||||||
mainLoop:
|
mainLoop:
|
||||||
for _, t := range options.Tags {
|
for _, t := range tagsInput {
|
||||||
commaTags := strings.Split(t, ",")
|
commaTags := strings.Split(t, ",")
|
||||||
for _, tag := range commaTags {
|
for _, tag := range commaTags {
|
||||||
tag = strings.TrimSpace(tag)
|
tag = strings.TrimSpace(tag)
|
||||||
|
|||||||
@ -3,40 +3,39 @@ package templates
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/projectdiscovery/nuclei/v2/pkg/types"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMatchTemplateWithTags(t *testing.T) {
|
func TestMatchTemplateWithTags(t *testing.T) {
|
||||||
err := matchTemplateWithTags("php,linux,symfony", "", &types.Options{Tags: []string{"php"}})
|
err := matchTemplateWithTags("php,linux,symfony", "", []string{"php"})
|
||||||
require.Nil(t, err, "could not get php tag from input slice")
|
require.Nil(t, err, "could not get php tag from input slice")
|
||||||
|
|
||||||
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "", &types.Options{Tags: []string{"cms:symfony"}})
|
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "", []string{"cms:symfony"})
|
||||||
require.Nil(t, err, "could not get php tag from input key value")
|
require.Nil(t, err, "could not get php tag from input key value")
|
||||||
|
|
||||||
err = matchTemplateWithTags("lang:php,os:linux,symfony", "", &types.Options{Tags: []string{"cms:symfony"}})
|
err = matchTemplateWithTags("lang:php,os:linux,symfony", "", []string{"cms:symfony"})
|
||||||
require.NotNil(t, err, "could get key value tag from input key value")
|
require.NotNil(t, err, "could get key value tag from input key value")
|
||||||
|
|
||||||
err = matchTemplateWithTags("lang:php,os:linux,cms:jira", "", &types.Options{Tags: []string{"cms:symfony"}})
|
err = matchTemplateWithTags("lang:php,os:linux,cms:jira", "", []string{"cms:symfony"})
|
||||||
require.NotNil(t, err, "could get key value tag from input key value")
|
require.NotNil(t, err, "could get key value tag from input key value")
|
||||||
|
|
||||||
t.Run("space", func(t *testing.T) {
|
t.Run("space", func(t *testing.T) {
|
||||||
err = matchTemplateWithTags("lang:php, os:linux, cms:symfony", "", &types.Options{Tags: []string{"cms:symfony"}})
|
err = matchTemplateWithTags("lang:php, os:linux, cms:symfony", "", []string{"cms:symfony"})
|
||||||
require.Nil(t, err, "could get key value tag from input key value with space")
|
require.Nil(t, err, "could get key value tag from input key value with space")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("comma-tags", func(t *testing.T) {
|
t.Run("comma-tags", func(t *testing.T) {
|
||||||
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "", &types.Options{Tags: []string{"test,cms:symfony"}})
|
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "", []string{"test,cms:symfony"})
|
||||||
require.Nil(t, err, "could get key value tag from input key value with comma")
|
require.Nil(t, err, "could get key value tag from input key value with comma")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("severity", func(t *testing.T) {
|
t.Run("severity", func(t *testing.T) {
|
||||||
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "low", &types.Options{Tags: []string{"low"}})
|
err = matchTemplateWithTags("lang:php,os:linux,cms:symfony", "low", []string{"low"})
|
||||||
require.Nil(t, err, "could get key value tag for severity")
|
require.Nil(t, err, "could get key value tag for severity")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("blank-tags", func(t *testing.T) {
|
t.Run("blank-tags", func(t *testing.T) {
|
||||||
err = matchTemplateWithTags("", "low", &types.Options{Tags: []string{"jira"}})
|
err = matchTemplateWithTags("", "low", []string{"jira"})
|
||||||
require.NotNil(t, err, "could get value tag for blank severity")
|
require.NotNil(t, err, "could get value tag for blank severity")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user