Update mysql.go

Added a loop for databases to prevent certain non-existing mysql databases from being assumed not to have weak passwords
This commit is contained in:
r00t 2025-02-07 19:14:07 +08:00 committed by GitHub
parent b8a591920b
commit cc9d292bdd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -39,19 +39,23 @@ func MysqlScan(info *common.HostInfo) (tmperr error) {
func MysqlConn(info *common.HostInfo, user string, pass string) (flag bool, err error) { func MysqlConn(info *common.HostInfo, user string, pass string) (flag bool, err error) {
flag = false flag = false
Host, Port, Username, Password := info.Host, info.Ports, user, pass Host, Port, Username, Password := info.Host, info.Ports, user, pass
dataSourceName := fmt.Sprintf("%v:%v@tcp(%v:%v)/mysql?charset=utf8&timeout=%v", Username, Password, Host, Port, time.Duration(common.Timeout)*time.Second) for _, database := range []string{"mysql", "information_schema"} {
db, err := sql.Open("mysql", dataSourceName) dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8&timeout=%v", Username, Password, Host, Port, database, time.Duration(common.Timeout)*time.Second)
if err == nil { db, err := sql.Open("mysql", dsn)
db.SetConnMaxLifetime(time.Duration(common.Timeout) * time.Second)
db.SetConnMaxIdleTime(time.Duration(common.Timeout) * time.Second)
db.SetMaxIdleConns(0)
defer db.Close()
err = db.Ping()
if err == nil { if err == nil {
result := fmt.Sprintf("[+] mysql %v:%v:%v %v", Host, Port, Username, Password) db.SetConnMaxLifetime(time.Duration(common.Timeout) * time.Second)
common.LogSuccess(result) db.SetConnMaxIdleTime(time.Duration(common.Timeout) * time.Second)
flag = true db.SetMaxIdleConns(0)
err = db.Ping()
if err == nil {
result := fmt.Sprintf("[+] mysql %v:%v:%v %v", Host, Port, Username, Password)
common.LogSuccess(result)
flag = true
_ = db.Close()
break
}
} }
_ = db.Close()
} }
return flag, err return flag, err
} }