Повышение привилегий в Linux или как стать root?
Если у нас есть ограниченная оболочка, полезно повысить привилегии этой оболочки. Таким образом будет легче скрывать, читать и записывать любые файлы и сохранять их между перезагрузками.
В этой главе я собираюсь рассмотреть эти распространенные техники повышения привилегий Linux:
- Эксплойты ядра
- Программы, работающие с правами root
- Установленное ПО
- Слабые / повторно используемые / незашифрованные пароли
- Внутреннее обслуживание
- Неправильная конфигурация Suid
- Нарушение прав sudo
- Доступные для записи скрипты, вызываемые пользователем root
- Неверная конфигурация пути
- Cronjobs
- Несмонтированные файловые системы
Скрипты перечисления
Я использовал в основном три сценария, которые используются для перечисления машины. Между сценариями есть некоторая разница, но они выводят во многом то же самое. Так что протестируйте их все и посмотрите, какой из них вам больше нравится.
LinEnum
https://github.com/rebootuser/LinEnum
Вот варианты:
-k Enter keyword
-e Enter export location
-t Include thorough (lengthy) tests
-r Enter report name
-h Displays this help text
Unix privesc
http://pentestmonkey.net/tools/audit/unix-privesc-check
Запустите сценарий и сохраните вывод в файл, а затем grep для предупреждения в нем.
Linprivchecker.py
https://github.com/reider-roque/linpostexp/blob/master/linprivchecker.py
Методы повышения привилегий
Эксплойты ядра
Используя уязвимости в ядре Linux, мы можем иногда повышать свои привилегии. Что нам обычно нужно знать, чтобы проверить, работает ли эксплойт ядра, так это ОС, архитектуру и версию ядра.
Проверьте следующее:
ОПЕРАЦИОННЫЕ СИСТЕМЫ:
Архитектура:
Версия ядра:
uname -a
cat /proc/version
cat /etc/issue
Искать эксплойты
site:exploit-db.com kernel version
python linprivchecker.py extended
Не используйте эксплойты ядра, если можете этого избежать. Если вы его используете, это может привести к сбою машины или ее нестабильному состоянию. Так что эксплойты ядра должны быть последним средством. По возможности всегда используйте более простой приват-esc. Они также могут производить много чего в формате sys.log
. Так что, если вы найдете что-то хорошее, внесите это в свой список и продолжайте искать другие способы, прежде чем использовать это.
Программы, работающие с правами root
Идея здесь в том, что если конкретная служба работает от имени пользователя root, и вы можете заставить эту службу выполнять команды, вы можете выполнять команды как root. Ищите веб-сервер, базу данных или что-нибудь еще в этом роде. Типичным примером этого является mysql, пример ниже.
Проверить, какие процессы запущены
# Metasploit
ps
# Linux
ps aux
MySQL
Если вы обнаружите, что mysql запущен от имени пользователя root и у вас есть имя пользователя и пароль для входа в базу данных, вы можете выполнить следующие команды:
select sys_exec('whoami');
select sys_eval('whoami');
Если ни один из них не работает, вы можете использовать функцию, определяемую пользователем /
Программное обеспечение, установленное пользователем
Установил ли пользователь какое-либо стороннее программное обеспечение, которое может быть уязвимо? Проверить это. Если вы найдете что-нибудь, погуглите это на предмет эксплойтов.
# Common locations for user installed software
/usr/local/
/usr/local/src
/usr/local/bin
/opt/
/home
/var/
/usr/src/
# Debian
dpkg -l
# CentOS, OpenSuse, Fedora, RHEL
rpm -qa (CentOS / openSUSE )
# OpenBSD, FreeBSD
pkg_info
Слабые / повторно используемые / незашифрованные пароли
- Проверить файл, в котором веб-сервер подключается к базе данных (
config.php
или аналогичной) - Проверьте базы данных на наличие паролей администратора, которые можно использовать повторно
- Проверить слабые пароли
username:username
username:username1
username:root
username:admin
username:qwerty
username:password
- Проверить пароль открытым текстом
# Anything interesting the the mail?
/var/spool/mail
./LinEnum.sh -t -k password
Услуга доступна только изнутри
Может случиться так, что пользователь запускает какую-то службу, доступную только с этого хоста. Не получается подключиться к сервису извне. Это может быть сервер разработки, база данных или что-то еще. Эти службы могут быть запущены как root, или в них могут быть уязвимости. Они могут быть еще более уязвимыми, поскольку разработчик или пользователь может подумать, что «поскольку он доступен только для конкретного пользователя, нам не нужно тратить столько средств на безопасность».
Проверьте netstat и сравните его с nmap-сканированием, которое вы сделали извне. Вы найдете больше услуг, доступных изнутри?
# Linux
netstat -anlp
netstat -ano
Неверная конфигурация Suid и Guid
Когда двоичный файл с разрешением suid запускается, он запускается от имени другого пользователя и, следовательно, с привилегиями других пользователей. Это может быть root или просто другой пользователь. Если suid-бит установлен в программе, которая может порождать оболочку или иным образом быть злоупотреблением, мы можем использовать это для повышения наших привилегий.
Например, вот некоторые программы, которые можно использовать для создания оболочки:
nmap
vim
less
more
Если в этих программах установлен suid-бит, мы можем использовать их также для повышения привилегий. Чтобы узнать больше об этом и о том, как использовать, см. Следующий раздел о злоупотреблении правами sudo:
nano
cp
mv
find
Найдите файлы suid и guid
#Find SUID
find / -perm -u=s -type f 2>/dev/null
#Find GUID
find / -perm -g=s -type f 2>/dev/null
Нарушение прав sudo
Если у вас ограниченная оболочка, которая имеет доступ к некоторым программам, которые используют, sudo
вы можете повысить свои привилегии с помощью. Можно использовать любую программу, которая может писать или перезаписывать. Например, если у вас есть sudo-права, cp
вы можете перезаписать /etc/shadow
или использовать /etc/sudoers
собственный вредоносный файл.
awk
awk 'BEGIN {system("/bin/bash")}'
bash
cp
Скопируйте и перезапишите / etc / shadow
find
<pre style="-webkit-tap-highlight-color: transparent; text-size-adjust: none; -webkit-font-smoothing: antialiased; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; break-inside: avoid; di