Lucene search
+L

Riello NetMan Default Credentials (HTTP)

🗓️ 28 Sep 2016 00:00:00Reported by Copyright (C) 2016 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 485 Views

The Riello NetMan 204 network card is vulnerable to default credentials for HTTP login, impacting sensitive information retrieval

Related
Refs
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2025-71317
5 Jun 202617:49
attackerkb
circl
Circl
CVE-2025-71317
5 Jun 202619:16
circl
cnnvd
CNNVD
RIELLO UPS NetMan 信任管理问题漏洞
5 Jun 202600:00
cnnvd
cve
CVE
CVE-2025-71317
5 Jun 202617:49
cve
cvelist
Cvelist
CVE-2025-71317 NetMan 204 Hard-coded Backdoor Credentials
5 Jun 202617:49
cvelist
euvd
EUVD
EUVD-2025-210078
5 Jun 202617:49
euvd
nvd
NVD
CVE-2025-71317
5 Jun 202618:16
nvd
openvas
OpenVAS
Riello NetMan 204 Default Credentials (SSH)
28 Sep 201600:00
openvas
ptsecurity
Positive Technologies
PT-2026-47013
5 Jun 202600:00
ptsecurity
vulnrichment
Vulnrichment
CVE-2025-71317 NetMan 204 Hard-coded Backdoor Credentials
5 Jun 202617:49
vulnrichment
# SPDX-FileCopyrightText: 2016 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

CPE_PREFIX = "cpe:/o:riello-ups:netman_";

if (description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.140003");
  script_version("2026-06-09T06:55:51+0000");
  script_tag(name:"last_modification", value:"2026-06-09 06:55:51 +0000 (Tue, 09 Jun 2026)");
  script_tag(name:"creation_date", value:"2016-09-28 16:35:07 +0200 (Wed, 28 Sep 2016)");
  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:"2026-06-05 18:16:54 +0000 (Fri, 05 Jun 2026)");

  script_cve_id("CVE-2025-71317");

  script_tag(name:"qod_type", value:"remote_active");

  script_tag(name:"solution_type", value:"Workaround");

  script_name("Riello NetMan Default Credentials (HTTP)");

  script_category(ACT_ATTACK);

  script_copyright("Copyright (C) 2016 Greenbone AG");
  script_family("Default Accounts");
  script_dependencies("gb_riello_ups_netman_consolidation.nasl",
                      "gb_default_credentials_options.nasl");
  script_require_ports("Services/www", 80);
  script_mandatory_keys("riello/netman/http/detected");
  script_exclude_keys("default_credentials/disable_default_account_checks");

  script_tag(name:"summary", value:"The remote Riello NetMan network card is using known default
  credentials for the HTTP login.");

  script_tag(name:"vuldetect", value:"Tries to login using known default credentials.");

  script_tag(name:"impact", value:"Attackers can exploit this issue to obtain sensitive information
  that may lead to further attacks.");

  script_tag(name:"solution", value:"Change the password of the affected account(s).");

  script_xref(name:"URL", value:"https://www.exploit-db.com/exploits/41208");
  script_xref(name:"URL", value:"https://www.exploit-db.com/exploits/52183");

  exit(0);
}

if(get_kb_item("default_credentials/disable_default_account_checks"))
  exit(0);

include("http_func.inc");
include("misc_func.inc");
include("host_details.inc");

if( ! infos = get_app_port_from_cpe_prefix( cpe:CPE_PREFIX, service: "www" ) )
  exit( 0 );

port = infos["port"];
cpe = infos["cpe"];

if( ! dir = get_app_location( cpe:cpe, port:port ) )
  exit( 0 );

if( dir == "/" )
  dir = "";

# nb:
# - eurek:eurek is from the exploit-db entry
# - Others are default credentials on the target according to the NetMan 204 manual
# - admin:admin and eurek:eurek are tested first as these are the "most" valuable ones
credentials = make_array(
  "admin", "admin",
  "eurek", "eurek",
  "fwupgrade", "fwupgrade",
  "user", "user" );

# nb:
# - 01.x and 02.x are using the very same endpoint
# - For 02.x a GET is used by default but using POST is also working...
url = dir + "/cgi-bin/login.cgi";

foreach username( keys( credentials ) ) {

  password = credentials[username];
  data = "username=" + username + "&password=" + password;

  req = http_post_put_req( port:port, url:url, data:data,
                           add_headers:make_array( "Content-Type", "application/x-www-form-urlencoded" ) );
  buf = http_send_recv( port:port, data:req, bodyonly:FALSE );

  # nb: Device might be busy, just wait a few seconds...
  #
  # For older 01.x versions:
  #
  # HTTP/1.0 200 OK
  # Content-Type: text/html
  #
  #
  # <meta HTTP-EQUIV="REFRESH" content="0; url=..">
  # <script type="text/javascript">alert('Another user is logged in. Please retry in a few minutes.');</script>
  #
  # For newer 02.x versions:
  #
  # HTTP/1.1 200 OK
  # Status: 200
  # Connection: close
  # Date: Thu, 06 Apr 2023 12:27:04 GMT
  # Server: lighttpd/1.4.31
  # Content-Length: 109
  # {
  # "response": "error",
  # "code": 403,
  # "message": "Another user is logged in. Please retry in a few minutes."
  # }
  #
  if( buf && "Another user is logged in. Please retry in a few minutes" >< buf ) {
    sleep( 10 );
    buf = http_send_recv( port:port, data:req, bodyonly:FALSE );
  }

  # For older 01.x versions if login was successful:
  #
  # HTTP/1.0 200 OK
  # Content-Type: text/html
  # Set-Cookie: session: 0a5127c4fddbd97c5377a99a79cd5aaeb14ae1c9e30a11d0f73fde968458c75d
  #
  #
  # <script type="text/javascript">window.location.replace("view.cgi");</script>
  #
  # and if it failed:
  #
  # HTTP/1.0 200 OK
  # Content-Type: text/html
  #
  #
  # <meta HTTP-EQUIV="REFRESH" content="0; url=..">
  if( buf =~ "^HTTP/1\.[01] 200" && "session:" >< buf && "window.location.replace" >< buf ) {
    co = eregmatch( pattern:'Set-Cookie: (session: [^\r\n]+)', string:buf );
    if( isnull( co[1] ) )
      continue;

    cookie = co[1];

    url2 = "/cgi-bin/changepwd.cgi";
    req = http_get_req( port:port, url:url2, add_headers:make_array( "Cookie", cookie ) );
    buf = http_send_recv( port:port, data:req, bodyonly:FALSE );

    if( ( ">Change password<" >< buf && ">Logout<" >< buf ) || "Another user is logged in. Please retry in a few minutes" >< buf ) {
      security_message( port:port, data:"It was possible to login as user '" + username + "' with password '" + password + "' at: " + http_report_vuln_url( port:port, url:url, url_only:TRUE ) );

      # nb: Try to logout to give the session "free" for subsequent logins / scans.
      url2 = "/cgi-bin/logout.cgi";
      req = http_get_req( port:port, url:url2, add_headers:make_array( "Cookie", cookie ) );
      http_send_recv( port:port, data:req, bodyonly:FALSE );
      exit( 0 );
    }
  }

  # For newer 02.x versions if login was successful:
  #
  # HTTP/1.1 200 OK
  # Status: 200
  # Connection: close
  # Date: Thu, 06 Apr 2023 12:24:16 GMT
  # Server: lighttpd/1.4.31
  # Content-Length: 133
  #
  # {
  # "response": "ok",
  # "message": "Welcome.",
  # "data": {
  # "token" : "ebb5b153d46b0e94de1ccecd3a28c63669b2a4d268323eab52ea558a9e3ba121"}
  # }
  #
  # and if it failed:
  #
  # HTTP/1.1 200 OK
  # Status: 200
  # Connection: close
  # Date: Thu, 06 Apr 2023 12:33:54 GMT
  # Server: lighttpd/1.4.31
  # Content-Length: 144
  #
  # {
  # "response": "error",
  # "code": 403,
  # "message": "User not authorized. Click <a href=recoverpassword.html>here</a> if you forgot the password."
  # }
  #
  else if( buf =~ "^HTTP/1\.[01] 200" && buf =~ '"response"\\s*:\\s*"ok",' && buf =~ '"message"\\s*:\\s*"Welcome\\."' ) {
    to = eregmatch( pattern:'"token"\\s*:\\s*"([^"]+)"', string:buf );
    if( isnull( to[1] ) )
      continue;

    token = to[1];

    security_message( port:port, data:"It was possible to login as user '" + username + "' with password '" + password + "' at: " + http_report_vuln_url( port:port, url:url, url_only:TRUE ) );

    # nb: Try to logout to give the session "free" for subsequent logins / scans.
    url2 = "/cgi-bin/logout.cgi";
    req = http_get_req( port:port, url:url2, add_headers:make_array( "Cookie", "token=" + token ) );
    http_send_recv( port:port, data:req, bodyonly:FALSE );
    exit( 0 );
  }

  # nb: Sleep again for a few seconds because older devices seems to require some recovery from time to time...
  sleep( 5 );
}

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

09 Jun 2026 00:00Current
5.5Medium risk
Vulners AI Score5.5
CVSS 49.3
CVSS 3.19.8
EPSS0.00432
SSVC
485