Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/cmd/integration-test/matcher-status.go
2070 views
1
package main
2
3
import (
4
"fmt"
5
"strings"
6
7
"github.com/projectdiscovery/nuclei/v3/pkg/output"
8
"github.com/projectdiscovery/nuclei/v3/pkg/testutils"
9
"github.com/projectdiscovery/nuclei/v3/pkg/utils/json"
10
)
11
12
var matcherStatusTestcases = []TestCaseInfo{
13
{Path: "protocols/http/get.yaml", TestCase: &httpNoAccess{}},
14
{Path: "protocols/network/net-https.yaml", TestCase: &networkNoAccess{}},
15
{Path: "protocols/headless/headless-basic.yaml", TestCase: &headlessNoAccess{}},
16
{Path: "protocols/javascript/net-https.yaml", TestCase: &javascriptNoAccess{}},
17
{Path: "protocols/websocket/basic.yaml", TestCase: &websocketNoAccess{}},
18
{Path: "protocols/dns/a.yaml", TestCase: &dnsNoAccess{}},
19
}
20
21
type httpNoAccess struct{}
22
23
func (h *httpNoAccess) Execute(filePath string) error {
24
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
25
if err != nil {
26
return err
27
}
28
event := &output.ResultEvent{}
29
_ = json.Unmarshal([]byte(results[0]), event)
30
expectedError := "no address found for host"
31
if !strings.Contains(event.Error, expectedError) {
32
return fmt.Errorf("unexpected result: expecting \"%s\" error but got \"%s\"", expectedError, event.Error)
33
}
34
return nil
35
}
36
37
type networkNoAccess struct{}
38
39
// Execute executes a test case and returns an error if occurred
40
func (h *networkNoAccess) Execute(filePath string) error {
41
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
42
if err != nil {
43
return err
44
}
45
event := &output.ResultEvent{}
46
_ = json.Unmarshal([]byte(results[0]), event)
47
48
if event.Error != "no address found for host" {
49
return fmt.Errorf("unexpected result: expecting \"no address found for host\" error but got \"%s\"", event.Error)
50
}
51
return nil
52
}
53
54
type headlessNoAccess struct{}
55
56
// Execute executes a test case and returns an error if occurred
57
func (h *headlessNoAccess) Execute(filePath string) error {
58
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-headless", "-ms", "-j")
59
if err != nil {
60
return err
61
}
62
event := &output.ResultEvent{}
63
_ = json.Unmarshal([]byte(results[0]), event)
64
65
if event.Error == "" {
66
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
67
}
68
return nil
69
}
70
71
type javascriptNoAccess struct{}
72
73
// Execute executes a test case and returns an error if occurred
74
func (h *javascriptNoAccess) Execute(filePath string) error {
75
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
76
if err != nil {
77
return err
78
}
79
event := &output.ResultEvent{}
80
_ = json.Unmarshal([]byte(results[0]), event)
81
82
if event.Error == "" {
83
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
84
}
85
return nil
86
}
87
88
type websocketNoAccess struct{}
89
90
// Execute executes a test case and returns an error if occurred
91
func (h *websocketNoAccess) Execute(filePath string) error {
92
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "ws://trust_me_bro.real", debug, "-ms", "-j")
93
if err != nil {
94
return err
95
}
96
event := &output.ResultEvent{}
97
_ = json.Unmarshal([]byte(results[0]), event)
98
99
if event.Error == "" {
100
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
101
}
102
return nil
103
}
104
105
type dnsNoAccess struct{}
106
107
// Execute executes a test case and returns an error if occurred
108
func (h *dnsNoAccess) Execute(filePath string) error {
109
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
110
if err != nil {
111
return err
112
}
113
event := &output.ResultEvent{}
114
_ = json.Unmarshal([]byte(results[0]), event)
115
116
if event.Error == "" {
117
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
118
}
119
return nil
120
}
121
122