Меня тут частенько спрашивают, а где взять бесплатный хостинг?
Так вот, ловите: https://bill.aquinas.su/
Меня тут частенько спрашивают, а где взять бесплатный хостинг?
Так вот, ловите: https://bill.aquinas.su/
В этом блоге рассказывается, как сочетание уязвимости обхода пути и включения локального файла приводит к удаленному выполнению кода в ядре WordPress. Уязвимость оставалась открытой в ядре WordPress более 6 лет.
Злоумышленник, получивший доступ к учетной записи с как минимум привилегиями author на целевом сайте WordPress, может выполнить произвольный код PHP на базовом сервере, что приведет к полной удаленной передаче.
Уязвимость, описанная в этом посте, стала неиспользуемой другим исправлением безопасности в версиях 4.9.9 и 5.0.1. Однако обход пути все еще возможен и в настоящее время не исправлен. Любой сайт WordPress с установленным плагином, который неправильно обрабатывает записи Post Meta, может сделать использование еще доступным.
Согласно странице загрузки WordPress, Разработанные сайты на вордпресс используется более чем 33% на всех веб-сайтов в Интернете. Принимая во внимание, что плагины могут вновь вызвать проблему и принимая во внимание такие факторы, как устаревшие сайты, количество уязвимых установок по-прежнему исчисляется миллионами.
Когда изображение загружается на сайт WordPress, оно сначала перемещается в каталог загрузки ( wp-content/uploads). WordPress также создаст внутреннюю ссылку на изображение в базе данных, чтобы отслеживать метаинформацию, такую как владелец изображения или время загрузки.
Эта мета-информация хранится в базе данных Post Meta. Каждая из этих записей является парой ключ/значение, назначенной определенному идентификатору.
MariaDB [wordpress]> SELECT * FROM wp_postmeta WHERE post_ID = 50;
+---------+-------------------------+----------------------------+
| post_id | meta_key | meta_value |
+---------+-------------------------+----------------------------+
| 50 | _wp_attached_file | evil.jpg |
| 50 | _wp_attachment_metadata | a:5:{s:5:"width";i:450 ... |
...
+---------+-------------------------+----------------------------+
В этом примере изображению было присвоено значение post_ID50. Если в будущем пользователь захочет использовать или отредактировать изображение с указанным идентификатором, WordPress будет искать соответствующую мета-запись _wp_attached_file и использовать ее значение, чтобы найти файл в каталоге wp-content/uploads.
Проблема с этими записями Post Meta до WordPress 4.9.9 и 5.0.1 заключается в том, что можно было изменять любые записи и устанавливать для них произвольные значения.
Когда изображение обновляется (например, изменяется его описание), вызывается функция edit_post(). Эта функция напрямую воздействует на массив $_POST.
function edit_post( $post_data = null ) {
if ( empty($postarr) )
$postarr = &$_POST;
⋮
if ( ! empty( $postarr['meta_input'] ) ) {
foreach ( $postarr['meta_input'] as $field => $value ) {
update_post_meta( $post_ID, $field, $value );
}
}
Как видно, можно вводить произвольные записи мета- постов. Поскольку не проверяется, какие записи изменены, злоумышленник может обновить мета-запись _wp_attached_file и установить для нее любое значение. Это никоим образом не переименовывает файл, оно просто изменяет файл, который будет искать WordPress при попытке отредактировать изображение. Это приведет к обходу пути позже.
Обход пути происходит в функции wp_crop_image(), которая вызывается, когда пользователь обрезает изображение.
Функция берет идентификатор изображения для crop ( $attachment_id) и извлекает соответствующую запись _wp_attached_file мета-поста из базы данных.
Помните , что из — за дефекта в edit_post(), $src_file может быть установлен на что-нибудь.
function wp_crop_image( $attachment_id, $src_x, ...) {
$src_file = $file = get_post_meta( $attachment_id, '_wp_attached_file' );
⋮
На следующем шаге WordPress должен убедиться, что изображение действительно существует, и загрузит его. WordPress имеет два способа загрузки данного изображения. Первый — просто найти имя файла, предоставленное записью _wp_attached_file Meta Post в каталоге wp-content/uploads (строка 2 следующего фрагмента кода).
В случае сбоя этого метода WordPress попытается загрузить изображение со своего собственного сервера в качестве запасного варианта. Для этого будет сгенерирован URL-адрес для загрузки, состоящий из URL-адреса каталога wp-content/uploads и имени файла, хранящегося в записи _wp_attached_file мета-поста (строка 6).
Чтобы привести конкретный пример: если значение, сохраненное в записи _wp_attached_file Post Meta, было evil.jpg, то WordPress сначала попытается проверить, существует ли файл wp-content/uploads/evil.jpg. Если нет, то он будет пытаться загрузить файл со следующего URL: https://targetserver.com/wp-content/uploads/evil.jpg.
Причиной попытки загрузить изображение вместо локального его поиска является случай, когда какой-то плагин генерирует изображение на лету при посещении URL.
Обратите внимание, что здесь не проводится никакой дезинфекции. WordPress просто объединит каталог загрузки и URL с пользовательским вводом $src_file.
Как только WordPress успешно загрузит правильное изображение через wp_get_image_editor(), он будет обрезать изображение.
⋮
if ( ! file_exists( "wp-content/uploads/" . $src_file ) ) { // If the file doesn't exist, attempt a URL fopen on the src link.
// This can occur with certain file replication plugins.
$uploads = wp_get_upload_dir();
$src = $uploads['baseurl'] . "/" . $src_file; } else {
$src = "wp-content/uploads/" . $src_file;
}
$editor = wp_get_image_editor( $src );
⋮
Обрезанное изображение затем сохраняется обратно в файловую систему (независимо от того, было ли оно загружено или нет). Полученное имя файла $src_file будет возвращено пользователем get_post_meta(), который находится под контролем злоумышленника. Единственное изменение, внесенное в результирующую строку имени файла, заключается в том, что к базовому имени файла добавляется cropped-(строка 4 следующего фрагмента кода). Чтобы следовать примеру evil.jpg, результирующее имя файла будет cropped-evil.jpg.
WordPress затем создает любые каталоги в результирующем пути, которые еще не существуют через wp_mkdir_p() (строка 6).
Затем он наконец записывается в файловую систему с использованием save()метода объекта редактора изображений. Метод save() также не выполняет Path Traversal проверки по данному имени файла.
⋮ $src = $editor->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs ); $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file ); wp_mkdir_p( dirname( $dst_file ) ); $result = $editor->save( $dst_file );
До сих пор мы обсуждали, что можно определить, какой файл загружается в редактор изображений, поскольку никакие проверки очистки не выполняются. Однако редактор изображений выдает исключение, если файл не является допустимым изображением. Первое предположение может заключаться в том, что тогда можно обрезать изображения только вне каталога загрузки.
Однако тот факт, что WordPress пытается загрузить изображение, если оно не найдено, приводит к уязвимости удаленного выполнения кода.
| Локальный файл | Скачать HTTP | |
|---|---|---|
| Загруженный файл | evil.jpg | evil.jpg |
| _wp_attached_file | evil.jpg? shell.php | evil.jpg? shell.php |
| Результирующий файл, который будет загружен | WP-содержание / добавления / evil.jpg? shell.php | https://targetserver.com/wp-content/uploads/evil.jpg?shell.php |
| Фактическое местоположение | WP-содержание / добавления / evil.jpg | https://targetserver.com/wp-content/uploads/evil.jpg |
| Результирующее имя файла | Нет — загрузка изображения не удалась | evil.jpg? обрезаны-shell.php |
Идея заключается в том, чтобы установить _wp_attached_fileв evil.jpg?shell.php, что привело бы к запросу HTTP Делаем по следующему адресу: https://targetserver.com/wp-content/uploads/evil.jpg?shell.php. Этот запрос вернул бы действительный файл изображения, так как все, что после, ? игнорируется в этом контексте. Полученное имя файла будет evil.jpg?shell.php.
Однако, хотя метод save() редактора изображений не проверяет атаки Path Traversal, он добавляет расширение типа mime изображения, загружаемого к результирующему имени файла. В этом случае результирующее имя файла будет evil.jpg?cropped-shell.php.jpg. Это делает вновь созданный файл безвредным снова.
Тем не менее, все еще возможно поместить полученное изображение в любой каталог, используя полезную нагрузку, такую как evil.jpg?/../../evil.jpg.
Каждая тема WordPress представляет собой просто каталог, расположенный в каталоге wp-content/themes в WordPress, и предоставляет файлы шаблонов для разных случаев. Например, если посетитель блога хочет просмотреть сообщение в блоге, WordPress ищет файл post.php в каталоге текущей активной темы. Если он найдет шаблон, он сделает include().
Чтобы добавить дополнительный уровень настройки, можно выбрать собственный шаблон для определенных сообщений. Для этого пользователь должен установить запись _wp_page_template Post Meta в базе данных с таким пользовательским именем файла. Единственным ограничением здесь является то, что редактируемый файл include() должен находиться в каталоге текущей активной темы.
Обычно к этому каталогу нельзя получить доступ, и никакие файлы не могут быть загружены. Однако, злоупотребляя вышеописанным обходом пути, можно внедрить вредоносное изображение в каталог используемой в настоящее время темы. Затем злоумышленник может создать новую запись и использовать ту же ошибку, которая позволила ему обновить запись _wp_attached_file мета-поста в соответствии include() с изображением. Внедрив PHP-код в изображение, злоумышленник получает произвольное удаленное выполнение кода.
WordPress поддерживает два расширения для редактирования изображений для PHP: GD и Imagick. Разница между ними заключается в том, что Imagick вовсе не разделяет метаданных изображения EXIF, в котором PHP код может быть сохранен. GD сжимает каждое редактируемое изображение и удаляет все метаданные exif. Это результат того, как GD обрабатывает изображения.
Тем не менее, эксплуатация все еще возможна, если создать изображение, содержащее созданные пиксели, которые будут перевернуты таким образом, что это приведет к выполнению PHP-кода после того, как GD завершит обрезку изображения.
В этом посте подробно рассказывается об удаленном выполнении кода в ядре WordPress, которое присутствовало более 6 лет. Оно стало непригодным для использования с патчем для другой уязвимости, о которой сообщает RIPS в версиях 5.0.1 и 4.9.9. Однако обход пути все еще возможен и может использоваться, если установлен плагин, который все еще позволяет перезаписывать произвольные данные поста.
Мы хотели бы поблагодарить добровольцев из команды безопасности WordPress, которые были очень дружелюбны и действовали профессионально, работая с нами над этой проблемой.
Есть прекрасный сервис https://tools.pingdom.com/… Когда-нибудь я напишу по нему подробный обзор
ab -c 8 -n 10000 http://mail.ru/
8 потоков, 10000 запросов
Server Software: nginx/1.15.2
Server Hostname: mail.ru
Server Port: 80
Document Path: /
Document Length: 53960 bytes
Concurrency Level: 8
Time taken for tests: 186.452 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 542200000 bytes
HTML transferred: 539600000 bytes
Requests per second: 53.63 [#/sec] (mean)
Time per request: 149.161 [ms] (mean)
Time per request: 18.645 [ms] (mean, across all concurrent requests)
Transfer rate: 2839.83 [Kbytes/sec] received
Результат теста: 53.63 страниц в секунду, на тестирование затрачено 186.452 секунд.
https://loader.io
Тут можно добавить ваш сайт и получить для него ключи: https://www.google.com/recaptcha/admin
когда-нибуь я напишу нормальную инструкцию на основе этого поста:
Многие популярные веб-сайты делают все возможное и создают специальные приложения для своих посетителей. С помощью приложения для веб-сайта вы можете оставаться на связи с пользователями с помощью уведомлений на устройстве, и оно может обеспечить более привлекательный опыт, чем обычные мобильные сайты. Проблема в том, чтобы выяснить, как конвертировать сайт в приложение.
Поскольку мы используем WordPress, ответ заключается в тысячах доступных плагинов, которые могут помочь осуществить преобразование. С правильным плагином преобразование сайта в приложение становится намного проще, чем вы могли себе представить.
В этой статье мы углубимся в то, как работают веб-приложения. Мы также познакомим вас с тремя плагинами, которые вы можете использовать для преобразования веб-сайта в приложение, и расскажете, как это сделать. Давай приступим к работе!
Мы часто используем термин «веб-приложение» для обозначения очень простого типа приложения. В большинстве случаев веб-приложения очень похожи по функциональности на обычные мобильные страницы. Разница в том, что, поскольку мы говорим о полномасштабном приложении, вы получаете доступ к функциям, которые обычные сайты часто не предлагают, таким как встроенные уведомления (хотя их можно добавить в настоящее время!).
Приложения для веб-сайтов особенно популярны среди новостных сайтов и других насыщенных контентом проектов.
Вы можете задаться вопросом, почему вы столкнулись с проблемой изучения того, как преобразовать веб-сайт в приложение, чтобы пользователи могли читать ваш контент. Это хороший вопрос с тремя разными ответами:
Конечно, создание приложения — это не то, что вы можете сделать за день. Мобильные приложения могут быть довольно сложными и дорогими. Однако, именно здесь плагины WordPress приходят на помощь.
В этом разделе мы познакомим вас с тремя из наших любимых плагинов для создания простых мобильных приложений с вашего сайта WordPress. Имейте в виду, что, хотя эти плагины очень хороши, они могут только помочь вам создать относительно простые приложения. Если вы хотите создать что-то со сложной функциональностью, вам нужно будет пригласить эксперта и разработать его так же, как и любую другую технологию.
AppPresser — это сервис, позволяющий создавать мобильные приложения для Android и iOS с использованием собственного компоновщика. Он позволяет подключать приложения, созданные с помощью AppPresser, к вашему веб-сайту WordPress.
Нам особенно нравится этот сервис, потому что его конструктор приложений очень похож на настройщик WordPress. Таким образом, если вы когда-либо использовали последний для создания страницы или двух, у вас не возникнет проблем с получением AppPresser. Однако, хотя плагин является бесплатным, сам сервис не является бесплатным. Самый дешевый тариф стоит 19 долларов в месяц за одно приложение.
Учитывая его стоимость, мы можем порекомендовать вам использовать AppPresser, если у вас уже есть достойные последователи для вашего сайта. Если это так, не стесняйтесь проверить, как это работает!
MobiLoud очень похож на AppPresser в том, как работает его модель. Они предлагают услугу, позволяющую создавать мобильные приложения, даже если у вас нет опыта разработки. Затем вы можете подключить приложение к WordPress с помощью плагина, чтобы он мог получать данные с вашего сайта.
Разница здесь в том, что MobiLoud предоставляет вам несколько «предустановок» приложений, которые вы можете использовать, в зависимости от того, какие функции и пользовательский интерфейс (UX) вы хотите предоставить. Однако эта дополнительная функциональность имеет свою стоимость. Самый дешевый тариф MobiLoud начинается с 399 долларов в месяц, поэтому мы не можем рекомендовать его, если у вас нет плана для монетизации вашего мобильного приложения. В любом случае, MobiLoud предлагает бесплатную пробную версию, поэтому вы можете попробовать ее, прежде чем совершать обслуживание.
Пока что два плагина, которые мы рассмотрели, связаны с платными услугами. Androapp, с другой стороны, использует модель freemium. С помощью этого плагина вы можете превратить ваш сайт WordPress в приложение для iOS и Android. Он был разработан с учетом простых приложений для чтения новостей, поэтому может быть отличным выбором, если он соответствует вашим потребностям.
Теперь на тему стоимости — Androapp предлагает месячную бесплатную пробную версию. После этого вы можете платить ежегодную плату за каждое созданное вами приложение. Если стоимость непомерно высока, вы можете продолжать использовать версию Androapp с рекламой. Это компромисс, но хороший способ превратить веб-сайт в приложение, если у вас ограниченный бюджет.
Мы уже говорили о том, насколько полезным может быть мобильное приложение для вашего сайта WordPress. Тем не менее, важно понимать, что веб-приложение не является заменой мобильному дизайну . Даже если вы решили создать и опубликовать приложение, вам все равно нужно убедиться, что ваш сайт отлично работает на мобильных устройствах. В конце концов, не все захотят использовать приложение, и мобильный трафик в настоящее время столь же важен, если не больше, чем его настольный аналог.
Процесс создания приложения для вашего веб-сайта зависит от того, какой инструмент вы решили использовать. Тем не менее, как только ваше приложение будет готово к работе, вам нужно будет отправить его в магазины Android и iOS, которые могут быть достаточно вовлечены.
Это также отличная идея, чтобы связать пользователей с вашими мобильными приложениями с вашего сайта. Например, некоторые сайты предлагают мобильным пользователям ( используя всплывающие окна ) вместо этого устанавливать версию приложения, что может быть идеальным для ускорения установки. Независимо от вашего подхода, попробуйте обуздать жесткие продажи и просто дайте посетителям решить, предпочитают ли они использовать ваш мобильный сайт или приложение.
Идея создания мобильного приложения с нуля может быть пугающей. Тем не менее, существует множество инструментов, которые помогут вам сравнительно легко собрать простые приложения. Если вы являетесь пользователем WordPress, благодаря плагинам процесс становится еще проще.
Что касается того, какие плагины вы можете использовать для преобразования веб-сайта в приложение, вот три из наших главных выборов:
У вас есть вопросы о том, как преобразовать сайт WordPress в приложение? Давайте поговорим о них в разделе комментариев ниже!