Xakep #305. Многошаговые SQL-инъекции
Расследуя атаку на одного из своих клиентов, специалисты Sucuri обнаружили необычную кардерскую кампанию, в ходе которой хакеры скрыли свой вредоносный код внутри модуля платежного шлюза Authorize[.]net для WooCommcerce, стараясь избежать обнаружения.
Исследователи объясняют, что обычно злоумышленники взламывают сайты на базе Magento или WordPress, на которых работает WooCommerce, и внедряют вредоносный код JavaScript прямо в код магазина или на страницу оформления заказа. Потом такие скрипты воруют данные, введенные покупателями при оформлении заказа, включая номера банковских карт, даты истечения срока действия, номера CVV, адреса, номера телефонов и email-адреса.
Однако многие онлайн-магазины теперь сотрудничают с ИБ-компаниями, продукты которых регулярно сканируют e-commerce сайты и обнаруживают вредоносные скрипты, что затрудняет «работу» злоумышленников.
По данным Sucuri, теперь хакеры могут внедрять вредоносные скрипты непосредственно в плагины платежных шлюзов, используемые для обработки платежей по картам при оформлении заказов. Поскольку эти модули обычно подключаются к делу уже после того, как покупатель ввел свои данные, такие атаки гораздо сложнее обнаружить.
Эксперты напоминают, что WooCommerce — это популярная e-commerce платформа для WordPress, которую используют порядка 40% всех интернет-магазинов. Для приема банковских карт магазины используют системы процессинга платежей, например, Authorize.net (более 440 000 клиентов по всему миру).
Изучая атаку на своего клиента, аналитики Sucuri обнаружили, что злоумышленники изменили один из файлов Authorize.net (class-wc-authorize-net-cim.php), поддерживающих интеграцию платежного шлюза в среду WooCommerce.
Код, внедренный в конец файла, проверяет, содержит ли тело HTTP-запроса строку «wc-authorize-net-cim-credit-card-account-number», то есть платежные данные, введенные после того, как пользователь оформил заказ. Если платежные данные присутствуют в запросе, код злоумышленников генерирует случайный пароль, шифрует информацию жертвы с помощью AES-128-CBC и сохраняет в файле изображения, который позже передает своим операторам.
Еще одна инъекция была обнаружена в файле wc-authorize-net-cim.min.js, так же относящемся к Authorize.net. В этом случае код хакеров перехватывает дополнительные данные из формы ввода на зараженном сайте, стремясь узнать имя жертвы, адрес доставки, номер телефона и почтовый индекс.
Отмечается, что основной особенностью этой кампании является скрытность веб-скиммера, что значительно осложняет обнаружение атаки и удаление малвари. Так как вредоносный код встраивался в легитимные файлы платежного шлюза, регулярные проверки и сканирование кода сайтов не давали результатов.
Кроме того, само по себе сохранение данных банковских карт в файлы изображений не является новой тактикой, однако надежное шифрование — это новый элемент, который помогает злоумышленникам сохранять скрытность. Ранее атакующие хранили украденные данные открытым текстом, используя слабый base64, или информация просто передавалась хакерам прямо во время оплаты заказа.
В дополнение к этому сообщается, что злоумышленники злоупотребляют API-интерфейсом Heartbeat WordPress для имитации обычного трафика, смешивая свою активность с платежной активностью пользователей, что так же помогает избежать внимания со стороны инструментов, которые отслеживают несанкционированные передачи данных.