fscan/Plugins/memcached.go
2020-11-13 23:10:08 +08:00

32 lines
836 B
Go

package Plugins
import (
"../common"
"fmt"
"net"
"strings"
"sync"
"time"
)
func MemcachedScan(info *common.HostInfo,ch chan int,wg *sync.WaitGroup) (err error, result string) {
realhost:=fmt.Sprintf("%s:%d",info.Host,common.PORTList["mem"])
client,err:=net.DialTimeout("tcp",realhost,time.Duration(info.Timeout)*time.Second)
if err==nil {
client.SetDeadline(time.Now().Add(time.Duration(info.Timeout)*time.Second))
client.Write([]byte("stats\n")) //Set the key randomly to prevent the key on the server from being overwritten
rev := make([]byte, 1024)
n, err := client.Read(rev)
if err == nil {
if strings.Contains(string(rev[:n]), "STAT") {
defer client.Close()
result = fmt.Sprintf("Memcached:%s unauthorized",realhost)
common.LogSuccess(result)
}
}
}
wg.Done()
<- ch
return err, result
}