mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-18 06:45:25 +00:00
* add execute function in dns * Add payload in dns protocol * Add integration test to cover dns payload - also check command line overriding a payload variable * Update matchedAt and remove trailing dot * Consider payload data for request count - Update verbose output to print question - Update dns requests Requests function to consider payload data * update gitignore * bump nuclei version to v2.9.4-dev --------- Co-authored-by: Tarun Koyalwar <tarun@projectdiscovery.io>
102 lines
2.9 KiB
Go
102 lines
2.9 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/testutils"
|
|
)
|
|
|
|
var dnsTestCases = map[string]testutils.TestCase{
|
|
"dns/basic.yaml": &dnsBasic{},
|
|
"dns/ptr.yaml": &dnsPtr{},
|
|
"dns/caa.yaml": &dnsCAA{},
|
|
"dns/tlsa.yaml": &dnsTLSA{},
|
|
"dns/variables.yaml": &dnsVariables{},
|
|
"dns/payload.yaml": &dnsPayload{},
|
|
"dns/dsl-matcher-variable.yaml": &dnsDSLMatcherVariable{},
|
|
}
|
|
|
|
type dnsBasic struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsBasic) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "one.one.one.one", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type dnsPtr struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsPtr) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "1.1.1.1", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type dnsCAA struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsCAA) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "google.com", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type dnsTLSA struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsTLSA) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "scanme.sh", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 0)
|
|
}
|
|
|
|
type dnsVariables struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsVariables) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "one.one.one.one", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type dnsPayload struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsPayload) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "google.com", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := expectResultsCount(results, 3); err != nil {
|
|
return err
|
|
}
|
|
|
|
// override payload from CLI
|
|
results, err = testutils.RunNucleiTemplateAndGetResults(filePath, "google.com", debug, "-var", "subdomain_wordlist=subdomains.txt")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 4)
|
|
}
|
|
|
|
type dnsDSLMatcherVariable struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *dnsDSLMatcherVariable) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "one.one.one.one", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|