Как узнать надежность пароля Wordpress (уже сохраненного)?

10

Я отвечаю за безопасность многих серверов общего хостинга. Большинство из них имеют веб-сайты WordPress. Каждый сервер имеет не менее 500 веб-сайтов WordPress.

В моем опыте проблема с WordPress начинается со слабого пароля. Большая часть пароля администратора сайта очень слабая, и с использованием слабого пароля сайт используется и используется для различных злонамеренных действий.

Теперь я планирую выяснить слабый пароль веб-сайта WordPress и принудительно изменить пароль администратора на другой надежный пароль. Таким образом, WordPress может быть защищен, и мой сервер не будет в беде.

Как узнать надежность хранимого пароля WordPress?

Mani
источник

Ответы:

8

Брутфорс хэши

Вы можете использовать хеш, который хранится в базе данных.

WordPress использует phpass для хеширования. По умолчанию WordPress не использует Blowfish или аналогичные, а просто md5 с числом итераций 8192. Если вы просто хотите найти действительно плохие пароли, брутфорс, безусловно, выполним.

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

Проанализируйте их пароли при входе

Вы можете добавить сценарий, который перехватывает все запросы к сценариям входа WordPress, и регистрировать или анализировать пароли, так как они находятся в незашифрованном виде на тот момент.

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

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

Реализуйте политику паролей (и заставляйте пользователей менять свои пароли)

Вы можете реализовать политику паролей. Когда пользователь отправляет новый пароль, вы проверяете, соответствует ли он вашей политике или нет (в идеале это должно происходить на стороне сервера, а не на стороне клиента через JavaScript).

Написание правильной политики паролей затруднительно, поэтому вам стоит ознакомиться с существующими политиками.

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

Предельный урон

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

Вы должны захотеть ограничить ущерб, как только злоумышленник получит доступ к установке WordPress. В идеале вы хотели бы, чтобы это затрагивало только один экземпляр, а не весь ваш сервер (так что вы можете беспокоиться о том, что злоумышленник разместит на сайте непристойный контент - как это может сделать действительный пользователь), но не о выполнении кода или других злонамеренных действиях. Мероприятия).

Это довольно широкая тема, но некоторые моменты включают: DISALLOW_FILE_EDITограниченное использование плагинов (поскольку они гораздо менее надежно закодированы, чем сам WordPress), запрещение JavaScript (например, для мультисайтов, только супер-администраторы имеют право публиковать JavaScript, а не админы) и др.

Тим
источник
4

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

По моему опыту, скрипт для надежности пароля находится в www.example.com/wp-admin/js/password-strength-meter.js, и это ссылка на него.

Вы можете изменить уровни и процент для паролей здесь, так что вы можете установить обязательную прочность пароля на 100/100.

И, если вы хотите, чтобы ваш клиент проверял надежность пароля, есть симпатичное приложение, которое может дать вам надежность пароля здесь.

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

Иосип Ивич
источник
1
Это кажется простой задачей, которую веб-хосты и владельцы сайтов могут сделать, чтобы защитить себя. Очень хороший вопрос и ответ! Я не уверен, что это когда-либо обсуждалось здесь раньше. По крайней мере, это не было решено в течение длительного времени. Ура !!
closetnoc
1
Приведенный выше ответ хорош, но он не решает мою проблему. Большинство веб-сайтов WordPress уже установлены или через 100 секунд после установки WP на моем сервере. Предположим, я изменил силу пароля с помощью password-strong-meter.js, но он мне пока не нужен. Bcoz, pwd уже установлен. Это будет полезно только для нового пароля, а не для того, который уже установлен.
Мани
1
Но нет никакого способа узнать все пароли из базы данных, потому что они хешированы. Вы можете установить это, а затем повторно отправить всем пользователям, чтобы изменить их пароли, чтобы они могли иметь надежные пароли. Я не вижу другого способа обойти это. Проверьте ответы ниже тоже.
Иосип Ивич
2
@Josip Ivic, единственный способ - сбросить pwd и сообщить администратору, как вы сказали.
Мани
1
Для новых пользователей я просто настрою скрипт на wp на сервере, поэтому обязательно иметь надежные пароли, а для старых пользователей я отправлю им письма, чтобы они могли сменить свои пароли на надежные. Как я уже сказал, нет простого способа сделать это, но это выполнимо. :)
Иосип Ивич
3

Хорошая новость заключается в том, что вы можете менять пароли пользователей, а плохая - в том, что вы их не видите.
WordPress настолько мощен, что даже в базе данных он хранит пароль с односторонним шифрованием, это не просто хеш md5, который вы можете конвертировать, это даже не сериализованные данные, для пароля test123вы получите что-то похожее $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn, даже если вы измените поле пароля в базе данных без использования шифрования, это не будет работать.

Как сменить пароль

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

knif3r
источник
Забыл упомянуть, что вы можете использовать плагин, такой как iThemes, чтобы требовать от пользователей вводить надежные пароли, а также обеспечивать защиту от перебора и другие интересные функции, которые могут вас заинтересовать.
knif3r
3

Поскольку пароли хешируются, единственный способ проверить их безопасность - перебор. Соберите список часто используемых слабых паролей и проверьте их по хешам, хранящимся в вашей базе данных.

Если вы не используете очень исчерпывающий список паролей, он не уловит все слабые пароли, но отфильтрует самые слабые из них.

Том ван дер Занден
источник
Это решение, которое требует кучу времени.
Иосип Ивич
Это то, что называется созданием радужного стола.
Ashfame
@ Ashfame Нет, это не так. Радужный стол - гораздо более сложный подход, который не обязательно является наиболее подходящим для этого сценария.
Том ван дер Занден
@TomvanderZanden Это может быть неподходящий подход, но как это не будет радужным столом?
Ashfame
@Ashfame Потому что радужные таблицы намного сложнее, чем «проверка списка паролей по вашей базе данных». Радужные таблицы, например, используют хэш-цепочки и функции сокращения. Также обратите внимание, что создание радужной таблицы занимает больше времени, чем просто проверка всех паролей в вашей базе данных. Использование предварительно вычисленных радужных таблиц может иметь смысл, но в этой ситуации это может быть излишним.
Том ван дер Занден
1

Вы не можете принудительно изменить пароль администратора wp, если у вас нет контроля в каждой базе данных wordpress, которая хранится в phpmyadmin.

И нет, нет быстрого способа узнать пароль недели на сайте 500 WordPress. Josip упомянул одну ссылку для проверки надежности пароля, но этот сайт не использовал криптоалгоритм md5 для проверки надежности пароля.

Проверьте эту ссылку SO ( Wordpress с использованием MD5 ), и вы увидите, что результат отличается от этого приложения. Поэтому, как вы видите, p#aSS*Word14это не безопасно, Dance With Me Tonightпоэтому не используйте стороннее приложение для проверки пароля Wordpress, поскольку, возможно, они используют другой криптоалгоритм для проверки / подтверждения надежности пароля.

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

Другое дело, что если один сайт WordPress взломан, то это не повлияет на другой сайт wp на том же сервере (кроме атаки DOS). Я видел, как многие люди запускают wp на виртуальном хостинге, и их сайт взламывают, но соседний сайт работает нормально, потому что у каждого wp есть своя собственная база данных на phpmyadmin.

Goyllo
источник
Didn't affect other WP site on same server:Стечение обстоятельств! Зависит от типа атаки / взлома и намерения хакера / бота.
Ashfame
Я говорю о безопасности WordPress, а не о безопасности корневого уровня. Но я уверен, что больше всего хостинг-провайдер, использующий механизм песочницы, не затронул другой сайт на этом же сервере.
Гойлло
1

Как указывалось в предыдущих ответах: вы не можете прочитать сохраненные пароли.

Альтернативное решение может быть:

  1. Реализуйте предложение Йосипа Ивица о применении надежных паролей.
  2. Удалить все пароли (или только пароли для пользователей с определенными привилегиями).
  3. И, наконец, проинформируйте пострадавших пользователей о том, что действует новая политика паролей, и попросите их /wp-login.php?action=lostpasswordсбросить свои пароли.
Syberspace
источник
1

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

Невозможно преобразовать хэш обратно в пароль, иначе можно также хранить их в виде открытого текста. Раньше пароли хэшировались раньше, MD5но команда безопасности их зарекомендовала, поэтому алгоритм хэширования был обновлен до phpass.

Совет: WordPress все еще может правильно его хешировать, даже если вы обновите MD5 (% password%) в столбце sql.

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

1) Обновляйте пароли только для администраторов, редакторов, но вам нужно, чтобы вы выяснили, кто эти пользователи. Отправьте их по электронной почте, а затем примените ограничение пароля на странице сброса пароля / странице регистрации и т. Д. Помните, что кто-то может иметь эти формы в другом месте на сайте (подумайте также о формах AJAX). Создание команды WP-CLI, которая поможет вам выполнить этот план, а не загружать среду WP и запускать сценарии.

2) Создание радужной таблицы, которая состоит из хешированного пароля для известной строки (пароля). И затем вам нужно сопоставить хеширование с паролем конкретного пользователя и оценить надежность этого пароля. Генерирование таблицы - самый медленный шаг, так как вы должны хешировать каждый возможный пароль, хранить его на диске (несколько ГБ в зависимости от длины и комбинации паролей, которые вы учитываете), а затем действовать в зависимости от результатов. 99% уверены, что это решение для ваших потребностей.

Совет: Вы знаете те соли и секреты, которые у нас есть в wp-config.phpфайле. Изменение их делает недействительными зарегистрированные сеансы, на тот случай, если вам это понадобится.

Ashfame
источник
1

Попытайтесь перебором, используя атаку по словарю

Какой лучший способ оценить надежность вашего пароля? :-) Да, я знаю, это займет некоторое время ...

В противном случае, вы можете просто предположить, что все пароли являются слабыми (я бы сказал, что это будет очень точное предположение) и создать себе пароли, сохранить хеши в базе данных и дать простой текстовый пароль администраторам, используя «безопасный» канал

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

Джанлука Геттини
источник