W3Techs: какие cms рулят? Opencart на 13 месте

В настоящее время 30% всех сайтов в интернете работают на базе WordPress. На рынке систем управления контентом доля этой CMS составляет 60,2%. Об этом свидетельствуют последние данные компанииW3Techs, которая анализирует 10 млн сайтов из рейтинга Amazon Alexa.


Любимый многими движок Opencart на 13 месте его обошел PrestaShop.

В ходе анализа поддомены сайта учитываются как один сайт, а переадресованные домены исключаются.

В ноябре 2015 года доля WordPress составляла 25%. За последние два с лишним года она выросла на 5%.

Лучшие снипперы .htaccess для повышения безопасности WordPress

Безопасность WordPress является одним из самых подрываемых факторов среди начинающих блоггеров. При неконтролируемой установке WordPress существует немало потенциальных уязвимостей, которые остаются без присмотра. Большинство учебников по установке WordPress объясняют быстрый и простой способ развернуть WordPress за считанные минуты. Но они пропускают несколько важных факторов безопасности. Например, просмотр каталогов и использование имени пользователя «admin» считаются серьезными лазейками безопасности. Сегодня мы рассмотрим фрагменты кода .htaccess, которые помогут улучшить безопасность вашего блога WordPress. Прежде чем мы начнем, давайте быстро рассмотрим, что такое файл htaccess.

Что такое файл .htaccess?
Файл htaccess является необязательным файлом конфигурации для веб-сервера Apache для интерпретации для каждого каталога. Вы можете хранить различные настройки в этом файле, такие как: защита паролем каталога, блокирование IP-адресов, блокирование файла или папки из общего доступа и т.д. Традиционно файл .htaccess присутствует в базовом каталоге установки WordPress. Он сохраняет структуру постоянной ссылки по умолчанию.

СОВЕТ. Прежде чем начать, обязательно создайте резервную копию текущего файла .htaccess (если он есть).

1. Блокировка плохих ботов


Одним из лучших применений файла .htaccess является его способность отклонять несколько одновременных подключений IP-адресов доступа к вашему сайту. Это полезно при блокировке известных спамеров и других подозрительных источников.
# Блокировка одного или несколько IP-адресов.
# Замените IP_ADDRESS_* на IP-адрес, который вы хотите заблокировать

<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>

Где IP_ADDRESS_1 — это первый IP-адрес, который вы хотите запретить для доступа к вашему сайту. Вы можете добавить столько IP-адресов, сколько хотите. Независимо от того, какие пользовательские агенты (браузеры) используют эти IP-адреса, они не смогут получить доступ к одному файлу с вашего сервера. Веб-сервер автоматически откажет в доступе.

2. Отключить Просмотр Каталогов

Это один из самых подрываемых недостатков безопасности на сайте WordPress. По умолчанию веб-сервер Apache позволяет просматривать каталоги. Это означает, что все файлы и папки внутри корневого каталога (иногда называемого домашним каталогом) веб-сервера просматриваются и доступны посетителю. Если вы не хотите, чтобы люди просматривали ваши медиа-загрузки ваши темы или файлы плагинов.

Если случайно выбирать 10 личных или бизнес-сайтов под управлением WordPress, у 6-8 из них не будет отключен просмотр каталогов. Это позволяет любому легко «обнюхать» папку wp-content/uploads или любой другой каталог, у которого нет файла index.php по умолчанию.
# Отключить просмотр каталогов
Options All -Indexes

3. Разрешить только выбранные файлы из wp-content.

Как вы знаете, папка wp-content содержит большинство ваших тем, плагинов и всех загрузок мультимедиа. Вы, конечно, не хотите, чтобы люди обращались к нему без ограничений. В дополнение к отключению просмотра каталогов вы также можете запретить доступ ко всем типам файлов, за исключением нескольких. По сути, вы можете выборочно разблокировать файлы, такие как JPG, PDF, DOCX, CSS, JS и т. Д., А также отказаться от остальных. Для этого вставьте этот фрагмент кода в файл .htaccess:
# Отключить доступ ко всем типам файлов, за исключением следующих
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>
Вы должны создать новый файл .htaccess с кодом и вставить его в папку wp-content. Не размещайте это в базовом каталоге установки, иначе он не будет работать. Вы также можете добавить любой тип файла в список, добавив '|' после «rar». В приведенном выше списке содержатся необходимые файлы — XML, CSS и JavaScript, общие форматы изображений и документов и наиболее используемые форматы архивов.

4. Ограничить доступ wp-includes для всех

Папка wp-includes содержит только файлы, которые строго необходимы для запуска основной версии WordPress — без плагинов или тем. Помните, что тема по умолчанию находится в каталоге wp-content/theme. Таким образом, ни один посетитель не сможет получить доступа к содержимому папки wp-include.
# Блокировать wp-includes включая папку и файлы
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

5. Разрешить доступ только выбранным IP-адресам к wp-admin

Папка wp-admin содержит файлы, необходимые для запуска панели инструментов WordPress. Хорошей мерой безопасности является включение только нескольких выбранных IP-адресов для доступа к папке wp-admin. Вы можете разрешить IP-адреса людей, которым необходим доступ к панели инструментов WordPress — редакторам, модераторам и другим администраторам. Этот фрагмент кода позволяет только фиксированным IP-адресам получить доступ к папке wp-admin и запретить доступ всему остальному миру.
# Ограничить вход и администрирование по IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>
Убедитесь, что вы создаете новый файл .htaccess и вставляете его в папку wp-admin, а не в папку базовой установки.

6. Защитите wp-config.php и .htaccess от всех

Файл wp-config.php содержит наиболее важные учетные данные доступа вашего сайта WordPress. Он содержит имя базы данных и учетные данные доступа и различные другие важные данные, среди других параметров. Если вы не хотите, чтобы другие люди смотрели этот файл и отключить публичный доступ к источнику всей этой безопасности — самому файлу .htaccess. Вы можете отключить доступ к wp-config.php с помощью следующего кода:
# Запретить доступ к файлу wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
Чтобы запретить доступ ко всем файлам htaccess (помните, что некоторые из них могут находиться в папке wp-admin и других папках), используйте этот фрагмент кода:
# Запретить доступ ко всем файлам .htaccess
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

7. Запретить ссылку на изображение

Один из самых классных и нужных htaccess хаков, это запрет на использование ссылок на ваши изображения. Если кто-то использует изображения вашего сайта, ваша пропускная способность потребляется, и ваш сайт может загружаться медленнее. Этот фрагмент кода устраняет эту проблему и запретит использование изображений при обнаружении hotlink.
# Запретить использование изображения. Замените последний URL любой желаемой ссылкой на изображение.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

8. Включить кеширование браузера.

Также известный как кеширование на стороне клиента, этот .htaccess взломать, чтобы включить рекомендуемые варианты кеширования браузера для вашего сайта WordPress. Вы также можете использовать его в других проектах — HTML-сайтах и ​​т.д.
# Настройка кэширования браузера
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

9. Перенаправление на страницу техническое обслуживание

Когда вы переносите веб-сайт или выполняете какую-либо задачу обслуживания, всегда рекомендуется создать статический файл «вниз для обслуживания», чтобы информировать своих посетителей о том, что веб-сайт подвергается обновлению или техобслуживанию. Просто создайте файл maintenance.html (или любое другое имя файла) и загрузите его в базовый каталог установки WordPress. Вставьте следующий фрагмент файла .htaccess. По завершении операции обязательно удалите или закомментируйте эти строки, чтобы вернуться к общей работе. Вы можете прокомментировать, добавив '#' в начале каждой строки.
# Перенаправить весь трафик на файл maintenance.html
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L] 

10. Пользовательские страницы ошибок

Вы также можете использовать файл .htaccess для настройки и направления на пользовательские страницы ошибок, такие как 403, 404 и 500. После того как вы подготовили Вашу страницу ошибки – скажем error.html, загрузите его в директорию установки WordPress. Затем добавьте следующий фрагмент кода в ваш .htaccess файл, чтобы включить пользовательскую страницу ошибки:
# Страница пользовательской ошибки для error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html

Вывод:
Сегодня мы изучили некоторые из самых крутых htaccess хаков, чтобы укрепить ваш сайт WordPress. Я предлагаю вам попробовать каждый модуль один за другим, используя резервную копию файла .htaccess до и после тестирования каждого модуля. Это связано с тем, что файл .htaccess очень важен. Отсутствующий символ «#» или неуместный «» может уничтожить целостность вашего сайта. Если вы регулярно посещаете панель инструментов WordPress, рекомендуется не включать выборочные IP-адреса в вашу папку wp-admin.

Больше примеров вы найдете тут =>

DoS-уязвимость в WordPress позволяет «положить» любой сайт

Независимый израильский ИБ-специалист Барак Тавайли( barak tawily) нашел и тщательно рассказал в собственном блоге критическую dos-уязвимость в wordpress cms. Баг получил идентификатор cve-2018-6389 и представляет угроза для всех версий wordpress, вышедших за крайние 9 лет( подключая более новый релиз 4. 9. 2).

В собственной статье спец разъясняет, что неувязка связана с работой load-scripts. Php, который употребляется для обработки пользовательских запросов. Исходно load-scripts.php был создан для удобства администраторов страниц, чтоб те могли повысить продуктивность собственных ресурсов, объединив некоторое количество файлов javascript воедино. При этом создатели wordpress не сочли необходимым защитить эту функциональность какой-нибудь аутентификацией, чтоб скрипт мог действовать и без логина. Фактически, load-scripts.php оказался доступен любому желающему.



В зависимости от поставленных модулей и плагинов, load-scripts.php выборочно подгружает разные файлы javascript, чьи имена перечисляются чрез запятую после параметра " load ". Url выглядит таким следующим образом:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Ето самый примитивный способ, более расширено можно использовать

eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter

Так, во время загрузки сайта, load-scripts.php пытается отыскать каждый из перечисленных в URL файлов JavaScript, чтобы «отдать» их браузеру пользователя в виде одного файла.

Тавайли обнаружил, что атакующий может заставить load-scripts.php загрузить все возможные файлы JavaScript вообще, просто перечислив их в URL. Из-за этого атакуемый сайт может начать работать значительно медленнее, поглощая все больше и больше мощностей сервера. Разумеется, при помощи одного такого запроса злоумышленнику не удастся спровоцировать отказ в обслуживании, однако исследователь создал proof-of-concept эксплоит: простой скрипт doser.py, написанный на Python. Скрипт отправляет множество подобных запросов целевому URL. Примерно после 500 запроса средний сайт, работающий на VPS-сервере, перестает отвечать вовсе, «отдавая» лишь ошибки 502, 503 и 504.



Специалист отмечает, что с 1-го компьютера навряд ли удастся «положить» работающий под управлением wordpress интернет-сайт, работающий отдельно, на выделенном сервере, но ежели в злоумышленника имеется широкий канал или некоторое количество ботов, штурм сработает и против такового ресурса, при этом окажется наименее затратной для злодея, ежели обыденный ddos.



Хотя dos-уязвимости не подпадают под bug bounty программу wordpress, Тавайли все же сказал о проблеме разработчикам чрез платформу hackerone. К огорчению, создатели wordpress не сочли обнаруженную уязвимость довольно серьезной и сказали, что улаживать такие трудности необходимо на уровне сервера или сети, но не на уровне приложений. С етого следует что патча для этого бага нет.

В ответ на это Барак Тавайли опубликовал на GitHub собственный форк WordPress, в котором уязвимость устранена. Также исследователь выложил в открытый доступ bash-скрипт, который позволяет исправить проблему в уже существующих установках WordPress.

В WordPress исправлены три опасные уязвимости

Команда разработчиков WordPress, популярной системы управления сайтами (Content Management System, CMS), сообщила о выпуске обновления 4.7.2 и устранении трёх критических уязвимостей в коде платформы.
Первый баг позволял злоумышленникам получать доступ к компонентам пользовательского интерфейса CMS и был связан с функцией Press This, используемой для публикации постов. Вторая проблема была связана с классом WP_Query, используемым для получения доступа к переменным и функциям в ядре WordPress. Суть её заключалась в том, что при передаче «небезопасных» данных система становилась уязвимой для внедрения SQL-кода. Последняя брешь позволяла киберпреступникам использовать CMS для проведения атак типа XSS (Cross-Site Scripting — «межсайтовый скриптинг»).

Обновление безопасности системы вышло всего спустя две недели после выпуска патча под номером 4.7.1, исправившего восемь уязвимостей, которые могли позволить злоумышленнику осуществить удалённую атаку, включая баги, связанные с межсайтовым скриптингом, удалённым выполнением кода в PHPMailer и межсайтовой подделкой запросов.
WordPress 4.7.2 можно загрузить вручную или автоматически через панель управления системы. Также обновление автоматически устанавливается на сайты, поддерживающие такую функцию.
Читать дальше