Multiple vulnerabilities in Ezylog photovoltaic management server ================================================================= [ADVISORY INFORMATION] Title: Multiple vulnerabilities in Ezylog photovoltaic management server Discovery date: 27/08/2012 Release date: 11/09/2012 Credits: Roberto Paleari (roberto@greyhats.it, @rpaleari) Ivan Speziale (ivan.speziale@hush.com) [AFFECTED PRODUCTS] The vulnerabilities discussed in this advisory affect the Schneider Electric Ezylog photovoltaic SCADA management server. However, the same management server is shared among different photovoltaic SCADA products from several manufacturers, with few customization. Thus, the same vulnerabilities should also apply to other products as well. All the firmware versions we analyzed have been found to be affected by these issues. [VULNERABILITY DETAILS] The software running on the affected devices is vulnerable to multiple security issues, that allow unauthenticated remote attackers to gain administrative access and execute arbitrary commands. The details of the vulnerabilities we found are discussed next. a) SQL injection vulnerabilities Many of the web pages included inside the device firmware are vulnerable to SQL injection (SQLI) issues, and allow attackers to interact with the underlying MySQL database. In the following we provide just few examples for this vulnerability class, but the same kind of defect also affects several different web pages. Page "dettagliinverter.php" can be accessed with no authentication, with two GET parameters: /dettagliinverter.php?primo=primo&inverterselect=3 The "inverterselect" argument is subject to a very straightforward SQLI issue, exploitable both manually or with publicly-available tools. Thus, attackers can easily leverage this issue to access the content of the SQL table that contains all valid username/password combinations (passwords are in plain text). Similarly, page "changelanguagesession.php" is affected by a similar issue, concerning the POST parameter "lingua". b) Hard-coded accounts The web page "login.php" checks user-supplied credentials against the username/password combinations stored inside the MySQL database. However, the device also authorizes 2 (or 3, in some setups) hard-coded accounts, when the user provides a specific password, regardless of the supplied username. These predefined passwords are hard-coded inside the PHP file, thus they cannot be changed (or removed) by the user. The relevant code fragments from "login.php" are reported below: $password = mysql_escape_string($_POST['password']); if (crypt($password,salt)=='satIZufhIrUfk'){ $sql_pthr_ = "SELECT user,password FROM account WHERE livello = 0"; .. } if ($password=='astridservice' and $stilecustumization=='astrid'){ .. } if (crypt($password,salt)=='saF8bay.tvfOk'){ $sql_insert="INSERT INTO account(user,password,livello,nome) VALUES ('sinapsi','sinapsi','0','Amministratore Sinapsi')"; .. } We already decoded the encrypted password "satIZufhIrUfk", which corresponds to the string "36e44c9b64". c) Command-injection Attackers can exploit the "ping.php" page to execute arbitrary commands on the device, with administrative privileges. More precisely, the "ip_dominio" POST parameter is not sanitize properly, thus it is possible to leverage traditional command-injection techniques to inject arbitrary commands. Example: curl "http:///ping.php?ping=ok" -d "ip_dominio=192.168.1.1 -n 1 %26 dir" Such an HTTP request forces the device to execute the following command: ping 192.168.1.1 -n 1 & dir As the POST parameter is used to build a command-line argument without being sanitized before, attackers can leverage termination characters (e.g., '&') to execute arbitrary commands (e.g., "dir"). d) Broken session enforcement The device software does not verify whether an user who accesses most of the management web pages (e.g., "ping.php") is associated with a properly authenticated session. In other terms, the command-execution and SQLI vulnerabilities discussed in the previous sections can be exploited by unauthenticated attackers. [REMEDIATION] We are not aware of an updated firmware that corrects the issues described in this advisory. Users should avoid exposing the management interface of the device on the Internet. [DISCLOSURE TIME-LINE] * 29/08/2012 - Initial vendor contact. * 05/09/2012 - No reply from vendor, re-contacting via e-mail. * 11/09/2012 - Still no reply from vendor. Disclosure. [DISCLAIMER] The authors are not responsible for the misuse of the information provided in this security advisory. The advisory is a service to the professional security community. There are NO WARRANTIES with regard to this information. Any application or distribution of this information constitutes acceptance AS IS, at the user's own risk. This information is subject to change without notice.