можем ли мы узнать пароли других пользователей, если у нас есть права root?

можем ли мы узнать пароли других пользователей, если у нас есть права root?

Если у человека есть root-доступ к определенной машине RHEL, сможет ли он получить пароли других пользователей?

решение1

TL;DR: Нет, пароли хранятся в виде хэшей, которые (в общем случае) невозможно восстановить.

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

Если у вас есть пароли, хранящиеся где-то помимо /etc/passwdбазы данных, они могут храниться способом, который это допускает. htpasswdФайлы могут содержать слабо зашифрованные пароли, а другие приложения могут хранить более слабые хэши или пароли в виде обычного текста по разным (обычно плохим) причинам.

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

Если пароли хешированы или зашифрованы с помощью старого, слабого алгоритма (3DES, MD5), можно было бы достаточно эффективно и дешево определить, какой был пароль, хотя и путем атаки на данные, а не просто путем обратного преобразования. (например, такие вещи, какhttp://project-rainbowcrack.com/илиhttp://www.openwall.com/john/)

Поскольку вы являетесь пользователем root, вы также можете атаковать пароль пользователя на другом уровне — замените двоичный файл входа, или sudo, или часть PAM и т. д. чем-то, что перехватит пароль при его вводе.

Итак, в частности, нет, но в целом наличие root-доступа упрощает получение данных о пользователях через различные побочные каналы.

решение2

В отличие от некоторых других ответов здесь, я бы сказал, что простой ответ на этот и многие другие вопросы, которые заканчиваются фразой «если у вас есть root», — ДА.

По сути, root может делать на машине все, что может делать сама система. Система может принять ваш пароль, поэтому root может принять ваш пароль или свой собственный вместо вашего, приложив достаточно усилий. Что еще важнее, он может просто изменить ваш пароль или СТАТЬ вами.

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

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

Однако, даже если оставить эту проблему в стороне, «одностороннее» шифрование на самом деле не является односторонним. Существует множество инструментов, которые будут перебирать множество комбинаций парольных фраз, шифруя их тем же односторонним процессом, пока не найдут подходящий. Затем они узнают пароль, который даст им доступ (хотя как root они УЖЕ имеют доступ на ЭТОЙ машине).

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

Опять же, доступ на уровне root — это то, что нужно защищать. С его компрометацией вся машина и все, что на ней находится, подвергается риску. Пришло время начать заново, в том числе проинформировать всех ваших пользователей о том, что вашему бизнесу больше нельзя доверять в плане защиты их конфиденциальности. И да, это может означать прекращение бизнеса.

решение3

Если у вас есть root, то вы можете запустить взломщик паролей /etc/shadow(предполагая, что пароли локальные, а не LDAP или Kerberos и т. д.). Это может быть неэффективно, если они выбирают хорошие пароли, а система настроена на использование сильного хеширования паролей. Но системные пароли не хранятся в открытом виде; пароли не доступны напрямую даже для root.

решение4

Все пароли хранятся в /etc/shadowфайле. Вы можете открыть этот файл, используя root-доступ, и увидеть hash valueэти пароли для каждого пользователя (даже root-пользователя).

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

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

root@localhost$ passwd pradeep

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

Теперь вы можете получить доступ к его аккаунту следующим образом:

root@localhost$ su pradeep

Это приведет к переключению на пользователя pradeep, и вы получите такой терминал:

pradeep@localhost$

Связанный контент