GTFOBins: When Regular Linux Commands Become a Hacker's Backdoor

WILD

Administrator
Staff member
ADMIN
SELLER
SUPREME
MEMBER
Joined
Jan 21, 2025
Messages
219
Reaction score
637
Deposit
0$
1774562227818.png
Ладно, давайте будем честны. Вы заходите на сервер после успешной атаки, получаете шелл от www-data, и вот тут начинается самое интересное. Вам нужны root-права, но такие методы, как «подбор пароля методом перебора» или «поиск уязвимости в ядре», либо занимают много времени, либо вообще не работают. И тут вы вспоминаете о GTFOBins.

Однажды во время своего первого пентеста я сам потратил полдня, вручную просматривая все бинарные файлы с SUID-битами, гугля каждую команду и пытаясь понять, можно ли что-нибудь с ними сделать. Затем один из старых администраторов форума прислал мне ссылку на GTFOBins и сказал: «Не волнуйся, здесь всё объяснено». С тех пор это первый сайт, который я посещаю, когда пытаюсь повысить свои привилегии.

---

Что это за чудовище?

GTFOBins — это сайт, содержащий примеры использования распространённых команд Linux для выполнения действий, которые выполнять не следует. По сути, это своего рода шпаргалка для специалиста по тестированию на проникновение: вы заходите, находите нужную программу и смотрите, как использовать её для получения доступа к командной оболочке, чтения файла или выполнения обратного соединения.

Здесь есть всё: от обычного поиска до экзотического sqlite3. И каждый исполняемый файл имеет свои собственные сценарии использования:

· если запускается с использованием sudo
· если установлен бит SUID
• если он обладает определенными возможностями
• И, если есть возможность, запустите его от имени текущего пользователя.

Кстати, название примерно переводится как «Убирайся к черту», как «убирайся отсюда», когда администратор понимает, что его система взломана. Но для нас это скорее «Убирайся к черту, в оболочку».

---

Почему GTFOBins бесполезен

Допустим, вы вошли на сервер. Я посмотрел, что можно запустить с помощью sudo:

sudo -l

И вы видите что-то подобное:

Пользователь www-data может выполнять следующие команды на этом хосте: (ВСЕ) /usr/bin/find

Если вы не знакомы с GTFOBins, начинается шаманизм: «Может быть, я могу читать файлы с помощью find? Или, может быть, есть такая опция?» Вы углубляетесь в руководство, читаете документацию, пробуете разные варианты. Вы потратите как минимум полчаса, а может и больше.

Но если вы знаете, просто откройте браузер, перейдите на gtfobins.github.io, найдите команду find и увидите готовую команду:

sudo find. -exec /bin/sh -p \;

Вставьте, запустите, и вы получите root-права. Вот и всё. 10 секунд.

---

Что именно вы там можете найти?

На GTFOBins каждый исполняемый файл аккуратно структурирован. Вот основные разделы, наиболее часто необходимые в реальной работе:

sudo — если программа разрешена в списке пользователей sudoers, как использовать её для получения прав root.
SUID — если исполняемый файл имеет бит SUID, он запускается от имени владельца (обычно root).
Ракетка — просто найдите ракушку.
обратная оболочка — отправка оболочки на атакующий сервер.
чтение файлов — чтение недоступных файлов.
file write — запись в файлы.
Загрузка/скачивание файлов — загрузка или скачивание файлов.
возможности — использовать возможности Linux.

Для каждого раздела предусмотрена отдельная команда. Ничего лишнего, только работающие примеры.

--

Примеры из реальной жизни
1. vim

Если Vim можно запустить с помощью sudo, вы получите корневую оболочку всего одной командой:

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

Внутри vim выполняется команда оболочки, и поскольку vim работает под управлением sudo, отправляется сообщение "hello root".

2. меньше

Less — это программа для постраничного просмотра содержимого, но она также может выполнять команды. Если она включена в sudo:

sudo less/etc/shadow

Или даже непосредственно оболочку:

sudo less/etc/hosts !sh

3. nmap

Более старые версии nmap (до 3.0) были просто потрясающими. В них был интерактивный режим:

nmap--interactive !sh

В более новых версиях эта функция была удалена, но если администратору лень обновлять систему, мы всё ещё её используем.

4. неуклюжий

awk — это мощный инструмент, который используется повсюду. С его помощью можно запускать системные команды:

awk'BEGIN {system("/bin/sh")}'

Если awk запускается с правами суперпользователя (sudo) или имеет SUID, значит, у вас есть права root.

5. смола

tar — кажется, это простой архиватор. Но с опцией --checkpoint-action вы можете выполнить что угодно:

tar-cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

---

Как администратору избежать ошибок при работе с этими исполняемыми файлами?

Если вы администратор и читаете это, не думайте, что вас это не касается. Это, безусловно, касается. GTFOBins — это не просто шпаргалка для хакеров, это также список вещей, которые следует проверять на ваших серверах.

1. Посмотрите, что можно запустить с помощью sudo.

Команда `sudo -l` показывает, какие права доступа есть у текущего пользователя. Если в списке отображаются `find`, `vim`, `less`, `awk`, `tar` или `nmap`, это повод для беспокойства. Действительно ли пользователю нужны эти программы с правами root? Возможно, подойдёт что-то более безопасное?

2. Найдите исполняемые файлы с флагом SUID.

find/ -perm -4000 2>/dev/null

Эта команда отобразит все файлы с установленным битом SUID. Пройдитесь циклом по списку и проверьте, есть ли там что-нибудь из списка GTFOBins. Если есть, сбросьте бит:

chmod -s /path/to/binary

3. Проверьте возможности

В современных системах всё чаще используются возможности (capability) вместо SUID. Вы можете это проверить:

getcap -r / 2>/dev/null

Если вы видите что-то вроде cap_setuid+ep, это почти то же самое, что и SUID, только в точечной форме. И GTFOBins умеет это использовать.

4. Не забудьте про LOLBAS для Windows.

У GTFOBins есть аналог для Windows – LOLBAS (Living Off the Land Binaries and Scripts). Это та же идея, но для PowerShell, wmic, certutil и других встроенных инструментов Windows.

GTFOBins – для Linux/Unix
LOLBAS – для Windows

---

Когда GTFOBins может не помочь

Не думайте, что это волшебная таблетка. Бывают ситуации, когда методы не работают:

1. Старые версии бинарных файлов. GTOBins часто показывает примеры, работающие в определенных версиях. Возможно, эти проблемы были исправлены в более новых версиях, но они могут не поддерживаться в более старых версиях.

2. Пользовательские сборки. Если администратор перекомпилировал бинарный файл без дополнительных параметров или с патчами, стандартные методы могут не сработать.

3. Строгие политики AppArmor, SELinux и дополнительных модулей безопасности могут блокировать даже авторизованные команды, если они ведут себя подозрительно.

4. Просто невезение. Иногда в системе вообще нет ничего полезного. Тогда приходится искать другие пути — уязвимости ядра, неправильные конфигурации, задания cron и т. д.

---

GTFOBins — это база данных, которую должен знать каждый, кто когда-либо пытался повысить привилегии в Linux. Она экономит часы времени и предоставляет готовые, проверенные команды для самых разных ситуаций.

Для специалиста по тестированию на проникновение это первая вкладка после получения доступа. Для администратора это список вещей, которые не следует оставлять без присмотра.

Если вы ещё не использовали его, попробуйте во время следующего тестирования на проникновение. Уверен, вы удивитесь, сколько легитимных программ можно использовать в других целях. И как мало администраторов об этом задумываются.
 
Top Bottom