shadow1ng/fscan · warning

service_no_credentials

Error message

service_no_credentials

What it means

The rsync service Scan produces a successful service-identification result but then finds no candidate credentials to test. When the credentials slice is empty, it returns a failed ScanResult with service_no_credentials, meaning the module cannot proceed to authentication because the caller supplied no username/password pairs.

Source

Thrown at plugins/services/rsync.go:61

		session.LogSuccess(i18n.Tr("rsync_service", target, result.Banner))
		findings = append(findings, result.Banner)
	}

	// 生成密码字典
	credentials := plugins.GenerateCredentials("rsync", config)
	if len(credentials) == 0 {
		if len(findings) > 0 {
			return &ScanResult{
				Success: true,
				Type:    plugins.ResultTypeService,
				Service: "rsync",
				Banner:  findings[0],
			}
		}
		return &ScanResult{
			Success: false,
			Service: "rsync",
			Error:   fmt.Errorf("%s", i18n.GetText("service_no_credentials")),
		}
	}

	// 转换凭据类型
	creds := make([]Credential, len(credentials))
	for i, c := range credentials {
		creds[i] = Credential{Username: c.Username, Password: c.Password}
	}

	// 使用公共框架进行并发凭据测试
	authFn := p.createAuthFunc(info, session)
	testConfig := DefaultConcurrentTestConfigWithTarget(config, info)

	result := TestCredentialsConcurrently(ctx, creds, authFn, "rsync", testConfig)

	if result.Success {
		session.LogVuln(i18n.Tr("rsync_credential", target, result.Username, result.Password))
		return result

View on GitHub (pinned to 95cc12e753)

Solutions

  1. Supply at least one credential pair (or an anonymous/empty-password pair) in the scan configuration.
  2. Check the credential-loading config so the rsync module receives the shared credential list.
  3. If anonymous rsync is expected, pass an empty username/password credential explicitly.

Example fix

// before
scan(target, credentials=[]) // service_no_credentials
// after
scan(target, credentials=[{user: "", pass: ""}, {user: "root", pass: "root"}])
Defensive patterns

Strategy: validation

Validate before calling

if len(credentials) == 0 {
    return errors.New("skipping rsync module: no credentials configured; add at least one user/pass or an anonymous pair")
}

Prevention

When it happens

Trigger: Scan is invoked on a host where an rsync banner was detected (findings non-empty) but the credentials parameter has zero entries, so the early-return branch fires with i18n.GetText("service_no_credentials").

Common situations: Running the scanner without a username/password wordlist loaded; credential config file missing or filtered out for the rsync module; intentionally testing only service identification but expecting auth attempts.

Related errors


AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06). Data as JSON: /api/errors/dc0486c52f9c9d39. Report an issue: GitHub.