Intereting Posts
template_redirect или admin-ajax.php? Как добавить логотип в Thematic ajax для фильтрации сообщений по категориям в циклах wordpress Как я могу назначить отдельные таблицы стилей для разных страниц? Ожидание ошибки оператора из php-цикла с использованием плагина ACF Запрос не сортировка DESC get_posts () и WP_query ограничивает условия «И» максимум до 6 для запросов метаданных в WordPress Ограниченный список сообщений по таксономии Редактирование моей темы, чтобы попытаться разместить заголовок по умолчанию в верхней части страницы, нарушает остальную часть содержимого страницы Зачем загружать JS через CMS? Скопировать теги из одного типа сообщений в другой тип сообщения Иерархия шаблонов: как разрешить category.php условно-load archive.php? Включить разные сценарии и стили для двух отдельных настраиваемых заголовков? Изменить подсказку пароля Как получить название меню домашней страницы?

Если хакер изменил blog_charset на UTF-7, делает ли WordPress уязвимым для дальнейших атак?

У меня был клиент, который недавно был взломан, и я заметил, что на ее сайте появились странные персонажи, такие как Â и Æ. Оказывается, хакеры изменили blog_charset на UTF-7 в таблице wp_options в базе данных. Я вернул его в UTF-8, но мне было интересно, может ли в то время, когда он был настроен на UTF-7, можно ли создать какие-либо уязвимости безопасности?

Я сделал некоторые поиски и обнаружил, что раньше была уязвимость WordPress UTF-7, исправленная в версии 2.0.6 . Мы используем самую последнюю версию WordPress, поэтому они не могли использовать этот эксплойт, но есть ли какие-либо другие подвиги, связанные с UTF-7? Действительно, есть ли какая-то причина, по которой хакеры могут изменить blog_charset, а не быть болью? Я пытался определить, как они вошли, и мне интересно, если это так или иначе связано.

Solutions Collecting From Web of "Если хакер изменил blog_charset на UTF-7, делает ли WordPress уязвимым для дальнейших атак?"

< и > кодируются как +ADw- и +AD4- в UTF-7 . Теперь представьте себе следующее:

  1. Кто-то отправляет +ADw-script+AD4-alert(+ACI-Hello+ACI-)+ADw-/script+AD4- качестве текста комментария. Он будет пропускать всю проверку без сохранения.

  2. База данных ожидает и обрабатывает все входящие данные как UTF-8. Поскольку все потоки UTF-7 действительны и UTF-8, это никогда не приведет к ошибке SQL, а mysql_real_escape или htmlspecialchars не будут касаться этого.

  3. WordPress отправляет text/html;charset=utf-7 заголовка text/html;charset=utf-7 .

  4. WordPress отображает комментарий, ожидая экранированные данные. Но поскольку это рассматривается как UTF-7 браузером, JavaScript будет выполнен.

Итак, да, это проблема безопасности.

UTF-7 не поддерживается всеми браузерами, большинство из них будет отображать текст как Windows-1252 (или что-то другое по умолчанию в их ОС) или как UTF-8. Вы можете протестировать поддержку своего браузера на тестовых страницах UTF .
Основная проблема заключается в том, что экранирование больше не будет работать.


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

Кроме того, это может потребоваться (повторное преобразование всех кодировок ваших таблиц): https://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation- к UTF-8