- Баллы
- 78
там есть иньекции?Да... Был за мной такой грех когда то.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
там есть иньекции?Да... Был за мной такой грех когда то.
Нету, а к чему этот вопрос?там есть иньекции?
Как можно это пофиксить?Я тут это... Дыру нашёл случайно.
![]()
Эти 2 функции выполняются независимо, а значит если я знаю адрес обработчика, я могу передать method=pay
сумму денег в sum и ник в account и он зачислит деньги на счёт. Да, ссылку на обработчик нужно поискать, но ведь это большая дыра.
ДаКак можно это пофиксить?
ну просто так сказал, как будто есть.Нету, а к чему этот вопрос?
Вставить проверку в pay или вызывать pay только если up_sign вернула положительный ответ(п.с. я смотрел только юнит, может и в интеркассе есть дыра.)Как можно это пофиксить?
Просто добавить IP в список разрешенных для страницы проверки оплаты. В официальной библиотеке Unitpay все это есть. правда там был 1 косяк, который исправили после моего обращения.Вставить проверку в pay или вызывать pay только если up_sign вернула положительный ответ(п.с. я смотрел только юнит, может и в интеркассе есть дыра.)
замени функциюЯ тут это... Дыру нашёл случайно.
![]()
Эти 2 функции выполняются независимо, а значит если я знаю адрес обработчика, я могу передать method=pay
сумму денег в sum и ник в account и он зачислит деньги на счёт. Да, ссылку на обработчик нужно поискать, но ведь это большая дыра.
public function up_sign($reply) { // Проверка цифровой подписи unitpay
ksort($reply); // сортируем массив
$exp = explode("-", $this->up['project_id']);
$Sign = $reply['sign']; // сохраняем подпись
unset($reply['sign']); // удаляем подпись
$reply['projectId'] = $exp[0]; // заменяем существующий ид проекта на свой, дабы убедиться, что запрос от нашего UP
$return = (md5(join(null, $reply).$this->up['key']) != $Sign) ? "error" : "success"; // генирация и проверка подписи
echo $this->up_json_reply($return, $reply);
return $return;
}
case "pay" :
if($pay->up_sign($_REQUEST['params']) == "error") exit();
$pay->pay($_REQUEST['params']['sum'], $_REQUEST['params']['account']);
break;
Я тебе уже давно говорил о привязки к IP. UnitPay поняла о чем я говорил, поэтому и ввела фишку смены ключа.замени функцию
и в payment.phpPHP:public function up_sign($reply) { // Проверка цифровой подписи unitpay ksort($reply); // сортируем массив $exp = explode("-", $this->up['project_id']); $Sign = $reply['sign']; // сохраняем подпись unset($reply['sign']); // удаляем подпись $reply['projectId'] = $exp[0]; // заменяем существующий ид проекта на свой, дабы убедиться, что запрос от нашего UP $return = (md5(join(null, $reply).$this->up['key']) != $Sign) ? "error" : "success"; // генирация и проверка подписи echo $this->up_json_reply($return, $reply); return $return; }
говнокодное решение проблемыPHP:case "pay" : if($pay->up_sign($_REQUEST['params']) == "error") exit(); $pay->pay($_REQUEST['params']['sum'], $_REQUEST['params']['account']); break;
Я у себя вообще с 0 написал, просто оповестил тут народ, что есть дыра.замени функцию
и в payment.phpPHP:public function up_sign($reply) { // Проверка цифровой подписи unitpay ksort($reply); // сортируем массив $exp = explode("-", $this->up['project_id']); $Sign = $reply['sign']; // сохраняем подпись unset($reply['sign']); // удаляем подпись $reply['projectId'] = $exp[0]; // заменяем существующий ид проекта на свой, дабы убедиться, что запрос от нашего UP $return = (md5(join(null, $reply).$this->up['key']) != $Sign) ? "error" : "success"; // генирация и проверка подписи echo $this->up_json_reply($return, $reply); return $return; }
говнокодное решение проблемыPHP:case "pay" : if($pay->up_sign($_REQUEST['params']) == "error") exit(); $pay->pay($_REQUEST['params']['sum'], $_REQUEST['params']['account']); break;
Он его уже удалилА где ваш скрипт?
Вредоносный файл © Google Chrome
Лол? Он про скрипт от фокса, какой семёнчик??
https://www.dropbox.com/s/tnm97xy0rmxle0f/Payment_V3.rar
А такое все ещё можно?Добавь лучше оплату WebMoney без аттестата цены не будет тебе!
не в моих интересах, я просто переписал код так, как мне под него будет удобнее писать.Добавь лучше оплату WebMoney без аттестата цены не будет тебе!
Это 20 минут работы с webmoney api, посмотри, там всё простоДобавь лучше оплату WebMoney без аттестата цены не будет тебе!
А что namespace не заюзал(Ну ладно).https://www.dropbox.com/s/tnm97xy0rmxle0f/Payment_V3.rar
тестани плз на 2 платежки
вообще не дебажил ничего, ничего не тестил кроме генерации запроса