| Reporter | Title | Published | Views | Family All 26 |
|---|---|---|---|---|
| CVE-2021-33583 | 30 Sep 202120:15 | – | attackerkb | |
| CVE-2021-33583 | 1 Oct 202100:13 | – | circl | |
| CVE-2024-6912 | 22 Jul 202423:41 | – | circl | |
| REINER SCT Reiner TimeCard 信任管理问题漏洞 | 30 Sep 202100:00 | – | cnnvd | |
| GE Healthcare Centricity Analytics Server Built-in Account Vulnerability | 8 Aug 201500:00 | – | cnvd | |
| CVE-2011-5322 | 4 Aug 201510:00 | – | cve | |
| CVE-2021-33583 | 30 Sep 202119:19 | – | cve | |
| CVE-2024-6912 | 22 Jul 202420:51 | – | cve | |
| CVE-2011-5322 | 4 Aug 201510:00 | – | cvelist | |
| CVE-2021-33583 | 30 Sep 202119:19 | – | cvelist |
# SPDX-FileCopyrightText: 2005 HD Moore
# SPDX-FileCopyrightText: New / improved code since 2023 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only
DEFAULT_ACCOUNT_TEST_THRESHOLD = 2;
CPE = "cpe:/a:microsoft:sql_server";
if(description)
{
script_oid("1.3.6.1.4.1.25623.1.0.10862");
script_version("2026-03-05T05:55:06+0000");
script_tag(name:"last_modification", value:"2026-03-05 05:55:06 +0000 (Thu, 05 Mar 2026)");
script_tag(name:"creation_date", value:"2005-11-03 14:08:04 +0100 (Thu, 03 Nov 2005)");
script_tag(name:"cvss_base", value:"10.0");
script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:C/I:C/A:C");
script_tag(name:"severity_vector", value:"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
script_tag(name:"severity_origin", value:"NVD");
script_tag(name:"severity_date", value:"2021-10-12 13:55:00 +0000 (Tue, 12 Oct 2021)");
# nb: Unlike other VTs we're using the CVEs line by line here for easier addition of new CVEs / to
# avoid too large diffs when adding a new CVE.
script_cve_id("CVE-2011-5322",
"CVE-2021-33583",
"CVE-2024-6912");
script_name("Microsoft SQL (MSSQL) Server Brute Force Logins With Default Credentials (TCP/IP Listener)");
script_category(ACT_ATTACK);
script_copyright("Copyright (C) 2005 HD Moore");
script_family("Brute force attacks");
script_dependencies("gb_microsoft_sql_server_tcp_ip_listener_detect.nasl",
"gb_default_credentials_options.nasl");
script_require_ports("Services/mssql", 1433);
script_mandatory_keys("microsoft/sqlserver/tcp_listener/detected");
script_exclude_keys("default_credentials/disable_brute_force_checks");
script_add_preference(name:"Max number of passwords tried for each tested account", type:"entry", value:DEFAULT_ACCOUNT_TEST_THRESHOLD, id:1);
script_tag(name:"summary", value:"The remote Microsoft SQL (MSSQL) Server has a common / publicly
known password for one or more accounts.");
script_tag(name:"vuldetect", value:"Tries to login with a number of known default credentials via
the Microsoft SQL protocol.
Note: To avoid account lockouts due to possible existing account lockout policies (which are
enforced on a per-user basis) this VT will only try 2 passwords for each tested account by
default. This default can be changed (if required) in the preferences of this VT.");
script_tag(name:"impact", value:"An attacker can use these accounts to read and/or modify data on
the Microsoft SQL Server. In addition, the attacker may be able to launch programs on the target
operating system.");
script_tag(name:"affected", value:"The following products are known to be affected:
- PerkinElmer Inc BioAssay Enterprise
- Milestone XProtect Essential
- Arcserve UDP
- Lansweeper
- Microsoft Lync 2010
- Saleslogix
- Act!
- PerkinElmer Inc. BioAssay Enterprise
- PC America Restaurant Pro Express
- HP MFP Digital Sending Software
- My Movies
- Codepal
- Ecava IntegraXor
- DHL EasyShip
- CVE-2011-5322: GE Healthcare Centricity Analytics Server
- CVE-2021-33583: REINER timeCard 6.x
- CVE-2024-6912: PerkinElmer ProcessPlus");
script_tag(name:"solution", value:"Please set a difficult to guess password for the reported
account(s).");
script_tag(name:"solution_type", value:"Workaround");
script_tag(name:"qod_type", value:"remote_vul");
exit(0);
}
if(get_kb_item("default_credentials/disable_brute_force_checks"))
exit(0);
# MSSQL Brute Forcer
#
# This script checks a MSSQL Server instance for common username and password combinations. If you
# know of a common/default account that is not listed, please submit it to:
#
# https://forum.greenbone.net/c/vulnerability-tests/7
#
# System accounts with blank passwords are checked for in a separate plugin
# (mssql_blank_password.nasl). This plugin is geared towards accounts created by rushed admins or
# certain software installations.
include("host_details.inc");
include("list_array_func.inc");
include("mssql.inc");
account_test_threshold = int(script_get_preference("Max number of passwords tried for each tested account", id:1));
if(account_test_threshold <= 0)
account_test_threshold = DEFAULT_ACCOUNT_TEST_THRESHOLD;
# nb:
# - Some account / password pairs taken from (last change 8 years ago):
# https://github.com/mubix/post-exploitation-wiki/blob/master/windows/mssql.md?plain=1
# - If ever required (e.g. a password including ":") we could also exchange the ":" used below with
# something like e.g. "#---#". Make sure to update the sep:":" in the split() call below.
# - Order matters, e.g. place the "sa:password" which are more likely to be used more up vs. some
# exotic software like "My Movies" which are probably rarely used these days more down in the list
creds = make_list(
# Unknown origin / product (generally standard / default?)
"sa:sa",
# From https://hub.docker.com/_/microsoft-mssql-server
"sa:yourStrong(!)Password",
# Unknown origin / products (generally standard / defaults?)
"probe:probe",
"probe:password",
"sql:sql",
# PerkinElmer Inc BioAssay Enterprise
"ELNAdmin:ELNAdmin",
# Milestone XProtect Essential
"msi:keyboa5",
# Arcserve UDP from https://www.mdsec.co.uk/2023/06/cve-2023-26258-remote-code-execution-in-arcserve-udp-backup/
"arcserve_udp:@rcserveP@ssw0rd",
# Old Lansweeper releases mentioned in:
# https://community.lansweeper.com/t5/lansweeper-maintenance/change-the-lansweeper-database-password/ta-p/64305
"lansweeperuser:mysecretpassword0*",
"lansweeperuser:Mysecretpassword0*",
# Some Atlassian Jira examples found "in the wild" on some forums / config examples
"jirauser:jirapasswd",
"jirauser:jirauser",
# nb: These should be kept at the bottom as we want to test e.g. the above "sa" accounts first
#
# Unknown origin / products (generally standard / defaults?)
"admin:administrator",
"admin:password",
"admin:admin",
"sa:password",
"sa:administrator",
"sa:admin",
"sa:sql",
"sa:SQL",
# CVE-2021-33583: REINER timeCard 6.x
"sa:k+7&DG$pXNTy9h_8",
# Microsoft Lync 2010
"sa:mypassword",
# Saleslogix
"sa:SLXMaster",
"sa:SLXMa$t3r",
# Act!
"sa:sage",
"sa:ActbySage1!",
# PerkinElmer Inc. BioAssay Enterprise
"sa:CambridgeSoft_SA",
# PC America Restaurant Pro Express
"sa:PCAmerica",
"sa:pcAmer1ca",
# HP MFP Digital Sending Software
"sa:Hpdsdb000001",
"sa:hpdss",
# My Movies
"sa:t9AranuHA7",
# Codepal
"sa:Cod3p@l",
# Ecava IntegraXor
"sa:111",
# DHL EasyShip
"sa:DHLadmin@1",
# Some Jira docker examples
"sa:Password!_first",
# PerkinElmer ProcessPlus mentioned in https://cyberdanube.com/en/en-multiple-vulnerabilities-in-perten-processplus/
"sa:enilno",
# GE Healthcare Centricity Analytics Server and from the CVE-2011-5322 description
# nb: While the CVE description mentions different accounts only this one seems to be for the
# SQL server. All others seems to be for the Webmin interface.
"sa:V0yag3r"
);
# nb:
# - This is used to avoid "sa" and "admin" account lockouts by default with too many failed logins
# - The idea is that on each tested credential pairs the number in the array value is increased and
# then tested later again to see if the configured threshold has been reached
tested_accounts_numbers = make_array();
skipped_accounts_list = make_list();
VULN = FALSE;
failed_socket_open = 0;
report = 'It was possible to login to the remote Microsoft SQL (MSSQL) Server with following known credentials:\n';
if(!port = get_app_port(cpe:CPE, service:"tcp_listener"))
exit(0);
if(!get_app_location(cpe:CPE, port:port, nofork:TRUE))
exit(0);
foreach cred(creds) {
# nb: In this case it doesn't make much sense to continue. We still want to report what has been
# found so far so break; is used here.
if(failed_socket_open > 4)
break;
if(!soc = open_sock_tcp(port)) {
failed_socket_open++;
continue;
}
cred_split = split(cred, sep:":", keep:FALSE);
# nb: Shouldn't happen but we're checking it anyway...
if(!cred_split || max_index(cred_split) != 2) {
close(soc);
continue;
}
username = cred_split[0];
password = cred_split[1];
if(password == "none") {
pw_text = "No password";
password = "";
} else {
pw_text = '"' + password + '"';
}
# nb: See note above why this is used
if(!array_key_exist(key:username, array:tested_accounts_numbers, part_match:FALSE, icase:FALSE)) {
tested_accounts_numbers[username] = 1;
} else {
current_tested_accounts_numbers = tested_accounts_numbers[username];
if(current_tested_accounts_numbers >= account_test_threshold) {
if(!in_array(search:username, array:skipped_accounts_list, part_match:FALSE, icase:FALSE))
skipped_accounts_list = make_list(username, skipped_accounts_list);
has_skipped_account = TRUE;
close(soc);
continue;
} else {
current_tested_accounts_numbers++;
tested_accounts_numbers[username] = current_tested_accounts_numbers;
}
}
sql_packet = mssql_make_login_pkt(username:username, password:password);
send(socket:soc, data:sql_packet);
# nb: mssql_pkt_lang is a global var passed from mssql.inc
send(socket:soc, data:mssql_pkt_lang);
r = mssql_recv(socket:soc);
close(soc);
if(strlen(r) > 10 && ord(r[8]) == 0xE3) {
report += '\nAccount: "' + username + '", Password: ' + pw_text;
VULN = TRUE;
}
}
if(has_skipped_account) {
skipped_report = 'Testing of the following account(s) has been stopped due to reaching the configured threshold of "' + account_test_threshold + '":\n';
foreach skipped_account(skipped_accounts_list)
skipped_report += '\n' + skipped_account;
log_message(port:port, data:skipped_report);
}
if(VULN) {
security_message(port:port, data:report);
exit(0);
}
exit(99);
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation