From ad67c5bd158ecb5032ce7d99e9b74d97e13251ff Mon Sep 17 00:00:00 2001 From: MaineK00n Date: Wed, 14 Oct 2020 17:29:15 +0900 Subject: [PATCH] add scanPort template , detectScanDest --- scan/base.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++ scan/serverapi.go | 8 ++++++++ 2 files changed, 59 insertions(+) diff --git a/scan/base.go b/scan/base.go index d18aa031..ad43f106 100644 --- a/scan/base.go +++ b/scan/base.go @@ -729,6 +729,57 @@ func (l *base) detectWpPlugins() ([]models.WpPackage, error) { return plugins, nil } +func (l *base) scanPorts() (err error) { + dest := l.detectScanDest() + fmt.Printf("%s\n", dest) + return nil +} + +func (l *base) detectScanDest() []string { + portsMap := map[string][]string{} + + for _, p := range l.osPackages.Packages { + if p.AffectedProcs == nil { + continue + } + for _, proc := range p.AffectedProcs { + if proc.ListenPorts == nil { + continue + } + for _, port := range proc.ListenPorts { + portsMap[port.Address] = append(portsMap[port.Address], port.Port) + + } + } + } + + d := []string{} + for i, ports := range portsMap { + if i == "*" { + for _, addr := range l.ServerInfo.IPv4Addrs { + for _, port := range ports { + d = append(d, addr+":"+port) + } + } + } else { + for _, port := range ports { + d = append(d, i+":"+port) + } + } + } + + m := map[string]bool{} + dest := []string{} + for _, e := range d { + if !m[e] { + m[e] = true + dest = append(dest, e) + } + } + + return dest +} + func (l *base) ps() (stdout string, err error) { cmd := `LANGUAGE=en_US.UTF-8 ps --no-headers --ppid 2 -p 2 --deselect -o pid,comm` r := l.exec(util.PrependProxyEnv(cmd), noSudo) diff --git a/scan/serverapi.go b/scan/serverapi.go index 312034e4..7460e5cb 100644 --- a/scan/serverapi.go +++ b/scan/serverapi.go @@ -48,6 +48,7 @@ type osTypeInterface interface { postScan() error scanWordPress() error scanLibraries() error + scanPorts() error scanPackages() error convertToModel() models.ScanResult @@ -637,11 +638,18 @@ func GetScanResults(scannedAt time.Time, timeoutSec int) (results models.ScanRes return nil }, timeoutSec) + for _, s := range servers { + if err = s.scanPorts(); err != nil { + util.Log.Errorf("Failed to scan Ports: %+v", err) + } + } + hostname, _ := os.Hostname() ipv4s, ipv6s, err := util.IP() if err != nil { util.Log.Errorf("Failed to fetch scannedIPs. err: %+v", err) } + for _, s := range append(servers, errServers...) { r := s.convertToModel() r.ScannedAt = scannedAt