Search
Write a publication
Pull to refresh

OnPay API: Найдена уязвимость позволяющая говорить «Оплачено»

Владельцы сайтов, на которые установлена система оплаты через популярного агрегатора платежей «OnPay», рискуют продать свой товар или услугу бесплатно.


Интегрируя default API* (рекомендованное агрегатором для скачивания и установки) в движок сайта заказчика, наткнулся на фрагмент следующего кода:
#onpay_functions.php  - line: 174-176
# $md5fb - созданную нами
# $md5   - присланную

//сверяем строчки хеша (присланную и созданную нами) 
if ($md5fb != $md5) {
	$rezult = answerpay($_REQUEST['type'], 8, $pay_for, $order_amount, $order_currency, 'Md5 signature is wrong. Expected '.$md5fb, $onpay_id);
}

Обратите внимание!
'Md5 signature is wrong. Expected '.$md5fb
( рус. «Неправильная MD5 сигнатура. Ожидается ...» )

После слова «Ожидается» выводится MD5 сигнатура, сформированная для сверки с сигнатурой, посланной от системы уведомления.

Немного поковырявшись (минут 5), был найден способ, как эмитировать «pay» уведомление, в ответ на которое выводится это сообщение. Дальше дел на пару кликов и в результате полноценное уведомление об оплате, которое подтвердит поступление платежа.

Как оказалось, API написанное для платформ, тоже не лишено этого изъяна.
(Из 2-х проверенных навскидку, нашел в JoomShopping.)

ЗАЩИТА

  • Убрать $md5fb из результата выдачи.
  • Запретить принимать «pay» и «check» уведомления, с IP отличных от агрегатора OnPay*.
  • Внимательно проверять и перепроверять подобные API.



ССЫЛКИ

  • default API (.rar) — исходный код API с сайта агрегатора.
  • IP OnPay — можно посмотреть тут.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.