diff --git a/Plugins/ftp.go b/Plugins/ftp.go index 9fc4053..245df58 100644 --- a/Plugins/ftp.go +++ b/Plugins/ftp.go @@ -30,10 +30,25 @@ func FtpConn(info *common.HostInfo, user string, pass string) (flag bool, err er if err == nil { err = conn.Login(Username, Password) if err == nil { - defer conn.Logout() - result := fmt.Sprintf("FTP:%v:%v:%v %v", Host, Port, Username, Password) - common.LogSuccess(result) flag = true + result := fmt.Sprintf("FTP:%v:%v:%v %v", Host, Port, Username, Password) + dirs, err := conn.List("") + //defer conn.Logout() + if err == nil { + if len(dirs) > 0 { + for i := 0; i < len(dirs); i++ { + if len(dirs[i].Name) > 50 { + result += "\n [->]" + dirs[i].Name[:50] + } else { + result += "\n [->]" + dirs[i].Name + } + if i == 5 { + break + } + } + } + } + common.LogSuccess(result) } } return flag, err diff --git a/Plugins/scanner.go b/Plugins/scanner.go index 2c3e319..528373d 100644 --- a/Plugins/scanner.go +++ b/Plugins/scanner.go @@ -17,6 +17,9 @@ func Scan(info common.HostInfo) { Hosts = ICMPRun(Hosts, info.IcmpThreads, info.Ping) fmt.Println("icmp alive hosts len is:", len(Hosts)) } + if info.Scantype == "icmp" { + return + } AlivePorts := TCPportScan(Hosts, info.Ports, info.Timeout) if info.Scantype == "portscan" { return @@ -32,13 +35,13 @@ func Scan(info common.HostInfo) { if info.Scantype == "all" { if IsContain(severports, info.Ports) { AddScan(info.Ports, info, ch, &wg) + } else if info.Ports == "445" { //scan more vul + AddScan("1000001", info, ch, &wg) + AddScan("1000002", info, ch, &wg) } else { AddScan("1000003", info, ch, &wg) //webtitle } - if info.Ports == "445" { //scan more vul - AddScan("1000001", info, ch, &wg) - AddScan("1000002", info, ch, &wg) - } + } else { port, _ := common.PortlistBack[info.Scantype] scantype := strconv.Itoa(port) diff --git a/common/Parse.go b/common/Parse.go index 4b3834d..cd8120f 100644 --- a/common/Parse.go +++ b/common/Parse.go @@ -94,7 +94,11 @@ func ParseInput(Info *HostInfo) { os.Exit(0) } if Info.Outputfile != "" { - Outputfile = Info.Outputfile + if !strings.Contains(Outputfile, "/") && !strings.Contains(Outputfile, `\`) { + Outputfile = getpath() + Info.Outputfile + } else { + Outputfile = Info.Outputfile + } } if Info.IsSave == true { IsSave = false @@ -116,6 +120,10 @@ func ParseScantype(Info *HostInfo) { switch Info.Scantype { case "webtitle": Info.Ports = "80,81,443,7001,8000,8080,8089,9200" + case "ms17010": + Info.Ports = "445" + case "cve20200796": + Info.Ports = "445" case "portscan": default: port, _ := PORTList[Info.Scantype] @@ -132,3 +140,18 @@ func CheckErr(text string, err error) { os.Exit(0) } } + +func getpath() string { + filename := os.Args[0] + var path string + if strings.Contains(filename, "/") { + tmp := strings.Split(filename, `/`) + tmp[len(tmp)-1] = `` + path = strings.Join(tmp, `/`) + } else if strings.Contains(filename, `\`) { + tmp := strings.Split(filename, `\`) + tmp[len(tmp)-1] = `` + path = strings.Join(tmp, `\`) + } + return path +} diff --git a/common/config.go b/common/config.go index c49bf8e..69dee3f 100644 --- a/common/config.go +++ b/common/config.go @@ -29,6 +29,7 @@ var PORTList = map[string]int{ "findnet": 135, "all": 0, "portscan": 0, + "icmp": 0, } var PortlistBack = map[string]int{ @@ -48,9 +49,11 @@ var PortlistBack = map[string]int{ "findnet": 135, "all": 0, "portscan": 0, + "icmp": 0, } -var Outputfile = "result.txt" +var Outputfile = getpath() + "result.txt" + var IsSave = true var DefaultPorts = "21,22,80,81,135,443,445,1433,3306,5432,6379,7001,8000,8080,8089,9200,11211,27017" diff --git a/common/flag.go b/common/flag.go index bf24480..d7600c5 100644 --- a/common/flag.go +++ b/common/flag.go @@ -23,7 +23,7 @@ func Flag(Info *HostInfo) { flag.StringVar(&Info.Ports, "p", DefaultPorts, "Select a port,for example: 22 | 1-65535 | 22,80,3306") flag.StringVar(&Info.Command, "c", "", "exec command (ssh)") flag.IntVar(&Info.Threads, "t", 200, "Thread nums") - flag.IntVar(&Info.IcmpThreads, "it", 11000, "Icmp Threads nums") + flag.IntVar(&Info.IcmpThreads, "it", 3300, "Icmp Threads nums") flag.BoolVar(&Info.Isping, "np", false, "not to ping") flag.BoolVar(&Info.Ping, "ping", false, "using ping replace icmp") flag.BoolVar(&Info.IsSave, "no", false, "not to save output log")