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

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

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

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

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

Категории

Все категории
Loading categories
pkwned — Доказательство концепции для CVE-2021-4034 (с экспериментальной эксплуатацией без следов) | Kitploit
Инструменты/GitHubGitHub/dosamp/pkwned
Повышение привилегийФреймворки для эксплойтовЭксплуатацияРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubdosamp/pkwned

pkwned

Доказательство концепции для CVE-2021-4034 (с экспериментальной эксплуатацией без следов)

Репозиторий
4 лет назадЕщё не проверено

Популярное

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

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

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

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

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

pkwned: Proof of Concept для CVE-2021-4034

Этот PoC запустит PAYLOAD_PATH (как определено в constants.h) с root привилегиями из уязвимой версии pkexec, работающей на glibc. Каталог "GCONV_PATH=." должен содержать исполняемый файл, названный в честь каталога, содержащего модуль gconv.

Как указано в advisory от Qualys [1], это приведет к созданию сообщения в syslog. На данный момент я нашел два подхода, чтобы этого избежать:

  • Используя g_find_program_in_path, pkexec выполняет проверку access() с помощью g_file_test и еще одну явную проверку после этого, что позволяет использовать состояние гонки (удалив "GCONV_PATH=./gconv" между ними), чтобы вызвать g_printerr без log_message:

641 if (access (path, F_OK) != 0) 642 { 643 g_printerr ("Error accessing %s: %s\n", path, g_strerror (errno)); 644 goto out; 645 }

Этот репозиторий содержит утилиту gconv-fuse, которая монтирует FUSE файловую систему поверх "GCONV_PATH=.", которая выглядит пустой после одного вызова access("gconv", X_OK). Это работает только в том случае, если включена опция конфигурации FUSE user_allow_other.

  • Если pkexec можно предотвратить от чтения /etc/shells, это также приведет к ошибке без логирования:

356 if (!g_file_get_contents ("/etc/shells", 357 &contents, 358 NULL, /* gsize *length */ 359 &error)) 360 { 361 g_printerr ("Error getting contents of /etc/shells: %s\n", error->message); 362 g_error_free (error); 363 goto out; 364 }

Пространства имен монтирования можно использовать для монтирования недоступного для чтения файла поверх него, но это также требует пространства имен пользователя, отображая непривилегированного пользователя в root и делая setuid-бит pkexec неэффективным (например, "unshare -r -u -m").

Обратите внимание, что GLib объединил исправление для g_find_program_in_path (вероятно, для следующих стабильных версий после v2.70.3 и v2.71.0), которое сделает этот эксплойт неосуществимым, всегда возвращая фактические полные пути. [2]

[1] https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt [2] https://gitlab.gnome.org/GNOME/glib/-/commit/13ee46538f901a8eca8e7a4c167a8838ed0858d4

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