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

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

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

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

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

Категории

Все категории
Loading categories
linux_mint_poc — PoC и патч для уязвимости внедрения команд в обработчике URI yelp в Linux Mint 18.3–19.1. Демонстрирует первопричину, эксплуатацию и меры по смягчению. | Kitploit
Инструменты/GitHubGitHub/b1ack0wl/linux_mint_poc
Анализ уязвимостейЭксплуатацияОбучение и Образование
GitHubb1ack0wl/linux_mint_poc

linux_mint_poc

PoC и патч для уязвимости внедрения команд в обработчике URI yelp в Linux Mint 18.3–19.1. Демонстрирует первопричину, эксплуатацию и меры по смягчению.

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

Популярное

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

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

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

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

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

Уязвимость внедрения команд 'yelp' в Linux Mint 18.3-19.1

Корневая причина

Обработчики URI help://, ghelp:// и man:// определены в файле /usr/share/applications/yelp.desktop, который выполняет /usr/local/bin/yelp через Exec=yelp %u всякий раз, когда вызывается один из этих обработчиков URI.

Файл /usr/local/bin/yelp — это простой скрипт на Python, который разбирает входящий запрос обработчика URI. Этот скрипт сначала ищет подстроки "gnome-help" и "ubuntu-help", и если не находит ни одной из этих подстрок, то выполняет /usr/local/bin/yelp без заключения аргумента в кавычки.

Содержимое /usr/local/bin/yelp:

root@kitploit:~
#!/usr/bin/python

import os
import sys

if (len(sys.argv) > 1):
    args = ' '.join(sys.argv[1:])
    if ('gnome-help' in args) and not os.path.exists('/usr/share/help/C/gnome-help'):
        os.system ("xdg-open http://www.linuxmint.com/documentation.php &")
    elif ('ubuntu-help' in args) and not os.path.exists('/usr/share/help/C/ubuntu-help'):
        os.system ("xdg-open http://www.linuxmint.com/documentation.php &")
    else:
        os.system ("/usr/bin/yelp %s" % args)  # uh oh
else:
    os.system ('/usr/bin/yelp')

От PoC до Shell

Для эксплуатации потребовалось немного творчества, поскольку Google Chrome кодирует в URI пробел \x20, фигурные скобки {}, символ плюса +, символ обратной кавычки ` и некоторые другие. Поскольку ${IFS} не работал, было обнаружено, что использование $IFS$() работает так же хорошо, так как конструкция $() предотвращает объединение переменной окружения $IFS с другими ASCII-символами и случайное превращение в $IFSaddedword или что-то подобное.

Меры по смягчению последствий

Обзор

Файл yelp.patch изменяет уязвимую строку с os.system ("/usr/bin/yelp %s" % args) на os.system ("/usr/bin/yelp %s" % quote(args)), используя метод quote() из библиотеки shlex (https://docs.python.org/3/library/shlex.html#shlex.quote).

Инструкции по патчингу

Либо пропатчите yelp, либо удалите его.

Патчинг yelp

  • Установите patch: sudo apt install patch
  • Пропатчите скрипт yelp: sudo patch /usr/local/bin/yelp yelp.patch

Удаление yelp и связанных с ним обработчиков URI

  • Удаление обработчиков URI: sudo rm /usr/share/applications/yelp.desktop
  • Удаление python-скрипта yelp: sudo rm /usr/local/bin/yelp

[b1ack0wl]

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