Я работаю над эксплойтом для курса по безопасности. Цель — получить 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 без ввода пароля.