Documentation
¶
Overview ¶
Package enhanced provides advanced discovery capabilities for web application crawling.
Package enhanced provides advanced discovery capabilities.
Index ¶
- type Config
- type DiscoveryResult
- type EnhancedDiscovery
- func (ed *EnhancedDiscovery) Discover(targetURL string, headers http.Header, htmlContent string, ...) *DiscoveryResult
- func (ed *EnhancedDiscovery) DiscoverQuick(targetURL string) *DiscoveryResult
- func (ed *EnhancedDiscovery) GetFingerprinter() *TechFingerprinter
- func (ed *EnhancedDiscovery) GetJSExtractor() *JSExtractor
- func (ed *EnhancedDiscovery) GetParameterDiscovery() *ParameterDiscovery
- func (ed *EnhancedDiscovery) GetPathBruter() *PathBruter
- func (ed *EnhancedDiscovery) GetRobotsParser() *RobotsParser
- func (ed *EnhancedDiscovery) GetSitemapParser() *SitemapParser
- func (ed *EnhancedDiscovery) GetSourceMapParser() *SourceMapParser
- type JSExtractionResult
- type JSExtractor
- type Parameter
- type ParameterDiscovery
- type ParameterResult
- type PathBruter
- type PathResult
- type RobotsParser
- type RobotsResult
- type RobotsRules
- type SecretFinding
- type Sitemap
- type SitemapEntry
- type SitemapIndex
- type SitemapParser
- type SitemapURL
- type SourceMap
- type SourceMapParser
- type SourceMapResult
- type TechFingerprinter
- type TechResult
- type Technology
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
UserAgent string
Concurrency int
EnableAll bool
// Individual module toggles
EnableRobots bool
EnableSitemap bool
EnableSourceMaps bool
EnablePathBrute bool
EnableFingerprint bool
EnableParamDiscov bool
EnableJSExtract bool
}
Config holds configuration for enhanced discovery.
type DiscoveryResult ¶
type DiscoveryResult struct {
Target string
// Robots.txt results
RobotsResult *RobotsResult
// Sitemap results
SitemapURLs []SitemapURL
// Source map results
SourceMapResults []*SourceMapResult
// Path brute results
PathResults []PathResult
// Technology fingerprint
TechResult *TechResult
// Parameter discovery
ParameterResult *ParameterResult
// JS extraction results
JSResults []JSExtractionResult
// Aggregated discoveries
AllURLs []string
AllAPIEndpoints []string
AllRoutes []string
AllSecrets []SecretFinding
AllParameters []Parameter
}
DiscoveryResult contains all discovery results.
type EnhancedDiscovery ¶
type EnhancedDiscovery struct {
// contains filtered or unexported fields
}
EnhancedDiscovery orchestrates all enhanced discovery modules.
func NewEnhancedDiscovery ¶
func NewEnhancedDiscovery(cfg Config) *EnhancedDiscovery
NewEnhancedDiscovery creates a new enhanced discovery orchestrator.
func (*EnhancedDiscovery) Discover ¶
func (ed *EnhancedDiscovery) Discover(targetURL string, headers http.Header, htmlContent string, cookies []*http.Cookie, jsURLs []string, knownURLs []string) *DiscoveryResult
Discover performs all enabled discovery operations on a target.
func (*EnhancedDiscovery) DiscoverQuick ¶
func (ed *EnhancedDiscovery) DiscoverQuick(targetURL string) *DiscoveryResult
DiscoverQuick performs a quick discovery with essential modules only.
func (*EnhancedDiscovery) GetFingerprinter ¶
func (ed *EnhancedDiscovery) GetFingerprinter() *TechFingerprinter
GetFingerprinter returns the fingerprinter for direct use.
func (*EnhancedDiscovery) GetJSExtractor ¶
func (ed *EnhancedDiscovery) GetJSExtractor() *JSExtractor
GetJSExtractor returns the JS extractor for direct use.
func (*EnhancedDiscovery) GetParameterDiscovery ¶
func (ed *EnhancedDiscovery) GetParameterDiscovery() *ParameterDiscovery
GetParameterDiscovery returns the parameter discovery for direct use.
func (*EnhancedDiscovery) GetPathBruter ¶
func (ed *EnhancedDiscovery) GetPathBruter() *PathBruter
GetPathBruter returns the path bruter for direct use.
func (*EnhancedDiscovery) GetRobotsParser ¶
func (ed *EnhancedDiscovery) GetRobotsParser() *RobotsParser
GetRobotsParser returns the robots parser for direct use.
func (*EnhancedDiscovery) GetSitemapParser ¶
func (ed *EnhancedDiscovery) GetSitemapParser() *SitemapParser
GetSitemapParser returns the sitemap parser for direct use.
func (*EnhancedDiscovery) GetSourceMapParser ¶
func (ed *EnhancedDiscovery) GetSourceMapParser() *SourceMapParser
GetSourceMapParser returns the source map parser for direct use.
type JSExtractionResult ¶
type JSExtractionResult struct {
SourceURL string
URLs []string
APIEndpoints []string
Routes []string
Subdomains []string
Secrets []SecretFinding
Comments []string
}
JSExtractionResult contains extracted data from JS files.
type JSExtractor ¶
type JSExtractor struct {
// contains filtered or unexported fields
}
JSExtractor extracts URLs and endpoints from JavaScript files.
func NewJSExtractor ¶
func NewJSExtractor(userAgent string, concurrency int) *JSExtractor
NewJSExtractor creates a new JavaScript extractor.
func (*JSExtractor) ExtractFromContent ¶
func (e *JSExtractor) ExtractFromContent(content string, baseURL *url.URL) *JSExtractionResult
ExtractFromContent extracts URLs and endpoints from JS content.
func (*JSExtractor) ExtractFromURLs ¶
func (e *JSExtractor) ExtractFromURLs(jsURLs []string) []JSExtractionResult
ExtractFromURLs fetches and extracts from multiple JS URLs.
type Parameter ¶
type Parameter struct {
Name string
Value string
Source string // URL, form, javascript, etc.
Type string // query, body, header, cookie
Context string // The URL or context where it was found
Examples []string // Example values seen
}
Parameter represents a discovered URL parameter.
type ParameterDiscovery ¶
type ParameterDiscovery struct {
// contains filtered or unexported fields
}
ParameterDiscovery discovers URL parameters from various sources.
func NewParameterDiscovery ¶
func NewParameterDiscovery() *ParameterDiscovery
NewParameterDiscovery creates a new parameter discovery instance.
func (*ParameterDiscovery) CommonParameters ¶
func (p *ParameterDiscovery) CommonParameters() []string
CommonParameters returns a list of commonly used parameter names.
func (*ParameterDiscovery) ExtractFromHTML ¶
func (p *ParameterDiscovery) ExtractFromHTML(html string) []Parameter
ExtractFromHTML extracts parameters from HTML form elements.
func (*ParameterDiscovery) ExtractFromJavaScript ¶
func (p *ParameterDiscovery) ExtractFromJavaScript(js string) []Parameter
ExtractFromJavaScript extracts parameters from JavaScript code.
func (*ParameterDiscovery) ExtractFromURLs ¶
func (p *ParameterDiscovery) ExtractFromURLs(urls []string) *ParameterResult
ExtractFromURLs extracts parameters from a list of URLs.
type ParameterResult ¶
type ParameterResult struct {
QueryParams []Parameter
BodyParams []Parameter
HeaderParams []Parameter
PathParams []Parameter
}
ParameterResult contains all discovered parameters.
type PathBruter ¶
type PathBruter struct {
// contains filtered or unexported fields
}
PathBruter checks for common paths and backup files.
func NewPathBruter ¶
func NewPathBruter(userAgent string, concurrency int) *PathBruter
NewPathBruter creates a new path bruter.
func (*PathBruter) BackupExtensions ¶
func (p *PathBruter) BackupExtensions() []string
BackupExtensions returns file extensions to check for backups.
func (*PathBruter) Brute ¶
func (p *PathBruter) Brute(targetURL string) ([]PathResult, error)
Brute checks common paths against a target.
func (*PathBruter) BruteBackups ¶
func (p *PathBruter) BruteBackups(knownFiles []string) ([]PathResult, error)
BruteBackups checks for backup files of known files.
func (*PathBruter) CommonPaths ¶
func (p *PathBruter) CommonPaths() []string
CommonPaths returns a list of common paths to check.
type PathResult ¶
type PathResult struct {
Path string
URL string
StatusCode int
ContentType string
ContentLength int64
Category string
Interesting bool
}
PathResult represents a discovered path.
type RobotsParser ¶
type RobotsParser struct {
// contains filtered or unexported fields
}
RobotsParser parses robots.txt to discover paths.
func NewRobotsParser ¶
func NewRobotsParser(userAgent string) *RobotsParser
NewRobotsParser creates a new robots.txt parser.
func (*RobotsParser) GetInterestingPaths ¶
func (p *RobotsParser) GetInterestingPaths(result *RobotsResult) []string
GetInterestingPaths returns paths that might reveal hidden content.
func (*RobotsParser) Parse ¶
func (p *RobotsParser) Parse(targetURL string) (*RobotsResult, error)
Parse fetches and parses robots.txt for a target.
type RobotsResult ¶
type RobotsResult struct {
AllowedPaths []string
DisallowedPaths []string
Sitemaps []string
CrawlDelay int
Host string
UserAgentRules map[string]*RobotsRules
}
RobotsResult contains parsed robots.txt data.
type RobotsRules ¶
RobotsRules contains rules for a specific user agent.
type SecretFinding ¶
SecretFinding represents a potential secret found in source code.
type Sitemap ¶
type Sitemap struct {
XMLName xml.Name `xml:"urlset"`
URLs []SitemapURL `xml:"url"`
}
Sitemap represents a sitemap.xml structure.
type SitemapEntry ¶
SitemapEntry represents an entry in a sitemap index.
type SitemapIndex ¶
type SitemapIndex struct {
XMLName xml.Name `xml:"sitemapindex"`
Sitemaps []SitemapEntry `xml:"sitemap"`
}
SitemapIndex represents a sitemap index file.
type SitemapParser ¶
type SitemapParser struct {
// contains filtered or unexported fields
}
SitemapParser parses sitemap.xml files to discover URLs.
func NewSitemapParser ¶
func NewSitemapParser(userAgent string) *SitemapParser
NewSitemapParser creates a new sitemap parser.
func (*SitemapParser) Discover ¶
func (p *SitemapParser) Discover(targetURL string) ([]SitemapURL, error)
Discover finds and parses sitemaps for a target.
func (*SitemapParser) GetURLStrings ¶
func (p *SitemapParser) GetURLStrings(entries []SitemapURL) []string
GetURLStrings returns just the URL strings from sitemap entries.
type SitemapURL ¶
type SitemapURL struct {
Loc string `xml:"loc"`
LastMod string `xml:"lastmod"`
ChangeFreq string `xml:"changefreq"`
Priority float64 `xml:"priority"`
ParsedTime time.Time
}
SitemapURL represents a URL entry in a sitemap.
type SourceMap ¶
type SourceMap struct {
Version int `json:"version"`
Sources []string `json:"sources"`
SourcesContent []string `json:"sourcesContent,omitempty"`
Names []string `json:"names"`
Mappings string `json:"mappings"`
File string `json:"file"`
SourceRoot string `json:"sourceRoot,omitempty"`
}
SourceMap represents a parsed source map file.
type SourceMapParser ¶
type SourceMapParser struct {
// contains filtered or unexported fields
}
SourceMapParser extracts routes and endpoints from JavaScript source maps.
func NewSourceMapParser ¶
func NewSourceMapParser(userAgent string) *SourceMapParser
NewSourceMapParser creates a new source map parser.
func (*SourceMapParser) FindSourceMaps ¶
func (p *SourceMapParser) FindSourceMaps(jsURLs []string) []string
FindSourceMaps looks for source map references in JavaScript files.
func (*SourceMapParser) Parse ¶
func (p *SourceMapParser) Parse(sourceMapURL string) (*SourceMapResult, error)
Parse downloads and parses a source map file.
type SourceMapResult ¶
type SourceMapResult struct {
SourceMapURL string
Sources []string
Routes []string
APIEndpoints []string
Secrets []SecretFinding
Components []string
OriginalSource map[string]string // filename -> content
}
SourceMapResult contains extracted information from source maps.
type TechFingerprinter ¶
type TechFingerprinter struct {
// contains filtered or unexported fields
}
TechFingerprinter detects technologies used by a web application.
func NewTechFingerprinter ¶
func NewTechFingerprinter(userAgent string) *TechFingerprinter
NewTechFingerprinter creates a new technology fingerprinter.
func (*TechFingerprinter) Fingerprint ¶
func (f *TechFingerprinter) Fingerprint(headers http.Header, htmlContent string, cookies []*http.Cookie) *TechResult
Fingerprint detects technologies from headers and HTML content.
func (*TechFingerprinter) GetSecurityRelevantTech ¶
func (f *TechFingerprinter) GetSecurityRelevantTech(result *TechResult) []Technology
GetSecurityRelevantTech returns technologies that are security-relevant.
type TechResult ¶
type TechResult struct {
Technologies []Technology
Headers map[string]string
Cookies []string
MetaTags map[string]string
}
TechResult contains all detected technologies.