yellow~ opinionated web scanning pipeline for pentesters in a hurry |
| git clone https://github.com/djnnvx/yellow.git |
| log | files | refs | archive | README | LICENSE |
leaker.go (1884B)
1 package osint 2 3 import ( 4 "context" 5 "fmt" 6 "io" 7 "os" 8 "time" 9 10 "evil.djnn.sh/djnn/yellow/core" 11 "github.com/vflame6/leaker/runner" 12 ) 13 14 type Leaker struct{} 15 16 func (*Leaker) Name() string { return "leaker" } 17 18 func (*Leaker) Run(ctx *core.Context) error { 19 fmt.Printf("[+] Running leaker for credential leak checking (target: %s)\n", ctx.Domain) 20 21 emailsFile := ctx.EmailsFile 22 if emailsFile != "" { 23 fmt.Printf(" Emails file: %s\n", emailsFile) 24 } 25 26 providerConfig := os.Getenv("LEAKER_PROVIDER_CONFIG") 27 if providerConfig != "" { 28 fmt.Printf(" Provider config: %s\n", providerConfig) 29 } 30 31 if ctx.DryRun { 32 return nil 33 } 34 35 if emailsFile == "" { 36 fmt.Println("[!] Leaker: no emails file provided, skipping") 37 return nil 38 } 39 if _, err := os.Stat(emailsFile); os.IsNotExist(err) { 40 fmt.Printf("[!] Leaker: emails file %s does not exist, skipping\n", emailsFile) 41 return nil 42 } 43 44 outfile := fmt.Sprintf("%s/leaks.txt", ctx.ScanPath) 45 46 emailsReader, err := os.Open(emailsFile) 47 if err != nil { 48 fmt.Printf("[!] Leaker: failed to open emails file: %v\n", err) 49 return nil 50 } 51 defer emailsReader.Close() 52 53 outFile, err := os.Create(outfile) 54 if err != nil { 55 fmt.Printf("[!] Leaker: failed to create output file: %v\n", err) 56 return nil 57 } 58 defer outFile.Close() 59 60 opts := &runner.Options{ 61 Timeout: 60 * time.Second, 62 OutputFile: outfile, 63 ProviderConfig: providerConfig, 64 Quiet: true, 65 } 66 if ctx.Proxy != "" { 67 opts.Proxy = ctx.Proxy 68 } 69 70 r, err := runner.NewRunner(opts) 71 if err != nil { 72 fmt.Printf("[!] Leaker: failed to create runner: %v\n", err) 73 return nil 74 } 75 76 if err := r.EnumerateMultipleTargets(context.Background(), emailsReader, []io.Writer{outFile}); err != nil { 77 fmt.Printf("[!] Leaker: enumeration failed: %v\n", err) 78 return nil 79 } 80 81 fmt.Printf("[OSINT %s] Leaker results are stored in %s\n", ctx.Domain, outfile) 82 return nil 83 }