Lucene search
K

GoAutoDial CE 3.3 SQL Injection / Command Injection

🗓️ 06 Dec 2015 00:00:00Reported by R-73eNType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 44 Views

GoAutoDial CE 3.3 Multiple SQL injections, Command Injection vulnerabilities found in various file

Code
`# Title : GoAutoDial CE 3.3 Multiple SQL injections, Command Injection  
# Date : 06/12/2015  
# Author : R-73eN  
# Tested on : goautodial-32bit-ce-3.3-final  
# Software : http://goautodial.org/  
# ___ __ ____ _ _   
# |_ _|_ __ / _| ___ / ___| ___ _ __ / \ | |   
# | || '_ \| |_ / _ \| | _ / _ \ '_ \ / _ \ | |   
# | || | | | _| (_) | |_| | __/ | | | / ___ \| |___   
# |___|_| |_|_| \___/ \____|\___|_| |_| /_/ \_\_____|  
#  
  
Vulnerabilities  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
call_report_export.php  
  
Line 131  
  
$LOGip = getenv("REMOTE_ADDR");  
$LOGbrowser = getenv("HTTP_USER_AGENT");  
$LOGscript_name = getenv("SCRIPT_NAME");  
$LOGserver_name = getenv("SERVER_NAME");  
$LOGserver_port = getenv("SERVER_PORT");  
$LOGrequest_uri = getenv("REQUEST_URI");  
$LOGhttp_referer = getenv("HTTP_REFERER");  
if (preg_match("/443/i",$LOGserver_port)) {$HTTPprotocol = 'https://';}  
else {$HTTPprotocol = 'http://';}  
if (($LOGserver_port == '80') or ($LOGserver_port == '443') ) {$LOGserver_port='';}  
else {$LOGserver_port = ":$LOGserver_port";}  
$LOGfull_url = "$HTTPprotocol$LOGserver_name$LOGserver_port$LOGrequest_uri";  
  
$stmt="INSERT INTO vicidial_report_log set event_date=NOW(), user='$PHP_AUTH_USER', ip_address='$LOGip', report_name='$report_name', browser='$LOGbrowser', referer='$LOGhttp_referer', notes='$LOGserver_name:$LOGserver_port $LOGscript_name |$campaign[0], $query_date, $end_date|', url='$LOGfull_url';";  
  
  
The $LOGip , $LOGbrowser etc are not sanitized are passed directly to a sql query.  
For example passing a crafted User-Agent header will cause a sql injection attack.  
  
The following files were vulnerable for the same vulnerability.  
call_report_export.php  
voice_lab.php  
user_status.php  
user_stats.php  
timeclock_status.php  
timeclock_report.php  
sph_report.php  
group_hourly_stats.php  
realtime_report.php  
lead_report_export.php  
list_download.php  
fcstats.php  
call_report_export.php  
AST_VICIDIAL_ingrouplist.php  
AST_VICIDIAL_hopperlist.php  
AST_usergroup_login_report.php  
AST_team_performance_detail.php  
AST_VDADstats.php  
AST_server_performance.php  
campaign_debug.php  
AST_LIST_UPDATEstats.php  
AST_LISTS_campaign_stats.php  
AST_OUTBOUNDsummary_interval.php  
AST_IVRstats.php  
AST_IVRfilter.php  
AST_inbound_daily_report.php  
and in many other files.  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
web_form_forward.php  
Line 15  
  
if (isset($_GET["user"])) {$user=$_GET["user"];}  
  
require("dbconnect.php");  
$stmt="SELECT full_name from vicidial_users where user='$user';";  
$rslt=mysql_query($stmt, $link);  
$row=mysql_fetch_row($rslt);  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
QM_live_monitor.php  
  
If the QueueMetrics is enabled the following file is vulnerable to sql injection  
  
. LINE 31  
if (isset($_GET["call"])){$call=$_GET["call"];}  
elseif (isset($_POST["call"])) {$call=$_POST["call"];}  
.  
.  
.  
$stmt = "SELECT user,server_ip,conf_exten,comments FROM vicidial_live_agents where callerid='$call';";  
  
  
As u can see the $call parameter is not sanitized which leads to Sql injection.  
  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
  
call_log_display.php SQL injection  
  
  
there is no validation on the $server_ip and $session_name an  
if( (strlen($server_ip)<6) or (!isset($server_ip)) or ( (strlen($session_name)<12) or (!isset($session_name)) ) )  
.  
.  
$stmt="SELECT count(*) from web_client_sessions where session_name='$session_name' and server_ip='$server_ip';";  
.  
.  
The if statement can be bypassed very easily, we need to provide an input more then 6 characters and more then 12 characters.  
Then the parameters get passed ot the sql query and we have sql injection again.  
  
The same vulnerability was found to.  
  
conf_extn_check.php  
inbound_popup.php  
live_extn_check.php  
manager_send.php  
park_calls_display.php  
active_list_refresh.php  
  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
  
SCRIPT_multirecording_AJAX.php SQL injection  
  
.  
.  
.  
if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];}  
elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];}  
.  
.  
.  
$stmt="select campaign_rec_filename from vicidial_campaigns where campaign_id='$campaign'";  
  
Again $campaign is not sanetized  
  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
  
recording_lookup.php SQL injection  
.  
.  
(isset($_GET["QUERY_recid"])) {$QUERY_recid=$_GET["QUERY_recid"];}  
elseif (isset($_POST["QUERY_recid"])) {$QUERY_recid=$_POST["QUERY_recid"];}  
.  
.  
$stmt="select recording_id,lead_id,user,filename,location,start_time,length_in_sec from recording_log where filename LIKE \"%$QUERY_recid%\" order by recording_id desc LIMIT 1;";  
$QUERY_recid is not sanitized.  
  
  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  
  
vicidial_sales_viewer.php SQL injection , Command Injection  
the $dcampaign parameter is not sanitized.  
  
.  
.  
if (isset($_GET["dcampaign"])) {$dcampaign=$_GET["dcampaign"];}  
elseif (isset($_POST["dcampaign"])) {$dcampaign=$_POST["dcampaign"];}  
.  
.  
$stmt="select campaign_id, campaign_name from vicidial_campaigns where campaign_id='$dcampaign'"; // Here we have the sql injection  
.  
.  
passthru("$WeBServeRRooT/vicidial/spreadsheet_sales_viewer.pl $list_ids $sales_number $timestamp $forc $now $dcampaign"); // Command injection  
  
  
  
https://www.infogen.al/ - Infogen AL  
`

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