mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-18 23:35:27 +00:00
120 lines
3.6 KiB
Go
120 lines
3.6 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/output"
|
||
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/testutils"
|
||
|
|
)
|
||
|
|
|
||
|
|
var matcherStatusTestcases = []TestCaseInfo{
|
||
|
|
{Path: "protocols/http/get.yaml", TestCase: &httpNoAccess{}},
|
||
|
|
{Path: "protocols/network/net-https.yaml", TestCase: &networkNoAccess{}},
|
||
|
|
{Path: "protocols/headless/headless-basic.yaml", TestCase: &headlessNoAccess{}},
|
||
|
|
{Path: "protocols/javascript/net-https.yaml", TestCase: &javascriptNoAccess{}},
|
||
|
|
{Path: "protocols/websocket/basic.yaml", TestCase: &websocketNoAccess{}},
|
||
|
|
{Path: "protocols/dns/a.yaml", TestCase: &dnsNoAccess{}},
|
||
|
|
}
|
||
|
|
|
||
|
|
type httpNoAccess struct{}
|
||
|
|
|
||
|
|
func (h *httpNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error != "no address found for host" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting \"no address found for host\" error but got none")
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type networkNoAccess struct{}
|
||
|
|
|
||
|
|
// Execute executes a test case and returns an error if occurred
|
||
|
|
func (h *networkNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error != "no address found for host" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting \"no address found for host\" error but got \"%s\"", event.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type headlessNoAccess struct{}
|
||
|
|
|
||
|
|
// Execute executes a test case and returns an error if occurred
|
||
|
|
func (h *headlessNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-headless", "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error == "" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type javascriptNoAccess struct{}
|
||
|
|
|
||
|
|
// Execute executes a test case and returns an error if occurred
|
||
|
|
func (h *javascriptNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error == "" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type websocketNoAccess struct{}
|
||
|
|
|
||
|
|
// Execute executes a test case and returns an error if occurred
|
||
|
|
func (h *websocketNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "ws://trust_me_bro.real", debug, "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error == "" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type dnsNoAccess struct{}
|
||
|
|
|
||
|
|
// Execute executes a test case and returns an error if occurred
|
||
|
|
func (h *dnsNoAccess) Execute(filePath string) error {
|
||
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "trust_me_bro.real", debug, "-ms", "-j")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
event := &output.ResultEvent{}
|
||
|
|
_ = json.Unmarshal([]byte(results[0]), event)
|
||
|
|
|
||
|
|
if event.Error == "" {
|
||
|
|
return fmt.Errorf("unexpected result: expecting an error but got \"%s\"", event.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|