Мне любопытно, могу ли я передать пароль sudo, запрашивая хешированный sha512(?) пароль и войдите в систему, чтобы получить root права таким образом. Так что это может выглядеть примерно так:

[user@device ~]$ sudo su -
[sudo] password for user: 'some hashed password from shadow file' 

Это возможно? Если так, есть ли простой способ получить этот хешированный пароль?

2 ответа2

0

Это победит цель хранения хешированного пароля.

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

Теперь, когда вы впервые создадите свой пароль, скажем, что hunter2 система запустит hash('hunter2') и сохранит результат в теневом файле.

Затем, когда вы входите в систему, вы утверждаете, что ваш пароль - hunter4 и система проверяет это, сравнивая hash('hunter4') со значением, хранящимся в теневом файле. Если хэши равны, система позволит вам войти в систему, а если нет, система откажет вам.

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

Короче говоря, никакого хэша, хранящегося в /etc/shadow , нет и его нельзя использовать в качестве замены пароля пользователя.

0

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

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

Вы можете получить хешированные пароли, просмотрев файл /etc /shadow от имени пользователя root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .