Intereting Posts
Поиск и удаление специальных коротких кодов из всех сообщений Single.php не загружается, когда постоянная ссылка содержит только информацию о дате Как развернуть функцию get_users? Синтаксическая ошибка кода, "userfullName undefined" Условное использование get_the_ID () не работает Есть ли способ показывать только пользовательские метаданные на отдельные сообщения из определенных категорий? пользовательские типы сообщений, pre_get_posts, wp_list_categories Показывать идентификатор подписчика в цикле Виджеты не добавляют div до и после заголовка Получить текущую конечную точку WooCommerce не работает Всегда показывать дочернюю категорию по URL-адресу, даже если выбрана родительская категория Как удалить все экземпляры edit_post_link Пользовательская постоянная ссылка для страницы / сообщения WordPress Как разрешить одному сообщению иметь собственное доменное имя Шаблон страницы регистрации WordPress

Если хакер изменил 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