Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
sudo_inject — [Linux] Две техники повышения привилегий, злоупотребляющие токеном sudo | Kitploit
Инструменты/GitHubGitHub/nongiach/sudo_inject
Повышение привилегийЭксплуатацияПост-эксплуатацияЦифровая криминалистикаCTFОбучение и ОбразованиеRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Две техники повышения привилегий, злоупотребляющие токеном sudo

Репозиторий
7301137 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

[Linux] Повышение привилегий путём внедрения в процесс, обладающий sudo-токенами

Внедряем процесс, имеющий действительный sudo-токен, и активируем собственный sudo-токен

Введение

Мы все замечали, что иногда sudo не спрашивает пароль, потому что запоминает нас. Как он нас запоминает и как идентифицирует? Можем ли мы подделать свою личность и стать root? Насколько мне известно, это исследование ещё нигде не описано, но дайте знать, если это не так. Действительно, sudo создаёт файл для каждого пользователя Linux в /var/run/sudo/ts/[username]. Эти файлы содержат как успешные, так и неудачные попытки аутентификации, затем sudo использует эти файлы, чтобы запоминать все аутентифицированные процессы. -- @chaignc

Этот репозиторий предоставляет вам:

  • Способ получения root-привилегий путём злоупотребления sudo-токенами (не радуйтесь раньше времени, есть требования).
  • Инструмент для создания sudo-токенов для заданного процесса (write_sudo_token в ./extra_tools/).
  • Инструмент для разбора sudo-токенов в целях криминалистики (read_sudo_token_forensic и read_sudo_token в ./extra_tools).
  • Технику преобразования произвольной записи в файл от root в стабильное выполнение кода с root-правами.
  • Подсказку для создания эксплойта, которому не требуется ptrace или чтобы целевой процесс был жив.

Как эксплуатировать уязвимую систему

PS: прочтите требования!!

root@kitploit:~
$ sudo whatever
[sudo] password for user:    # Press <ctrl>+c since you don't have the password. # This creates an invalid sudo tokens.
$ sh exploit.sh
.... wait 1 seconds
$ sudo -i # no password required :)
# id
uid=0(root) gid=0(root) groups=0(root)

Требования

  • Ptrace полностью включён (/proc/sys/kernel/yama/ptrace_scope == 0).
  • У текущего пользователя должен быть живой процесс, имеющий действительный sudo-токен с тем же uid.
root@kitploit:~
The default password timeout is 15 minutes. So if you use sudo twice in 15 minutes (900 seconds), you will not be asked to type the user’s password again.

Предупреждение

  • Только в образовательных целях, не используйте на системе, которая вам не принадлежит.
  • Он не тщательно протестирован, так что не считайте его стабильным.

Что происходит за кулисами?

exploit.sh внедряется во все shell-процессы, принадлежащие текущему пользователю, и использует их sudo-токены для подтверждения нашего собственного sudo-токена. Это всего лишь 3 строки shell, взгляните.

Вариант применения

Это далеко не универсальный способ повышения привилегий без требований, но он работает. Например, если у вас есть RCE и нет пароля пользователя, но жертва использует sudo, вы легко можете получить root, похитив его токен.

Как смоделировать в лаборатории?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # Don't worry this is not persistent accross reboot

Запустите два терминала:

  • один, чтобы ввести sudo и указать правильный пароль (например: sudo ls).
  • другой, чтобы запустить эксплойт, как описано выше.

Дальнейшее развитие

exploit v2 создаёт suid sh в /tmp/sh

Для тех, кому не повезло с exploit v1, попробуйте v2

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

Криминалистика, DFIR?

Вывод нужно улучшить, но каждая попытка процесса использовать sudo имеет одну запись в /var/run/sudo/ts/[username]. Кроме того, эти файлы хранятся в tmpfs (RAM); можно написать плагин для volatility, чтобы разбирать эту информацию и собирать данные о попытках sudo.

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

Произвольная запись от root

Если у вас есть произвольная запись (arbitrary write), вы можете создать sudo-токен для своего текущего процесса, чтобы получить выполнение кода с root-правами. Обратите внимание на './write_sudo_token $$ > /var/run/sudo/ts/[username]' в extra_tools.

«Серебряные» sudo-билеты

Очень хороший способ создать скрытый root-бэкдор на серверах, которые редко перезагружаются. Ещё не реализовано, но посмотрите './write_sudo_token $$' в ./extra_tools

Почему

Я искал способ похитить sudo-токен мёртвого процесса, но, похоже, это невозможно, поскольку они привязаны через ((время запуска процесса и идентификатор сессии процесса) или (время запуска tty и идентификатор сессии tty)). Идентификатор сессии (PID процесса) можно подделать, но время запуска процесса подделать нельзя.

Как устранить проблему?

  • Обновите версию sudo
  • Уменьшите возможности ptrace, например, отредактируйте /etc/sysctl.conf:
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Ссылки

Разбор /proc/[pid]/stat

Структура sudo-токена

Внедрение кода между процессами в Linux без ptrace

Перемещение процесса в другой терминал

https://www.linusakesson.net/programming/tty/


Автор: @chaignc #HexpressoTeam.

Скачать инструмент