Как автоматически передать пароль «su»?

Как автоматически передать пароль «su»?

Я работаю над эксплойтом для курса по безопасности. Цель — получить root shell в виртуальной машине Linux. Пока что я могу записать в /etc/passwd и изменить пароль root на произвольную строку.

Теперь я хочу использовать su, чтобы получить root shell. Поскольку мой эксплойт должен быть автоматизирован, он не может запрашивать пароль, а на виртуальной машине не установлен expect. Есть ли у кого-нибудь идеи, как передать пароль команде su? Или есть способ получше?

решение1

Лучшим способом автоматизации этого типа ввода является использование expectили лучше pexpect. Большинство серверов поставляются с Python, по крайней мере, с современным дистрибутивом.

Во-первых, вы сказали, что ваша виртуальная машина не установлена expect? Я не уверен, почему это важно. Есть ли какая-то причина, по которой вы не можете установить/выполнить что-то под своей локальной учетной записью?

Следующее соображение, почему вы вообще должны использовать passwd??? Вы также можете изменить пароль, заменив хэш, указанный в /etc/shadow. Очевидно, что вам сначала нужно будет правильно предварительно сгенерировать хэш, но пока вы используете поддерживаемый хэш, он должен работать так, как ожидается. Теперь, как вы заскриптуете такое действие, это упражнение для вас, чтобы поработать.

Хочу также отметить, passwdчто не считывает входные данные из STDIN. Если я не ошибаюсь, считывает данные с tty. Так что никакая замысловатая комбинация просто echoи sleepне сработает. Однако это возможно с использованием HEREDOC, но предполагает, что система достаточно отзывчива. Вы можете разбить его на части и sleepмежду целыми. Я только что проверил это, это сработало на моей рабочей станции Ubuntu.

#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF

решение2

Ваш эксплойт также может записать в файл групп и сделать текущего пользователя частью группы 'wheel' (или любой другой группы, которая может запускать sudoкоманды без пароля). Тогда вы (или любой другой пользователь) сможете запускать команды sudo su rootбез пароля.

Бег visudoдолжен дать вам некоторое представление о настройке группы «колесо» на вашем тренажере.

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

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