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

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

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

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

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

Категории

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

sudo_inject

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

Репозиторий
73011397 лет назадПроверено 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: прочтите требования!!

$ 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.
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, похитив его токен.

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

# 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

$ ./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.

./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:
kernel.yama.ptrace_scope = 1

yama ptrace scope

Ссылки

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

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

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

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

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


Автор: @chaignc #HexpressoTeam.

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