Сбой PayPal или взлом? Платежи отправлялись на случайный адрес


Я либо рассматриваю попытку взлома, либо временный сбой PayPal здесь. Мы работаем с PayPal Australia, используя PayPal Express. Мы находимся на Magento CE 1.7.0.2.

К счастью, у меня был модуль PayPal Express на отладке до конца. Что мне удалось найти после добрых 4 часов, так это то, что администратор Magento не был скомпрометирован или "неправильный адрес электронной почты" не был жестко закодирован в файловой системе (согласно метке времени и журналам сервера - кто знает, если это хакер, который приводит в порядок эти вещи вверх). Компромисс с базой данных также выглядит маловероятным. Мы запускаем RDS на EC2.

Эта проблема затронула 3 платежа. В журналах сначала я вижу:

[url] => https://api-3t.paypal.com/nvp
[SetExpressCheckout] => Array
    (
        [PAYMENTACTION] => Sale
        [AMT] => 999.00
        [CURRENCYCODE] => AUD
        [RETURNURL] => https://foobar/paypal/express/return/
        [CANCELURL] => https://foobar/paypal/express/cancel/
        [INVNUM] => 9999999
        [SOLUTIONTYPE] => Mark
        [GIROPAYCANCELURL] => https://foobar/paypal/express/cancel/
        [GIROPAYSUCCESSURL] => https://foobar/checkout/onepage/success/
        [BANKTXNPENDINGURL] => https://foobar/checkout/onepage/success/
        [LOCALECODE] => en_AU
        [SUBJECT] => [email protected]
        [ITEMAMT] => 999.00

Очевидно, что неправильной частью является [SUBJECT], где "возможный хакер" каким-то образом вставил свою электронную почту, я не знаю, как. Но, как ни странно, если это была работа хакера, то он/она любезно вернул нам все обратно и стер все следы, сбросил временные метки и удалил записи из журналов сервера.

После 3 платежей, отправленных на неправильный адрес электронной почты, это отображается в журнале:

[exception] => Requested [email protected] and configured [email protected] merchant emails do not match.

Затем при заказе после этого платежи возобновляются по нужному адресу.

Итак, это много справочной информации, но мой вопрос - когда точное время, когда модуль PayPal регистрирует массив [SetExpressCheckout]? Возможно ли, что Magento уже получил ответ от PayPal на этом этапе - или это электронное письмо определенно от нашего сервер?

Мы используем оформление заказа на одну страницу Magento.

РЕДАКТИРОВАТЬ: Я замечаю, что единственная запись в журнале также содержит ответ PayPal, поэтому во время регистрации этой информации в Magento она уже была получена от PayPal. Очень загадочный материал, но тем не менее интересный.

Author: MTM, 2014-02-18

1 answers

Я написал следующий скрипт bash, чтобы получать уведомления, если эта проблема повторится. Это действительно похоже на сбой PayPal, так как было нетрудно найти других людей, у которых была такая же проблема в прошлом:

Http://www.magentocommerce.com/boards/viewthread/323726 / http://www.magentocommerce.com/boards/viewthread/333281/

В любом случае, вот сценарий, если он кому-нибудь поможет. У меня есть это в моем кронтабе, чтобы запускать каждые 5 минут.

#/bin/bash
if fgrep -e '[SUBJECT]' -e '[PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID]' -e '[business]' -e '[receiver_email]' /var/www/var/log/payment_paypal_express.log | fgrep -v 'paypal@foobar'; 
then 
    fgrep -e '[SUBJECT]' -e '[PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID]' -e '[business]' -e '[receiver_email]' /var/www/var/log/payment_paypal_express.log | fgrep -v 'paypal@foobar' | mail -s 'PayPal Express Alert' me@foobar
    mv /var/www/var/log/payment_paypal_express.log /var/www/var/log/payment_paypal_express_$(date -d "today" +"%Y%m%d%H%M").log
else 
    echo 'All good.' | mail -s 'PayPal Express OK' me@foobar
fi

Хрон установлено для запуска каждые 5 минут:

*/5 * * * * /bin/sh /home/ubuntu/paypal-express-check.sh

Очевидно, что вам потребуется изменить paypal@foobar на адрес PayPal магазина, me@foobar на свой собственный и изменить каталоги в соответствии с вашей файловой системой.

 2
Author: Francis Kim, 2014-02-19 04:11:14