Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
С правами рута ты можешь делать в системе что угодно: закрепиться на будущее, оставив бэкдор, внедрить руткит или троян, забрать, изменить или уничтожить любую информацию — хоть разместить задницу на главной странице сайта, если захватил веб-сервер. Поэтому повышение привилегий в системе — один из важнейших шагов при атаках. В этой статье мы посмотрим, как это делается в системах с Linux.
В общем случае эскалация привилегий — это получение прав в системе выше, чем у тебя уже есть. Но чаще всего имеется в виду получение доступа к учетной записи root в Linux или system/administrator в Windows.
Почему становится возможным повысить права в системе, казалось бы призванной предотвращать подобное? Причин много. Вот, как мне кажется, основные:
Ну а основная причина всегда одна и та же — людские ошибки. В идеальной вселенной, скорее всего, повысить привилегии не удалось бы. Но человеческий фактор делает это возможным, поэтому наслаждаемся.
Прежде чем что-то делать, нужно понять, с чем мы будем иметь дело. Конечно, кое-что мы узнаем о системе, изучив ее на этапе проникновения, но теперь нужно подробнее выяснить, что именно нам может помочь подняться до root.
Какие-то вещи мы можем узнать вручную. Например, получить сведения о ядре:
uname -a 2>/dev/null
Или о процессоре:
cat /proc/cpuinfo 2>/dev/null
Или релиз ОС:
cat /etc/*-release 2>/dev/nul
Можно, конечно, и дальше собирать информацию с помощью терминала, но это долго. Гораздо проще и эффективнее использовать специальные тулзы. Самые распространенные из них:
Все они работают примерно по одному принципу: последовательно запускают команды bash или короткие скрипты, а вывод отправляют в stdout или лог-файл в зависимости от параметров.
Так примерно выглядит вывод подобной тулзы.
LinEnum
Давай теперь разберем несколько примеров уязвимостей и посмотрим, как можно их эксплуатировать.
Первое, что стоит проверить, — это забытые критические данные. Ничего не стоит заглянуть в домашние папки юзеров и посмотреть, не хранит ли кто-то на рабочем столе файл с паролем или ключами от чего-нибудь нужного. Это случается редко, но все же случается. Иногда учетные данные хардкодят в скриптах и конфигах. Стоит также проверить историю шелла, там тоже могут найтись длинные команды, содержащие учетные данные. А иногда бывает, что пользователь набрал пароль, когда консоль его не запрашивала, и он тоже сохранится в истории.
Флаги setuid и setgid позволяют пользователю запускать программы от имени владельца. Например, когда надо запускать программу от рута, а пользователь рутом не является. Чаще всего встречается SUID. Устанавливается этот бит легко:
chmod +s /bin/script
Подразумевается, что программа с таким флагом не сможет делать ничего, кроме того, для чего она предназначена. Но так как все мы люди и ошибаемся, то это хорошо порой ошибки позволяют скомпрометировать систему. Чаще всего к возможности повысить привилегии приводит возможность программы производить запись в файловую систему или каким-то образом выполнять код.
В первую очередь нас интересуют файлы, владелец которых — root. Найти их можно руками, такой командой:
find / -user root -perm -u=s -type f 2>/dev/null
Как вариант — можно поискать в выводе тулз, которые я перечислил выше. Так или иначе, если найдешь файлы с подобными разрешениями, значит, у тебя есть шанс подняться до максимальных привилегий.
Вот вывод таких файлов из LinEnum.sh
.
Из интересных файлов — find
. LinEnum даже услужливо его подсветил отдельно.
Это позволит довольно легко получить привилегии.
Источник: xakep.ru